diff --git a/.all-contributorsrc b/.all-contributorsrc index d7624a4314..fe7e73ccb9 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -3136,6 +3136,42 @@ "contributions": [ "doc" ] + }, + { + "login": "FlorentDotMe", + "name": "Florent Bervas", + "avatar_url": "https://avatars.githubusercontent.com/u/292081?v=4", + "profile": "http://spoontux.net", + "contributions": [ + "code" + ] + }, + { + "login": "dbakan", + "name": "Daniel Albertsen", + "avatar_url": "https://avatars.githubusercontent.com/u/4498077?v=4", + "profile": "https://ditscheri.com", + "contributions": [ + "code" + ] + }, + { + "login": "r-xyz", + "name": "r-xyz", + "avatar_url": "https://avatars.githubusercontent.com/u/100710244?v=4", + "profile": "https://github.com/r-xyz", + "contributions": [ + "code" + ] + }, + { + "login": "DrekiDegga", + "name": "Steven Mainor", + "avatar_url": "https://avatars.githubusercontent.com/u/47491036?v=4", + "profile": "https://github.com/DrekiDegga", + "contributions": [ + "code" + ] } ] } diff --git a/.env.docker b/.env.docker index 35c10bfde1..9e50383014 100644 --- a/.env.docker +++ b/.env.docker @@ -14,7 +14,7 @@ APP_KEY=base64:3ilviXqB9u6DX1NRcyWGJ+sjySF+H18CPDGb3+IVwMQ= APP_URL=http://localhost:8000 # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier APP_TIMEZONE='UTC' -APP_LOCALE=en +APP_LOCALE=en-US MAX_RESULTS=500 # -------------------------------------------- diff --git a/.env.dusk.example b/.env.dusk.example index 2f16f44c7a..e306a06cf8 100644 --- a/.env.dusk.example +++ b/.env.dusk.example @@ -6,7 +6,7 @@ APP_DEBUG=false APP_KEY=base64:hTUIUh9CP6dQx+6EjSlfWTgbaMaaRvlpEwk45vp+xmk= APP_URL=http://127.0.0.1:8000 APP_TIMEZONE='US/Eastern' -APP_LOCALE=en +APP_LOCALE=en-US APP_LOCKED=false MAX_RESULTS=200 diff --git a/.env.example b/.env.example index c92dc22b71..5c0a0b8abc 100644 --- a/.env.example +++ b/.env.example @@ -183,6 +183,7 @@ REPORT_TIME_LIMIT=12000 REQUIRE_SAML=false API_THROTTLE_PER_MINUTE=120 CSV_ESCAPE_FORMULAS=true +LIVEWIRE_URL_PREFIX=null # -------------------------------------------- # OPTIONAL: HASHING diff --git a/.github/workflows/codacy-analysis.yml b/.github/workflows/codacy-analysis.yml index f8368dff83..e3e9356425 100644 --- a/.github/workflows/codacy-analysis.yml +++ b/.github/workflows/codacy-analysis.yml @@ -36,7 +36,7 @@ jobs: # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis - name: Run Codacy Analysis CLI - uses: codacy/codacy-analysis-cli-action@v4.4.1 + uses: codacy/codacy-analysis-cli-action@v4.4.5 with: # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository # You can also omit the token and run the tools that support default configurations diff --git a/.github/workflows/tests-postgres.yml b/.github/workflows/tests-postgres.yml index b12fdebbc4..0c361511b8 100644 --- a/.github/workflows/tests-postgres.yml +++ b/.github/workflows/tests-postgres.yml @@ -21,7 +21,9 @@ jobs: fail-fast: false matrix: php-version: + - "8.1" - "8.2" + - "8.3" name: PHP ${{ matrix.php-version }} diff --git a/.gitignore b/.gitignore index bf8360ba24..25a887e38d 100755 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,4 @@ _ide_helper_models.php /.phplint-cache storage/ldap_client_tls.cert storage/ldap_client_tls.key +/storage/framework/testing diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index c0ca7951dd..298d21b8b1 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,461 +1,57 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)) who have helped Snipe-IT get this far: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
snipe
snipe

💻 🚇 📖 ⚠️ 🐛 🎨 👀
Brady Wetherington
Brady Wetherington

💻 📖 🚇 👀
Daniel Meltzer
Daniel Meltzer

💻 ⚠️ 📖
Michael T
Michael T

💻
madd15
madd15

📖 💬
Vincent Sposato
Vincent Sposato

💻
Andrea Bergamasco
Andrea Bergamasco

💻
Karol
Karol

🌍 💻
morph027
morph027

💻
fvleminckx
fvleminckx

🚇
itsupportcmsukorg
itsupportcmsukorg

💻 🐛
Frank
Frank

💻
Deleted user
Deleted user

🌍 💻
tiagom62
tiagom62

💻 🚇
Ryan Stafford
Ryan Stafford

💻
Eammon Hanlon
Eammon Hanlon

💻
zjean
zjean

💻
Matthias Frei
Matthias Frei

💻
opsydev
opsydev

💻
Daniel Dreier
Daniel Dreier

💻
Nikolai Prokoschenko
Nikolai Prokoschenko

💻
Drew
Drew

💻
Walter
Walter

💻
Petr Baloun
Petr Baloun

💻
reidblomquist
reidblomquist

📖
Mathieu Kooiman
Mathieu Kooiman

💻
csayre
csayre

📖
Adam Dunson
Adam Dunson

💻
Hereward
Hereward

💻
swoopdk
swoopdk

💻
Abdullah Alansari
Abdullah Alansari

💻
Micael Rodrigues
Micael Rodrigues

💻
Patrick Gallagher
Patrick Gallagher

📖
Miliamber
Miliamber

💻
hawk554
hawk554

💻
Justin Kerr
Justin Kerr

💻
Ira W. Snyder
Ira W. Snyder

📖
Aladin Alaily
Aladin Alaily

💻
Chase Hansen
Chase Hansen

💻 💬 🐛
IDM Helpdesk
IDM Helpdesk

💻
Kai
Kai

💻
Michael Daniels
Michael Daniels

💻
Tom Castleman
Tom Castleman

💻
Daniel Nemanic
Daniel Nemanic

💻
SouthWolf
SouthWolf

💻
Ivar Nesje
Ivar Nesje

💻
Jérémy Benoist
Jérémy Benoist

📖
Chris Leathley
Chris Leathley

🚇
splaer
splaer

🐛 💻
Joe Ferguson
Joe Ferguson

💻
diwanicki
diwanicki

💻 📖
Lee Thoong Ching
Lee Thoong Ching

📖 💻
Marek Šuppa
Marek Šuppa

💻
Juan J. Martinez
Juan J. Martinez

🌍
R Ryan Dial
R Ryan Dial

🌍
Andrej Manduch
Andrej Manduch

📖
Jay Richards
Jay Richards

💻
Alexander Innes
Alexander Innes

💻
Danny Garcia
Danny Garcia

💻
archpoint
archpoint

💻
Jake McGraw
Jake McGraw

💻
FleischKarussel
FleischKarussel

📖
Dylan Yi
Dylan Yi

💻
Gil Rutkowski
Gil Rutkowski

💻
Desmond Morris
Desmond Morris

💻
Nick Peelman
Nick Peelman

💻
Abraham Vegh
Abraham Vegh

💻
Mohamed Rashid
Mohamed Rashid

📖
Kasey
Kasey

💻
Brett
Brett

⚠️
Jason Spriggs
Jason Spriggs

💻
Nate Felton
Nate Felton

💻
Manasses Ferreira
Manasses Ferreira

💻
Steve
Steve

⚠️
matc
matc

⚠️
Cole R. Davis
Cole R. Davis

⚠️
gibsonjoshua55
gibsonjoshua55

💻
Robin Temme
Robin Temme

💻
Iman
Iman

💻
Richard Hofman
Richard Hofman

💻
gizzmojr
gizzmojr

💻
Jenny Li
Jenny Li

📖
Geoff Young
Geoff Young

💻
Elliot Blackburn
Elliot Blackburn

📖
Tõnis Ormisson
Tõnis Ormisson

💻
Nicolai Essig
Nicolai Essig

💻
Danielle
Danielle

📖
Lawrence
Lawrence

⚠️ 🐛
uknzaeinozpas
uknzaeinozpas

⚠️ 💻
Ryan
Ryan

📖
vcordes79
vcordes79

💻
fordster78
fordster78

💻
CronKz
CronKz

💻 🌍
Tim Bishop
Tim Bishop

💻
Sean McIlvenna
Sean McIlvenna

💻
cepacs
cepacs

🐛 📖
lea-mink
lea-mink

💻
Hannah Tinkler
Hannah Tinkler

💻
Doeke Zanstra
Doeke Zanstra

💻
Djamon Staal
Djamon Staal

💻
Earl Ramirez
Earl Ramirez

💻
Richard Ray Thomas
Richard Ray Thomas

💻
Ryan Kuba
Ryan Kuba

💻
Brian Monroe
Brian Monroe

💻
plexorama
plexorama

💻
Till Deeke
Till Deeke

💻
5quirrel
5quirrel

💻
Jason
Jason

💻
Antti
Antti

💻
DeusMaximus
DeusMaximus

💻
a-royal
a-royal

🌍
Alberto Aldrigo
Alberto Aldrigo

🌍
Alex Stanev
Alex Stanev

🌍
Andreas Rehm
Andreas Rehm

🌍
Andreas Erhard
Andreas Erhard

🌍
Andrés Vanegas Jiménez
Andrés Vanegas Jiménez

🌍
Antonio Schiavon
Antonio Schiavon

🌍
benunter
benunter

🌍
Borys Żmuda
Borys Żmuda

🌍
chibacityblues
chibacityblues

🌍
Chien Wei Lin
Chien Wei Lin

🌍
Christian Schuster
Christian Schuster

🌍
Christian Stefanus
Christian Stefanus

🌍
wxcafé
wxcafé

🌍
dpyroc
dpyroc

🌍
Daniel Friedlmaier
Daniel Friedlmaier

🌍
Daniel Heene
Daniel Heene

🌍
danielcb
danielcb

🌍
Dominik Senti
Dominik Senti

🌍
Eric Gautheron
Eric Gautheron

🌍
Erlend Pilø
Erlend Pilø

🌍
Fabio Rapposelli
Fabio Rapposelli

🌍
Felipe Barros
Felipe Barros

🌍
Fernando Possebon
Fernando Possebon

🌍
gdraque
gdraque

🌍
Georg Wallisch
Georg Wallisch

🌍
Gerardo Robles
Gerardo Robles

🌍
Gluek
Gluek

🌍
AdnanAbuShahad
AdnanAbuShahad

🌍
Hafidzi My
Hafidzi My

🌍
Harim Park
Harim Park

🌍
Henrik Kentsson
Henrik Kentsson

🌍
Husnul Yaqien
Husnul Yaqien

🌍
Ibrahim
Ibrahim

🌍
igolman
igolman

🌍
itangiang
itangiang

🌍
jarby1211
jarby1211

🌍
Jhonn Willker
Jhonn Willker

🌍
Jose
Jose

🌍
laopangzi
laopangzi

🌍
Lars Strojny
Lars Strojny

🌍
MarcosBL
MarcosBL

🌍
marie joy cajes
marie joy cajes

🌍
Mark S. Johansen
Mark S. Johansen

🌍
Martin Stub
Martin Stub

🌍
Meyer Flavio
Meyer Flavio

🌍
Micael Rodrigues
Micael Rodrigues

🌍
Mikael Rasmussen
Mikael Rasmussen

🌍
IxFail
IxFail

🌍
Mohammed Fota
Mohammed Fota

🌍
Moayad Alserihi
Moayad Alserihi

🌍
saymd
saymd

🌍
Patrik Larsson
Patrik Larsson

🌍
drcryo
drcryo

🌍
pawel1615
pawel1615

🌍
bodrovics
bodrovics

🌍
priatna
priatna

🌍
Fan Jiang
Fan Jiang

🌍
ragnarcx
ragnarcx

🌍
Rein van Haaren
Rein van Haaren

🌍
Teguh Dwicaksana
Teguh Dwicaksana

🌍
fraccie
fraccie

🌍
vinzruzell
vinzruzell

🌍
Kevin Austin
Kevin Austin

🌍
Wira Sandy
Wira Sandy

🌍
Илья
Илья

🌍
GodUseVPN
GodUseVPN

🌍
周周
周周

🌍
Sam
Sam

💻
Azerothian
Azerothian

💻
Wes Hulette
Wes Hulette

💻
patrict
patrict

💻
Dmitriy Minaev
Dmitriy Minaev

💻
liquidhorse
liquidhorse

💻
Jordi Boggiano
Jordi Boggiano

💻
Ivan Nieto
Ivan Nieto

💻
Ben RUBSON
Ben RUBSON

💻
NMathar
NMathar

💻
Steffen
Steffen

💻
Sxderp
Sxderp

💻
fanta8897
fanta8897

💻
Andrey Bolonin
Andrey Bolonin

💻
shinayoshi
shinayoshi

💻
Hubert
Hubert

💻
KeenRivals
KeenRivals

💻
omyno
omyno

💻
Evgeny
Evgeny

💻
Colin Campbell
Colin Campbell

💻
Ľubomír Kučera
Ľubomír Kučera

💻
Martin Meredith
Martin Meredith

💻
Tim Farmer
Tim Farmer

💻
Marián Skrip
Marián Skrip

💻
Godfrey Martinez
Godfrey Martinez

💻
bigtreeEdo
bigtreeEdo

💻
Colin  McNeil
Colin McNeil

💻
JoKneeMo
JoKneeMo

💻
Joshi
Joshi

💻
Anthony Burns
Anthony Burns

💻
johnson-yi
johnson-yi

💻
Sanjay Govind
Sanjay Govind

💻
Peter Upfold
Peter Upfold

💻
Jared Biel
Jared Biel

💻
Dampfklon
Dampfklon

💻
Charles Hamilton
Charles Hamilton

💻
Giuseppe Iannello
Giuseppe Iannello

💻
Peter Dave Hello
Peter Dave Hello

💻
sigmoidal
sigmoidal

💻
Vincent Lainé
Vincent Lainé

💻
Lucas Pleß
Lucas Pleß

💻
Ian Littman
Ian Littman

💻
João Paulo
João Paulo

💻
ThoBur
ThoBur

💻
Alexander Chibrikin
Alexander Chibrikin

💻
Anthony Winstanley
Anthony Winstanley

💻
Folke
Folke

💻
Bennett Blodinger
Bennett Blodinger

💻
NMC
NMC

💻
andres-baller
andres-baller

💻
sean-borg
sean-borg

💻
EDVLeer
EDVLeer

💻
Kurokat
Kurokat

💻
Kevin Köllmann
Kevin Köllmann

💻
sw-mreyes
sw-mreyes

💻
Joel Pittet
Joel Pittet

💻
Eli Young
Eli Young

💻
Raell Dottin
Raell Dottin

💻
Tom Misilo
Tom Misilo

💻
David Davenne
David Davenne

💻
Mark Stenglein
Mark Stenglein

💻
ajsy
ajsy

💻
Jan Kiesewetter
Jan Kiesewetter

💻
Tetrachloromethane250
Tetrachloromethane250

💻
Lars Kajes
Lars Kajes

💻
Joly0
Joly0

💻
theburger
theburger

💻
David Valin Alonso
David Valin Alonso

💻
andreaci
andreaci

💻
Jelle Sebreghts
Jelle Sebreghts

💻
Michael Pietsch
Michael Pietsch

Masudul Haque Shihab
Masudul Haque Shihab

💻
Supapong Areeprasertkul
Supapong Areeprasertkul

💻
Peter Sarossy
Peter Sarossy

💻
Renee Margaret McConahy
Renee Margaret McConahy

💻
JohnnyPicnic
JohnnyPicnic

💻
markbrule
markbrule

💻
Mike Campbell
Mike Campbell

💻
tbrconnect
tbrconnect

💻
kcoyo
kcoyo

💻
Travis Miller
Travis Miller

💻
Evan Taylor
Evan Taylor

💻
Petri Asikainen
Petri Asikainen

💻
derdeagle
derdeagle

💻
Mike Frysinger
Mike Frysinger

💻
ALPHA
ALPHA

💻
FliegenKLATSCH
FliegenKLATSCH

💻
Jeremy Price
Jeremy Price

💻
Toreg87
Toreg87

💻
Matthew Nickson
Matthew Nickson

💻
Jethro Nederhof
Jethro Nederhof

💻
Oskar Stenberg
Oskar Stenberg

💻
Robert-Azelis
Robert-Azelis

💻
Alexander William Smith
Alexander William Smith

💻
LEITWERK AG
LEITWERK AG

💻
Adam
Adam

💻
Ian
Ian

💻
Shao Yu-Lung (Allen)
Shao Yu-Lung (Allen)

💻
Haxatron
Haxatron

💻
PlaneNuts
PlaneNuts

💻
Bradley Coudriet
Bradley Coudriet

💻
Dalton Durst
Dalton Durst

💻
Alex Janes
Alex Janes

💻
Nuraeil
Nuraeil

💻
TenOfTens
TenOfTens

💻
waffle
waffle

💻
Yevhenii Huzii
Yevhenii Huzii

💻
Achmad Fienan Rahardianto
Achmad Fienan Rahardianto

💻
Yevhenii Huzii
Yevhenii Huzii

💻
Christian Weirich
Christian Weirich

💻
denzfarid
denzfarid

ntbutler-nbcs
ntbutler-nbcs

💻
Naveen
Naveen

💻
Mike Roquemore
Mike Roquemore

💻
Daniel Reeder
Daniel Reeder

🌍 🌍 💻
vickyjaura183
vickyjaura183

💻
Peace
Peace

💻
Kyle Gordon
Kyle Gordon

💻
Katharina Drexel
Katharina Drexel

💻
David Sferruzza
David Sferruzza

💻
Rick Nelson
Rick Nelson

💻
BasO12
BasO12

💻
Vautia
Vautia

💻
Chris Hartjes
Chris Hartjes

💻
geo-chen
geo-chen

💻
Phan Nguyen
Phan Nguyen

💻
Iisakki Jaakkola
Iisakki Jaakkola

💻
Ikko Ashimine
Ikko Ashimine

💻
Lukas Fehling
Lukas Fehling

💻
Fernando Almeida
Fernando Almeida

💻
akemidx
akemidx

💻
Oguz Bilgic
Oguz Bilgic

💻
Scooter Crawford
Scooter Crawford

💻
subdriven
subdriven

💻
Andrew Savinykh
Andrew Savinykh

💻
Tadayuki Onishi
Tadayuki Onishi

💻
Florian
Florian

💻
Spencer Long
Spencer Long

💻
Marcus Moore
Marcus Moore

💻
Martin Meredith
Martin Meredith

dboth
dboth

💻
Zachary Fleck
Zachary Fleck

💻
VIKAAS-A
VIKAAS-A

💻
Abdul Kareem
Abdul Kareem

💻
NojoudAlshehri
NojoudAlshehri

💻
Stefan Stidl
Stefan Stidl

💻
Quentin Aymard
Quentin Aymard

💻
Grant Le Roux
Grant Le Roux

💻
Bogdan
Bogdan

💻
mmanjos
mmanjos

💻
Abdelaziz Faki
Abdelaziz Faki

💻
bilias
bilias

💻
coach1988
coach1988

💻
MrM
MrM

💻
koiakoia
koiakoia

💻
Mustafa Online
Mustafa Online

💻
franceslui
franceslui

💻
Q4kK
Q4kK

💻
squintfox
squintfox

💻
Jeff Clay
Jeff Clay

💻
Phil J R
Phil J R

💻
i_virus
i_virus

💻
Paul Grime
Paul Grime

💻
Lee Porte
Lee Porte

💻
BRYAN
BRYAN

💻 ⚠️
U-H-T
U-H-T

💻
Matt Tyree
Matt Tyree

📖
- - - - +| [
snipe](http://www.snipe.net)
[💻](https://github.com/snipe/snipe-it/commits?author=snipe "Code") [🚇](#infra-snipe "Infrastructure (Hosting, Build-Tools, etc)") [📖](https://github.com/snipe/snipe-it/commits?author=snipe "Documentation") [⚠️](https://github.com/snipe/snipe-it/commits?author=snipe "Tests") [🐛](https://github.com/snipe/snipe-it/issues?q=author%3Asnipe "Bug reports") [🎨](#design-snipe "Design") [👀](#review-snipe "Reviewed Pull Requests") | [
Brady Wetherington](http://www.uberbrady.com)
[💻](https://github.com/snipe/snipe-it/commits?author=uberbrady "Code") [📖](https://github.com/snipe/snipe-it/commits?author=uberbrady "Documentation") [🚇](#infra-uberbrady "Infrastructure (Hosting, Build-Tools, etc)") [👀](#review-uberbrady "Reviewed Pull Requests") | [
Daniel Meltzer](https://github.com/dmeltzer)
[💻](https://github.com/snipe/snipe-it/commits?author=dmeltzer "Code") [⚠️](https://github.com/snipe/snipe-it/commits?author=dmeltzer "Tests") [📖](https://github.com/snipe/snipe-it/commits?author=dmeltzer "Documentation") | [
Michael T](http://www.tuckertechonline.com)
[💻](https://github.com/snipe/snipe-it/commits?author=mtucker6784 "Code") | [
madd15](https://github.com/madd15)
[📖](https://github.com/snipe/snipe-it/commits?author=madd15 "Documentation") [💬](#question-madd15 "Answering Questions") | [
Vincent Sposato](https://github.com/vsposato)
[💻](https://github.com/snipe/snipe-it/commits?author=vsposato "Code") | [
Andrea Bergamasco](https://github.com/vjandrea)
[💻](https://github.com/snipe/snipe-it/commits?author=vjandrea "Code") | +| :---: | :---: | :---: | :---: | :---: | :---: | :---: | +| [
Karol](https://github.com/kpawelski)
[🌍](#translation-kpawelski "Translation") [💻](https://github.com/snipe/snipe-it/commits?author=kpawelski "Code") | [
morph027](http://blog.morph027.de/)
[💻](https://github.com/snipe/snipe-it/commits?author=morph027 "Code") | [
fvleminckx](https://github.com/fvleminckx)
[🚇](#infra-fvleminckx "Infrastructure (Hosting, Build-Tools, etc)") | [
itsupportcmsukorg](https://github.com/itsupportcmsukorg)
[💻](https://github.com/snipe/snipe-it/commits?author=itsupportcmsukorg "Code") [🐛](https://github.com/snipe/snipe-it/issues?q=author%3Aitsupportcmsukorg "Bug reports") | [
Frank](https://override.io)
[💻](https://github.com/snipe/snipe-it/commits?author=base-zero "Code") | [
Deleted user](https://github.com/ghost)
[🌍](#translation-ghost "Translation") [💻](https://github.com/snipe/snipe-it/commits?author=ghost "Code") | [
tiagom62](https://github.com/tiagom62)
[💻](https://github.com/snipe/snipe-it/commits?author=tiagom62 "Code") [🚇](#infra-tiagom62 "Infrastructure (Hosting, Build-Tools, etc)") | +| [
Ryan Stafford](https://github.com/rystaf)
[💻](https://github.com/snipe/snipe-it/commits?author=rystaf "Code") | [
Eammon Hanlon](https://github.com/ehanlon)
[💻](https://github.com/snipe/snipe-it/commits?author=ehanlon "Code") | [
zjean](https://github.com/zjean)
[💻](https://github.com/snipe/snipe-it/commits?author=zjean "Code") | [
Matthias Frei](http://www.frei.media)
[💻](https://github.com/snipe/snipe-it/commits?author=FREImedia "Code") | [
opsydev](https://github.com/opsydev)
[💻](https://github.com/snipe/snipe-it/commits?author=opsydev "Code") | [
Daniel Dreier](http://www.ddreier.com)
[💻](https://github.com/snipe/snipe-it/commits?author=ddreier "Code") | [
Nikolai Prokoschenko](http://rassie.org)
[💻](https://github.com/snipe/snipe-it/commits?author=rassie "Code") | +| [
Drew](https://github.com/YetAnotherCodeMonkey)
[💻](https://github.com/snipe/snipe-it/commits?author=YetAnotherCodeMonkey "Code") | [
Walter](https://github.com/merid14)
[💻](https://github.com/snipe/snipe-it/commits?author=merid14 "Code") | [
Petr Baloun](https://github.com/balous)
[💻](https://github.com/snipe/snipe-it/commits?author=balous "Code") | [
reidblomquist](https://github.com/reidblomquist)
[📖](https://github.com/snipe/snipe-it/commits?author=reidblomquist "Documentation") | [
Mathieu Kooiman](https://github.com/mathieuk)
[💻](https://github.com/snipe/snipe-it/commits?author=mathieuk "Code") | [
csayre](https://github.com/csayre)
[📖](https://github.com/snipe/snipe-it/commits?author=csayre "Documentation") | [
Adam Dunson](https://github.com/adamdunson)
[💻](https://github.com/snipe/snipe-it/commits?author=adamdunson "Code") | +| [
Hereward](https://github.com/thehereward)
[💻](https://github.com/snipe/snipe-it/commits?author=thehereward "Code") | [
swoopdk](https://github.com/swoopdk)
[💻](https://github.com/snipe/snipe-it/commits?author=swoopdk "Code") | [
Abdullah Alansari](https://linkedin.com/in/ahimta)
[💻](https://github.com/snipe/snipe-it/commits?author=Ahimta "Code") | [
Micael Rodrigues](https://github.com/MicaelRodrigues)
[💻](https://github.com/snipe/snipe-it/commits?author=MicaelRodrigues "Code") | [
Patrick Gallagher](http://macadmincorner.com)
[📖](https://github.com/snipe/snipe-it/commits?author=patgmac "Documentation") | [
Miliamber](https://github.com/Miliamber)
[💻](https://github.com/snipe/snipe-it/commits?author=Miliamber "Code") | [
hawk554](https://github.com/hawk554)
[💻](https://github.com/snipe/snipe-it/commits?author=hawk554 "Code") | +| [
Justin Kerr](http://jbirdkerr.net)
[💻](https://github.com/snipe/snipe-it/commits?author=jbirdkerr "Code") | [
Ira W. Snyder](http://www.irasnyder.com/devel/)
[📖](https://github.com/snipe/snipe-it/commits?author=irasnyd "Documentation") | [
Aladin Alaily](https://github.com/aalaily)
[💻](https://github.com/snipe/snipe-it/commits?author=aalaily "Code") | [
Chase Hansen](https://github.com/kobie-chasehansen)
[💻](https://github.com/snipe/snipe-it/commits?author=kobie-chasehansen "Code") [💬](#question-kobie-chasehansen "Answering Questions") [🐛](https://github.com/snipe/snipe-it/issues?q=author%3Akobie-chasehansen "Bug reports") | [
IDM Helpdesk](https://github.com/IDM-Helpdesk)
[💻](https://github.com/snipe/snipe-it/commits?author=IDM-Helpdesk "Code") | [
Kai](http://balticer.de)
[💻](https://github.com/snipe/snipe-it/commits?author=balticer "Code") | [
Michael Daniels](http://www.michaeldaniels.me)
[💻](https://github.com/snipe/snipe-it/commits?author=mdaniels5757 "Code") | +| [
Tom Castleman](http://tomcastleman.me)
[💻](https://github.com/snipe/snipe-it/commits?author=tomcastleman "Code") | [
Daniel Nemanic](https://github.com/DanielNemanic)
[💻](https://github.com/snipe/snipe-it/commits?author=DanielNemanic "Code") | [
SouthWolf](https://github.com/southwolf)
[💻](https://github.com/snipe/snipe-it/commits?author=southwolf "Code") | [
Ivar Nesje](https://github.com/ivarne)
[💻](https://github.com/snipe/snipe-it/commits?author=ivarne "Code") | [
Jérémy Benoist](http://www.j0k3r.net)
[📖](https://github.com/snipe/snipe-it/commits?author=j0k3r "Documentation") | [
Chris Leathley](https://github.com/cleathley)
[🚇](#infra-cleathley "Infrastructure (Hosting, Build-Tools, etc)") | [
splaer](https://github.com/splaer)
[🐛](https://github.com/snipe/snipe-it/issues?q=author%3Asplaer "Bug reports") [💻](https://github.com/snipe/snipe-it/commits?author=splaer "Code") | +| [
Joe Ferguson](http://www.joeferguson.me)
[💻](https://github.com/snipe/snipe-it/commits?author=svpernova09 "Code") | [
diwanicki](https://github.com/diwanicki)
[💻](https://github.com/snipe/snipe-it/commits?author=diwanicki "Code") [📖](https://github.com/snipe/snipe-it/commits?author=diwanicki "Documentation") | [
Lee Thoong Ching](https://github.com/pakkua80)
[📖](https://github.com/snipe/snipe-it/commits?author=pakkua80 "Documentation") [💻](https://github.com/snipe/snipe-it/commits?author=pakkua80 "Code") | [
Marek Šuppa](http://shu.io)
[💻](https://github.com/snipe/snipe-it/commits?author=mrshu "Code") | [
Juan J. Martinez](https://github.com/mizar1616)
[🌍](#translation-mizar1616 "Translation") | [
R Ryan Dial](https://github.com/rrdial)
[🌍](#translation-rrdial "Translation") | [
Andrej Manduch](https://github.com/burlito)
[📖](https://github.com/snipe/snipe-it/commits?author=burlito "Documentation") | +| [
Jay Richards](http://www.cordeos.com)
[💻](https://github.com/snipe/snipe-it/commits?author=technogenus "Code") | [
Alexander Innes](https://necurity.co.uk)
[💻](https://github.com/snipe/snipe-it/commits?author=leostat "Code") | [
Danny Garcia](https://buzzedword.codes)
[💻](https://github.com/snipe/snipe-it/commits?author=buzzedword "Code") | [
archpoint](https://github.com/archpoint)
[💻](https://github.com/snipe/snipe-it/commits?author=archpoint "Code") | [
Jake McGraw](http://www.jakemcgraw.com)
[💻](https://github.com/snipe/snipe-it/commits?author=jakemcgraw "Code") | [
FleischKarussel](https://github.com/FleischKarussel)
[📖](https://github.com/snipe/snipe-it/commits?author=FleischKarussel "Documentation") | [
Dylan Yi](https://github.com/feeva)
[💻](https://github.com/snipe/snipe-it/commits?author=feeva "Code") | +| [
Gil Rutkowski](http://FlashingCursor.com)
[💻](https://github.com/snipe/snipe-it/commits?author=flashingcursor "Code") | [
Desmond Morris](http://www.desmondmorris.com)
[💻](https://github.com/snipe/snipe-it/commits?author=desmondmorris "Code") | [
Nick Peelman](http://peelman.us)
[💻](https://github.com/snipe/snipe-it/commits?author=peelman "Code") | [
Abraham Vegh](https://abrahamvegh.com)
[💻](https://github.com/snipe/snipe-it/commits?author=abrahamvegh "Code") | [
Mohamed Rashid](https://github.com/rashivkp)
[📖](https://github.com/snipe/snipe-it/commits?author=rashivkp "Documentation") | [
Kasey](http://hinchk.github.io)
[💻](https://github.com/snipe/snipe-it/commits?author=HinchK "Code") | [
Brett](https://github.com/BrettFagerlund)
[⚠️](https://github.com/snipe/snipe-it/commits?author=BrettFagerlund "Tests") | +| [
Jason Spriggs](http://jasonspriggs.com)
[💻](https://github.com/snipe/snipe-it/commits?author=jasonspriggs "Code") | [
Nate Felton](http://n8felton.wordpress.com)
[💻](https://github.com/snipe/snipe-it/commits?author=n8felton "Code") | [
Manasses Ferreira](http://homepages.dcc.ufmg.br/~manassesferreira)
[💻](https://github.com/snipe/snipe-it/commits?author=manassesferreira "Code") | [
Steve](https://github.com/steveelwood)
[⚠️](https://github.com/snipe/snipe-it/commits?author=steveelwood "Tests") | [
matc](http://twitter.com/matc)
[⚠️](https://github.com/snipe/snipe-it/commits?author=matc "Tests") | [
Cole R. Davis](http://www.davisracingteam.com)
[⚠️](https://github.com/snipe/snipe-it/commits?author=VanillaNinjaD "Tests") | [
gibsonjoshua55](https://github.com/gibsonjoshua55)
[💻](https://github.com/snipe/snipe-it/commits?author=gibsonjoshua55 "Code") | +| [
Robin Temme](https://github.com/zwerch)
[💻](https://github.com/snipe/snipe-it/commits?author=zwerch "Code") | [
Iman](https://github.com/imanghafoori1)
[💻](https://github.com/snipe/snipe-it/commits?author=imanghafoori1 "Code") | [
Richard Hofman](https://github.com/richardhofman6)
[💻](https://github.com/snipe/snipe-it/commits?author=richardhofman6 "Code") | [
gizzmojr](https://github.com/gizzmojr)
[💻](https://github.com/snipe/snipe-it/commits?author=gizzmojr "Code") | [
Jenny Li](https://github.com/imjennyli)
[📖](https://github.com/snipe/snipe-it/commits?author=imjennyli "Documentation") | [
Geoff Young](https://github.com/GeoffYoung)
[💻](https://github.com/snipe/snipe-it/commits?author=GeoffYoung "Code") | [
Elliot Blackburn](http://www.elliotblackburn.com)
[📖](https://github.com/snipe/snipe-it/commits?author=BlueHatbRit "Documentation") | +| [
Tõnis Ormisson](http://andmemasin.eu)
[💻](https://github.com/snipe/snipe-it/commits?author=TonisOrmisson "Code") | [
Nicolai Essig](http://www.nicolai-essig.de)
[💻](https://github.com/snipe/snipe-it/commits?author=thakilla "Code") | [
Danielle](https://github.com/techincolor)
[📖](https://github.com/snipe/snipe-it/commits?author=techincolor "Documentation") | [
Lawrence](https://github.com/TheVakman)
[⚠️](https://github.com/snipe/snipe-it/commits?author=TheVakman "Tests") [🐛](https://github.com/snipe/snipe-it/issues?q=author%3ATheVakman "Bug reports") | [
uknzaeinozpas](https://github.com/uknzaeinozpas)
[⚠️](https://github.com/snipe/snipe-it/commits?author=uknzaeinozpas "Tests") [💻](https://github.com/snipe/snipe-it/commits?author=uknzaeinozpas "Code") | [
Ryan](https://github.com/Gelob)
[📖](https://github.com/snipe/snipe-it/commits?author=Gelob "Documentation") | [
vcordes79](https://github.com/vcordes79)
[💻](https://github.com/snipe/snipe-it/commits?author=vcordes79 "Code") | +| [
fordster78](https://github.com/fordster78)
[💻](https://github.com/snipe/snipe-it/commits?author=fordster78 "Code") | [
CronKz](https://github.com/CronKz)
[💻](https://github.com/snipe/snipe-it/commits?author=CronKz "Code") [🌍](#translation-CronKz "Translation") | [
Tim Bishop](https://github.com/tdb)
[💻](https://github.com/snipe/snipe-it/commits?author=tdb "Code") | [
Sean McIlvenna](https://www.seanmcilvenna.com)
[💻](https://github.com/snipe/snipe-it/commits?author=seanmcilvenna "Code") | [
cepacs](https://github.com/cepacs)
[🐛](https://github.com/snipe/snipe-it/issues?q=author%3Acepacs "Bug reports") [📖](https://github.com/snipe/snipe-it/commits?author=cepacs "Documentation") | [
lea-mink](https://github.com/lea-mink)
[💻](https://github.com/snipe/snipe-it/commits?author=lea-mink "Code") | [
Hannah Tinkler](https://github.com/hannahtinkler)
[💻](https://github.com/snipe/snipe-it/commits?author=hannahtinkler "Code") | +| [
Doeke Zanstra](https://github.com/doekman)
[💻](https://github.com/snipe/snipe-it/commits?author=doekman "Code") | [
Djamon Staal](https://www.sdhd.nl/)
[💻](https://github.com/snipe/snipe-it/commits?author=SjamonDaal "Code") | [
Earl Ramirez](https://github.com/EarlRamirez)
[💻](https://github.com/snipe/snipe-it/commits?author=EarlRamirez "Code") | [
Richard Ray Thomas](https://github.com/RichardRay)
[💻](https://github.com/snipe/snipe-it/commits?author=RichardRay "Code") | [
Ryan Kuba](https://www.taisun.io/)
[💻](https://github.com/snipe/snipe-it/commits?author=thelamer "Code") | [
Brian Monroe](https://github.com/ParadoxGuitarist)
[💻](https://github.com/snipe/snipe-it/commits?author=ParadoxGuitarist "Code") | [
plexorama](https://github.com/plexorama)
[💻](https://github.com/snipe/snipe-it/commits?author=plexorama "Code") | +| [
Till Deeke](https://tilldeeke.de)
[💻](https://github.com/snipe/snipe-it/commits?author=tilldeeke "Code") | [
5quirrel](https://github.com/5quirrel)
[💻](https://github.com/snipe/snipe-it/commits?author=5quirrel "Code") | [
Jason](https://github.com/jasonlshelton)
[💻](https://github.com/snipe/snipe-it/commits?author=jasonlshelton "Code") | [
Antti](https://github.com/chemfy)
[💻](https://github.com/snipe/snipe-it/commits?author=chemfy "Code") | [
DeusMaximus](https://github.com/DeusMaximus)
[💻](https://github.com/snipe/snipe-it/commits?author=DeusMaximus "Code") | [
a-royal](https://github.com/A-ROYAL)
[🌍](#translation-A-ROYAL "Translation") | [
Alberto Aldrigo](https://github.com/albertoaldrigo)
[🌍](#translation-albertoaldrigo "Translation") | +| [
Alex Stanev](http://alex.stanev.org/blog)
[🌍](#translation-RealEnder "Translation") | [
Andreas Rehm](http://devel.itsolution2.de)
[🌍](#translation-sirrus "Translation") | [
Andreas Erhard](https://github.com/xelan)
[🌍](#translation-xelan "Translation") | [
Andrés Vanegas Jiménez](https://github.com/angeldeejay)
[🌍](#translation-angeldeejay "Translation") | [
Antonio Schiavon](https://github.com/aschiavon91)
[🌍](#translation-aschiavon91 "Translation") | [
benunter](https://github.com/benunter)
[🌍](#translation-benunter "Translation") | [
Borys Żmuda](http://catweb24.pl)
[🌍](#translation-rudashi "Translation") | +| [
chibacityblues](https://github.com/chibacityblues)
[🌍](#translation-chibacityblues "Translation") | [
Chien Wei Lin](https://github.com/cwlin0416)
[🌍](#translation-cwlin0416 "Translation") | [
Christian Schuster](https://github.com/Againstreality)
[🌍](#translation-Againstreality "Translation") | [
Christian Stefanus](http://chriss.webhostid.com)
[🌍](#translation-kopi-item "Translation") | [
wxcafé](http://wxcafe.net)
[🌍](#translation-wxcafe "Translation") | [
dpyroc](https://github.com/dpyroc)
[🌍](#translation-dpyroc "Translation") | [
Daniel Friedlmaier](http://www.friedlmaier.net)
[🌍](#translation-da-friedl "Translation") | +| [
Daniel Heene](https://github.com/danielheene)
[🌍](#translation-danielheene "Translation") | [
danielcb](https://github.com/danielcb)
[🌍](#translation-danielcb "Translation") | [
Dominik Senti](https://github.com/dominiksenti)
[🌍](#translation-dominiksenti "Translation") | [
Eric Gautheron](http://www.konectik.com)
[🌍](#translation-EpixFr "Translation") | [
Erlend Pilø](https://erlpil.com)
[🌍](#translation-Erlpil "Translation") | [
Fabio Rapposelli](http://fabio.technology)
[🌍](#translation-frapposelli "Translation") | [
Felipe Barros](https://github.com/fgbs)
[🌍](#translation-fgbs "Translation") | +| [
Fernando Possebon](https://github.com/possebon)
[🌍](#translation-possebon "Translation") | [
gdraque](https://github.com/gdraque)
[🌍](#translation-gdraque "Translation") | [
Georg Wallisch](https://github.com/georgwallisch)
[🌍](#translation-georgwallisch "Translation") | [
Gerardo Robles](https://github.com/jgroblesr85)
[🌍](#translation-jgroblesr85 "Translation") | [
Gluek](https://t.me/Gluek)
[🌍](#translation-mrgluek "Translation") | [
AdnanAbuShahad](https://github.com/AdnanAbuShahad)
[🌍](#translation-AdnanAbuShahad "Translation") | [
Hafidzi My](https://hafidzi.my)
[🌍](#translation-hafidzi "Translation") | +| [
Harim Park](https://github.com/fofwisdom)
[🌍](#translation-fofwisdom "Translation") | [
Henrik Kentsson](http://www.kentsson.se)
[🌍](#translation-Kentsson "Translation") | [
Husnul Yaqien](https://github.com/husnulyaqien)
[🌍](#translation-husnulyaqien "Translation") | [
Ibrahim](http://abaalkhail.org)
[🌍](#translation-abaalkh "Translation") | [
igolman](https://github.com/igolman)
[🌍](#translation-igolman "Translation") | [
itangiang](https://github.com/itangiang)
[🌍](#translation-itangiang "Translation") | [
jarby1211](https://github.com/jarby1211)
[🌍](#translation-jarby1211 "Translation") | +| [
Jhonn Willker](http://jwillker.com)
[🌍](#translation-JohnWillker "Translation") | [
Jose](https://github.com/joxelito94)
[🌍](#translation-joxelito94 "Translation") | [
laopangzi](https://github.com/laopangzi)
[🌍](#translation-laopangzi "Translation") | [
Lars Strojny](http://usrportage.de)
[🌍](#translation-lstrojny "Translation") | [
MarcosBL](http://twitter.com/marcosbl)
[🌍](#translation-MarcosBL "Translation") | [
marie joy cajes](https://github.com/mariejoyacajes)
[🌍](#translation-mariejoyacajes "Translation") | [
Mark S. Johansen](http://www.markjohansen.dk)
[🌍](#translation-msjohansen "Translation") | +| [
Martin Stub](http://martinstub.dk)
[🌍](#translation-stubben "Translation") | [
Meyer Flavio](https://github.com/meyerf99)
[🌍](#translation-meyerf99 "Translation") | [
Micael Rodrigues](https://github.com/MicaelRodrigues)
[🌍](#translation-MicaelRodrigues "Translation") | [
Mikael Rasmussen](http://rubixy.com/)
[🌍](#translation-mikaelssen "Translation") | [
IxFail](https://github.com/IxFail)
[🌍](#translation-IxFail "Translation") | [
Mohammed Fota](http://www.mohammedfota.com)
[🌍](#translation-MohammedFota "Translation") | [
Moayad Alserihi](https://github.com/omego)
[🌍](#translation-omego "Translation") | +| [
saymd](https://github.com/saymd)
[🌍](#translation-saymd "Translation") | [
Patrik Larsson](https://nordsken.se)
[🌍](#translation-pooot "Translation") | [
drcryo](https://github.com/drcryo)
[🌍](#translation-drcryo "Translation") | [
pawel1615](https://github.com/pawel1615)
[🌍](#translation-pawel1615 "Translation") | [
bodrovics](https://github.com/bodrovics)
[🌍](#translation-bodrovics "Translation") | [
priatna](https://github.com/priatna)
[🌍](#translation-priatna "Translation") | [
Fan Jiang](https://amayume.net)
[🌍](#translation-ProfFan "Translation") | +| [
ragnarcx](https://github.com/ragnarcx)
[🌍](#translation-ragnarcx "Translation") | [
Rein van Haaren](http://www.reinvanhaaren.nl/)
[🌍](#translation-reinvanhaaren "Translation") | [
Teguh Dwicaksana](http://dheche.songolimo.net)
[🌍](#translation-dheche "Translation") | [
fraccie](https://github.com/FRaccie)
[🌍](#translation-FRaccie "Translation") | [
vinzruzell](https://github.com/vinzruzell)
[🌍](#translation-vinzruzell "Translation") | [
Kevin Austin](http://kevinaustin.com)
[🌍](#translation-vipsystem "Translation") | [
Wira Sandy](http://azuraweb.xyz)
[🌍](#translation-wira-sandy "Translation") | +| [
Илья](https://github.com/GrayHoax)
[🌍](#translation-GrayHoax "Translation") | [
GodUseVPN](https://github.com/godusevpn)
[🌍](#translation-godusevpn "Translation") | [
周周](https://github.com/EngrZhou)
[🌍](#translation-EngrZhou "Translation") | [
Sam](https://github.com/takuy)
[💻](https://github.com/snipe/snipe-it/commits?author=takuy "Code") | [
Azerothian](https://www.illisian.com.au)
[💻](https://github.com/snipe/snipe-it/commits?author=Azerothian "Code") | [
Wes Hulette](http://macfoo.wordpress.com/)
[💻](https://github.com/snipe/snipe-it/commits?author=jwhulette "Code") | [
patrict](https://github.com/patrict)
[💻](https://github.com/snipe/snipe-it/commits?author=patrict "Code") | +| [
Dmitriy Minaev](https://github.com/VELIKII-DIVAN)
[💻](https://github.com/snipe/snipe-it/commits?author=VELIKII-DIVAN "Code") | [
liquidhorse](https://github.com/liquidhorse)
[💻](https://github.com/snipe/snipe-it/commits?author=liquidhorse "Code") | [
Jordi Boggiano](https://seld.be/)
[💻](https://github.com/snipe/snipe-it/commits?author=Seldaek "Code") | [
Ivan Nieto](https://github.com/inietov)
[💻](https://github.com/snipe/snipe-it/commits?author=inietov "Code") | [
Ben RUBSON](https://github.com/benrubson)
[💻](https://github.com/snipe/snipe-it/commits?author=benrubson "Code") | [
NMathar](https://github.com/NMathar)
[💻](https://github.com/snipe/snipe-it/commits?author=NMathar "Code") | [
Steffen](https://github.com/smb)
[💻](https://github.com/snipe/snipe-it/commits?author=smb "Code") | +| [
Sxderp](https://github.com/Sxderp)
[💻](https://github.com/snipe/snipe-it/commits?author=Sxderp "Code") | [
fanta8897](https://github.com/fanta8897)
[💻](https://github.com/snipe/snipe-it/commits?author=fanta8897 "Code") | [
Andrey Bolonin](https://andreybolonin.com/phpconsulting/)
[💻](https://github.com/snipe/snipe-it/commits?author=andreybolonin "Code") | [
shinayoshi](http://www.shinayoshi.net/)
[💻](https://github.com/snipe/snipe-it/commits?author=shinayoshi "Code") | [
Hubert](https://github.com/reuser)
[💻](https://github.com/snipe/snipe-it/commits?author=reuser "Code") | [
KeenRivals](https://brashear.me)
[💻](https://github.com/snipe/snipe-it/commits?author=KeenRivals "Code") | [
omyno](https://github.com/omyno)
[💻](https://github.com/snipe/snipe-it/commits?author=omyno "Code") | +| [
Evgeny](https://github.com/jackka)
[💻](https://github.com/snipe/snipe-it/commits?author=jackka "Code") | [
Colin Campbell](https://digitalist.se)
[💻](https://github.com/snipe/snipe-it/commits?author=colin-campbell "Code") | [
Ľubomír Kučera](https://github.com/lubo)
[💻](https://github.com/snipe/snipe-it/commits?author=lubo "Code") | [
Martin Meredith](https://www.sourceguru.net)
[💻](https://github.com/snipe/snipe-it/commits?author=Mezzle "Code") | [
Tim Farmer](https://github.com/timothyfarmer)
[💻](https://github.com/snipe/snipe-it/commits?author=timothyfarmer "Code") | [
Marián Skrip](https://github.com/mskrip)
[💻](https://github.com/snipe/snipe-it/commits?author=mskrip "Code") | [
Godfrey Martinez](https://github.com/Godmartinz)
[💻](https://github.com/snipe/snipe-it/commits?author=Godmartinz "Code") | +| [
bigtreeEdo](https://github.com/bigtreeEdo)
[💻](https://github.com/snipe/snipe-it/commits?author=bigtreeEdo "Code") | [
Colin McNeil](https://colinmcneil.me/)
[💻](https://github.com/snipe/snipe-it/commits?author=ColinMcNeil "Code") | [
JoKneeMo](https://github.com/JoKneeMo)
[💻](https://github.com/snipe/snipe-it/commits?author=JoKneeMo "Code") | [
Joshi](http://www.redbridge.se)
[💻](https://github.com/snipe/snipe-it/commits?author=joshi-redbridge "Code") | [
Anthony Burns](https://github.com/anthonypburns)
[💻](https://github.com/snipe/snipe-it/commits?author=anthonypburns "Code") | [
johnson-yi](https://github.com/johnson-yi)
[💻](https://github.com/snipe/snipe-it/commits?author=johnson-yi "Code") | [
Sanjay Govind](https://tangentmc.net)
[💻](https://github.com/snipe/snipe-it/commits?author=sanjay900 "Code") | +| [
Peter Upfold](https://peter.upfold.org.uk/)
[💻](https://github.com/snipe/snipe-it/commits?author=PeterUpfold "Code") | [
Jared Biel](https://github.com/jbiel)
[💻](https://github.com/snipe/snipe-it/commits?author=jbiel "Code") | [
Dampfklon](https://github.com/dampfklon)
[💻](https://github.com/snipe/snipe-it/commits?author=dampfklon "Code") | [
Charles Hamilton](https://communityclosing.com)
[💻](https://github.com/snipe/snipe-it/commits?author=chamilton-ccn "Code") | [
Giuseppe Iannello](https://github.com/giannello)
[💻](https://github.com/snipe/snipe-it/commits?author=giannello "Code") | [
Peter Dave Hello](https://www.peterdavehello.org/)
[💻](https://github.com/snipe/snipe-it/commits?author=PeterDaveHello "Code") | [
sigmoidal](https://github.com/sigmoidal)
[💻](https://github.com/snipe/snipe-it/commits?author=sigmoidal "Code") | +| [
Vincent Lainé](https://github.com/phenixdotnet)
[💻](https://github.com/snipe/snipe-it/commits?author=phenixdotnet "Code") | [
Lucas Pleß](http://www.lucas-pless.com)
[💻](https://github.com/snipe/snipe-it/commits?author=derlucas "Code") | [
Ian Littman](http://twitter.com/iansltx)
[💻](https://github.com/snipe/snipe-it/commits?author=iansltx "Code") | [
João Paulo](https://github.com/PauloLuna)
[💻](https://github.com/snipe/snipe-it/commits?author=PauloLuna "Code") | [
ThoBur](https://github.com/ThoBur)
[💻](https://github.com/snipe/snipe-it/commits?author=ThoBur "Code") | [
Alexander Chibrikin](http://phpprofi.ru/)
[💻](https://github.com/snipe/snipe-it/commits?author=alek13 "Code") | [
Anthony Winstanley](https://github.com/winstan)
[💻](https://github.com/snipe/snipe-it/commits?author=winstan "Code") | +| [
Folke](https://github.com/fashberg)
[💻](https://github.com/snipe/snipe-it/commits?author=fashberg "Code") | [
Bennett Blodinger](https://github.com/benwa)
[💻](https://github.com/snipe/snipe-it/commits?author=benwa "Code") | [
NMC](https://nmc.dev)
[💻](https://github.com/snipe/snipe-it/commits?author=ncareau "Code") | [
andres-baller](https://github.com/andres-baller)
[💻](https://github.com/snipe/snipe-it/commits?author=andres-baller "Code") | [
sean-borg](https://github.com/sean-borg)
[💻](https://github.com/snipe/snipe-it/commits?author=sean-borg "Code") | [
EDVLeer](https://github.com/EDVLeer)
[💻](https://github.com/snipe/snipe-it/commits?author=EDVLeer "Code") | [
Kurokat](https://github.com/Kurokat)
[💻](https://github.com/snipe/snipe-it/commits?author=Kurokat "Code") | +| [
Kevin Köllmann](https://www.kevinkoellmann.de)
[💻](https://github.com/snipe/snipe-it/commits?author=koelle25 "Code") | [
sw-mreyes](https://github.com/sw-mreyes)
[💻](https://github.com/snipe/snipe-it/commits?author=sw-mreyes "Code") | [
Joel Pittet](https://pittet.ca)
[💻](https://github.com/snipe/snipe-it/commits?author=joelpittet "Code") | [
Eli Young](https://elyscape.com)
[💻](https://github.com/snipe/snipe-it/commits?author=elyscape "Code") | [
Raell Dottin](https://github.com/raelldottin)
[💻](https://github.com/snipe/snipe-it/commits?author=raelldottin "Code") | [
Tom Misilo](https://github.com/misilot)
[💻](https://github.com/snipe/snipe-it/commits?author=misilot "Code") | [
David Davenne](http://david.davenne.be)
[💻](https://github.com/snipe/snipe-it/commits?author=JuustoMestari "Code") | +| [
Mark Stenglein](https://markstenglein.com)
[💻](https://github.com/snipe/snipe-it/commits?author=ocelotsloth "Code") | [
ajsy](https://github.com/ajsy)
[💻](https://github.com/snipe/snipe-it/commits?author=ajsy "Code") | [
Jan Kiesewetter](https://github.com/t3easy)
[💻](https://github.com/snipe/snipe-it/commits?author=t3easy "Code") | [
Tetrachloromethane250](https://github.com/Tetrachloromethane250)
[💻](https://github.com/snipe/snipe-it/commits?author=Tetrachloromethane250 "Code") | [
Lars Kajes](https://www.kajes.se/)
[💻](https://github.com/snipe/snipe-it/commits?author=kajes "Code") | [
Joly0](https://github.com/Joly0)
[💻](https://github.com/snipe/snipe-it/commits?author=Joly0 "Code") | [
theburger](https://github.com/limeless)
[💻](https://github.com/snipe/snipe-it/commits?author=limeless "Code") | +| [
David Valin Alonso](https://github.com/deivishome)
[💻](https://github.com/snipe/snipe-it/commits?author=deivishome "Code") | [
andreaci](https://github.com/andreaci)
[💻](https://github.com/snipe/snipe-it/commits?author=andreaci "Code") | [
Jelle Sebreghts](http://www.jellesebreghts.be)
[💻](https://github.com/snipe/snipe-it/commits?author=Jelle-S "Code") | [
Michael Pietsch](https://github.com/Skywalker-11)
| [
Masudul Haque Shihab](https://github.com/sh1hab)
[💻](https://github.com/snipe/snipe-it/commits?author=sh1hab "Code") | [
Supapong Areeprasertkul](http://www.freedomdive.com/)
[💻](https://github.com/snipe/snipe-it/commits?author=zybersup "Code") | [
Peter Sarossy](https://github.com/psarossy)
[💻](https://github.com/snipe/snipe-it/commits?author=psarossy "Code") | +| [
Renee Margaret McConahy](https://github.com/nepella)
[💻](https://github.com/snipe/snipe-it/commits?author=nepella "Code") | [
JohnnyPicnic](https://github.com/JohnnyPicnic)
[💻](https://github.com/snipe/snipe-it/commits?author=JohnnyPicnic "Code") | [
markbrule](https://github.com/markbrule)
[💻](https://github.com/snipe/snipe-it/commits?author=markbrule "Code") | [
Mike Campbell](https://github.com/mikecmpbll)
[💻](https://github.com/snipe/snipe-it/commits?author=mikecmpbll "Code") | [
tbrconnect](https://github.com/tbrconnect)
[💻](https://github.com/snipe/snipe-it/commits?author=tbrconnect "Code") | [
kcoyo](https://github.com/kcoyo)
[💻](https://github.com/snipe/snipe-it/commits?author=kcoyo "Code") | [
Travis Miller](https://travismiller.com/)
[💻](https://github.com/snipe/snipe-it/commits?author=travismiller "Code") | +| [
Evan Taylor](https://github.com/Delta5)
[💻](https://github.com/snipe/snipe-it/commits?author=Delta5 "Code") | [
Petri Asikainen](https://github.com/PetriAsi)
[💻](https://github.com/snipe/snipe-it/commits?author=PetriAsi "Code") | [
derdeagle](https://github.com/derdeagle)
[💻](https://github.com/snipe/snipe-it/commits?author=derdeagle "Code") | [
Mike Frysinger](https://wh0rd.org/)
[💻](https://github.com/snipe/snipe-it/commits?author=vapier "Code") | [
ALPHA](https://github.com/AL4AL)
[💻](https://github.com/snipe/snipe-it/commits?author=AL4AL "Code") | [
FliegenKLATSCH](https://www.ifern.de)
[💻](https://github.com/snipe/snipe-it/commits?author=FliegenKLATSCH "Code") | [
Jeremy Price](https://github.com/jerm)
[💻](https://github.com/snipe/snipe-it/commits?author=jerm "Code") | +| [
Toreg87](https://github.com/Toreg87)
[💻](https://github.com/snipe/snipe-it/commits?author=Toreg87 "Code") | [
Matthew Nickson](https://github.com/Computroniks)
[💻](https://github.com/snipe/snipe-it/commits?author=Computroniks "Code") | [
Jethro Nederhof](https://jethron.id.au)
[💻](https://github.com/snipe/snipe-it/commits?author=jethron "Code") | [
Oskar Stenberg](https://github.com/01ste02)
[💻](https://github.com/snipe/snipe-it/commits?author=01ste02 "Code") | [
Robert-Azelis](https://github.com/Robert-Azelis)
[💻](https://github.com/snipe/snipe-it/commits?author=Robert-Azelis "Code") | [
Alexander William Smith](https://github.com/alwism)
[💻](https://github.com/snipe/snipe-it/commits?author=alwism "Code") | [
LEITWERK AG](https://www.leitwerk.de/)
[💻](https://github.com/snipe/snipe-it/commits?author=leitwerk-ag "Code") | +| [
Adam](http://www.aboutcher.co.uk)
[💻](https://github.com/snipe/snipe-it/commits?author=adamboutcher "Code") | [
Ian](https://snksrv.com)
[💻](https://github.com/snipe/snipe-it/commits?author=sneak-it "Code") | [
Shao Yu-Lung (Allen)](http://blog.bestlong.idv.tw/)
[💻](https://github.com/snipe/snipe-it/commits?author=bestlong "Code") | [
Haxatron](https://github.com/Haxatron)
[💻](https://github.com/snipe/snipe-it/commits?author=Haxatron "Code") | [
PlaneNuts](https://github.com/PlaneNuts)
[💻](https://github.com/snipe/snipe-it/commits?author=PlaneNuts "Code") | [
Bradley Coudriet](http://bjcpgd.cias.rit.edu)
[💻](https://github.com/snipe/snipe-it/commits?author=exula "Code") | [
Dalton Durst](https://daltondur.st)
[💻](https://github.com/snipe/snipe-it/commits?author=UniversalSuperBox "Code") | +| [
Alex Janes](https://adagiohealth.org)
[💻](https://github.com/snipe/snipe-it/commits?author=adagioajanes "Code") | [
Nuraeil](https://github.com/nuraeil)
[💻](https://github.com/snipe/snipe-it/commits?author=nuraeil "Code") | [
TenOfTens](https://github.com/TenOfTens)
[💻](https://github.com/snipe/snipe-it/commits?author=TenOfTens "Code") | [
waffle](https://ditisjens.be/)
[💻](https://github.com/snipe/snipe-it/commits?author=insert-waffle "Code") | [
Yevhenii Huzii](https://github.com/QveenSi)
[💻](https://github.com/snipe/snipe-it/commits?author=QveenSi "Code") | [
Achmad Fienan Rahardianto](https://github.com/veenone)
[💻](https://github.com/snipe/snipe-it/commits?author=veenone "Code") | [
Yevhenii Huzii](https://github.com/QveenSi)
[💻](https://github.com/snipe/snipe-it/commits?author=QveenSi "Code") | +| [
Christian Weirich](https://github.com/chrisweirich)
[💻](https://github.com/snipe/snipe-it/commits?author=chrisweirich "Code") | [
denzfarid](https://github.com/denzfarid)
| [
ntbutler-nbcs](https://github.com/ntbutler-nbcs)
[💻](https://github.com/snipe/snipe-it/commits?author=ntbutler-nbcs "Code") | [
Naveen](https://naveensrinivasan.dev)
[💻](https://github.com/snipe/snipe-it/commits?author=naveensrinivasan "Code") | [
Mike Roquemore](https://github.com/mikeroq)
[💻](https://github.com/snipe/snipe-it/commits?author=mikeroq "Code") | [
Daniel Reeder](https://github.com/reederda)
[🌍](#translation-reederda "Translation") [🌍](#translation-reederda "Translation") [💻](https://github.com/snipe/snipe-it/commits?author=reederda "Code") | [
vickyjaura183](https://github.com/vickyjaura183)
[💻](https://github.com/snipe/snipe-it/commits?author=vickyjaura183 "Code") | +| [
Peace](https://github.com/julian-piehl)
[💻](https://github.com/snipe/snipe-it/commits?author=julian-piehl "Code") | [
Kyle Gordon](https://github.com/kylegordon)
[💻](https://github.com/snipe/snipe-it/commits?author=kylegordon "Code") | [
Katharina Drexel](http://www.bfh.ch)
[💻](https://github.com/snipe/snipe-it/commits?author=sunflowerbofh "Code") | [
David Sferruzza](https://david.sferruzza.fr/)
[💻](https://github.com/snipe/snipe-it/commits?author=dsferruzza "Code") | [
Rick Nelson](https://github.com/rnelsonee)
[💻](https://github.com/snipe/snipe-it/commits?author=rnelsonee "Code") | [
BasO12](https://github.com/BasO12)
[💻](https://github.com/snipe/snipe-it/commits?author=BasO12 "Code") | [
Vautia](https://github.com/Vautia)
[💻](https://github.com/snipe/snipe-it/commits?author=Vautia "Code") | +| [
Chris Hartjes](http://www.littlehart.net/atthekeyboard)
[💻](https://github.com/snipe/snipe-it/commits?author=chartjes "Code") | [
geo-chen](https://github.com/geo-chen)
[💻](https://github.com/snipe/snipe-it/commits?author=geo-chen "Code") | [
Phan Nguyen](https://github.com/nh314)
[💻](https://github.com/snipe/snipe-it/commits?author=nh314 "Code") | [
Iisakki Jaakkola](https://github.com/StarlessNights)
[💻](https://github.com/snipe/snipe-it/commits?author=StarlessNights "Code") | [
Ikko Ashimine](https://bandism.net/)
[💻](https://github.com/snipe/snipe-it/commits?author=eltociear "Code") | [
Lukas Fehling](https://github.com/lukasfehling)
[💻](https://github.com/snipe/snipe-it/commits?author=lukasfehling "Code") | [
Fernando Almeida](https://github.com/fernando-almeida)
[💻](https://github.com/snipe/snipe-it/commits?author=fernando-almeida "Code") | +| [
akemidx](https://github.com/akemidx)
[💻](https://github.com/snipe/snipe-it/commits?author=akemidx "Code") | [
Oguz Bilgic](http://oguz.site)
[💻](https://github.com/snipe/snipe-it/commits?author=oguzbilgic "Code") | [
Scooter Crawford](https://github.com/scoo73r)
[💻](https://github.com/snipe/snipe-it/commits?author=scoo73r "Code") | [
subdriven](https://github.com/subdriven)
[💻](https://github.com/snipe/snipe-it/commits?author=subdriven "Code") | [
Andrew Savinykh](https://github.com/AndrewSav)
[💻](https://github.com/snipe/snipe-it/commits?author=AndrewSav "Code") | [
Tadayuki Onishi](https://kenchan0130.github.io)
[💻](https://github.com/snipe/snipe-it/commits?author=kenchan0130 "Code") | [
Florian](https://github.com/floschoepfer)
[💻](https://github.com/snipe/snipe-it/commits?author=floschoepfer "Code") | +| [
Spencer Long](http://spencerlong.com)
[💻](https://github.com/snipe/snipe-it/commits?author=spencerrlongg "Code") | [
Marcus Moore](https://github.com/marcusmoore)
[💻](https://github.com/snipe/snipe-it/commits?author=marcusmoore "Code") | [
Martin Meredith](https://github.com/Mezzle)
| [
dboth](http://dboth.de)
[💻](https://github.com/snipe/snipe-it/commits?author=dboth "Code") | [
Zachary Fleck](https://github.com/zacharyfleck)
[💻](https://github.com/snipe/snipe-it/commits?author=zacharyfleck "Code") | [
VIKAAS-A](https://github.com/vikaas-cyper)
[💻](https://github.com/snipe/snipe-it/commits?author=vikaas-cyper "Code") | [
Abdul Kareem](https://github.com/ak-piracha)
[💻](https://github.com/snipe/snipe-it/commits?author=ak-piracha "Code") | +| [
NojoudAlshehri](https://github.com/NojoudAlshehri)
[💻](https://github.com/snipe/snipe-it/commits?author=NojoudAlshehri "Code") | [
Stefan Stidl](https://github.com/stefanstidlffg)
[💻](https://github.com/snipe/snipe-it/commits?author=stefanstidlffg "Code") | [
Quentin Aymard](https://github.com/qay21)
[💻](https://github.com/snipe/snipe-it/commits?author=qay21 "Code") | [
Grant Le Roux](https://github.com/cram42)
[💻](https://github.com/snipe/snipe-it/commits?author=cram42 "Code") | [
Bogdan](http://@singrity)
[💻](https://github.com/snipe/snipe-it/commits?author=Singrity "Code") | [
mmanjos](https://github.com/mmanjos)
[💻](https://github.com/snipe/snipe-it/commits?author=mmanjos "Code") | [
Abdelaziz Faki](https://azooz2014.github.io/)
[💻](https://github.com/snipe/snipe-it/commits?author=Azooz2014 "Code") | +| [
bilias](https://github.com/bilias)
[💻](https://github.com/snipe/snipe-it/commits?author=bilias "Code") | [
coach1988](https://github.com/coach1988)
[💻](https://github.com/snipe/snipe-it/commits?author=coach1988 "Code") | [
MrM](https://github.com/mauro-miatello)
[💻](https://github.com/snipe/snipe-it/commits?author=mauro-miatello "Code") | [
koiakoia](https://github.com/koiakoia)
[💻](https://github.com/snipe/snipe-it/commits?author=koiakoia "Code") | [
Mustafa Online](https://github.com/mustafa-online)
[💻](https://github.com/snipe/snipe-it/commits?author=mustafa-online "Code") | [
franceslui](https://github.com/franceslui)
[💻](https://github.com/snipe/snipe-it/commits?author=franceslui "Code") | [
Q4kK](https://github.com/Q4kK)
[💻](https://github.com/snipe/snipe-it/commits?author=Q4kK "Code") | +| [
squintfox](https://github.com/squintfox)
[💻](https://github.com/snipe/snipe-it/commits?author=squintfox "Code") | [
Jeff Clay](https://github.com/jeffclay)
[💻](https://github.com/snipe/snipe-it/commits?author=jeffclay "Code") | [
Phil J R](https://github.com/PP-JN-RL)
[💻](https://github.com/snipe/snipe-it/commits?author=PP-JN-RL "Code") | [
i_virus](https://www.corelight.com/)
[💻](https://github.com/snipe/snipe-it/commits?author=chandanchowdhury "Code") | [
Paul Grime](https://github.com/gitgrimbo)
[💻](https://github.com/snipe/snipe-it/commits?author=gitgrimbo "Code") | [
Lee Porte](https://leeporte.co.uk)
[💻](https://github.com/snipe/snipe-it/commits?author=LeePorte "Code") | [
BRYAN ](https://github.com/bryanlopezinc)
[💻](https://github.com/snipe/snipe-it/commits?author=bryanlopezinc "Code") [⚠️](https://github.com/snipe/snipe-it/commits?author=bryanlopezinc "Tests") | +| [
U-H-T](https://github.com/U-H-T)
[💻](https://github.com/snipe/snipe-it/commits?author=U-H-T "Code") | [
Matt Tyree](https://github.com/Tyree)
[📖](https://github.com/snipe/snipe-it/commits?author=Tyree "Documentation") | [
Florent Bervas](http://spoontux.net)
[💻](https://github.com/snipe/snipe-it/commits?author=FlorentDotMe "Code") | [
Daniel Albertsen](https://ditscheri.com)
[💻](https://github.com/snipe/snipe-it/commits?author=dbakan "Code") | [
r-xyz](https://github.com/r-xyz)
[💻](https://github.com/snipe/snipe-it/commits?author=r-xyz "Code") | [
Steven Mainor](https://github.com/DrekiDegga)
[💻](https://github.com/snipe/snipe-it/commits?author=DrekiDegga "Code") | This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! diff --git a/TESTING.md b/TESTING.md index 92f3184eec..002cf27d3a 100644 --- a/TESTING.md +++ b/TESTING.md @@ -20,7 +20,7 @@ APP_DEBUG=true APP_KEY=base64:glJpcM7BYwWiBggp3SQ/+NlRkqsBQMaGEOjemXqJzOU= APP_URL=http://localhost:8000 APP_TIMEZONE='UTC' -APP_LOCALE=en +APP_LOCALE=en-US # -------------------------------------------- # REQUIRED: DATABASE SETTINGS diff --git a/app/Console/Commands/LdapSync.php b/app/Console/Commands/LdapSync.php index 1856bf10fc..845db27ef9 100755 --- a/app/Console/Commands/LdapSync.php +++ b/app/Console/Commands/LdapSync.php @@ -251,6 +251,7 @@ class LdapSync extends Command // Creating a new user. $user = new User; $user->password = $user->noPassword(); + $user->locale = app()->getLocale(); $user->activated = 1; // newly created users can log in by default, unless AD's UAC is in use, or an active flag is set (below) $item['createorupdate'] = 'created'; } diff --git a/app/Console/Commands/MergeUsersByUsername.php b/app/Console/Commands/MergeUsersByUsername.php index 390942708d..0c5e966ab9 100644 --- a/app/Console/Commands/MergeUsersByUsername.php +++ b/app/Console/Commands/MergeUsersByUsername.php @@ -2,6 +2,7 @@ namespace App\Console\Commands; +use App\Events\UserMerged; use App\Models\User; use Carbon\Carbon; use Illuminate\Console\Command; @@ -51,7 +52,7 @@ class MergeUsersByUsername extends Command $bad_users = User::where('username', '=', trim($parts[0])) ->whereNull('deleted_at') - ->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations') + ->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations','uploads', 'acceptances') ->get(); @@ -105,10 +106,26 @@ class MergeUsersByUsername extends Command $managedLocation->save(); } + foreach ($bad_user->uploads as $upload) { + $this->info('Updating upload log record '.$upload->id.' to user '.$user->id); + $upload->item_id = $user->id; + $upload->save(); + } + + foreach ($bad_user->acceptances as $acceptance) { + $this->info('Updating acceptance log record '.$acceptance->id.' to user '.$user->id); + $acceptance->item_id = $user->id; + $acceptance->save(); + } + // Mark the user as deleted $this->info('Marking the user as deleted'); $bad_user->deleted_at = Carbon::now()->timestamp; $bad_user->save(); + + event(new UserMerged($bad_user, $user, null)); + + } } } diff --git a/app/Console/Commands/ResetDemoSettings.php b/app/Console/Commands/ResetDemoSettings.php index 9ddade9efb..22508377d7 100644 --- a/app/Console/Commands/ResetDemoSettings.php +++ b/app/Console/Commands/ResetDemoSettings.php @@ -73,6 +73,7 @@ class ResetDemoSettings extends Command $settings->saml_forcelogin = '0'; $settings->saml_slo = null; $settings->saml_custom_settings = null; + $settings->default_avatar = 'default.png'; $settings->save(); diff --git a/app/Console/Commands/SendAcceptanceReminder.php b/app/Console/Commands/SendAcceptanceReminder.php new file mode 100644 index 0000000000..dd9e59f611 --- /dev/null +++ b/app/Console/Commands/SendAcceptanceReminder.php @@ -0,0 +1,105 @@ +where('checkoutable_type', 'App\Models\Asset') + ->whereHas('checkoutable', function($query) { + $query->where('archived', 0); + }) + ->with(['assignedTo', 'checkoutable.assignedTo', 'checkoutable.model', 'checkoutable.adminuser']) + ->get(); + + $count = 0; + $unacceptedAssetGroups = $pending + ->filter(function($acceptance) { + return $acceptance->checkoutable_type == 'App\Models\Asset'; + }) + ->map(function($acceptance) { + return ['assetItem' => $acceptance->checkoutable, 'acceptance' => $acceptance]; + }) + ->groupBy(function($item) { + return $item['acceptance']->assignedTo ? $item['acceptance']->assignedTo->id : ''; + }); + + $no_mail_address = []; + + foreach($unacceptedAssetGroups as $unacceptedAssetGroup) { + $item_count = $unacceptedAssetGroup->count(); + foreach ($unacceptedAssetGroup as $unacceptedAsset) { +// if ($unacceptedAsset['acceptance']->assignedTo->email == ''){ +// $no_mail_address[] = $unacceptedAsset['checkoutable']->assignedTo->present()->fullName; +// } + if ($unacceptedAsset['acceptance']->assignedTo) { + + if (!$unacceptedAsset['acceptance']->assignedTo->locale) { + Notification::locale(Setting::getSettings()->locale)->send( + $unacceptedAsset['acceptance']->assignedTo, + new UnacceptedAssetReminderNotification($unacceptedAsset['assetItem'], $count) + ); + } else { + Notification::send( + $unacceptedAsset['acceptance']->assignedTo, + new UnacceptedAssetReminderNotification($unacceptedAsset, $item_count) + ); + } + $count++; + } + } + } + + if (!empty($no_mail_address)) { + foreach($no_mail_address as $user) { + return $user.' has no email.'; + } + + + } + + + + $this->info($count.' users notified.'); + } +} diff --git a/app/Events/UserMerged.php b/app/Events/UserMerged.php index b045fdef03..3a7f4d6a2c 100644 --- a/app/Events/UserMerged.php +++ b/app/Events/UserMerged.php @@ -15,7 +15,7 @@ class UserMerged * * @return void */ - public function __construct(User $from_user, User $to_user, User $admin) + public function __construct(User $from_user, User $to_user, ?User $admin) { $this->merged_from = $from_user; $this->merged_to = $to_user; diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 1ac2a90a34..5b32906273 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -62,8 +62,9 @@ class Helper 'mn' => 'mn-MN', // Mongolian 'ms' => 'ms-MY', // Malay 'nl' => 'nl-NL', // Dutch - 'no' => 'no-NO', // Norwegian + 'no' => 'nb-NO', // Norwegian Bokmål 'pl' => 'pl-PL', // Polish + 'pt' => 'pt-PT', // Portuguese 'ro' => 'ro-RO', // Romanian 'ru' => 'ru-RU', // Russian 'sk' => 'sk-SK', // Slovak @@ -1440,7 +1441,6 @@ class Helper foreach (self::$language_map as $legacy => $new) { if ($language_code == $legacy) { - Log::debug('Current language is '.$legacy.', using '.$new.' instead'); return $new; } } @@ -1451,6 +1451,7 @@ class Helper public static function mapBackToLegacyLocale($new_locale = null) { + if (strlen($new_locale) <= 4) { return $new_locale; //"new locale" apparently wasn't quite so new } @@ -1458,12 +1459,21 @@ class Helper // This does a *reverse* search against our new language map array - given the value, find the *key* for it $legacy_locale = array_search($new_locale, self::$language_map); - if($legacy_locale !== false) { + if ($legacy_locale !== false) { return $legacy_locale; } return $new_locale; // better that you have some weird locale that doesn't fit into our mappings anywhere than 'void' } + public static function determineLanguageDirection() { + return in_array(app()->getLocale(), + [ + 'ar-SA', + 'fa-IR', + 'he-IL' + ]) ? 'rtl' : 'ltr'; + } + static public function getRedirectOption($request, $id, $table, $asset_id = null) { diff --git a/app/Helpers/StorageHelper.php b/app/Helpers/StorageHelper.php index 94dfe62c76..2cdab1d66c 100644 --- a/app/Helpers/StorageHelper.php +++ b/app/Helpers/StorageHelper.php @@ -3,10 +3,13 @@ namespace App\Helpers; use Illuminate\Support\Facades\Storage; - +use Illuminate\Http\Response; +use Illuminate\Http\RedirectResponse; +use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\StreamedResponse; class StorageHelper { - public static function downloader($filename, $disk = 'default') + public static function downloader($filename, $disk = 'default') : BinaryFileResponse | RedirectResponse | StreamedResponse { if ($disk == 'default') { $disk = config('filesystems.default'); diff --git a/app/Http/Controllers/Accessories/AccessoriesController.php b/app/Http/Controllers/Accessories/AccessoriesController.php index 81d5d692c5..bb2e74899b 100755 --- a/app/Http/Controllers/Accessories/AccessoriesController.php +++ b/app/Http/Controllers/Accessories/AccessoriesController.php @@ -7,10 +7,10 @@ use App\Http\Controllers\Controller; use App\Http\Requests\ImageUploadRequest; use App\Models\Accessory; use App\Models\Company; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Validator; -use Redirect; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Log; /** This controller handles all actions related to Accessories for @@ -27,13 +27,10 @@ class AccessoriesController extends Controller * @author [A. Gianotto] [] * @see AccessoriesController::getDatatable() method that generates the JSON response * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { $this->authorize('index', Accessory::class); - return view('accessories/index'); } @@ -41,10 +38,8 @@ class AccessoriesController extends Controller * Returns a view with a form to create a new Accessory. * * @author [A. Gianotto] [] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', Accessory::class); $category_type = 'accessory'; @@ -58,10 +53,8 @@ class AccessoriesController extends Controller * * @author [A. Gianotto] [] * @param ImageUploadRequest $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize(Accessory::class); @@ -80,7 +73,7 @@ class AccessoriesController extends Controller $accessory->purchase_date = request('purchase_date'); $accessory->purchase_cost = request('purchase_cost'); $accessory->qty = request('qty'); - $accessory->user_id = Auth::user()->id; + $accessory->user_id = auth()->id(); $accessory->supplier_id = request('supplier_id'); $accessory->notes = request('notes'); @@ -100,15 +93,12 @@ class AccessoriesController extends Controller * * @author [A. Gianotto] [] * @param int $accessoryId - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($accessoryId = null) + public function edit($accessoryId = null) : View | RedirectResponse { if ($item = Accessory::find($accessoryId)) { $this->authorize($item); - return view('accessories/edit', compact('item'))->with('category_type', 'accessory'); } @@ -122,9 +112,8 @@ class AccessoriesController extends Controller * @author [J. Vinsmoke] * @param int $accessoryId * @since [v6.0] - * @return View */ - public function getClone($accessoryId = null) + public function getClone($accessoryId = null) : View | RedirectResponse { $this->authorize('create', Accessory::class); @@ -151,10 +140,8 @@ class AccessoriesController extends Controller * @author [A. Gianotto] [] * @param ImageUploadRequest $request * @param int $accessoryId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(ImageUploadRequest $request, $accessoryId = null) + public function update(ImageUploadRequest $request, $accessoryId = null) : RedirectResponse { if ($accessory = Accessory::withCount('users as users_count')->find($accessoryId)) { @@ -205,10 +192,8 @@ class AccessoriesController extends Controller * * @author [A. Gianotto] [] * @param int $accessoryId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($accessoryId) + public function destroy($accessoryId) : RedirectResponse { if (is_null($accessory = Accessory::find($accessoryId))) { return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.not_found')); @@ -243,10 +228,8 @@ class AccessoriesController extends Controller * @param int $accessoryID * @see AccessoriesController::getDataView() method that generates the JSON response * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($accessoryID = null) + public function show($accessoryID = null) : View | RedirectResponse { $accessory = Accessory::withCount('users as users_count')->find($accessoryID); $this->authorize('view', $accessory); diff --git a/app/Http/Controllers/Accessories/AccessoriesFilesController.php b/app/Http/Controllers/Accessories/AccessoriesFilesController.php index 75fa0b2f12..b63c202d30 100644 --- a/app/Http/Controllers/Accessories/AccessoriesFilesController.php +++ b/app/Http/Controllers/Accessories/AccessoriesFilesController.php @@ -7,10 +7,13 @@ use App\Http\Controllers\Controller; use App\Http\Requests\UploadFileRequest; use App\Models\Actionlog; use App\Models\Accessory; -use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Storage; -use Symfony\Accessory\HttpFoundation\JsonResponse; use Illuminate\Support\Facades\Log; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; +use Illuminate\Support\Facades\Response; +use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\StreamedResponse; class AccessoriesFilesController extends Controller { @@ -19,20 +22,17 @@ class AccessoriesFilesController extends Controller * * @param UploadFileRequest $request * @param int $accessoryId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException - *@author [A. Gianotto] [] + * @author [A. Gianotto] [] * @since [v1.0] * @todo Switch to using the AssetFileRequest form request validator. */ - public function store(UploadFileRequest $request, $accessoryId = null) + public function store(UploadFileRequest $request, $accessoryId = null) : RedirectResponse { if (config('app.lock_passwords')) { return redirect()->route('accessories.show', ['accessory'=>$accessoryId])->with('error', trans('general.feature_disabled')); } - $accessory = Accessory::find($accessoryId); if (isset($accessory->id)) { @@ -69,10 +69,8 @@ class AccessoriesFilesController extends Controller * @since [v1.0] * @param int $accessoryId * @param int $fileId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($accessoryId = null, $fileId = null) + public function destroy($accessoryId = null, $fileId = null) : RedirectResponse { $accessory = Accessory::find($accessoryId); @@ -107,10 +105,8 @@ class AccessoriesFilesController extends Controller * @since [v1.4] * @param int $accessoryId * @param int $fileId - * @return \Symfony\Accessory\HttpFoundation\Response - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($accessoryId = null, $fileId = null, $download = true) + public function show($accessoryId = null, $fileId = null, $download = true) : View | RedirectResponse | Response | BinaryFileResponse | StreamedResponse { Log::debug('Private filesystem is: '.config('filesystems.default')); diff --git a/app/Http/Controllers/Accessories/AccessoryCheckinController.php b/app/Http/Controllers/Accessories/AccessoryCheckinController.php index 29c6065057..eff635d24a 100644 --- a/app/Http/Controllers/Accessories/AccessoryCheckinController.php +++ b/app/Http/Controllers/Accessories/AccessoryCheckinController.php @@ -7,8 +7,9 @@ use App\Http\Controllers\Controller; use App\Models\Accessory; use App\Models\User; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; class AccessoryCheckinController extends Controller { @@ -19,15 +20,10 @@ class AccessoryCheckinController extends Controller * @param Request $request * @param int $accessoryUserId * @param string $backto - * @return View - * @internal param int $accessoryId - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create($accessoryUserId = null, $backto = null) + public function create($accessoryUserId = null, $backto = null) : View | RedirectResponse { - // Check if the accessory exists if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) { - // Redirect to the accessory management page with error return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.not_found')); } @@ -44,15 +40,10 @@ class AccessoryCheckinController extends Controller * @author [A. Gianotto] [] * @param null $accessoryUserId * @param string $backto - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException - * @internal param int $accessoryId */ - public function store(Request $request, $accessoryUserId = null, $backto = null) + public function store(Request $request, $accessoryUserId = null, $backto = null) : RedirectResponse { - // Check if the accessory exists if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) { - // Redirect to the accessory management page with error return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist')); } @@ -70,7 +61,7 @@ class AccessoryCheckinController extends Controller if (DB::table('accessories_users')->where('id', '=', $accessory_user->id)->delete()) { $return_to = e($accessory_user->assigned_to); - event(new CheckoutableCheckedIn($accessory, User::find($return_to), Auth::user(), $request->input('note'), $checkin_at)); + event(new CheckoutableCheckedIn($accessory, User::find($return_to), auth()->user(), $request->input('note'), $checkin_at)); return redirect()->route('accessories.show', $accessory->id)->with('success', trans('admin/accessories/message.checkin.success')); } diff --git a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php index 679b8d4251..19c8c6c7c5 100644 --- a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php +++ b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php @@ -4,13 +4,14 @@ namespace App\Http\Controllers\Accessories; use App\Events\CheckoutableCheckedOut; use App\Http\Controllers\Controller; +use App\Http\Requests\AccessoryCheckoutRequest; use App\Models\Accessory; use App\Models\User; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Input; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; class AccessoryCheckoutController extends Controller { @@ -19,10 +20,8 @@ class AccessoryCheckoutController extends Controller * * @author [A. Gianotto] [] * @param int $id - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create($id) + public function create($id) : View | RedirectResponse { if ($accessory = Accessory::withCount('users as users_count')->find($id)) { @@ -58,46 +57,29 @@ class AccessoryCheckoutController extends Controller * * @author [A. Gianotto] [] * @param Request $request - * @param int $accessoryId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException + * @param int $accessory */ - public function store(Request $request, $accessoryId) + public function store(AccessoryCheckoutRequest $request, Accessory $accessory) : RedirectResponse { - // Check if the accessory exists - if (is_null($accessory = Accessory::withCount('users as users_count')->find($accessoryId))) { - // Redirect to the accessory management page with error - return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.user_not_found')); - } $this->authorize('checkout', $accessory); + $accessory->assigned_to = $request->input('assigned_to'); + $user = User::find($request->input('assigned_to')); + $accessory->checkout_qty = $request->input('checkout_qty', 1); - if (!$user = User::find($request->input('assigned_to'))) { - return redirect()->route('accessories.checkout.show', $accessory->id)->with('error', trans('admin/accessories/message.checkout.user_does_not_exist')); + for ($i = 0; $i < $accessory->checkout_qty; $i++) { + $accessory->users()->attach($accessory->id, [ + 'accessory_id' => $accessory->id, + 'created_at' => Carbon::now(), + 'user_id' => Auth::id(), + 'assigned_to' => $request->input('assigned_to'), + 'note' => $request->input('note'), + ]); } - - // Make sure there is at least one available to checkout - if ($accessory->numRemaining() <= 0){ - return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.checkout.unavailable')); - } - - - // Update the accessory data - $accessory->assigned_to = e($request->input('assigned_to')); - - $accessory->users()->attach($accessory->id, [ - 'accessory_id' => $accessory->id, - 'created_at' => Carbon::now(), - 'user_id' => Auth::id(), - 'assigned_to' => $request->get('assigned_to'), - 'note' => $request->input('note'), - ]); - - DB::table('accessories_users')->where('assigned_to', '=', $accessory->assigned_to)->where('accessory_id', '=', $accessory->id)->first(); - - event(new CheckoutableCheckedOut($accessory, $user, Auth::user(), $request->input('note'))); + event(new CheckoutableCheckedOut($accessory, $user, auth()->user(), $request->input('note'))); // Redirect to the new accessory page - return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.checkout.success')); + return redirect()->route('accessories.index') + ->with('success', trans('admin/accessories/message.checkout.success')); } } diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index fafb6aeda5..2c9d29fc16 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -28,20 +28,18 @@ use Illuminate\Support\Str; use App\Http\Controllers\SettingsController; use Barryvdh\DomPDF\Facade\Pdf; use Carbon\Carbon; -use phpDocumentor\Reflection\Types\Compound; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Log; class AcceptanceController extends Controller { /** * Show a listing of pending checkout acceptances for the current user - * - * @return View */ - public function index() + public function index() : View { - $acceptances = CheckoutAcceptance::forUser(Auth::user())->pending()->get(); - + $acceptances = CheckoutAcceptance::forUser(auth()->user())->pending()->get(); return view('account/accept.index', compact('acceptances')); } @@ -49,9 +47,8 @@ class AcceptanceController extends Controller * Shows a form to either accept or decline the checkout acceptance * * @param int $id - * @return mixed */ - public function create($id) + public function create($id) : View | RedirectResponse { $acceptance = CheckoutAcceptance::find($id); @@ -64,7 +61,7 @@ class AcceptanceController extends Controller return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.asset_already_accepted')); } - if (! $acceptance->isCheckedOutTo(Auth::user())) { + if (! $acceptance->isCheckedOutTo(auth()->user())) { return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.incorrect_user_accepted')); } @@ -80,9 +77,8 @@ class AcceptanceController extends Controller * * @param Request $request * @param int $id - * @return \Illuminate\Http\RedirectResponse */ - public function store(Request $request, $id) + public function store(Request $request, $id) : RedirectResponse { $acceptance = CheckoutAcceptance::find($id); @@ -94,7 +90,7 @@ class AcceptanceController extends Controller return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.asset_already_accepted')); } - if (! $acceptance->isCheckedOutTo(Auth::user())) { + if (! $acceptance->isCheckedOutTo(auth()->user())) { return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.incorrect_user_accepted')); } diff --git a/app/Http/Controllers/ActionlogController.php b/app/Http/Controllers/ActionlogController.php index 2d194b7ca6..f143c4b73b 100644 --- a/app/Http/Controllers/ActionlogController.php +++ b/app/Http/Controllers/ActionlogController.php @@ -3,13 +3,14 @@ namespace App\Http\Controllers; use App\Helpers\Helper; -use App\Models\Actionlog; -use Illuminate\Support\Facades\Response; +use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; +use \Illuminate\Http\Response; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class ActionlogController extends Controller { - public function displaySig($filename) + public function displaySig($filename) : RedirectResponse | Response | bool { // PHP doesn't let you handle file not found errors well with // file_get_contents, so we set the error reporting for just this class @@ -17,6 +18,7 @@ class ActionlogController extends Controller $disk = config('filesystems.default'); switch (config("filesystems.disks.$disk.driver")) { + case 's3': $file = 'private_uploads/signatures/'.$filename; return redirect()->away(Storage::disk($disk)->temporaryUrl($file, now()->addMinutes(5))); @@ -30,15 +32,15 @@ class ActionlogController extends Controller Log::warning('File '.$file.' not found'); return false; } else { - return Response::make($contents)->header('Content-Type', $filetype); + return response()->make($contents)->header('Content-Type', $filetype); } } } - public function getStoredEula($filename){ + public function getStoredEula($filename) : Response | BinaryFileResponse + { $this->authorize('view', \App\Models\Asset::class); $file = config('app.private_uploads').'/eula-pdfs/'.$filename; - - return Response::download($file); + return response()->download($file); } } diff --git a/app/Http/Controllers/Api/AccessoriesController.php b/app/Http/Controllers/Api/AccessoriesController.php index eb74a9e0f0..1ffdcaf193 100644 --- a/app/Http/Controllers/Api/AccessoriesController.php +++ b/app/Http/Controllers/Api/AccessoriesController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers\Api; use App\Events\CheckoutableCheckedOut; use App\Helpers\Helper; use App\Http\Controllers\Controller; +use App\Http\Requests\AccessoryCheckoutRequest; +use App\Http\Requests\StoreAccessoryRequest; use App\Http\Transformers\AccessoriesTransformer; use App\Http\Transformers\SelectlistTransformer; use App\Models\Accessory; @@ -16,6 +18,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; + class AccessoriesController extends Controller { /** @@ -120,12 +123,12 @@ class AccessoriesController extends Controller /** * Store a newly created resource in storage. * + * @param \App\Http\Requests\ImageUploadRequest $request + * @return \Illuminate\Http\JsonResponse * @author [A. Gianotto] [] * @since [v4.0] - * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(StoreAccessoryRequest $request) { $this->authorize('create', Accessory::class); $accessory = new Accessory; @@ -143,10 +146,10 @@ class AccessoriesController extends Controller /** * Display the specified resource. * + * @param int $id + * @return array * @author [A. Gianotto] [] * @since [v4.0] - * @param int $id - * @return \Illuminate\Http\Response */ public function show($id) { @@ -160,10 +163,10 @@ class AccessoriesController extends Controller /** * Display the specified resource. * + * @param int $id + * @return array * @author [A. Gianotto] [] * @since [v4.0] - * @param int $id - * @return \Illuminate\Http\Response */ public function accessory_detail($id) { @@ -272,43 +275,31 @@ class AccessoriesController extends Controller * If Slack is enabled and/or asset acceptance is enabled, it will also * trigger a Slack message and send an email. * - * @author [A. Gianotto] [] * @param int $accessoryId - * @return \Illuminate\Http\RedirectResponse + * @return \Illuminate\Http\JsonResponse + * @author [A. Gianotto] [] */ - public function checkout(Request $request, $accessoryId) + public function checkout(AccessoryCheckoutRequest $request, Accessory $accessory) { - // Check if the accessory exists - if (is_null($accessory = Accessory::withCount('users as users_count')->find($accessoryId))) { - return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/accessories/message.does_not_exist'))); - } - $this->authorize('checkout', $accessory); + $accessory->assigned_to = $request->input('assigned_to'); + $user = User::find($request->input('assigned_to')); + $accessory->checkout_qty = $request->input('checkout_qty', 1); - - if ($accessory->numRemaining() > 0) { - - if (! $user = User::find($request->input('assigned_to'))) { - return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/accessories/message.checkout.user_does_not_exist'))); - } - - // Update the accessory data - $accessory->assigned_to = $request->input('assigned_to'); - + for ($i = 0; $i < $accessory->checkout_qty; $i++) { $accessory->users()->attach($accessory->id, [ 'accessory_id' => $accessory->id, 'created_at' => Carbon::now(), 'user_id' => Auth::id(), - 'assigned_to' => $request->get('assigned_to'), - 'note' => $request->get('note'), + 'assigned_to' => $request->input('assigned_to'), + 'note' => $request->input('note'), ]); - - event(new CheckoutableCheckedOut($accessory, $user, Auth::user(), $request->input('note'))); - - return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/accessories/message.checkout.success'))); } - return response()->json(Helper::formatStandardApiResponse('error', null, 'No accessories remaining')); + // Set this value to be able to pass the qty through to the event + event(new CheckoutableCheckedOut($accessory, $user, auth()->user(), $request->input('note'))); + + return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/accessories/message.checkout.success'))); } diff --git a/app/Http/Controllers/Api/AssetFilesController.php b/app/Http/Controllers/Api/AssetFilesController.php index d8bc5e3841..4369d287d5 100644 --- a/app/Http/Controllers/Api/AssetFilesController.php +++ b/app/Http/Controllers/Api/AssetFilesController.php @@ -4,28 +4,15 @@ namespace App\Http\Controllers\Api; use App\Helpers\StorageHelper; use Illuminate\Support\Facades\Storage; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Http\JsonResponse; -use Illuminate\Support\Facades\Crypt; -use Illuminate\Support\Facades\Gate; use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Asset; -use App\Models\AssetModel; use App\Models\Actionlog; -use \Illuminate\Support\Facades\Auth; -use Carbon\Carbon; -use DB; -use Illuminate\Http\Request; use App\Http\Requests\UploadFileRequest; +use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Log; -use Input; -use Paginator; -use Slack; -use Str; -use TCPDF; -use Validator; -use Route; +use Symfony\Component\HttpFoundation\StreamedResponse; +use Symfony\Component\HttpFoundation\BinaryFileResponse; /** @@ -44,12 +31,10 @@ class AssetFilesController extends Controller * * @param \App\Http\Requests\UploadFileRequest $request * @param int $assetId - * @return \Illuminate\Http\JsonResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v6.0] * @author [T. Scarsbrook] [] */ - public function store(UploadFileRequest $request, $assetId = null) + public function store(UploadFileRequest $request, $assetId = null) : JsonResponse { // Start by checking if the asset being acted upon exists if (! $asset = Asset::find($assetId)) { @@ -59,7 +44,7 @@ class AssetFilesController extends Controller // Make sure we are allowed to update this asset $this->authorize('update', $asset); - if ($request->hasFile('file')) { + if ($request->hasFile('file')) { // If the file storage directory doesn't exist; create it if (! Storage::exists('private_uploads/assets')) { Storage::makeDirectory('private_uploads/assets', 775); @@ -84,12 +69,10 @@ class AssetFilesController extends Controller * List the files for an asset. * * @param int $assetId - * @return \Illuminate\Http\JsonResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v6.0] * @author [T. Scarsbrook] [] */ - public function list($assetId = null) + public function list($assetId = null) : JsonResponse { // Start by checking if the asset being acted upon exists if (! $asset = Asset::find($assetId)) { @@ -128,7 +111,7 @@ class AssetFilesController extends Controller * @since [v6.0] * @author [T. Scarsbrook] [] */ - public function show($assetId = null, $fileId = null) + public function show($assetId = null, $fileId = null) : JsonResponse | StreamedResponse | Storage | StorageHelper | BinaryFileResponse { // Start by checking if the asset being acted upon exists if (! $asset = Asset::find($assetId)) { @@ -146,7 +129,7 @@ class AssetFilesController extends Controller // Form the full filename with path $file = 'private_uploads/assets/'.$log->filename; - \Log::debug('Checking for '.$file); + Log::debug('Checking for '.$file); if ($log->action_type == 'audit') { $file = 'private_uploads/audits/'.$log->filename; @@ -178,12 +161,10 @@ class AssetFilesController extends Controller * * @param int $assetId * @param int $fileId - * @return \Illuminate\Http\JsonResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v6.0] * @author [T. Scarsbrook] [] */ - public function destroy($assetId = null, $fileId = null) + public function destroy($assetId = null, $fileId = null) : JsonResponse { // Start by checking if the asset being acted upon exists if (! $asset = Asset::find($assetId)) { diff --git a/app/Http/Controllers/Api/AssetMaintenancesController.php b/app/Http/Controllers/Api/AssetMaintenancesController.php index 1ecb3be257..ac247a8873 100644 --- a/app/Http/Controllers/Api/AssetMaintenancesController.php +++ b/app/Http/Controllers/Api/AssetMaintenancesController.php @@ -9,9 +9,8 @@ use App\Models\Asset; use App\Models\AssetMaintenance; use App\Models\Company; use Illuminate\Support\Facades\Auth; -use Carbon\Carbon; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Input; +use Illuminate\Http\JsonResponse; /** * This controller handles all actions related to Asset Maintenance for @@ -22,7 +21,6 @@ use Illuminate\Support\Facades\Input; class AssetMaintenancesController extends Controller { - /** * Generates the JSON response for asset maintenances listing view. * @@ -30,9 +28,8 @@ class AssetMaintenancesController extends Controller * @author Vincent Sposato * @version v1.0 * @since [v1.8] - * @return string JSON */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Asset::class); @@ -120,9 +117,8 @@ class AssetMaintenancesController extends Controller * @author Vincent Sposato * @version v1.0 * @since [v1.8] - * @return string JSON */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { $this->authorize('update', Asset::class); // create a new model instance @@ -148,9 +144,8 @@ class AssetMaintenancesController extends Controller * @param int $request * @version v1.0 * @since [v4.0] - * @return string JSON */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse { $this->authorize('update', Asset::class); @@ -186,9 +181,8 @@ class AssetMaintenancesController extends Controller * @param int $assetMaintenanceId * @version v1.0 * @since [v4.0] - * @return string JSON */ - public function destroy($assetMaintenanceId) + public function destroy($assetMaintenanceId) : JsonResponse { $this->authorize('update', Asset::class); // Check if the asset maintenance exists @@ -212,9 +206,8 @@ class AssetMaintenancesController extends Controller * @param int $assetMaintenanceId * @version v1.0 * @since [v4.0] - * @return string JSON */ - public function show($assetMaintenanceId) + public function show($assetMaintenanceId) : JsonResponse { $this->authorize('view', Asset::class); $assetMaintenance = AssetMaintenance::findOrFail($assetMaintenanceId); diff --git a/app/Http/Controllers/Api/AssetModelsController.php b/app/Http/Controllers/Api/AssetModelsController.php index f1fa5369d1..835f4d22e0 100644 --- a/app/Http/Controllers/Api/AssetModelsController.php +++ b/app/Http/Controllers/Api/AssetModelsController.php @@ -4,15 +4,16 @@ namespace App\Http\Controllers\Api; use App\Helpers\Helper; use App\Http\Controllers\Controller; +use App\Http\Requests\StoreAssetModelRequest; use App\Http\Transformers\AssetModelsTransformer; use App\Http\Transformers\AssetsTransformer; use App\Http\Transformers\SelectlistTransformer; use App\Models\Asset; use App\Models\AssetModel; use Illuminate\Http\Request; -use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Log; +use Illuminate\Http\JsonResponse; /** * This class controls all actions related to asset models for @@ -28,9 +29,8 @@ class AssetModelsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', AssetModel::class); $allowed_columns = @@ -116,10 +116,9 @@ class AssetModelsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response + * @param \App\Http\Requests\StoreAssetModelRequest $request */ - public function store(ImageUploadRequest $request) + public function store(StoreAssetModelRequest $request) : JsonResponse { $this->authorize('create', AssetModel::class); $assetmodel = new AssetModel; @@ -140,9 +139,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', AssetModel::class); $assetmodel = AssetModel::withCount('assets as assets_count')->findOrFail($id); @@ -156,9 +154,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function assets($id) + public function assets($id) : array { $this->authorize('view', AssetModel::class); $assets = Asset::where('model_id', '=', $id)->get(); @@ -176,7 +173,7 @@ class AssetModelsController extends Controller * @param int $id * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(StoreAssetModelRequest $request, $id) : JsonResponse { $this->authorize('update', AssetModel::class); $assetmodel = AssetModel::findOrFail($id); @@ -209,9 +206,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', AssetModel::class); $assetmodel = AssetModel::findOrFail($id); @@ -241,7 +237,7 @@ class AssetModelsController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $this->authorize('view.selectlists'); diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 721c6154ac..948b291ca4 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -26,17 +26,12 @@ use App\Models\License; use App\Models\Location; use App\Models\Setting; use App\Models\User; -use \Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Auth; use Carbon\Carbon; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Log; -use Paginator; -use Slack; -use Str; -use TCPDF; -use Validator; use Illuminate\Support\Facades\Route; @@ -57,9 +52,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v4.0] - * @return \Illuminate\Http\JsonResponse */ - public function index(Request $request, $action = null, $upcoming_status = null) + public function index(Request $request, $action = null, $upcoming_status = null) : JsonResponse | array { $filter_non_deprecable_assets = false; @@ -416,9 +410,8 @@ class AssetsController extends Controller * @param string $tag * @since [v4.2.1] * @author [A. Gianotto] [] - * @return \Illuminate\Http\JsonResponse */ - public function showByTag(Request $request, $tag) + public function showByTag(Request $request, $tag) : JsonResponse | array { $this->authorize('index', Asset::class); $assets = Asset::where('asset_tag', $tag)->with('assetstatus')->with('assignedTo'); @@ -456,7 +449,7 @@ class AssetsController extends Controller * @since [v4.2.1] * @return \Illuminate\Http\JsonResponse */ - public function showBySerial(Request $request, $serial) + public function showBySerial(Request $request, $serial) : JsonResponse | array { $this->authorize('index', Asset::class); $assets = Asset::where('serial', $serial)->with('assetstatus')->with('assignedTo'); @@ -483,19 +476,20 @@ class AssetsController extends Controller * @since [v4.0] * @return \Illuminate\Http\JsonResponse */ - public function show(Request $request, $id) + public function show(Request $request, $id) : JsonResponse | array { - if ($asset = Asset::with('assetstatus')->with('assignedTo')->withTrashed() - ->withCount('checkins as checkins_count', 'checkouts as checkouts_count', 'userRequests as user_requests_count')->findOrFail($id)) { + if ($asset = Asset::with('assetstatus') + ->with('assignedTo')->withTrashed() + ->withCount('checkins as checkins_count', 'checkouts as checkouts_count', 'userRequests as user_requests_count')->find($id)) { $this->authorize('view', $asset); return (new AssetsTransformer)->transformAsset($asset, $request->input('components') ); } - + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200); } - public function licenses(Request $request, $id) + public function licenses(Request $request, $id) : array { $this->authorize('view', Asset::class); $this->authorize('view', License::class); @@ -512,9 +506,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer - * @return \Illuminate\Http\JsonResponse */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $assets = Asset::select([ @@ -639,7 +632,7 @@ class AssetsController extends Controller $target = Location::find(request('assigned_location')); } if (isset($target)) { - $asset->checkOut($target, Auth::user(), date('Y-m-d H:i:s'), '', 'Checked out on asset creation', e($request->get('name'))); + $asset->checkOut($target, auth()->user(), date('Y-m-d H:i:s'), '', 'Checked out on asset creation', e($request->get('name'))); } if ($asset->image) { @@ -713,26 +706,25 @@ class AssetsController extends Controller } } } + if ($asset->save()) { + if (($request->filled('assigned_user')) && ($target = User::find($request->get('assigned_user')))) { + $location = $target->location_id; + } elseif (($request->filled('assigned_asset')) && ($target = Asset::find($request->get('assigned_asset')))) { + $location = $target->location_id; - if ($asset->save()) { - if (($request->filled('assigned_user')) && ($target = User::find($request->get('assigned_user')))) { - $location = $target->location_id; - } elseif (($request->filled('assigned_asset')) && ($target = Asset::find($request->get('assigned_asset')))) { - $location = $target->location_id; - Asset::where('assigned_type', Asset::class)->where('assigned_to', $asset->id) - ->update(['location_id' => $target->location_id]); - } elseif (($request->filled('assigned_location')) && ($target = Location::find($request->get('assigned_location')))) { - $location = $target->id; - } + Asset::where('assigned_type', \App\Models\Asset::class)->where('assigned_to', $id) + ->update(['location_id' => $target->location_id]); + } elseif (($request->filled('assigned_location')) && ($target = Location::find($request->get('assigned_location')))) { + $location = $target->id; + } - if (isset($target)) { - $asset->checkOut($target, Auth::user(), date('Y-m-d H:i:s'), '', 'Checked out on asset update', - e($request->get('name')), $location); - } + if (isset($target)) { + $asset->checkOut($target, auth()->user(), date('Y-m-d H:i:s'), '', 'Checked out on asset update', e($request->get('name')), $location); + } - if ($asset->image) { - $asset->image = $asset->getImageUrl(); - } + if ($asset->image) { + $asset->image = $asset->getImageUrl(); + } if ($problems_updating_encrypted_custom_fields) { return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.encrypted_warning'))); @@ -750,9 +742,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v4.0] - * @return \Illuminate\Http\JsonResponse */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Asset::class); @@ -779,9 +770,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v5.1.18] - * @return \Illuminate\Http\JsonResponse */ - public function restore(Request $request, $assetId = null) + public function restore(Request $request, $assetId = null) : JsonResponse { if ($asset = Asset::withTrashed()->find($assetId)) { @@ -809,9 +799,8 @@ class AssetsController extends Controller * @author [N. Butler] * @param string $tag * @since [v6.0.5] - * @return \Illuminate\Http\JsonResponse */ - public function checkoutByTag(AssetCheckoutRequest $request, $tag) + public function checkoutByTag(AssetCheckoutRequest $request, $tag) : JsonResponse { if ($asset = Asset::where('asset_tag', $tag)->first()) { return $this->checkout($request, $asset->id); @@ -825,9 +814,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v4.0] - * @return \Illuminate\Http\JsonResponse */ - public function checkout(AssetCheckoutRequest $request, $asset_id) + public function checkout(AssetCheckoutRequest $request, $asset_id) : JsonResponse { $this->authorize('checkout', Asset::class); $asset = Asset::findOrFail($asset_id); @@ -889,7 +877,7 @@ class AssetsController extends Controller // $asset->location_id = $target->rtd_location_id; // } - if ($asset->checkOut($target, Auth::user(), $checkout_at, $expected_checkin, $note, $asset_name, $asset->location_id)) { + if ($asset->checkOut($target, auth()->user(), $checkout_at, $expected_checkin, $note, $asset_name, $asset->location_id)) { return response()->json(Helper::formatStandardApiResponse('success', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkout.success'))); } @@ -903,9 +891,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v4.0] - * @return \Illuminate\Http\JsonResponse */ - public function checkin(Request $request, $asset_id) + public function checkin(Request $request, $asset_id) : JsonResponse { $asset = Asset::with('model')->findOrFail($asset_id); $this->authorize('checkin', $asset); @@ -970,7 +957,7 @@ class AssetsController extends Controller }); if ($asset->save()) { - event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues)); + event(new CheckoutableCheckedIn($asset, $target, auth()->user(), $request->input('note'), $checkin_at, $originalValues)); return response()->json(Helper::formatStandardApiResponse('success', [ 'asset_tag'=> e($asset->asset_tag), @@ -987,9 +974,8 @@ class AssetsController extends Controller * * @author [A. Janes] [] * @since [v6.0] - * @return \Illuminate\Http\JsonResponse */ - public function checkinByTag(Request $request, $tag = null) + public function checkinByTag(Request $request, $tag = null) : JsonResponse { $this->authorize('checkin', Asset::class); if(null == $tag && null !== ($request->input('asset_tag'))) { @@ -1013,9 +999,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v4.0] - * @return \Illuminate\Http\JsonResponse */ - public function audit(Request $request) + public function audit(Request $request) : JsonResponse { $this->authorize('audit', Asset::class); @@ -1106,9 +1091,8 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return \Illuminate\Http\JsonResponse */ - public function requestable(Request $request) + public function requestable(Request $request) : JsonResponse | array { $this->authorize('viewRequestable', Asset::class); diff --git a/app/Http/Controllers/Api/CategoriesController.php b/app/Http/Controllers/Api/CategoriesController.php index 2aa4b3741c..6e9866f90b 100644 --- a/app/Http/Controllers/Api/CategoriesController.php +++ b/app/Http/Controllers/Api/CategoriesController.php @@ -8,9 +8,9 @@ use App\Http\Transformers\CategoriesTransformer; use App\Http\Transformers\SelectlistTransformer; use App\Models\Category; use Illuminate\Http\Request; +use Illuminate\Http\JsonResponse; use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Storage; -use Illuminate\Support\Facades\Validator; class CategoriesController extends Controller { @@ -21,7 +21,7 @@ class CategoriesController extends Controller * @since [v4.0] * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : array { $this->authorize('view', Category::class); $allowed_columns = [ @@ -115,7 +115,7 @@ class CategoriesController extends Controller * @param \App\Http\Requests\ImageUploadRequest $request * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : JsonResponse { $this->authorize('create', Category::class); $category = new Category; @@ -136,9 +136,8 @@ class CategoriesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', Category::class); $category = Category::withCount('assets as assets_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count')->findOrFail($id); @@ -156,7 +155,7 @@ class CategoriesController extends Controller * @param int $id * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(ImageUploadRequest $request, $id) : JsonResponse { $this->authorize('update', Category::class); $category = Category::findOrFail($id); @@ -164,7 +163,7 @@ class CategoriesController extends Controller // Don't allow the user to change the category_type once it's been created if (($request->filled('category_type')) && ($category->category_type != $request->input('category_type'))) { return response()->json( - Helper::formatStandardApiResponse('error', null, trans('admin/categories/message.update.cannot_change_category_type')) + Helper::formatStandardApiResponse('error', null, ['category_type' => trans('admin/categories/message.update.cannot_change_category_type')], 422) ); } $category->fill($request->all()); @@ -185,7 +184,7 @@ class CategoriesController extends Controller * @param int $id * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Category::class); $category = Category::withCount('assets as assets_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count')->findOrFail($id); @@ -208,7 +207,7 @@ class CategoriesController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request, $category_type = 'asset') + public function selectlist(Request $request, $category_type = 'asset') : array { $this->authorize('view.selectlists'); $categories = Category::select([ diff --git a/app/Http/Controllers/Api/CompaniesController.php b/app/Http/Controllers/Api/CompaniesController.php index 9c667973a3..0d78df9acc 100644 --- a/app/Http/Controllers/Api/CompaniesController.php +++ b/app/Http/Controllers/Api/CompaniesController.php @@ -10,6 +10,7 @@ use App\Models\Company; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Storage; +use Illuminate\Http\JsonResponse; class CompaniesController extends Controller { @@ -18,9 +19,8 @@ class CompaniesController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Company::class); @@ -79,9 +79,8 @@ class CompaniesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : JsonResponse { $this->authorize('create', Company::class); $company = new Company; @@ -102,9 +101,8 @@ class CompaniesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', Company::class); $company = Company::findOrFail($id); @@ -120,9 +118,8 @@ class CompaniesController extends Controller * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(ImageUploadRequest $request, $id) : JsonResponse { $this->authorize('update', Company::class); $company = Company::findOrFail($id); @@ -144,9 +141,8 @@ class CompaniesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Company::class); $company = Company::findOrFail($id); @@ -169,7 +165,7 @@ class CompaniesController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $this->authorize('view.selectlists'); $companies = Company::select([ diff --git a/app/Http/Controllers/Api/ComponentsController.php b/app/Http/Controllers/Api/ComponentsController.php index 4cf8173eac..69bd828487 100644 --- a/app/Http/Controllers/Api/ComponentsController.php +++ b/app/Http/Controllers/Api/ComponentsController.php @@ -5,16 +5,17 @@ namespace App\Http\Controllers\Api; use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Transformers\ComponentsTransformer; -use App\Models\Company; use App\Models\Component; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use App\Events\CheckoutableCheckedIn; -use App\Events\ComponentCheckedIn; use App\Models\Asset; use Illuminate\Support\Facades\Validator; use Illuminate\Database\Query\Builder; use Illuminate\Support\Facades\Log; +use Illuminate\Http\JsonResponse; +use Illuminate\Support\Facades\DB; +use Carbon\Carbon; class ComponentsController extends Controller { @@ -24,9 +25,8 @@ class ComponentsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Component::class); @@ -116,9 +116,8 @@ class ComponentsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : JsonResponse { $this->authorize('create', Component::class); $component = new Component; @@ -137,9 +136,8 @@ class ComponentsController extends Controller * * @author [A. Gianotto] [] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', Component::class); $component = Component::findOrFail($id); @@ -156,9 +154,8 @@ class ComponentsController extends Controller * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(ImageUploadRequest $request, $id) : JsonResponse { $this->authorize('update', Component::class); $component = Component::findOrFail($id); @@ -179,9 +176,8 @@ class ComponentsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Component::class); $component = Component::findOrFail($id); @@ -198,9 +194,8 @@ class ComponentsController extends Controller * @since [v4.0] * @param Request $request * @param int $id - * @return \Illuminate\Http\Response */ - public function getAssets(Request $request, $id) + public function getAssets(Request $request, $id) : array { $this->authorize('view', \App\Models\Asset::class); @@ -241,10 +236,8 @@ class ComponentsController extends Controller * @since [v5.1.8] * @param Request $request * @param int $componentId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function checkout(Request $request, $componentId) + public function checkout(Request $request, $componentId) : JsonResponse { // Check if the component exists if (!$component = Component::find($componentId)) { @@ -275,9 +268,9 @@ class ComponentsController extends Controller $component->assets()->attach($component->id, [ 'component_id' => $component->id, - 'created_at' => \Carbon::now(), + 'created_at' => Carbon::now(), 'assigned_qty' => $request->get('assigned_qty', 1), - 'user_id' => \Auth::id(), + 'user_id' => auth()->id(), 'asset_id' => $request->get('assigned_to'), 'note' => $request->get('note'), ]); @@ -297,12 +290,10 @@ class ComponentsController extends Controller * @since [v5.1.8] * @param Request $request * @param $component_asset_id - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function checkin(Request $request, $component_asset_id) + public function checkin(Request $request, $component_asset_id) : JsonResponse { - if ($component_assets = \DB::table('components_assets')->find($component_asset_id)) { + if ($component_assets = DB::table('components_assets')->find($component_asset_id)) { if (is_null($component = Component::find($component_assets->component_id))) { @@ -315,7 +306,7 @@ class ComponentsController extends Controller if ($max_to_checkin > 1) { - $validator = \Validator::make($request->all(), [ + $validator = Validator::make($request->all(), [ "checkin_qty" => "required|numeric|between:1,$max_to_checkin" ]); @@ -334,19 +325,19 @@ class ComponentsController extends Controller Log::debug($component_asset_id.' - '.$qty_remaining_in_checkout.' remaining in record '.$component_assets->id); - \DB::table('components_assets')->where('id', + DB::table('components_assets')->where('id', $component_asset_id)->update(['assigned_qty' => $qty_remaining_in_checkout]); // If the checked-in qty is exactly the same as the assigned_qty, // we can simply delete the associated components_assets record if ($qty_remaining_in_checkout == 0) { - \DB::table('components_assets')->where('id', '=', $component_asset_id)->delete(); + DB::table('components_assets')->where('id', '=', $component_asset_id)->delete(); } $asset = Asset::find($component_assets->asset_id); - event(new CheckoutableCheckedIn($component, $asset, \Auth::user(), $request->input('note'), \Carbon::now())); + event(new CheckoutableCheckedIn($component, $asset, auth()->user(), $request->input('note'), Carbon::now())); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/components/message.checkin.success'))); diff --git a/app/Http/Controllers/Api/ConsumablesController.php b/app/Http/Controllers/Api/ConsumablesController.php index 956a176580..1665b7f4f0 100644 --- a/app/Http/Controllers/Api/ConsumablesController.php +++ b/app/Http/Controllers/Api/ConsumablesController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api; use App\Events\CheckoutableCheckedOut; use App\Helpers\Helper; use App\Http\Controllers\Controller; +use App\Http\Requests\StoreConsumableRequest; use App\Http\Transformers\ConsumablesTransformer; use App\Http\Transformers\SelectlistTransformer; use App\Models\Company; @@ -12,8 +13,8 @@ use App\Models\Consumable; use App\Models\User; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; +use Illuminate\Http\JsonResponse; class ConsumablesController extends Controller { @@ -22,34 +23,13 @@ class ConsumablesController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : array { $this->authorize('index', Consumable::class); - // This array is what determines which fields should be allowed to be sorted on ON the table itself, no relations - // Relations will be handled in query scopes a little further down. - $allowed_columns = - [ - 'id', - 'name', - 'order_number', - 'min_amt', - 'purchase_date', - 'purchase_cost', - 'company', - 'category', - 'model_number', - 'item_no', - 'qty', - 'image', - 'notes', - ]; - - $consumables = Consumable::select('consumables.*') - ->with('company', 'location', 'category', 'users', 'manufacturer'); + $consumables = Consumable::with('company', 'location', 'category', 'supplier', 'manufacturer') + ->withCount('users as consumables_users_count'); if ($request->filled('search')) { $consumables = $consumables->TextSearch(e($request->input('search'))); @@ -91,15 +71,9 @@ class ConsumablesController extends Controller // Make sure the offset and limit are actually integers and do not exceed system limits $offset = ($request->input('offset') > $consumables->count()) ? $consumables->count() : app('api_offset_value'); $limit = app('api_limit_value'); - - $allowed_columns = ['id', 'name', 'order_number', 'min_amt', 'purchase_date', 'purchase_cost', 'company', 'category', 'model_number', 'item_no', 'manufacturer', 'location', 'qty', 'image']; $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; - $sort_override = $request->input('sort'); - $column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at'; - - - switch ($sort_override) { + switch ($request->input('sort')) { case 'category': $consumables = $consumables->OrderCategory($order); break; @@ -113,10 +87,30 @@ class ConsumablesController extends Controller $consumables = $consumables->OrderCompany($order); break; case 'supplier': - $components = $consumables->OrderSupplier($order); + $consumables = $consumables->OrderSupplier($order); break; default: - $consumables = $consumables->orderBy($column_sort, $order); + // This array is what determines which fields should be allowed to be sorted on ON the table itself. + // These must match a column on the consumables table directly. + $allowed_columns = [ + 'id', + 'name', + 'order_number', + 'min_amt', + 'purchase_date', + 'purchase_cost', + 'company', + 'category', + 'model_number', + 'item_no', + 'manufacturer', + 'location', + 'qty', + 'image' + ]; + + $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; + $consumables = $consumables->orderBy($sort, $order); break; } @@ -132,9 +126,8 @@ class ConsumablesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(StoreConsumableRequest $request) : JsonResponse { $this->authorize('create', Consumable::class); $consumable = new Consumable; @@ -153,9 +146,8 @@ class ConsumablesController extends Controller * * @author [A. Gianotto] [] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', Consumable::class); $consumable = Consumable::with('users')->findOrFail($id); @@ -170,9 +162,8 @@ class ConsumablesController extends Controller * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(StoreConsumableRequest $request, $id) : JsonResponse { $this->authorize('update', Consumable::class); $consumable = Consumable::findOrFail($id); @@ -192,9 +183,8 @@ class ConsumablesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Consumable::class); $consumable = Consumable::findOrFail($id); @@ -211,9 +201,8 @@ class ConsumablesController extends Controller * @see \App\Http\Controllers\Consumables\ConsumablesController::getView() method that returns the form. * @since [v1.0] * @param int $consumableId - * @return array */ - public function getDataView($consumableId) + public function getDataView($consumableId) : array { $consumable = Consumable::with(['consumableAssignments'=> function ($query) { $query->orderBy($query->getModel()->getTable().'.created_at', 'DESC'); @@ -252,9 +241,8 @@ class ConsumablesController extends Controller * @author [A. Gutierrez] [] * @param int $id * @since [v4.9.5] - * @return JsonResponse */ - public function checkout(Request $request, $id) + public function checkout(Request $request, $id) : JsonResponse { // Check if the consumable exists if (!$consumable = Consumable::with('users')->find($id)) { @@ -278,7 +266,6 @@ class ConsumablesController extends Controller if (!$user = User::find($request->input('assigned_to'))) { // Return error message return response()->json(Helper::formatStandardApiResponse('error', null, 'No user found')); - Log::debug('No valid user'); } // Update the consumable data @@ -293,7 +280,7 @@ class ConsumablesController extends Controller ] ); - event(new CheckoutableCheckedOut($consumable, $user, Auth::user(), $request->input('note'))); + event(new CheckoutableCheckedOut($consumable, $user, auth()->user(), $request->input('note'))); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/consumables/message.checkout.success'))); @@ -304,7 +291,7 @@ class ConsumablesController extends Controller * * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $consumables = Consumable::select([ 'consumables.id', diff --git a/app/Http/Controllers/Api/CustomFieldsController.php b/app/Http/Controllers/Api/CustomFieldsController.php index 470d672ccc..207a92e274 100644 --- a/app/Http/Controllers/Api/CustomFieldsController.php +++ b/app/Http/Controllers/Api/CustomFieldsController.php @@ -8,7 +8,8 @@ use App\Http\Transformers\CustomFieldsTransformer; use App\Models\CustomField; use App\Models\CustomFieldset; use Illuminate\Http\Request; -use Validator; +use Illuminate\Support\Facades\Validator; +use Illuminate\Http\JsonResponse; class CustomFieldsController extends Controller { @@ -20,7 +21,7 @@ class CustomFieldsController extends Controller * @since [v3.0] * @return array */ - public function index() + public function index() : array { $this->authorize('index', CustomField::class); $fields = CustomField::get(); @@ -33,9 +34,8 @@ class CustomFieldsController extends Controller * @author [V. Cordes] [] * @param int $id * @since [v4.1.10] - * @return View */ - public function show($id) + public function show($id) : JsonResponse | array { $this->authorize('view', CustomField::class); if ($field = CustomField::find($id)) { @@ -52,9 +52,8 @@ class CustomFieldsController extends Controller * @since [v4.1.10] * @param \Illuminate\Http\Request $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse { $this->authorize('update', CustomField::class); $field = CustomField::findOrFail($id); @@ -86,9 +85,8 @@ class CustomFieldsController extends Controller * @author [V. Cordes] [] * @since [v4.1.10] * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { $this->authorize('create', CustomField::class); $field = new CustomField; @@ -136,7 +134,7 @@ class CustomFieldsController extends Controller return $fieldset->fields()->sync($fields); } - public function associate(Request $request, $field_id) + public function associate(Request $request, $field_id) : JsonResponse { $this->authorize('update', CustomFieldset::class); @@ -155,10 +153,9 @@ class CustomFieldsController extends Controller return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.update.success'))); } - public function disassociate(Request $request, $field_id) + public function disassociate(Request $request, $field_id) : JsonResponse { $this->authorize('update', CustomFieldset::class); - $field = CustomField::findOrFail($field_id); $fieldset_id = $request->input('fieldset_id'); @@ -179,9 +176,8 @@ class CustomFieldsController extends Controller * * @author [Brady Wetherington] [] * @since [v1.8] - * @return \Illuminate\Http\RedirectResponse */ - public function destroy($field_id) + public function destroy($field_id) : JsonResponse { $field = CustomField::findOrFail($field_id); diff --git a/app/Http/Controllers/Api/CustomFieldsetsController.php b/app/Http/Controllers/Api/CustomFieldsetsController.php index 2fa22f5491..5dbd507917 100644 --- a/app/Http/Controllers/Api/CustomFieldsetsController.php +++ b/app/Http/Controllers/Api/CustomFieldsetsController.php @@ -9,8 +9,7 @@ use App\Http\Transformers\CustomFieldsTransformer; use App\Models\CustomFieldset; use App\Models\CustomField; use Illuminate\Http\Request; -use Redirect; -use View; +use Illuminate\Http\JsonResponse; /** * This controller handles all actions related to Custom Asset Fieldsets for @@ -30,9 +29,8 @@ class CustomFieldsetsController extends Controller * @author [Josh Gibson] * @param int $id * @since [v1.8] - * @return View */ - public function index() + public function index() : array { $this->authorize('index', CustomField::class); $fieldsets = CustomFieldset::withCount('fields as fields_count', 'models as models_count')->get(); @@ -46,9 +44,8 @@ class CustomFieldsetsController extends Controller * @author [Josh Gibson] * @param int $id * @since [v1.8] - * @return View */ - public function show($id) + public function show($id) : JsonResponse | array { $this->authorize('view', CustomField::class); if ($fieldset = CustomFieldset::find($id)) { @@ -65,9 +62,8 @@ class CustomFieldsetsController extends Controller * @since [v4.0] * @param \Illuminate\Http\Request $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse { $this->authorize('update', CustomField::class); $fieldset = CustomFieldset::findOrFail($id); @@ -86,9 +82,8 @@ class CustomFieldsetsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { $this->authorize('create', CustomField::class); $fieldset = new CustomFieldset; @@ -118,9 +113,8 @@ class CustomFieldsetsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return \Illuminate\Http\RedirectResponse */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', CustomField::class); $fieldset = CustomFieldset::findOrFail($id); @@ -147,7 +141,7 @@ class CustomFieldsetsController extends Controller * @param $fieldsetId * @return string JSON */ - public function fields($id) + public function fields($id) : array { $this->authorize('view', CustomField::class); $set = CustomFieldset::findOrFail($id); @@ -164,14 +158,11 @@ class CustomFieldsetsController extends Controller * @param $fieldsetId * @return string JSON */ - public function fieldsWithDefaultValues($fieldsetId, $modelId) + public function fieldsWithDefaultValues($fieldsetId, $modelId) : array { $this->authorize('view', CustomField::class); - $set = CustomFieldset::findOrFail($fieldsetId); - $fields = $set->fields; - return (new CustomFieldsTransformer)->transformCustomFieldsWithDefaultValues($fields, $modelId, $fields->count()); } } diff --git a/app/Http/Controllers/Api/DepartmentsController.php b/app/Http/Controllers/Api/DepartmentsController.php index 485e614b25..eabc79ec2b 100644 --- a/app/Http/Controllers/Api/DepartmentsController.php +++ b/app/Http/Controllers/Api/DepartmentsController.php @@ -6,12 +6,11 @@ use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Transformers\DepartmentsTransformer; use App\Http\Transformers\SelectlistTransformer; -use App\Models\Company; use App\Models\Department; -use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Storage; +use Illuminate\Http\JsonResponse; class DepartmentsController extends Controller { @@ -20,9 +19,8 @@ class DepartmentsController extends Controller * * @author [Godfrey Martinez] [] * @since [v4.0] - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Department::class); $allowed_columns = ['id', 'name', 'image', 'users_count']; @@ -91,16 +89,15 @@ class DepartmentsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : JsonResponse { $this->authorize('create', Department::class); $department = new Department; $department->fill($request->all()); $department = $request->handleImages($department); - $department->user_id = Auth::user()->id; + $department->user_id = auth()->id(); $department->manager_id = ($request->filled('manager_id') ? $request->input('manager_id') : null); if ($department->save()) { @@ -116,13 +113,11 @@ class DepartmentsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', Department::class); $department = Department::findOrFail($id); - return (new DepartmentsTransformer)->transformDepartment($department); } @@ -133,9 +128,8 @@ class DepartmentsController extends Controller * @since [v5.0] * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(ImageUploadRequest $request, $id) : JsonResponse { $this->authorize('update', Department::class); $department = Department::findOrFail($id); @@ -156,9 +150,8 @@ class DepartmentsController extends Controller * @author [A. Gianotto] [] * @param int $locationId * @since [v4.0] - * @return \Illuminate\Http\RedirectResponse */ - public function destroy($id) + public function destroy($id) : JsonResponse { $department = Department::findOrFail($id); @@ -180,7 +173,7 @@ class DepartmentsController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $this->authorize('view.selectlists'); diff --git a/app/Http/Controllers/Api/DepreciationsController.php b/app/Http/Controllers/Api/DepreciationsController.php index 502a0741b7..93088bb04a 100644 --- a/app/Http/Controllers/Api/DepreciationsController.php +++ b/app/Http/Controllers/Api/DepreciationsController.php @@ -7,6 +7,7 @@ use App\Http\Controllers\Controller; use App\Http\Transformers\DepreciationsTransformer; use App\Models\Depreciation; use Illuminate\Http\Request; +use Illuminate\Http\JsonResponse; class DepreciationsController extends Controller { @@ -15,9 +16,8 @@ class DepreciationsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Depreciation::class); $allowed_columns = ['id','name','months','depreciation_min','created_at']; @@ -48,9 +48,8 @@ class DepreciationsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { $this->authorize('create', Depreciation::class); $depreciation = new Depreciation; @@ -69,9 +68,8 @@ class DepreciationsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : JsonResponse | array { $this->authorize('view', Depreciation::class); $depreciation = Depreciation::findOrFail($id); @@ -86,9 +84,8 @@ class DepreciationsController extends Controller * @since [v4.0] * @param \Illuminate\Http\Request $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse { $this->authorize('update', Depreciation::class); $depreciation = Depreciation::findOrFail($id); @@ -107,9 +104,8 @@ class DepreciationsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Depreciation::class); $depreciation = Depreciation::withCount('models as models_count')->findOrFail($id); diff --git a/app/Http/Controllers/Api/GroupsController.php b/app/Http/Controllers/Api/GroupsController.php index f1eafd49dc..878650c718 100644 --- a/app/Http/Controllers/Api/GroupsController.php +++ b/app/Http/Controllers/Api/GroupsController.php @@ -7,7 +7,7 @@ use App\Http\Controllers\Controller; use App\Http\Transformers\GroupsTransformer; use App\Models\Group; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; +use Illuminate\Http\JsonResponse; class GroupsController extends Controller @@ -17,9 +17,8 @@ class GroupsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('superadmin'); @@ -56,9 +55,8 @@ class GroupsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { $this->authorize('superadmin'); $group = new Group; @@ -67,7 +65,7 @@ class GroupsController extends Controller $groupPermissions = Helper::selectedPermissionsArray($permissions, $permissions); $group->name = $request->input('name'); - $group->created_by = Auth::user()->id; + $group->created_by = auth()->id(); $group->permissions = json_encode($request->input('permissions', $groupPermissions)); if ($group->save()) { @@ -83,9 +81,8 @@ class GroupsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('superadmin'); $group = Group::findOrFail($id); @@ -99,9 +96,8 @@ class GroupsController extends Controller * @since [v4.0] * @param \Illuminate\Http\Request $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse { $this->authorize('superadmin'); $group = Group::findOrFail($id); @@ -122,9 +118,8 @@ class GroupsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('superadmin'); $group = Group::findOrFail($id); diff --git a/app/Http/Controllers/Api/ImportController.php b/app/Http/Controllers/Api/ImportController.php index d5323bfdd4..13f4301217 100644 --- a/app/Http/Controllers/Api/ImportController.php +++ b/app/Http/Controllers/Api/ImportController.php @@ -17,15 +17,15 @@ use Illuminate\Support\Facades\Storage; use League\Csv\Reader; use Symfony\Component\HttpFoundation\File\Exception\FileException; use Illuminate\Support\Facades\Log; +use Illuminate\Http\JsonResponse; class ImportController extends Controller { /** * Display a listing of the resource. * - * @return \Illuminate\Http\Response */ - public function index() + public function index() : JsonResponse | array { $this->authorize('import'); $imports = Import::latest()->get(); @@ -37,9 +37,8 @@ class ImportController extends Controller * Process and store a CSV upload file. * * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\JsonResponse */ - public function store() + public function store() : JsonResponse { $this->authorize('import'); if (! config('app.lock_passwords')) { @@ -152,9 +151,8 @@ class ImportController extends Controller * Processes the specified Import. * * @param int $import_id - * @return \Illuminate\Http\Response */ - public function process(ItemImportRequest $request, $import_id) + public function process(ItemImportRequest $request, $import_id) : JsonResponse { $this->authorize('import'); @@ -212,9 +210,8 @@ class ImportController extends Controller * Remove the specified resource from storage. * * @param int $import_id - * @return \Illuminate\Http\Response */ - public function destroy($import_id) + public function destroy($import_id) : JsonResponse { $this->authorize('create', Asset::class); @@ -231,6 +228,8 @@ class ImportController extends Controller return response()->json(Helper::formatStandardApiResponse('warning', null, trans('admin/hardware/message.import.file_not_deleted_warning'))); } + } + return response()->json(Helper::formatStandardApiResponse('warning', null, trans('admin/hardware/message.import.file_not_deleted_warning'))); } } diff --git a/app/Http/Controllers/Api/LabelsController.php b/app/Http/Controllers/Api/LabelsController.php index 126fe99438..0b54235422 100644 --- a/app/Http/Controllers/Api/LabelsController.php +++ b/app/Http/Controllers/Api/LabelsController.php @@ -8,7 +8,7 @@ use App\Http\Transformers\LabelsTransformer; use App\Models\Labels\Label; use Illuminate\Http\Request; use Illuminate\Support\ItemNotFoundException; -use Illuminate\Support\Facades\Auth; +use Illuminate\Http\JsonResponse; class LabelsController extends Controller { @@ -16,9 +16,8 @@ class LabelsController extends Controller * Returns JSON listing of all labels. * * @author Grant Le Roux - * @return JsonResponse */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Label::class); @@ -50,9 +49,8 @@ class LabelsController extends Controller * * @author Grant Le Roux * @param string $labelName - * @return JsonResponse */ - public function show(string $labelName) + public function show(string $labelName) : JsonResponse | array { $labelName = str_replace('/', '\\', $labelName); try { diff --git a/app/Http/Controllers/Api/LicenseSeatsController.php b/app/Http/Controllers/Api/LicenseSeatsController.php index 317b098768..a9630aa296 100644 --- a/app/Http/Controllers/Api/LicenseSeatsController.php +++ b/app/Http/Controllers/Api/LicenseSeatsController.php @@ -9,7 +9,7 @@ use App\Models\Asset; use App\Models\License; use App\Models\LicenseSeat; use App\Models\User; -use Illuminate\Support\Facades\Auth; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class LicenseSeatsController extends Controller @@ -19,11 +19,10 @@ class LicenseSeatsController extends Controller * * @param \Illuminate\Http\Request $request * @param int $licenseId - * @return \Illuminate\Http\Response */ - public function index(Request $request, $licenseId) + public function index(Request $request, $licenseId) : JsonResponse | array { - // + if ($license = License::find($licenseId)) { $this->authorize('view', $license); @@ -64,11 +63,10 @@ class LicenseSeatsController extends Controller * * @param int $licenseId * @param int $seatId - * @return \Illuminate\Http\Response */ - public function show($licenseId, $seatId) + public function show($licenseId, $seatId) : JsonResponse | array { - // + $this->authorize('view', License::class); // sanity checks: // 1. does the license seat exist? @@ -89,19 +87,18 @@ class LicenseSeatsController extends Controller * @param \Illuminate\Http\Request $request * @param int $licenseId * @param int $seatId - * @return \Illuminate\Http\Response */ - public function update(Request $request, $licenseId, $seatId) + public function update(Request $request, $licenseId, $seatId) : JsonResponse | array { $this->authorize('checkout', License::class); - // sanity checks: - // 1. does the license seat exist? + if (! $licenseSeat = LicenseSeat::find($seatId)) { return response()->json(Helper::formatStandardApiResponse('error', null, 'Seat not found')); } - // 2. does the seat belong to the specified license? - if (! $license = $licenseSeat->license()->first() || $license->id != intval($licenseId)) { + + $license = $licenseSeat->license()->first(); + if (!$license || $license->id != intval($licenseId)) { return response()->json(Helper::formatStandardApiResponse('error', null, 'Seat does not belong to the specified license')); } @@ -110,7 +107,7 @@ class LicenseSeatsController extends Controller // attempt to update the license seat $licenseSeat->fill($request->all()); - $licenseSeat->user_id = Auth::user()->id; + $licenseSeat->user_id = auth()->id(); // check if this update is a checkin operation // 1. are relevant fields touched at all? diff --git a/app/Http/Controllers/Api/LicensesController.php b/app/Http/Controllers/Api/LicensesController.php index c35b669d70..579d80eeb5 100644 --- a/app/Http/Controllers/Api/LicensesController.php +++ b/app/Http/Controllers/Api/LicensesController.php @@ -4,14 +4,12 @@ namespace App\Http\Controllers\Api; use App\Helpers\Helper; use App\Http\Controllers\Controller; -use App\Http\Transformers\LicenseSeatsTransformer; use App\Http\Transformers\LicensesTransformer; use App\Http\Transformers\SelectlistTransformer; -use App\Models\Company; use App\Models\License; -use App\Models\LicenseSeat; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Http\JsonResponse; class LicensesController extends Controller { @@ -21,9 +19,8 @@ class LicensesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', License::class); @@ -156,11 +153,9 @@ class LicensesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { - // $this->authorize('create', License::class); $license = new License; $license->fill($request->all()); @@ -177,9 +172,8 @@ class LicensesController extends Controller * * @author [A. Gianotto] [] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : JsonResponse | array { $this->authorize('view', License::class); $license = License::withCount('freeSeats')->findOrFail($id); @@ -195,9 +189,8 @@ class LicensesController extends Controller * @since [v4.0] * @param \Illuminate\Http\Request $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse | array { // $this->authorize('update', License::class); @@ -218,9 +211,8 @@ class LicensesController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { // $license = License::findOrFail($id); @@ -248,7 +240,7 @@ class LicensesController extends Controller * * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $licenses = License::select([ 'licenses.id', diff --git a/app/Http/Controllers/Api/LocationsController.php b/app/Http/Controllers/Api/LocationsController.php index 78cf43c671..2ceeb8374e 100644 --- a/app/Http/Controllers/Api/LocationsController.php +++ b/app/Http/Controllers/Api/LocationsController.php @@ -11,6 +11,7 @@ use App\Models\Location; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Collection; +use Illuminate\Http\JsonResponse; class LocationsController extends Controller { @@ -21,7 +22,7 @@ class LocationsController extends Controller * @since [v4.0] * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Location::class); $allowed_columns = [ @@ -138,9 +139,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : JsonResponse { $this->authorize('create', Location::class); $location = new Location; @@ -160,9 +160,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : JsonResponse | array { $this->authorize('view', Location::class); $location = Location::with('parent', 'manager', 'children') @@ -199,9 +198,8 @@ class LocationsController extends Controller * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id - * @return \Illuminate\Http\JsonResponse */ - public function update(ImageUploadRequest $request, $id) + public function update(ImageUploadRequest $request, $id) : JsonResponse { $this->authorize('update', Location::class); $location = Location::findOrFail($id); @@ -230,9 +228,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Location::class); $location = Location::withCount('assignedAssets as assigned_assets_count') @@ -280,7 +277,7 @@ class LocationsController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { // If a user is in the process of editing their profile, as determined by the referrer, // then we check that they have permission to edit their own location. @@ -325,7 +322,6 @@ class LocationsController extends Controller $paginated_results = new LengthAwarePaginator($locations_formatted->forPage($page, 500), $locations_formatted->count(), 500, $page, []); - //return []; return (new SelectlistTransformer)->transformSelectlist($paginated_results); } } diff --git a/app/Http/Controllers/Api/ManufacturersController.php b/app/Http/Controllers/Api/ManufacturersController.php index 6b5a130229..eb89693e5c 100644 --- a/app/Http/Controllers/Api/ManufacturersController.php +++ b/app/Http/Controllers/Api/ManufacturersController.php @@ -10,8 +10,8 @@ use App\Models\Actionlog; use App\Models\Manufacturer; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; +use Illuminate\Http\JsonResponse; class ManufacturersController extends Controller { @@ -22,7 +22,7 @@ class ManufacturersController extends Controller * @since [v4.0] * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', Manufacturer::class); $allowed_columns = ['id', 'name', 'url', 'support_url', 'support_email', 'warranty_lookup_url', 'support_phone', 'created_at', 'updated_at', 'image', 'assets_count', 'consumables_count', 'components_count', 'licenses_count']; @@ -83,9 +83,8 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : JsonResponse { $this->authorize('create', Manufacturer::class); $manufacturer = new Manufacturer; @@ -105,9 +104,8 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : JsonResponse | array { $this->authorize('view', Manufacturer::class); $manufacturer = Manufacturer::withCount('assets as assets_count')->withCount('licenses as licenses_count')->withCount('consumables as consumables_count')->withCount('accessories as accessories_count')->findOrFail($id); @@ -122,9 +120,8 @@ class ManufacturersController extends Controller * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(ImageUploadRequest $request, $id) : JsonResponse { $this->authorize('update', Manufacturer::class); $manufacturer = Manufacturer::findOrFail($id); @@ -144,9 +141,8 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Manufacturer::class); $manufacturer = Manufacturer::findOrFail($id); @@ -167,10 +163,9 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @since [v6.3.4] * @param int $id - * @return \Illuminate\Http\JsonResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function restore($id) + public function restore($id) : JsonResponse { $this->authorize('delete', Manufacturer::class); @@ -186,7 +181,7 @@ class ManufacturersController extends Controller $logaction->item_type = Manufacturer::class; $logaction->item_id = $manufacturer->id; $logaction->created_at = date('Y-m-d H:i:s'); - $logaction->user_id = Auth::user()->id; + $logaction->user_id = auth()->id(); $logaction->logaction('restore'); return response()->json(Helper::formatStandardApiResponse('success', trans('admin/manufacturers/message.restore.success')), 200); @@ -206,7 +201,7 @@ class ManufacturersController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $this->authorize('view.selectlists'); diff --git a/app/Http/Controllers/Api/PredefinedKitsController.php b/app/Http/Controllers/Api/PredefinedKitsController.php index b398dbfae2..2bc118db38 100644 --- a/app/Http/Controllers/Api/PredefinedKitsController.php +++ b/app/Http/Controllers/Api/PredefinedKitsController.php @@ -7,6 +7,8 @@ use App\Http\Controllers\Controller; use App\Http\Transformers\PredefinedKitsTransformer; use App\Models\PredefinedKit; use Illuminate\Http\Request; +use Illuminate\Http\JsonResponse; +use App\Http\Transformers\SelectlistTransformer; /** * @author [D. Minaev.] [] @@ -18,7 +20,7 @@ class PredefinedKitsController extends Controller * * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('view', PredefinedKit::class); $allowed_columns = ['id', 'name']; @@ -47,9 +49,8 @@ class PredefinedKitsController extends Controller * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { $this->authorize('create', PredefinedKit::class); $kit = new PredefinedKit; @@ -66,9 +67,8 @@ class PredefinedKitsController extends Controller * Display the specified resource. * * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', PredefinedKit::class); $kit = PredefinedKit::findOrFail($id); @@ -81,9 +81,8 @@ class PredefinedKitsController extends Controller * * @param \Illuminate\Http\Request $request * @param int $id kit id - * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($id); @@ -100,9 +99,8 @@ class PredefinedKitsController extends Controller * Remove the specified resource from storage. * * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', PredefinedKit::class); $kit = PredefinedKit::findOrFail($id); @@ -123,7 +121,7 @@ class PredefinedKitsController extends Controller * * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $kits = PredefinedKit::select([ 'id', @@ -145,7 +143,7 @@ class PredefinedKitsController extends Controller * @param int $id * @return \Illuminate\Http\Response */ - public function indexLicenses($kit_id) + public function indexLicenses($kit_id) : array { $this->authorize('view', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -160,7 +158,7 @@ class PredefinedKitsController extends Controller * @param int $id * @return \Illuminate\Http\Response */ - public function storeLicense(Request $request, $kit_id) + public function storeLicense(Request $request, $kit_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); @@ -186,9 +184,8 @@ class PredefinedKitsController extends Controller * * @param \Illuminate\Http\Request $request * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function updateLicense(Request $request, $kit_id, $license_id) + public function updateLicense(Request $request, $kit_id, $license_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -205,9 +202,8 @@ class PredefinedKitsController extends Controller * Remove the specified resource from storage. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function detachLicense($kit_id, $license_id) + public function detachLicense($kit_id, $license_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -221,9 +217,8 @@ class PredefinedKitsController extends Controller * Display the specified resource. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function indexModels($kit_id) + public function indexModels($kit_id) : array { $this->authorize('view', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -236,9 +231,8 @@ class PredefinedKitsController extends Controller * Store the specified resource. * * @param int $id - * @return \Illuminate\Http\Response */ - public function storeModel(Request $request, $kit_id) + public function storeModel(Request $request, $kit_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); @@ -264,9 +258,8 @@ class PredefinedKitsController extends Controller * * @param \Illuminate\Http\Request $request * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function updateModel(Request $request, $kit_id, $model_id) + public function updateModel(Request $request, $kit_id, $model_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -283,9 +276,8 @@ class PredefinedKitsController extends Controller * Remove the specified resource from storage. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function detachModel($kit_id, $model_id) + public function detachModel($kit_id, $model_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -299,9 +291,8 @@ class PredefinedKitsController extends Controller * Display the specified resource. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function indexConsumables($kit_id) + public function indexConsumables($kit_id) : array { $this->authorize('view', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -314,9 +305,8 @@ class PredefinedKitsController extends Controller * Store the specified resource. * * @param int $id - * @return \Illuminate\Http\Response */ - public function storeConsumable(Request $request, $kit_id) + public function storeConsumable(Request $request, $kit_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); @@ -342,9 +332,8 @@ class PredefinedKitsController extends Controller * * @param \Illuminate\Http\Request $request * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function updateConsumable(Request $request, $kit_id, $consumable_id) + public function updateConsumable(Request $request, $kit_id, $consumable_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -361,9 +350,8 @@ class PredefinedKitsController extends Controller * Remove the specified resource from storage. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function detachConsumable($kit_id, $consumable_id) + public function detachConsumable($kit_id, $consumable_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -377,9 +365,8 @@ class PredefinedKitsController extends Controller * Display the specified resource. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function indexAccessories($kit_id) + public function indexAccessories($kit_id) : array { $this->authorize('view', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -392,9 +379,8 @@ class PredefinedKitsController extends Controller * Store the specified resource. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function storeAccessory(Request $request, $kit_id) + public function storeAccessory(Request $request, $kit_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); @@ -420,9 +406,8 @@ class PredefinedKitsController extends Controller * * @param \Illuminate\Http\Request $request * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function updateAccessory(Request $request, $kit_id, $accessory_id) + public function updateAccessory(Request $request, $kit_id, $accessory_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); @@ -439,9 +424,8 @@ class PredefinedKitsController extends Controller * Remove the specified resource from storage. * * @param int $kit_id - * @return \Illuminate\Http\Response */ - public function detachAccessory($kit_id, $accessory_id) + public function detachAccessory($kit_id, $accessory_id) : JsonResponse { $this->authorize('update', PredefinedKit::class); $kit = PredefinedKit::findOrFail($kit_id); diff --git a/app/Http/Controllers/Api/ProfileController.php b/app/Http/Controllers/Api/ProfileController.php index b6752dd1ed..f7f91e094e 100644 --- a/app/Http/Controllers/Api/ProfileController.php +++ b/app/Http/Controllers/Api/ProfileController.php @@ -6,13 +6,13 @@ use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\CheckoutRequest; use Illuminate\Http\Response; -use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; use Laravel\Passport\TokenRepository; use Illuminate\Contracts\Validation\Factory as ValidationFactory; use Illuminate\Support\Facades\Gate; use App\Models\CustomField; use Illuminate\Support\Facades\DB; +use Illuminate\Http\JsonResponse; class ProfileController extends Controller { @@ -42,12 +42,10 @@ class ProfileController extends Controller * * @author [A. Gianotto] [] * @since [v4.3.0] - * - * @return array */ - public function requestedAssets() + public function requestedAssets() : array { - $checkoutRequests = CheckoutRequest::where('user_id', '=', Auth::user()->id)->get(); + $checkoutRequests = CheckoutRequest::where('user_id', '=', auth()->id())->get(); $results = array(); $show_field = array(); @@ -95,10 +93,9 @@ class ProfileController extends Controller * * @author [A. Gianotto] [] * @since [v6.0.5] - * - * @return \Illuminate\Http\Response */ - public function createApiToken(Request $request) { + public function createApiToken(Request $request) : JsonResponse + { if (!Gate::allows('self.api')) { abort(403); @@ -106,14 +103,14 @@ class ProfileController extends Controller $accessTokenName = $request->input('name', 'Auth Token'); - if ($accessToken = Auth::user()->createToken($accessTokenName)->accessToken) { + if ($accessToken = auth()->user()->createToken($accessTokenName)->accessToken) { // Get the ID so we can return that with the payload - $token = DB::table('oauth_access_tokens')->where('user_id', '=', Auth::user()->id)->where('name','=',$accessTokenName)->orderBy('created_at', 'desc')->first(); + $token = DB::table('oauth_access_tokens')->where('user_id', '=', auth()->id())->where('name','=',$accessTokenName)->orderBy('created_at', 'desc')->first(); $accessTokenData['id'] = $token->id; $accessTokenData['token'] = $accessToken; $accessTokenData['name'] = $accessTokenName; - return response()->json(Helper::formatStandardApiResponse('success', $accessTokenData, 'Personal access token '.$accessTokenName.' created successfully')); + return response()->json(Helper::formatStandardApiResponse('success', $accessTokenData, trans('account/general.personal_api_keys_success', ['key' => $accessTokenName]))); } return response()->json(Helper::formatStandardApiResponse('error', null, 'Token could not be created.')); @@ -125,17 +122,16 @@ class ProfileController extends Controller * * @author [A. Gianotto] [] * @since [v6.0.5] - * - * @return \Illuminate\Http\Response */ - public function deleteApiToken($tokenId) { + public function deleteApiToken($tokenId) : Response + { if (!Gate::allows('self.api')) { abort(403); } $token = $this->tokenRepository->findForUser( - $tokenId, Auth::user()->getAuthIdentifier() + $tokenId, auth()->user()->getAuthIdentifier() ); if (is_null($token)) { @@ -154,16 +150,15 @@ class ProfileController extends Controller * * @author [A. Gianotto] [] * @since [v6.0.5] - * - * @return \Illuminate\Http\Response */ - public function showApiTokens(Request $request) { + public function showApiTokens() : JsonResponse + { if (!Gate::allows('self.api')) { abort(403); } - $tokens = $this->tokenRepository->forUser(Auth::user()->getAuthIdentifier()); + $tokens = $this->tokenRepository->forUser(auth()->user()->getAuthIdentifier()); $token_values = $tokens->load('client')->filter(function ($token) { return $token->client->personal_access_client && ! $token->revoked; })->values(); diff --git a/app/Http/Controllers/Api/ReportsController.php b/app/Http/Controllers/Api/ReportsController.php index 8761c9442b..b0f64189d5 100644 --- a/app/Http/Controllers/Api/ReportsController.php +++ b/app/Http/Controllers/Api/ReportsController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Transformers\ActionlogsTransformer; use App\Models\Actionlog; use Illuminate\Http\Request; +use Illuminate\Http\JsonResponse; class ReportsController extends Controller { @@ -14,9 +15,8 @@ class ReportsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return View */ - public function index(Request $request) + public function index(Request $request) : JsonResponse | array { $this->authorize('reports.view'); diff --git a/app/Http/Controllers/Api/SettingsController.php b/app/Http/Controllers/Api/SettingsController.php index d9059988f2..7eb28a4815 100644 --- a/app/Http/Controllers/Api/SettingsController.php +++ b/app/Http/Controllers/Api/SettingsController.php @@ -9,26 +9,22 @@ use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Models\Ldap; use App\Models\Setting; -use Mail; -use App\Notifications\SlackTest; use App\Notifications\MailTest; -use GuzzleHttp\Client; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Response; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Notification; use Illuminate\Support\Facades\Storage; -use Illuminate\Support\Facades\Validator; -use App\Http\Requests\SlackSettingsRequest; +use Illuminate\Support\Facades\Validator; use App\Http\Transformers\LoginAttemptsTransformer; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class SettingsController extends Controller { - public function ldaptest() + public function ldaptest() : JsonResponse { $settings = Setting::getSettings(); @@ -88,7 +84,7 @@ class SettingsController extends Controller } - public function ldaptestlogin(Request $request) + public function ldaptestlogin(Request $request) : JsonResponse { if (Setting::getSettings()->ldap_enabled != '1') { @@ -148,9 +144,8 @@ class SettingsController extends Controller * * @author [A. Gianotto] [] * @since [v3.0] - * @return JsonResponse */ - public function ajaxTestEmail() + public function ajaxTestEmail() : JsonResponse { if (!config('app.lock_passwords')) { try { @@ -170,9 +165,8 @@ class SettingsController extends Controller * * @author [A. Gianotto] [] * @since [v5.0.0] - * @return JsonResponse */ - public function purgeBarcodes() + public function purgeBarcodes() : JsonResponse { $file_count = 0; $files = Storage::disk('public')->files('barcodes'); @@ -211,9 +205,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * @since [v5.0.0] * @param \Illuminate\Http\Request $request - * @return array | JsonResponse */ - public function showLoginAttempts(Request $request) + public function showLoginAttempts(Request $request) : array { $allowed_columns = ['id', 'username', 'remote_ip', 'user_agent', 'successful', 'created_at']; @@ -233,9 +226,9 @@ class SettingsController extends Controller * Lists backup files * * @author [A. Gianotto] - * @return array | JsonResponse */ - public function listBackups() { + public function listBackups() : array + { $settings = Setting::getSettings(); $path = 'app/backups'; $backup_files = Storage::files($path); @@ -276,9 +269,9 @@ class SettingsController extends Controller * exhausts memory on larger files. * * @author [A. Gianotto] - * @return JsonResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse */ - public function downloadBackup($file) { + public function downloadBackup($file) : JsonResponse | BinaryFileResponse + { $path = storage_path('app/backups'); @@ -296,9 +289,9 @@ class SettingsController extends Controller * * @author [A. Gianotto] * @since [v6.3.1] - * @return JsonResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse */ - public function downloadLatestBackup() { + public function downloadLatestBackup() : JsonResponse | BinaryFileResponse + { $fileData = collect(); foreach (Storage::files('app/backups') as $file) { diff --git a/app/Http/Controllers/Api/StatuslabelsController.php b/app/Http/Controllers/Api/StatuslabelsController.php index 7c8e260c2f..95ac5956fa 100644 --- a/app/Http/Controllers/Api/StatuslabelsController.php +++ b/app/Http/Controllers/Api/StatuslabelsController.php @@ -11,7 +11,7 @@ use App\Models\Asset; use App\Models\Statuslabel; use Illuminate\Http\Request; use App\Http\Transformers\PieChartTransformer; -use Illuminate\Support\Arr; +use Illuminate\Http\JsonResponse; class StatuslabelsController extends Controller { @@ -20,9 +20,8 @@ class StatuslabelsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request) : array { $this->authorize('view', Statuslabel::class); $allowed_columns = ['id', 'name', 'created_at', 'assets_count', 'color', 'notes', 'default_label']; @@ -72,9 +71,8 @@ class StatuslabelsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(Request $request) : JsonResponse { $this->authorize('create', Statuslabel::class); $request->except('deployable', 'pending', 'archived'); @@ -108,9 +106,8 @@ class StatuslabelsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', Statuslabel::class); $statuslabel = Statuslabel::findOrFail($id); @@ -126,9 +123,8 @@ class StatuslabelsController extends Controller * @since [v4.0] * @param \Illuminate\Http\Request $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Request $request, $id) : JsonResponse { $this->authorize('update', Statuslabel::class); $statuslabel = Statuslabel::findOrFail($id); @@ -163,9 +159,8 @@ class StatuslabelsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Statuslabel::class); $statuslabel = Statuslabel::findOrFail($id); @@ -188,9 +183,8 @@ class StatuslabelsController extends Controller * * @author [A. Gianotto] [] * @since [v3.0] - * @return array */ - public function getAssetCountByStatuslabel() + public function getAssetCountByStatuslabel() : array { $this->authorize('view', Statuslabel::class); $statuslabels = Statuslabel::withCount('assets')->get(); @@ -215,9 +209,8 @@ class StatuslabelsController extends Controller * * @author [A. Gianotto] [] * @since [v6.0.11] - * @return array */ - public function getAssetCountByMetaStatus() + public function getAssetCountByMetaStatus() : array { $this->authorize('view', Statuslabel::class); @@ -245,9 +238,8 @@ class StatuslabelsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function assets(Request $request, $id) + public function assets(Request $request, $id) : array { $this->authorize('view', Statuslabel::class); $this->authorize('index', Asset::class); @@ -281,9 +273,8 @@ class StatuslabelsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return bool */ - public function checkIfDeployable($id) + public function checkIfDeployable($id) : string { $statuslabel = Statuslabel::findOrFail($id); if ($statuslabel->getStatuslabelType() == 'deployable') { @@ -300,7 +291,7 @@ class StatuslabelsController extends Controller * @since [v6.1.1] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $this->authorize('view.selectlists'); diff --git a/app/Http/Controllers/Api/SuppliersController.php b/app/Http/Controllers/Api/SuppliersController.php index 3e3d637be0..f752f22241 100644 --- a/app/Http/Controllers/Api/SuppliersController.php +++ b/app/Http/Controllers/Api/SuppliersController.php @@ -10,6 +10,7 @@ use App\Models\Supplier; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Storage; +use Illuminate\Http\JsonResponse; class SuppliersController extends Controller { @@ -20,7 +21,7 @@ class SuppliersController extends Controller * @since [v4.0] * @return \Illuminate\Http\Response */ - public function index(Request $request) + public function index(Request $request): array { $this->authorize('view', Supplier::class); $allowed_columns = [' @@ -114,9 +115,8 @@ class SuppliersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request - * @return \Illuminate\Http\Response */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : JsonResponse { $this->authorize('create', Supplier::class); $supplier = new Supplier; @@ -136,9 +136,8 @@ class SuppliersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function show($id) + public function show($id) : array { $this->authorize('view', Supplier::class); $supplier = Supplier::findOrFail($id); @@ -154,9 +153,8 @@ class SuppliersController extends Controller * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id - * @return \Illuminate\Http\Response */ - public function update(ImageUploadRequest $request, $id) + public function update(ImageUploadRequest $request, $id) : JsonResponse { $this->authorize('update', Supplier::class); $supplier = Supplier::findOrFail($id); @@ -176,9 +174,8 @@ class SuppliersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy($id) : JsonResponse { $this->authorize('delete', Supplier::class); $supplier = Supplier::with('asset_maintenances', 'assets', 'licenses')->withCount('asset_maintenances as asset_maintenances_count', 'assets as assets_count', 'licenses as licenses_count')->findOrFail($id); @@ -209,7 +206,7 @@ class SuppliersController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $this->authorize('view.selectlists'); diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 3374f1907e..9200f80b1d 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -24,6 +24,7 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Log; use App\Http\Requests\DeleteUserRequest; +use Illuminate\Http\JsonResponse; class UsersController extends Controller { @@ -35,7 +36,7 @@ class UsersController extends Controller * * @return array */ - public function index(Request $request) + public function index(Request $request) : array { $this->authorize('view', User::class); @@ -247,10 +248,6 @@ class UsersController extends Controller 'jobtitle', 'username', 'employee_num', - 'assets', - 'accessories', - 'consumables', - 'licenses', 'groups', 'activated', 'created_at', @@ -305,7 +302,7 @@ class UsersController extends Controller * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer */ - public function selectlist(Request $request) + public function selectlist(Request $request) : array { $users = User::select( [ @@ -361,21 +358,20 @@ class UsersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request - * @return array | \Illuminate\Http\JsonResponse */ - public function store(SaveUserRequest $request) + public function store(SaveUserRequest $request) : JsonResponse { $this->authorize('create', User::class); $user = new User; $user->fill($request->all()); - $user->created_by = Auth::user()->id; + $user->created_by = auth()->id(); if ($request->has('permissions')) { $permissions_array = $request->input('permissions'); // Strip out the superuser permission if the API user isn't a superadmin - if (! Auth::user()->isSuperUser()) { + if (! auth()->user()->isSuperUser()) { unset($permissions_array['superuser']); } $user->permissions = $permissions_array; @@ -408,9 +404,8 @@ class UsersController extends Controller * * @author [A. Gianotto] [] * @param int $id - * @return array | \Illuminate\Http\JsonResponse */ - public function show($id) + public function show($id) : JsonResponse | array { $this->authorize('view', User::class); @@ -431,9 +426,8 @@ class UsersController extends Controller * @since [v4.0] * @param \Illuminate\Http\Request $request * @param int $id - * @return \Illuminate\Http\JsonResponse */ - public function update(SaveUserRequest $request, $id) + public function update(SaveUserRequest $request, $id) : JsonResponse { $this->authorize('update', User::class); @@ -472,7 +466,7 @@ class UsersController extends Controller $permissions_array = $request->input('permissions'); // Strip out the individual superuser permission if the API user isn't a superadmin - if (!Auth::user()->isSuperUser()) { + if (!auth()->user()->isSuperUser()) { unset($permissions_array['superuser']); } @@ -490,7 +484,7 @@ class UsersController extends Controller if ($user->save()) { // Check if the request has groups passed and has a value, AND that the user us a superuser - if (($request->has('groups')) && (Auth::user()->isSuperUser())) { + if (($request->has('groups')) && (auth()->user()->isSuperUser())) { $validator = Validator::make($request->only('groups'), [ 'groups.*' => 'integer|exists:permission_groups,id', @@ -522,9 +516,8 @@ class UsersController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param int $id - * @return \Illuminate\Http\JsonResponse */ - public function destroy(DeleteUserRequest $request, $id) + public function destroy(DeleteUserRequest $request, $id) : JsonResponse { $this->authorize('delete', User::class); @@ -560,9 +553,8 @@ class UsersController extends Controller * @author [A. Gianotto] [] * @since [v3.0] * @param $userId - * @return array | \Illuminate\Http\JsonResponse */ - public function assets(Request $request, $id) + public function assets(Request $request, $id) : JsonResponse | array { $this->authorize('view', User::class); $this->authorize('view', Asset::class); @@ -605,9 +597,9 @@ class UsersController extends Controller * @since [v6.0.13] * @param Request $request * @param $id - * @return string JSON */ - public function emailAssetList(Request $request, $id) + public function emailAssetList(Request $request, $id) : JsonResponse + { $this->authorize('update', User::class); @@ -633,9 +625,8 @@ class UsersController extends Controller * @author [A. Gianotto] [] * @since [v3.0] * @param $userId - * @return array | \Illuminate\Http\JsonResponse */ - public function consumables(Request $request, $id) + public function consumables(Request $request, $id) : array { $this->authorize('view', User::class); $this->authorize('view', Consumable::class); @@ -651,9 +642,8 @@ class UsersController extends Controller * @author [A. Gianotto] [] * @since [v4.6.14] * @param $userId - * @return array */ - public function accessories($id) + public function accessories($id) : array { $this->authorize('view', User::class); $user = User::findOrFail($id); @@ -670,9 +660,8 @@ class UsersController extends Controller * @author [N. Mathar] [] * @since [v5.0] * @param $userId - * @return array | \Illuminate\Http\JsonResponse */ - public function licenses($id) + public function licenses($id) : JsonResponse | array { $this->authorize('view', User::class); $this->authorize('view', License::class); @@ -693,9 +682,8 @@ class UsersController extends Controller * @author [A. Gianotto] [] * @since [v3.0] * @param $userId - * @return string JSON */ - public function postTwoFactorReset(Request $request) + public function postTwoFactorReset(Request $request) : JsonResponse { $this->authorize('update', User::class); @@ -714,7 +702,7 @@ class UsersController extends Controller $logaction->item_type = User::class; $logaction->item_id = $user->id; $logaction->created_at = date('Y-m-d H:i:s'); - $logaction->user_id = Auth::user()->id; + $logaction->user_id = auth()->id(); $logaction->logaction('2FA reset'); return response()->json(['message' => trans('admin/settings/general.two_factor_reset_success')], 200); @@ -733,9 +721,8 @@ class UsersController extends Controller * @author [Juan Font] [] * @since [v4.4.2] * @param \Illuminate\Http\Request $request - * @return array */ - public function getCurrentUserInfo(Request $request) + public function getCurrentUserInfo(Request $request) : array { return (new UsersTransformer)->transformUser($request->user()); } @@ -746,9 +733,8 @@ class UsersController extends Controller * @author [E. Taylor] [] * @param int $userId * @since [v6.0.0] - * @return \Illuminate\Http\JsonResponse */ - public function restore($userId) + public function restore($userId) : JsonResponse { $this->authorize('delete', User::class); @@ -766,7 +752,7 @@ class UsersController extends Controller $logaction->item_type = User::class; $logaction->item_id = $user->id; $logaction->created_at = date('Y-m-d H:i:s'); - $logaction->user_id = Auth::user()->id; + $logaction->user_id = auth()->id(); $logaction->logaction('restore'); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.restored')), 200); diff --git a/app/Http/Controllers/AssetMaintenancesController.php b/app/Http/Controllers/AssetMaintenancesController.php index c9ffea9a4c..02be1e6061 100644 --- a/app/Http/Controllers/AssetMaintenancesController.php +++ b/app/Http/Controllers/AssetMaintenancesController.php @@ -2,17 +2,14 @@ namespace App\Http\Controllers; -use App\Helpers\Helper; use App\Models\Asset; use App\Models\AssetMaintenance; use App\Models\Company; use Illuminate\Support\Facades\Auth; use Carbon\Carbon; use Illuminate\Http\Request; -use Slack; -use Str; -use TCPDF; -use View; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; /** * This controller handles all actions related to Asset Maintenance for @@ -29,9 +26,8 @@ class AssetMaintenancesController extends Controller * @author Vincent Sposato * @version v1.0 * @since [v1.8] - * @return View */ - private static function getInsufficientPermissionsRedirect() + private static function getInsufficientPermissionsRedirect(): RedirectResponse { return redirect()->route('maintenances.index') ->with('error', trans('general.insufficient_permissions')); @@ -46,9 +42,8 @@ class AssetMaintenancesController extends Controller * @author Vincent Sposato * @version v1.0 * @since [v1.8] - * @return View */ - public function index() + public function index() : View { $this->authorize('view', Asset::class); return view('asset_maintenances/index'); @@ -63,7 +58,7 @@ class AssetMaintenancesController extends Controller * @since [v1.8] * @return mixed */ - public function create() + public function create() : View { $this->authorize('update', Asset::class); $asset = null; @@ -92,9 +87,8 @@ class AssetMaintenancesController extends Controller * @author Vincent Sposato * @version v1.0 * @since [v1.8] - * @return mixed */ - public function store(Request $request) + public function store(Request $request) : RedirectResponse { $this->authorize('update', Asset::class); // create a new model instance @@ -144,9 +138,8 @@ class AssetMaintenancesController extends Controller * @param int $assetMaintenanceId * @version v1.0 * @since [v1.8] - * @return mixed */ - public function edit($assetMaintenanceId = null) + public function edit($assetMaintenanceId = null) : View | RedirectResponse { $this->authorize('update', Asset::class); // Check if the asset maintenance exists @@ -162,14 +155,9 @@ class AssetMaintenancesController extends Controller return static::getInsufficientPermissionsRedirect(); } - // Prepare Improvement Type List - $assetMaintenanceType = [ - '' => 'Select an improvement type', - ] + AssetMaintenance::getImprovementOptions(); + $assetMaintenanceType = ['' => 'Select an improvement type'] + AssetMaintenance::getImprovementOptions(); - // Get Supplier List - // Render the view return view('asset_maintenances/edit') ->with('selectedAsset', null) ->with('assetMaintenanceType', $assetMaintenanceType) @@ -183,11 +171,10 @@ class AssetMaintenancesController extends Controller * @author Vincent Sposato * @param Request $request * @param int $assetMaintenanceId - * @return mixed * @version v1.0 * @since [v1.8] */ - public function update(Request $request, $assetMaintenanceId = null) + public function update(Request $request, $assetMaintenanceId = null) : View | RedirectResponse { $this->authorize('update', Asset::class); // Check if the asset maintenance exists @@ -255,9 +242,8 @@ class AssetMaintenancesController extends Controller * @param int $assetMaintenanceId * @version v1.0 * @since [v1.8] - * @return mixed */ - public function destroy($assetMaintenanceId) + public function destroy($assetMaintenanceId) : RedirectResponse { $this->authorize('update', Asset::class); // Check if the asset maintenance exists @@ -284,9 +270,8 @@ class AssetMaintenancesController extends Controller * @param int $assetMaintenanceId * @version v1.0 * @since [v1.8] - * @return View */ - public function show($assetMaintenanceId) + public function show($assetMaintenanceId) : View | RedirectResponse { $this->authorize('view', Asset::class); diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index a2deb616b0..4421829f48 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -4,19 +4,21 @@ namespace App\Http\Controllers; use App\Helpers\Helper; use App\Http\Requests\ImageUploadRequest; +use App\Http\Requests\StoreAssetModelRequest; use App\Models\Actionlog; -use App\Models\Asset; use App\Models\AssetModel; use App\Models\CustomField; +use App\Models\SnipeModel; use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Validator; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; -use Symfony\Component\HttpFoundation\JsonResponse; use Illuminate\Support\Facades\Log; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; + /** * This class controls all actions related to asset models for @@ -33,10 +35,8 @@ class AssetModelsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { $this->authorize('index', AssetModel::class); @@ -48,10 +48,8 @@ class AssetModelsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', AssetModel::class); @@ -66,16 +64,12 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param ImageUploadRequest $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(StoreAssetModelRequest $request) : RedirectResponse { $this->authorize('create', AssetModel::class); - // Create a new asset model $model = new AssetModel; - // Save the model data $model->eol = $request->input('eol'); $model->depreciation_id = $request->input('depreciation_id'); $model->name = $request->input('name'); @@ -93,7 +87,6 @@ class AssetModelsController extends Controller $model = $request->handleImages($model); - // Was it created? if ($model->save()) { if ($this->shouldAddDefaultValues($request->input())) { if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ @@ -113,18 +106,14 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param int $modelId - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($modelId = null) + public function edit($modelId = null) : View | RedirectResponse { $this->authorize('update', AssetModel::class); if ($item = AssetModel::find($modelId)) { $category_type = 'asset'; - $view = View::make('models/edit', compact('item', 'category_type')); - $view->with('depreciation_list', Helper::depreciationList()); + return view('models/edit', compact('item', 'category_type'))->with('depreciation_list', Helper::depreciationList()); - return $view; } return redirect()->route('models.index')->with('error', trans('admin/models/message.does_not_exist')); @@ -142,12 +131,11 @@ class AssetModelsController extends Controller * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(ImageUploadRequest $request, $modelId = null) + public function update(StoreAssetModelRequest $request, $modelId) : RedirectResponse { $this->authorize('update', AssetModel::class); - // Check if the model exists + if (is_null($model = AssetModel::find($modelId))) { - // Redirect to the models management page return redirect()->route('models.index')->with('error', trans('admin/models/message.does_not_exist')); } @@ -173,9 +161,6 @@ class AssetModelsController extends Controller } } - - - if ($model->save()) { if ($model->wasChanged('eol')) { if ($model->eol > 0) { @@ -200,10 +185,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param int $modelId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($modelId) + public function destroy($modelId) : RedirectResponse { $this->authorize('delete', AssetModel::class); // Check if the model exists @@ -237,10 +220,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param int $id - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function getRestore($id) + public function getRestore($id) : RedirectResponse { $this->authorize('create', AssetModel::class); @@ -255,7 +236,7 @@ class AssetModelsController extends Controller $logaction->item_type = User::class; $logaction->item_id = $model->id; $logaction->created_at = date('Y-m-d H:i:s'); - $logaction->user_id = Auth::user()->id; + $logaction->user_id = auth()->id(); $logaction->logaction('restore'); @@ -282,10 +263,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param int $modelId - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($modelId = null) + public function show($modelId = null) : View | RedirectResponse { $this->authorize('view', AssetModel::class); $model = AssetModel::withTrashed()->find($modelId); @@ -303,9 +282,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param int $modelId - * @return View */ - public function getClone($modelId = null) + public function getClone($modelId = null) : View | RedirectResponse { $this->authorize('create', AssetModel::class); // Check if the model exists @@ -331,9 +309,8 @@ class AssetModelsController extends Controller * @author [B. Wetherington] [] * @since [v2.0] * @param int $modelId - * @return View */ - public function getCustomFields($modelId) + public function getCustomFields($modelId) : View { return view('models.custom_fields_form')->with('model', AssetModel::find($modelId)); } @@ -345,9 +322,8 @@ class AssetModelsController extends Controller * * @author [A. Gianotto] [] * @since [v1.7] - * @return \Illuminate\Contracts\View\View */ - public function postBulkEdit(Request $request) + public function postBulkEdit(Request $request) : View | RedirectResponse { $models_raw_array = $request->input('ids'); @@ -389,9 +365,8 @@ class AssetModelsController extends Controller * * @author [A. Gianotto] [] * @since [v1.7] - * @return \Illuminate\Contracts\View\View */ - public function postBulkEditSave(Request $request) + public function postBulkEditSave(Request $request) : RedirectResponse { $models_raw_array = $request->input('ids'); $update_array = []; @@ -429,9 +404,8 @@ class AssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param int $modelId - * @return \Illuminate\Http\RedirectResponse */ - public function postBulkDelete(Request $request) + public function postBulkDelete(Request $request) : RedirectResponse { $models_raw_array = $request->input('ids'); @@ -470,9 +444,8 @@ class AssetModelsController extends Controller * any default values were entered into the form. * * @param array $input - * @return bool */ - private function shouldAddDefaultValues(array $input) + private function shouldAddDefaultValues(array $input) : bool { return ! empty($input['add_default_values']) && ! empty($input['default_values']) @@ -484,9 +457,8 @@ class AssetModelsController extends Controller * * @param AssetModel $model * @param array $defaultValues - * @return void */ - private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues): bool + private function assignCustomFieldsDefaultValues(AssetModel|SnipeModel $model, array $defaultValues): bool { $data = array(); foreach ($defaultValues as $customFieldId => $defaultValue) { @@ -495,17 +467,17 @@ class AssetModelsController extends Controller $data[$customField->db_column] = $defaultValue; } - $fieldsets = $model->fieldset->validation_rules(); + $allRules = $model->fieldset->validation_rules(); $rules = array(); - foreach ($fieldsets as $fieldset => $validation){ + foreach ($allRules as $field => $validation) { // If the field is marked as required, eliminate the rule so it doesn't interfere with the default values // (we are at model level, the rule still applies when creating a new asset using this model) $index = array_search('required', $validation); if ($index !== false){ $validation[$index] = 'nullable'; } - $rules[$fieldset] = $validation; + $rules[$field] = $validation; } $validator = Validator::make($data, $rules); @@ -527,9 +499,8 @@ class AssetModelsController extends Controller /** * Removes all default values * - * @return void */ - private function removeCustomFieldsDefaultValues(AssetModel $model) + private function removeCustomFieldsDefaultValues(AssetModel|SnipeModel $model): void { $model->defaultValues()->detach(); } diff --git a/app/Http/Controllers/AssetModelsFilesController.php b/app/Http/Controllers/AssetModelsFilesController.php index c8247ffc15..c905282cc5 100644 --- a/app/Http/Controllers/AssetModelsFilesController.php +++ b/app/Http/Controllers/AssetModelsFilesController.php @@ -6,8 +6,11 @@ use App\Helpers\StorageHelper; use App\Http\Requests\UploadFileRequest; use App\Models\Actionlog; use App\Models\AssetModel; -use Illuminate\Support\Facades\Response; +use Illuminate\Http\RedirectResponse; +use Illuminate\Http\Response; use Illuminate\Support\Facades\Storage; +use \Symfony\Component\HttpFoundation\StreamedResponse; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class AssetModelsFilesController extends Controller { @@ -21,7 +24,7 @@ class AssetModelsFilesController extends Controller *@since [v1.0] * @author [A. Gianotto] [] */ - public function store(UploadFileRequest $request, $modelId = null) + public function store(UploadFileRequest $request, $modelId = null) : RedirectResponse { if (! $model = AssetModel::find($modelId)) { return redirect()->route('models.index')->with('error', trans('admin/hardware/message.does_not_exist')); @@ -54,10 +57,8 @@ class AssetModelsFilesController extends Controller * @param int $modelId * @param int $fileId * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($modelId = null, $fileId = null) + public function show($modelId = null, $fileId = null) : StreamedResponse | Response | RedirectResponse | BinaryFileResponse { $model = AssetModel::find($modelId); // the asset is valid @@ -101,10 +102,8 @@ class AssetModelsFilesController extends Controller * @param int $modelId * @param int $fileId * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($modelId = null, $fileId = null) + public function destroy($modelId = null, $fileId = null) : RedirectResponse { $model = AssetModel::find($modelId); $this->authorize('update', $model); diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 73f4838a6a..4794fa0411 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -11,10 +11,10 @@ use App\Models\Asset; use App\Models\CheckoutAcceptance; use App\Models\LicenseSeat; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Session; -use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Log; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; class AssetCheckinController extends Controller { @@ -26,11 +26,9 @@ class AssetCheckinController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @param string $backto - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v1.0] */ - public function create($assetId, $backto = null) + public function create($assetId, $backto = null) : View | RedirectResponse { // Check if the asset exists if (is_null($asset = Asset::find($assetId))) { @@ -60,11 +58,9 @@ class AssetCheckinController extends Controller * @param AssetCheckinRequest $request * @param int $assetId * @param null $backto - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v1.0] */ - public function store(AssetCheckinRequest $request, $assetId = null, $backto = null) + public function store(AssetCheckinRequest $request, $assetId = null, $backto = null) : RedirectResponse { // Check if the asset exists if (is_null($asset = Asset::find($assetId))) { @@ -136,7 +132,7 @@ class AssetCheckinController extends Controller // Was the asset updated? if ($asset->save()) { - event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues)); + event(new CheckoutableCheckedIn($asset, $target, auth()->user(), $request->input('note'), $checkin_at, $originalValues)); return Helper::getRedirectOption($asset, $assetId, 'Assets'); } // Redirect to the asset management page with error diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index 36f00f0fc6..355f9387bb 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -9,8 +9,9 @@ use App\Http\Controllers\Controller; use App\Http\Requests\AssetCheckoutRequest; use App\Models\Asset; use Illuminate\Database\Eloquent\ModelNotFoundException; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Session; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; class AssetCheckoutController extends Controller { @@ -23,9 +24,9 @@ class AssetCheckoutController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v1.0] - * @return View + * @return \Illuminate\Contracts\View\View */ - public function create($assetId) + public function create($assetId) : View | RedirectResponse { // Check if the asset exists if (is_null($asset = Asset::with('company')->find(e($assetId)))) { @@ -53,11 +54,9 @@ class AssetCheckoutController extends Controller * * @author [A. Gianotto] [] * @param AssetCheckoutRequest $request - * @param int $assetId - * @return \Illuminate\Http\RedirectResponse * @since [v1.0] */ - public function store(AssetCheckoutRequest $request, $assetId) + public function store(AssetCheckoutRequest $request, $assetId) : RedirectResponse { try { // Check if the asset exists @@ -72,7 +71,7 @@ class AssetCheckoutController extends Controller return redirect()->route('hardware.show', $asset->id)->with('error', trans('admin/hardware/general.model_invalid_fix')); } - $admin = Auth::user(); + $admin = auth()->user(); $target = $this->determineCheckoutTarget(); diff --git a/app/Http/Controllers/Assets/AssetFilesController.php b/app/Http/Controllers/Assets/AssetFilesController.php index 01ff0288ef..b5a04759bb 100644 --- a/app/Http/Controllers/Assets/AssetFilesController.php +++ b/app/Http/Controllers/Assets/AssetFilesController.php @@ -7,8 +7,12 @@ use App\Http\Controllers\Controller; use App\Http\Requests\UploadFileRequest; use App\Models\Actionlog; use App\Models\Asset; -use Illuminate\Support\Facades\Response; +use \Illuminate\Http\Response; use Illuminate\Support\Facades\Storage; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; +use Symfony\Component\HttpFoundation\StreamedResponse; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class AssetFilesController extends Controller { @@ -22,7 +26,7 @@ class AssetFilesController extends Controller *@since [v1.0] * @author [A. Gianotto] [] */ - public function store(UploadFileRequest $request, $assetId = null) + public function store(UploadFileRequest $request, $assetId = null) : RedirectResponse { if (! $asset = Asset::find($assetId)) { return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist')); @@ -54,10 +58,8 @@ class AssetFilesController extends Controller * @param int $assetId * @param int $fileId * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($assetId = null, $fileId = null) + public function show($assetId = null, $fileId = null) : View | RedirectResponse | Response | StreamedResponse | BinaryFileResponse { $asset = Asset::find($assetId); // the asset is valid @@ -105,10 +107,8 @@ class AssetFilesController extends Controller * @param int $assetId * @param int $fileId * @since [v1.0] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($assetId = null, $fileId = null) + public function destroy($assetId = null, $fileId = null) : RedirectResponse { $asset = Asset::find($assetId); $this->authorize('update', $asset); @@ -131,7 +131,6 @@ class AssetFilesController extends Controller ->with('success', trans('admin/hardware/message.deletefile.success')); } - // Redirect to the hardware management page return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist')); } } diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php index bf3a3ec3a8..475f93e273 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -20,14 +20,16 @@ use Illuminate\Support\Facades\Auth; use App\View\Label; use Carbon\Carbon; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Gate; use Illuminate\Http\Request; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Validator; use League\Csv\Reader; -use Illuminate\Support\Facades\Redirect; +use Illuminate\Http\Response; +use Illuminate\Contracts\View\View; +use Illuminate\Http\RedirectResponse; +use Symfony\Component\HttpFoundation\BinaryFileResponse; /** * This class controls all actions related to assets for @@ -55,10 +57,8 @@ class AssetsController extends Controller * @see AssetController::getDatatable() method that generates the JSON response * @since [v1.0] * @param Request $request - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index(Request $request) + public function index(Request $request) : View { $this->authorize('index', Asset::class); $company = Company::find($request->input('company_id')); @@ -72,13 +72,12 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param Request $request - * @return View * @internal param int $model_id */ - public function create(Request $request) + public function create(Request $request) : View { $this->authorize('create', Asset::class); - $view = View::make('hardware/edit') + $view = view('hardware/edit') ->with('statuslabel_list', Helper::statusLabelList()) ->with('item', new Asset) ->with('statuslabel_types', Helper::statusTypeList()); @@ -96,9 +95,8 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize(Asset::class); @@ -198,7 +196,7 @@ class AssetsController extends Controller } if (isset($target)) { - $asset->checkOut($target, Auth::user(), date('Y-m-d H:i:s'), $request->input('expected_checkin', null), 'Checked out on asset creation', $request->get('name'), $location); + $asset->checkOut($target, auth()->user(), date('Y-m-d H:i:s'), $request->input('expected_checkin', null), 'Checked out on asset creation', $request->get('name'), $location); } $success = true; @@ -207,9 +205,8 @@ class AssetsController extends Controller } if ($success) { - Log::debug(e($asset->asset_tag)); return redirect()->route('hardware.index') - ->with('success-unescaped', trans('admin/hardware/message.create.success_linked', ['link' => route('hardware.show', $asset->id), 'id', 'tag' => e($asset->asset_tag)])); + ->with('success-unescaped', trans('admin/hardware/message.create.success_linked', ['link' => route('hardware.show', ['hardware' => $asset->id]), 'id', 'tag' => e($asset->asset_tag)])); } @@ -217,11 +214,6 @@ class AssetsController extends Controller return redirect()->back()->withInput()->withErrors($asset->getErrors()); } - public function getOptionCookie(Request $request){ - $value = $request->cookie('optional_info'); - echo $value; - return $value; - } /** * Returns a view that presents a form to edit an existing asset. @@ -229,9 +221,9 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v1.0] - * @return View + * @return \Illuminate\Contracts\View\View */ - public function edit($assetId = null) + public function edit($assetId = null) : View | RedirectResponse { if (! $item = Asset::find($assetId)) { // Redirect to the asset management page with error @@ -252,9 +244,9 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v1.0] - * @return View + * @return \Illuminate\Contracts\View\View */ - public function show($assetId = null) + public function show($assetId = null) : View | RedirectResponse { $asset = Asset::withTrashed()->find($assetId); $this->authorize('view', $asset); @@ -292,11 +284,10 @@ class AssetsController extends Controller * Validate and process asset edit form. * * @param int $assetId - * @return \Illuminate\Http\RedirectResponse|Redirect * @since [v1.0] * @author [A. Gianotto] [] */ - public function update(ImageUploadRequest $request, $assetId = null) + public function update(ImageUploadRequest $request, $assetId = null) : RedirectResponse { // Check if the asset exists if (! $asset = Asset::find($assetId)) { @@ -411,9 +402,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse */ - public function destroy($assetId) + public function destroy($assetId) : RedirectResponse { // Check if the asset exists if (is_null($asset = Asset::find($assetId))) { @@ -445,9 +435,8 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @since [v3.0] - * @return \Illuminate\Http\RedirectResponse */ - public function getAssetBySerial(Request $request) + public function getAssetBySerial(Request $request) : RedirectResponse { $topsearch = ($request->get('topsearch')=="true"); @@ -465,7 +454,7 @@ class AssetsController extends Controller * @since [v3.0] * @return \Illuminate\Http\RedirectResponse */ - public function getAssetByTag(Request $request, $tag=null) + public function getAssetByTag(Request $request, $tag=null) : RedirectResponse { $tag = $tag ? $tag : $request->get('assetTag'); $topsearch = ($request->get('topsearch') == 'true'); @@ -485,9 +474,8 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v1.0] - * @return Response */ - public function getQrCode($assetId = null) + public function getQrCode($assetId = null) : Response | BinaryFileResponse | string | bool { $settings = Setting::getSettings(); @@ -514,6 +502,7 @@ class AssetsController extends Controller return 'That asset is invalid'; } + return false; } /** @@ -561,7 +550,7 @@ class AssetsController extends Controller * * @author [L. Swartzendruber] [ * @param int $assetId - * @return View + * @return \Illuminate\Contracts\View\View */ public function getLabel($assetId = null) { @@ -585,7 +574,7 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v1.0] - * @return View + * @return \Illuminate\Contracts\View\View */ public function getClone($assetId = null) { @@ -614,7 +603,7 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View + * @return \Illuminate\Contracts\View\View */ public function getImportHistory() { @@ -636,7 +625,7 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @since [v3.3] - * @return View + * @return \Illuminate\Contracts\View\View */ public function postImportHistory(Request $request) { @@ -730,8 +719,8 @@ class AssetsController extends Controller Actionlog::firstOrCreate([ 'item_id' => $asset->id, 'item_type' => Asset::class, - 'user_id' => Auth::user()->id, - 'note' => 'Checkout imported by '.Auth::user()->present()->fullName().' from history importer', + 'user_id' => auth()->id(), + 'note' => 'Checkout imported by '.auth()->user()->present()->fullName().' from history importer', 'target_id' => $item[$asset_tag][$batch_counter]['user_id'], 'target_type' => User::class, 'created_at' => $item[$asset_tag][$batch_counter]['checkout_date'], @@ -758,8 +747,8 @@ class AssetsController extends Controller Actionlog::firstOrCreate([ 'item_id' => $item[$asset_tag][$batch_counter]['asset_id'], 'item_type' => Asset::class, - 'user_id' => Auth::user()->id, - 'note' => 'Checkin imported by '.Auth::user()->present()->fullName().' from history importer', + 'user_id' => auth()->id(), + 'note' => 'Checkin imported by '.auth()->user()->present()->fullName().' from history importer', 'target_id' => null, 'created_at' => $checkin_date, 'action_type' => 'checkin', @@ -796,7 +785,7 @@ class AssetsController extends Controller * @author [A. Gianotto] [] * @param int $assetId * @since [v1.0] - * @return View + * @return \Illuminate\Contracts\View\View */ public function getRestore($assetId = null) { @@ -905,7 +894,7 @@ class AssetsController extends Controller if ($request->input('update_location') == '1') { $asset->location_id = $request->input('location_id'); } - + /** * Invoke Watson Validating to check the asset itself and check to make sure it saved correctly. diff --git a/app/Http/Controllers/Assets/BulkAssetsController.php b/app/Http/Controllers/Assets/BulkAssetsController.php index ffbf81944b..287bc0611b 100644 --- a/app/Http/Controllers/Assets/BulkAssetsController.php +++ b/app/Http/Controllers/Assets/BulkAssetsController.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\Assets; -use App\Models\Actionlog; use App\Helpers\Helper; use App\Http\Controllers\CheckInOutRequest; use App\Http\Controllers\Controller; @@ -12,14 +11,15 @@ use App\Models\Statuslabel; use App\Models\Setting; use App\View\Label; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Log; -use Illuminate\Support\Facades\Session; use App\Http\Requests\AssetCheckoutRequest; use App\Models\CustomField; +use Illuminate\Contracts\View\View; +use Illuminate\Http\RedirectResponse; +use Illuminate\Database\Eloquent\ModelNotFoundException; class BulkAssetsController extends Controller { @@ -36,12 +36,10 @@ class BulkAssetsController extends Controller * action would make a lot more sense here and make things a lot more clear. * * @author [A. Gianotto] [] - * @return View * @internal param int $assetId * @since [v2.0] - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit(Request $request) + public function edit(Request $request) : View | RedirectResponse { $this->authorize('view', Asset::class); @@ -94,7 +92,9 @@ class BulkAssetsController extends Controller // This handles all of the pivot sorting below (versus the assets.* fields in the allowed_columns array) $column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'assets.id'; - $assets = Asset::with('assignedTo', 'location', 'model')->whereIn('assets.id', $asset_ids); + $assets = Asset::with('assignedTo', 'location', 'model') + ->whereIn('assets.id', $asset_ids) + ->withTrashed(); $assets = $assets->get(); @@ -194,7 +194,7 @@ class BulkAssetsController extends Controller * @internal param array $assets * @since [v2.0] */ - public function update(Request $request) + public function update(Request $request) : RedirectResponse { $this->authorize('update', Asset::class); $has_errors = 0; @@ -455,9 +455,8 @@ class BulkAssetsController extends Controller /** * Adds parameter to update array for an item if it exists in request * @param string $field field name - * @return BulkAssetsController Model for Chaining */ - protected function conditionallyAddItem($field) + protected function conditionallyAddItem($field) : BulkAssetsController { if (request()->filled($field)) { $this->update_array[$field] = request()->input($field); @@ -471,12 +470,10 @@ class BulkAssetsController extends Controller * * @author [A. Gianotto] [] * @param Request $request - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException * @internal param array $assets * @since [v2.0] */ - public function destroy(Request $request) + public function destroy(Request $request) : RedirectResponse { $this->authorize('delete', Asset::class); @@ -488,12 +485,7 @@ class BulkAssetsController extends Controller if ($request->filled('ids')) { $assets = Asset::find($request->get('ids')); foreach ($assets as $asset) { - $update_array['deleted_at'] = date('Y-m-d H:i:s'); - $update_array['assigned_to'] = null; - - DB::table('assets') - ->where('id', $asset->id) - ->update($update_array); + $asset->delete(); } // endforeach return redirect($bulk_back_url)->with('success', trans('admin/hardware/message.delete.success')); @@ -505,27 +497,23 @@ class BulkAssetsController extends Controller /** * Show Bulk Checkout Page - * @return View View to checkout multiple assets */ - public function showCheckout() + public function showCheckout() : View { $this->authorize('checkout', Asset::class); - // Filter out assets that are not deployable. - return view('hardware/bulk-checkout'); } /** * Process Multiple Checkout Request - * @return View */ - public function storeCheckout(AssetCheckoutRequest $request) + public function storeCheckout(AssetCheckoutRequest $request) : RedirectResponse | ModelNotFoundException { $this->authorize('checkout', Asset::class); try { - $admin = Auth::user(); + $admin = auth()->user(); $target = $this->determineCheckoutTarget(); @@ -584,17 +572,19 @@ class BulkAssetsController extends Controller } } - public function restore(Request $request) { + public function restore(Request $request) : RedirectResponse + { $this->authorize('update', Asset::class); - $assetIds = $request->get('ids'); - if (empty($assetIds)) { - return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.restore.nothing_updated')); + $assetIds = $request->get('ids'); + + if (empty($assetIds)) { + return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.restore.nothing_updated')); } else { foreach ($assetIds as $key => $assetId) { - $asset = Asset::withTrashed()->find($assetId); - $asset->restore(); + $asset = Asset::withTrashed()->find($assetId); + $asset->restore(); } - return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.restore.success')); + return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.restore.success')); } } } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index ac19a57a72..9ac976b43c 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -127,7 +127,7 @@ class LoginController extends Controller $saml->clearData(); } - if ($user = Auth::user()) { + if ($user = auth()->user()) { $user->last_login = \Carbon::now(); $user->saveQuietly(); } @@ -326,7 +326,7 @@ class LoginController extends Controller } } - if ($user = Auth::user()) { + if ($user = auth()->user()) { $user->last_login = \Carbon::now(); $user->activated = 1; $user->saveQuietly(); @@ -350,7 +350,7 @@ class LoginController extends Controller } $settings = Setting::getSettings(); - $user = Auth::user(); + $user = auth()->user(); // We wouldn't normally see this page if 2FA isn't enforced via the // \App\Http\Middleware\CheckForTwoFactor middleware AND if a device isn't enrolled, @@ -398,7 +398,7 @@ class LoginController extends Controller return redirect()->route('login')->with('error', trans('auth/general.login_prompt')); } - $user = Auth::user(); + $user = auth()->user(); // Check whether there is a device enrolled. // This *should* be handled via the \App\Http\Middleware\CheckForTwoFactor middleware @@ -427,7 +427,7 @@ class LoginController extends Controller return redirect()->route('two-factor')->with('error', trans('auth/message.two_factor.code_required')); } - $user = Auth::user(); + $user = auth()->user(); $secret = $request->input('two_factor_secret'); if (Google2FA::verifyKey($user->two_factor_secret, $secret)) { diff --git a/app/Http/Controllers/BulkAssetModelsController.php b/app/Http/Controllers/BulkAssetModelsController.php index 5437791aa8..36b21178b0 100644 --- a/app/Http/Controllers/BulkAssetModelsController.php +++ b/app/Http/Controllers/BulkAssetModelsController.php @@ -5,8 +5,8 @@ namespace App\Http\Controllers; use App\Helpers\Helper; use App\Models\AssetModel; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Input; -use Illuminate\Support\Facades\Redirect; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; class BulkAssetModelsController extends Controller { @@ -16,9 +16,8 @@ class BulkAssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.7] * @param Request $request - * @return \Illuminate\Contracts\View\View */ - public function edit(Request $request) + public function edit(Request $request) : View | RedirectResponse { $models_raw_array = $request->input('ids'); @@ -61,9 +60,8 @@ class BulkAssetModelsController extends Controller * @author [A. Gianotto] [] * @since [v1.7] * @param Request $request - * @return \Illuminate\Contracts\View\View */ - public function update(Request $request) + public function update(Request $request): View | RedirectResponse { $this->authorize('update', AssetModel::class); @@ -105,9 +103,8 @@ class BulkAssetModelsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse */ - public function destroy(Request $request) + public function destroy(Request $request) : RedirectResponse { $this->authorize('delete', AssetModel::class); diff --git a/app/Http/Controllers/CategoriesController.php b/app/Http/Controllers/CategoriesController.php index d7e83b43d8..ac57ad6a6d 100755 --- a/app/Http/Controllers/CategoriesController.php +++ b/app/Http/Controllers/CategoriesController.php @@ -4,10 +4,11 @@ namespace App\Http\Controllers; use App\Helpers\Helper; use App\Http\Requests\ImageUploadRequest; -use App\Models\Category as Category; +use App\Models\Category; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; -use Str; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This class controls all actions related to Categories for @@ -25,10 +26,8 @@ class CategoriesController extends Controller * @author [A. Gianotto] [] * @see CategoriesController::getDatatable() method that generates the JSON response * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { // Show the page $this->authorize('view', Category::class); @@ -42,10 +41,8 @@ class CategoriesController extends Controller * @author [A. Gianotto] [] * @see CategoriesController::store() method that stores the data * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { // Show the page $this->authorize('create', Category::class); @@ -61,10 +58,8 @@ class CategoriesController extends Controller * @see CategoriesController::create() method that makes the form. * @since [v1.0] * @param ImageUploadRequest $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize('create', Category::class); $category = new Category(); @@ -91,10 +86,8 @@ class CategoriesController extends Controller * @see CategoriesController::postEdit() method saves the data * @param int $categoryId * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($categoryId = null) + public function edit($categoryId = null) : RedirectResponse | View { $this->authorize('update', Category::class); if (is_null($item = Category::find($categoryId))) { @@ -112,23 +105,31 @@ class CategoriesController extends Controller * @see CategoriesController::getEdit() method that makes the form. * @param ImageUploadRequest $request * @param int $categoryId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v1.0] */ - public function update(ImageUploadRequest $request, $categoryId = null) + public function update(ImageUploadRequest $request, $categoryId = null) : RedirectResponse { $this->authorize('update', Category::class); if (is_null($category = Category::find($categoryId))) { // Redirect to the categories management page - return redirect()->to('admin/categories')->with('error', trans('admin/categories/message.does_not_exist')); + return redirect()->route('categories.index')->with('error', trans('admin/categories/message.does_not_exist')); } // Update the category data $category->name = $request->input('name'); // If the item count is > 0, we disable the category type in the edit. Disabled items // don't POST, so if the category_type is blank we just set it to the default. + + + // Don't allow the user to change the category_type once it's been created + if (($request->filled('category_type') && ($category->itemCount() > 0))) { + $request->validate(['category_type' => 'in:'.$category->category_type]); + } + $category->category_type = $request->input('category_type', $category->category_type); + + $category->fill($request->all()); + $category->eula_text = $request->input('eula_text'); $category->use_default_eula = $request->input('use_default_eula', '0'); $category->require_acceptance = $request->input('require_acceptance', '0'); @@ -150,10 +151,8 @@ class CategoriesController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param int $categoryId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($categoryId) + public function destroy($categoryId) : RedirectResponse { $this->authorize('delete', Category::class); // Check if the category exists @@ -178,11 +177,9 @@ class CategoriesController extends Controller * @author [A. Gianotto] [] * @see CategoriesController::getDataView() method that generates the JSON response * @param $id - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v1.8] */ - public function show($id) + public function show($id) : View | RedirectResponse { $this->authorize('view', Category::class); if ($category = Category::find($id)) { diff --git a/app/Http/Controllers/CheckInOutRequest.php b/app/Http/Controllers/CheckInOutRequest.php index 6dd7e4aba3..328553eb49 100644 --- a/app/Http/Controllers/CheckInOutRequest.php +++ b/app/Http/Controllers/CheckInOutRequest.php @@ -11,9 +11,8 @@ trait CheckInOutRequest { /** * Find target for checkout - * @return SnipeModel Target asset is being checked out to. */ - protected function determineCheckoutTarget() + protected function determineCheckoutTarget() : ?SnipeModel { // This item is checked out to a location switch (request('checkout_to_type')) { @@ -34,7 +33,7 @@ trait CheckInOutRequest * @param SnipeModel $target Target with location * @return Asset Asset being updated */ - protected function updateAssetLocation($asset, $target) + protected function updateAssetLocation($asset, $target) : Asset { switch (request('checkout_to_type')) { case 'location': diff --git a/app/Http/Controllers/CompaniesController.php b/app/Http/Controllers/CompaniesController.php index 63205a598d..589832af72 100644 --- a/app/Http/Controllers/CompaniesController.php +++ b/app/Http/Controllers/CompaniesController.php @@ -7,6 +7,8 @@ use App\Models\Company; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Log; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Companies for @@ -21,10 +23,8 @@ final class CompaniesController extends Controller * * @author [Abdullah Alansari] [] * @since [v1.8] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { $this->authorize('view', Company::class); @@ -36,10 +36,8 @@ final class CompaniesController extends Controller * * @author [Abdullah Alansari] [] * @since [v1.8] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', Company::class); @@ -52,10 +50,8 @@ final class CompaniesController extends Controller * @author [Abdullah Alansari] [] * @since [v1.8] * @param Request $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize('create', Company::class); @@ -81,10 +77,8 @@ final class CompaniesController extends Controller * @author [Abdullah Alansari] [] * @since [v1.8] * @param int $companyId - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($companyId) + public function edit($companyId) : View | RedirectResponse { if (is_null($item = Company::find($companyId))) { return redirect()->route('companies.index') @@ -103,10 +97,8 @@ final class CompaniesController extends Controller * @since [v1.8] * @param ImageUploadRequest $request * @param int $companyId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(ImageUploadRequest $request, $companyId) + public function update(ImageUploadRequest $request, $companyId) : RedirectResponse { if (is_null($company = Company::find($companyId))) { return redirect()->route('companies.index')->with('error', trans('admin/companies/message.does_not_exist')); @@ -135,10 +127,8 @@ final class CompaniesController extends Controller * @author [Abdullah Alansari] [] * @since [v1.8] * @param int $companyId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($companyId) + public function destroy($companyId) : RedirectResponse { if (is_null($company = Company::find($companyId))) { return redirect()->route('companies.index') @@ -165,7 +155,7 @@ final class CompaniesController extends Controller ->with('success', trans('admin/companies/message.delete.success')); } - public function show($id) + public function show($id) : View | RedirectResponse { $this->authorize('view', Company::class); diff --git a/app/Http/Controllers/Components/ComponentCheckinController.php b/app/Http/Controllers/Components/ComponentCheckinController.php index 9f4724e353..b59237a5d0 100644 --- a/app/Http/Controllers/Components/ComponentCheckinController.php +++ b/app/Http/Controllers/Components/ComponentCheckinController.php @@ -95,7 +95,7 @@ class ComponentCheckinController extends Controller $asset = Asset::find($component_assets->asset_id); - event(new CheckoutableCheckedIn($component, $asset, Auth::user(), $request->input('note'), Carbon::now())); + event(new CheckoutableCheckedIn($component, $asset, auth()->user(), $request->input('note'), Carbon::now())); if ($backto == 'asset'){ return redirect()->route('hardware.show', $asset->id)->with('success', trans('admin/components/message.checkin.success')); diff --git a/app/Http/Controllers/Components/ComponentCheckoutController.php b/app/Http/Controllers/Components/ComponentCheckoutController.php index 79ff57e7df..fc319b47de 100644 --- a/app/Http/Controllers/Components/ComponentCheckoutController.php +++ b/app/Http/Controllers/Components/ComponentCheckoutController.php @@ -100,14 +100,14 @@ class ComponentCheckoutController extends Controller $component->asset_id = $request->input('asset_id'); $component->assets()->attach($component->id, [ 'component_id' => $component->id, - 'user_id' => Auth::user(), + 'user_id' => auth()->user(), 'created_at' => date('Y-m-d H:i:s'), 'assigned_qty' => $request->input('assigned_qty'), 'asset_id' => $request->input('asset_id'), 'note' => $request->input('note'), ]); - event(new CheckoutableCheckedOut($component, $asset, Auth::user(), $request->input('note'))); + event(new CheckoutableCheckedOut($component, $asset, auth()->user(), $request->input('note'))); return redirect()->route('components.index')->with('success', trans('admin/components/message.checkout.success')); } diff --git a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php index d838ee5696..fd690fede8 100644 --- a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php +++ b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php @@ -4,12 +4,11 @@ namespace App\Http\Controllers\Consumables; use App\Events\CheckoutableCheckedOut; use App\Http\Controllers\Controller; -use App\Models\Accessory; use App\Models\Consumable; use App\Models\User; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Input; +use \Illuminate\Contracts\View\View; +use \Illuminate\Http\RedirectResponse; class ConsumableCheckoutController extends Controller { @@ -20,13 +19,11 @@ class ConsumableCheckoutController extends Controller * @see ConsumableCheckoutController::store() method that stores the data. * @since [v1.0] * @param int $id - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create($id) + public function create($id) : View | RedirectResponse { - if ($consumable = Consumable::with('users')->find($id)) { + if ($consumable = Consumable::find($id)) { $this->authorize('checkout', $consumable); @@ -82,7 +79,7 @@ class ConsumableCheckoutController extends Controller return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable')); } - $admin_user = Auth::user(); + $admin_user = auth()->user(); $assigned_to = e($request->input('assigned_to')); // Check if the user exists @@ -102,7 +99,7 @@ class ConsumableCheckoutController extends Controller 'note' => $request->input('note'), ]); } - event(new CheckoutableCheckedOut($consumable, $user, Auth::user(), $request->input('note'))); + event(new CheckoutableCheckedOut($consumable, $user, auth()->user(), $request->input('note'))); // Redirect to the new consumable page return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.checkout.success')); diff --git a/app/Http/Controllers/Consumables/ConsumablesController.php b/app/Http/Controllers/Consumables/ConsumablesController.php index b33e6e07a9..883d5849ee 100644 --- a/app/Http/Controllers/Consumables/ConsumablesController.php +++ b/app/Http/Controllers/Consumables/ConsumablesController.php @@ -8,8 +8,10 @@ use App\Http\Requests\ImageUploadRequest; use App\Models\Company; use App\Models\Consumable; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; +use App\Http\Requests\StoreConsumableRequest; /** * This controller handles all actions related to Consumables for @@ -62,7 +64,7 @@ class ConsumablesController extends Controller * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(StoreConsumableRequest $request) { $this->authorize('create', Consumable::class); $consumable = new Consumable(); @@ -99,10 +101,8 @@ class ConsumablesController extends Controller * @param int $consumableId * @see ConsumablesController::postEdit() method that stores the form data. * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($consumableId = null) + public function edit($consumableId = null) : View | RedirectResponse { if ($item = Consumable::find($consumableId)) { $this->authorize($item); @@ -124,7 +124,7 @@ class ConsumablesController extends Controller * @see ConsumablesController::getEdit() method that stores the form data. * @since [v1.0] */ - public function update(ImageUploadRequest $request, $consumableId = null) + public function update(StoreConsumableRequest $request, $consumableId = null) { if (is_null($consumable = Consumable::find($consumableId))) { return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.does_not_exist')); @@ -182,6 +182,7 @@ class ConsumablesController extends Controller return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.not_found')); } $this->authorize($consumable); + $consumable->delete(); // Redirect to the locations management page return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.delete.success')); @@ -199,7 +200,7 @@ class ConsumablesController extends Controller */ public function show($consumableId = null) { - $consumable = Consumable::find($consumableId); + $consumable = Consumable::withCount('users as users_consumables')->find($consumableId); $this->authorize($consumable); if (isset($consumable->id)) { return view('consumables/view', compact('consumable')); @@ -208,4 +209,16 @@ class ConsumablesController extends Controller return redirect()->route('consumables.index') ->with('error', trans('admin/consumables/message.does_not_exist')); } + + public function clone(Consumable $consumable) : View + { + $this->authorize('create', $consumable); + $consumable_to_close = $consumable; + $consumable = clone $consumable_to_close; + $consumable->id = null; + $consumable->image = null; + $consumable->user_id = null; + + return view('consumables/edit')->with('item', $consumable); + } } diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index c716fff368..74fff19a37 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -35,6 +35,6 @@ abstract class Controller extends BaseController public function __construct() { view()->share('signedIn', Auth::check()); - view()->share('user', Auth::user()); + view()->share('user', auth()->user()); } } diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php index 94b45552fd..42f6c212db 100644 --- a/app/Http/Controllers/CustomFieldsController.php +++ b/app/Http/Controllers/CustomFieldsController.php @@ -8,6 +8,8 @@ use App\Models\CustomField; use App\Models\CustomFieldset; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Custom Asset Fields for @@ -25,10 +27,8 @@ class CustomFieldsController extends Controller * * @author [Brady Wetherington] [] * @since [v1.8] - * @return \Illuminate\Support\Facades\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { $this->authorize('view', CustomField::class); @@ -45,10 +45,8 @@ class CustomFieldsController extends Controller * @see CustomFieldsController::storeField() * @author [A. Gianotto] [] * @since [v5.1.5] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show() + public function show() : RedirectResponse { return redirect()->route('fields.index'); } @@ -60,10 +58,8 @@ class CustomFieldsController extends Controller * @see CustomFieldsController::storeField() * @author [Brady Wetherington] [] * @since [v1.8] - * @return \Illuminate\Support\Facades\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create(Request $request) + public function create(Request $request) : View { $this->authorize('create', CustomField::class); $fieldsets = CustomFieldset::get(); @@ -82,10 +78,8 @@ class CustomFieldsController extends Controller * @see CustomFieldsController::createField() * @author [Brady Wetherington] [] * @since [v1.8] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(CustomFieldRequest $request) + public function store(CustomFieldRequest $request) : RedirectResponse { $this->authorize('create', CustomField::class); @@ -144,10 +138,8 @@ class CustomFieldsController extends Controller * * @author [A. Gianotto] [] * @since [v3.0] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function deleteFieldFromFieldset($field_id, $fieldset_id) + public function deleteFieldFromFieldset($field_id, $fieldset_id) : RedirectResponse { $field = CustomField::find($field_id); @@ -176,10 +168,8 @@ class CustomFieldsController extends Controller * * @author [Brady Wetherington] [] * @since [v1.8] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($field_id) + public function destroy($field_id) : RedirectResponse { if ($field = CustomField::find($field_id)) { $this->authorize('delete', $field); @@ -202,10 +192,8 @@ class CustomFieldsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v4.0] - * @return \Illuminate\Support\Facades\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit(Request $request, $id) + public function edit(Request $request, $id) : View | RedirectResponse { if ($field = CustomField::find($id)) { @@ -241,7 +229,7 @@ class CustomFieldsController extends Controller * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(CustomFieldRequest $request, $id) + public function update(CustomFieldRequest $request, $id) : RedirectResponse { $field = CustomField::find($id); diff --git a/app/Http/Controllers/CustomFieldsetsController.php b/app/Http/Controllers/CustomFieldsetsController.php index e4382a31ea..8b9844d152 100644 --- a/app/Http/Controllers/CustomFieldsetsController.php +++ b/app/Http/Controllers/CustomFieldsetsController.php @@ -6,10 +6,9 @@ use App\Models\AssetModel; use App\Models\CustomField; use App\Models\CustomFieldset; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Validator; -use Redirect; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Custom Asset Fields for @@ -23,7 +22,7 @@ use Redirect; class CustomFieldsetsController extends Controller { - public function index() + public function index() : RedirectResponse { return redirect()->route("fields.index") ->with("error", trans('admin/custom_fields/message.fieldset.does_not_exist')); @@ -34,11 +33,9 @@ class CustomFieldsetsController extends Controller * * @author [Brady Wetherington] [] * @param int $id - * @return \Illuminate\Support\Facades\View - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v1.8] */ - public function show($id) + public function show($id) : View | RedirectResponse { $cfset = CustomFieldset::with('fields') ->where('id', '=', $id)->orderBy('id', 'ASC')->first(); @@ -70,10 +67,8 @@ class CustomFieldsetsController extends Controller * * @author [Brady Wetherington] [] * @since [v1.8] - * @return \Illuminate\Support\Facades\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', CustomField::class); @@ -89,13 +84,13 @@ class CustomFieldsetsController extends Controller * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(Request $request) + public function store(Request $request) : RedirectResponse { $this->authorize('create', CustomField::class); $fieldset = new CustomFieldset([ 'name' => $request->get('name'), - 'user_id' => Auth::user()->id, + 'user_id' => auth()->id(), ]); $validator = Validator::make($request->all(), $fieldset->rules); @@ -126,10 +121,8 @@ class CustomFieldsetsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v6.0.14] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($id) + public function edit($id) : View | RedirectResponse { $this->authorize('create', CustomField::class); @@ -147,10 +140,8 @@ class CustomFieldsetsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v6.0.14] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(Request $request, $id) + public function update(Request $request, $id) : RedirectResponse { $this->authorize('create', CustomField::class); @@ -175,10 +166,8 @@ class CustomFieldsetsController extends Controller * @author [Brady Wetherington] [] * @param int $id * @since [v1.8] - * @return View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($id) + public function destroy($id) : RedirectResponse { $fieldset = CustomFieldset::find($id); @@ -203,9 +192,8 @@ class CustomFieldsetsController extends Controller * * @author [Brady Wetherington] [] * @since [v1.8] - * @return View */ - public function associate(Request $request, $id) + public function associate(Request $request, $id) : RedirectResponse { $set = CustomFieldset::find($id); @@ -223,7 +211,7 @@ class CustomFieldsetsController extends Controller return redirect()->route('fieldsets.show', [$id])->with('success', trans('admin/custom_fields/message.field.create.assoc_success')); } - return redirect()->route('fieldsets.show', [$id])->with('error', 'No field selected.'); + return redirect()->route('fieldsets.show', [$id])->with('error', trans('admin/custom_fields/message.field.none_selected')); } /** @@ -232,7 +220,7 @@ class CustomFieldsetsController extends Controller * @author [A. Gianotto] [] * @since [v5.0] */ - public function makeFieldRequired($fieldset_id, $field_id) + public function makeFieldRequired($fieldset_id, $field_id) : RedirectResponse { $this->authorize('update', CustomField::class); $field = CustomField::findOrFail($field_id); @@ -250,7 +238,7 @@ class CustomFieldsetsController extends Controller * @author [A. Gianotto] [] * @since [v5.0] */ - public function makeFieldOptional($fieldset_id, $field_id) + public function makeFieldOptional($fieldset_id, $field_id) : RedirectResponse { $this->authorize('update', CustomField::class); $field = CustomField::findOrFail($field_id); diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 89283a7c21..fc01c496c2 100755 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -2,8 +2,9 @@ namespace App\Http\Controllers; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Artisan; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** @@ -21,12 +22,11 @@ class DashboardController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View */ - public function index() + public function index() : View | RedirectResponse { // Show the page - if (Auth::user()->hasAccess('admin')) { + if (auth()->user()->hasAccess('admin')) { $asset_stats = null; $counts['asset'] = \App\Models\Asset::count(); @@ -34,7 +34,7 @@ class DashboardController extends Controller $counts['license'] = \App\Models\License::assetcount(); $counts['consumable'] = \App\Models\Consumable::count(); $counts['component'] = \App\Models\Component::count(); - $counts['user'] = \App\Models\Company::scopeCompanyables(Auth::user())->count(); + $counts['user'] = \App\Models\Company::scopeCompanyables(auth()->user())->count(); $counts['grand_total'] = $counts['asset'] + $counts['accessory'] + $counts['license'] + $counts['consumable']; if ((! file_exists(storage_path().'/oauth-private.key')) || (! file_exists(storage_path().'/oauth-public.key'))) { diff --git a/app/Http/Controllers/DepartmentsController.php b/app/Http/Controllers/DepartmentsController.php index 62823098ba..5818435deb 100644 --- a/app/Http/Controllers/DepartmentsController.php +++ b/app/Http/Controllers/DepartmentsController.php @@ -4,8 +4,10 @@ namespace App\Http\Controllers; use App\Http\Requests\ImageUploadRequest; use App\Models\Department; +use App\Models\Company; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Log; @@ -25,10 +27,8 @@ class DepartmentsController extends Controller * @see AssetController::getDatatable() method that generates the JSON response * @since [v4.0] * @param Request $request - * @return \Illuminate\Support\Facades\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index(Request $request) + public function index(Request $request) : View { $this->authorize('index', Department::class); $company = null; @@ -45,15 +45,13 @@ class DepartmentsController extends Controller * @author [A. Gianotto] [] * @since [v4.0] * @param ImageUploadRequest $request - * @return \Illuminate\Http\Response - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize('create', Department::class); $department = new Department; $department->fill($request->all()); - $department->user_id = Auth::user()->id; + $department->user_id = auth()->id(); $department->manager_id = ($request->filled('manager_id') ? $request->input('manager_id') : null); $department->location_id = ($request->filled('location_id') ? $request->input('location_id') : null); $department->company_id = ($request->filled('company_id') ? $request->input('company_id') : null); @@ -73,10 +71,8 @@ class DepartmentsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v4.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($id) + public function show($id) : View | RedirectResponse { $department = Department::find($id); @@ -95,10 +91,8 @@ class DepartmentsController extends Controller * @author [A. Gianotto] [] * @see DepartmentsController::postCreate() method that validates and stores the data * @since [v4.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', Department::class); @@ -111,10 +105,8 @@ class DepartmentsController extends Controller * @author [A. Gianotto] [] * @param int $locationId * @since [v4.0] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($id) + public function destroy($id) : RedirectResponse { if (is_null($department = Department::find($id))) { return redirect()->to(route('departments.index'))->with('error', trans('admin/departments/message.not_found')); @@ -145,10 +137,8 @@ class DepartmentsController extends Controller * @see LocationsController::postCreate() method that validates and stores * @param int $departmentId * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($departmentId = null) + public function edit($departmentId = null) : View | RedirectResponse { if (is_null($item = Department::find($departmentId))) { return redirect()->back()->with('error', trans('admin/locations/message.does_not_exist')); @@ -159,7 +149,15 @@ class DepartmentsController extends Controller return view('departments/edit', compact('item')); } - public function update(ImageUploadRequest $request, $id) + /** + * Save updated Department information. + * + * @author [A. Gianotto] [] + * @see LocationsController::postCreate() method that validates and stores + * @param int $departmentId + * @since [v1.0] + */ + public function update(ImageUploadRequest $request, $id) : RedirectResponse { if (is_null($department = Department::find($id))) { return redirect()->route('departments.index')->with('error', trans('admin/departments/message.does_not_exist')); diff --git a/app/Http/Controllers/DepreciationsController.php b/app/Http/Controllers/DepreciationsController.php index 70bfb78cb5..57ad35fea5 100755 --- a/app/Http/Controllers/DepreciationsController.php +++ b/app/Http/Controllers/DepreciationsController.php @@ -5,7 +5,8 @@ namespace App\Http\Controllers; use App\Models\Depreciation; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; - +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Depreciations for * the Snipe-IT Asset Management application. @@ -21,14 +22,10 @@ class DepreciationsController extends Controller * @author [A. Gianotto] [authorize('view', Depreciation::class); - - // Show the page return view('depreciations/index'); } @@ -38,10 +35,8 @@ class DepreciationsController extends Controller * @author [A. Gianotto] [authorize('create', Depreciation::class); @@ -56,10 +51,8 @@ class DepreciationsController extends Controller * @see DepreciationsController::postCreate() * @since [v1.0] * @param Request $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(Request $request) + public function store(Request $request) : RedirectResponse { $this->authorize('create', Depreciation::class); @@ -87,10 +80,8 @@ class DepreciationsController extends Controller * @see DepreciationsController::postEdit() * @param int $depreciationId * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($depreciationId = null) + public function edit($depreciationId = null) : RedirectResponse | View { // Check if the depreciation exists if (is_null($item = Depreciation::find($depreciationId))) { @@ -110,11 +101,9 @@ class DepreciationsController extends Controller * @see DepreciationsController::getEdit() * @param Request $request * @param int $depreciationId - * @return \Illuminate\Http\RedirectResponse * @since [v1.0] - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(Request $request, $depreciationId = null) + public function update(Request $request, $depreciationId = null) : RedirectResponse { // Check if the depreciation exists if (is_null($depreciation = Depreciation::find($depreciationId))) { @@ -146,10 +135,8 @@ class DepreciationsController extends Controller * @author [A. Gianotto] [find($depreciationId))) { @@ -175,10 +162,8 @@ class DepreciationsController extends Controller * @see DepreciationsController::postEdit() * @param int $depreciationId * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($id) + public function show($id) : View | RedirectResponse { if (is_null($depreciation = Depreciation::find($id))) { // Redirect to the blogs management page diff --git a/app/Http/Controllers/GoogleAuthController.php b/app/Http/Controllers/GoogleAuthController.php index 6f5d02fde9..d873491c5b 100644 --- a/app/Http/Controllers/GoogleAuthController.php +++ b/app/Http/Controllers/GoogleAuthController.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; +use Illuminate\Http\RedirectResponse; use App\Models\User; use Illuminate\Support\Facades\Auth; use Laravel\Socialite\Facades\Socialite; @@ -30,7 +30,7 @@ class GoogleAuthController extends Controller return Socialite::driver('google')->redirect(); } - public function handleGoogleCallback() + public function handleGoogleCallback() : RedirectResponse { try { $socialUser = Socialite::driver('google')->user(); diff --git a/app/Http/Controllers/GroupsController.php b/app/Http/Controllers/GroupsController.php index bfc8907524..a85cabf246 100755 --- a/app/Http/Controllers/GroupsController.php +++ b/app/Http/Controllers/GroupsController.php @@ -5,7 +5,8 @@ namespace App\Http\Controllers; use App\Helpers\Helper; use App\Models\Group; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to User Groups for @@ -22,11 +23,9 @@ class GroupsController extends Controller * @author [A. Gianotto] [name = $request->input('name'); $group->permissions = json_encode($request->input('permission')); - $group->created_by = Auth::user()->id; + $group->created_by = auth()->id(); if ($group->save()) { return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.create')); @@ -80,9 +77,8 @@ class GroupsController extends Controller * @see GroupsController::postEdit() * @param int $id * @since [v1.0] - * @return \Illuminate\Contracts\View\View */ - public function edit($id) + public function edit($id) : View | RedirectResponse { $group = Group::find($id); @@ -104,9 +100,8 @@ class GroupsController extends Controller * @see GroupsController::getEdit() * @param int $id * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse */ - public function update(Request $request, $id = null) + public function update(Request $request, $id = null) : RedirectResponse { if (! $group = Group::find($id)) { return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', ['id' => $id])); @@ -132,10 +127,8 @@ class GroupsController extends Controller * @see GroupsController::getEdit() * @param int $id * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse - * @throws \Exception */ - public function destroy($id) + public function destroy($id) : RedirectResponse { if (! config('app.lock_passwords')) { if (! $group = Group::find($id)) { @@ -154,10 +147,9 @@ class GroupsController extends Controller * * @author [A. Gianotto] [] * @param $id - * @return \Illuminate\Contracts\View\View * @since [v4.0.11] */ - public function show($id) + public function show($id) : View | RedirectResponse { $group = Group::find($id); diff --git a/app/Http/Controllers/HealthController.php b/app/Http/Controllers/HealthController.php index 456f6b6f94..c75b903b0b 100644 --- a/app/Http/Controllers/HealthController.php +++ b/app/Http/Controllers/HealthController.php @@ -5,10 +5,13 @@ namespace App\Http\Controllers; use Illuminate\Routing\Controller as BaseController; /** - * This controller provide the healthz route for + * This controller provide the health route for * the Snipe-IT Asset Management application. * - * @version v1.0 + * @version v1.0 + * + * @return \Illuminate\Http\JsonResponse + */ class HealthController extends BaseController { diff --git a/app/Http/Controllers/Kits/CheckoutKitController.php b/app/Http/Controllers/Kits/CheckoutKitController.php index d806f7d170..c75e4ea8f0 100644 --- a/app/Http/Controllers/Kits/CheckoutKitController.php +++ b/app/Http/Controllers/Kits/CheckoutKitController.php @@ -33,7 +33,7 @@ class CheckoutKitController extends Controller * Show Bulk Checkout Page * * @author [D. Minaev.] [] - * @return View View to checkout + * @return \Illuminate\Contracts\View\View View to checkout */ public function showCheckout($kit_id) { diff --git a/app/Http/Controllers/Kits/PredefinedKitsController.php b/app/Http/Controllers/Kits/PredefinedKitsController.php index 67d148b5ee..187f5aad14 100644 --- a/app/Http/Controllers/Kits/PredefinedKitsController.php +++ b/app/Http/Controllers/Kits/PredefinedKitsController.php @@ -73,7 +73,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @since [v1.0] * @param int $kit_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function edit($kit_id = null) { @@ -150,7 +150,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @since [v1.0] * @param int $modelId - * @return View + * @return \Illuminate\Contracts\View\View */ public function show($kit_id = null) { @@ -162,7 +162,7 @@ class PredefinedKitsController extends Controller * * @author [D. Minaev] [] * @param int $kit_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function editModel($kit_id, $model_id) { @@ -184,7 +184,7 @@ class PredefinedKitsController extends Controller * * @author [D. Minaev] [] * @param int $modelId - * @return View + * @return \Illuminate\Contracts\View\View */ public function updateModel(Request $request, $kit_id, $model_id) { @@ -214,7 +214,7 @@ class PredefinedKitsController extends Controller * * @author [D. Minaev] [] * @param int $modelId - * @return View + * @return \Illuminate\Contracts\View\View */ public function detachModel($kit_id, $model_id) { @@ -237,7 +237,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @param int $kit_id * @param int $license_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function editLicense($kit_id, $license_id) { @@ -262,7 +262,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @param int $kit_id * @param int $license_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function updateLicense(Request $request, $kit_id, $license_id) { @@ -293,7 +293,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @param int $kit_id * @param int $license_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function detachLicense($kit_id, $license_id) { @@ -316,7 +316,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @param int $kit_id * @param int $accessoryId - * @return View + * @return \Illuminate\Contracts\View\View */ public function editAccessory($kit_id, $accessory_id) { @@ -341,7 +341,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @param int $kit_id * @param int $accessory_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function updateAccessory(Request $request, $kit_id, $accessory_id) { @@ -371,7 +371,7 @@ class PredefinedKitsController extends Controller * * @author [D. Minaev] [] * @param int $accessory_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function detachAccessory($kit_id, $accessory_id) { @@ -394,7 +394,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @param int $kit_id * @param int $consumable_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function editConsumable($kit_id, $consumable_id) { @@ -419,7 +419,7 @@ class PredefinedKitsController extends Controller * @author [D. Minaev] [] * @param int $kit_id * @param int $consumableId - * @return View + * @return \Illuminate\Contracts\View\View */ public function updateConsumable(Request $request, $kit_id, $consumable_id) { @@ -449,7 +449,7 @@ class PredefinedKitsController extends Controller * * @author [D. Minaev] [] * @param int $consumable_id - * @return View + * @return \Illuminate\Contracts\View\View */ public function detachConsumable($kit_id, $consumable_id) { diff --git a/app/Http/Controllers/LabelsController.php b/app/Http/Controllers/LabelsController.php index 1c5715b35f..8e6ba5e2cd 100755 --- a/app/Http/Controllers/LabelsController.php +++ b/app/Http/Controllers/LabelsController.php @@ -14,8 +14,6 @@ use App\Models\Setting; use App\Models\Supplier; use App\Models\User; use App\View\Label as LabelView; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Storage; class LabelsController extends Controller { @@ -23,7 +21,6 @@ class LabelsController extends Controller * Returns the Label view with test data * * @param string $labelName - * @return \Illuminate\Contracts\View\View * @author Grant Le Roux */ public function show(string $labelName) @@ -96,6 +93,5 @@ class LabelsController extends Controller ->with('bulkedit', false) ->with('count', 0); - return redirect()->route('home')->with('error', trans('admin/labels/message.does_not_exist')); } } diff --git a/app/Http/Controllers/Licenses/LicenseCheckinController.php b/app/Http/Controllers/Licenses/LicenseCheckinController.php index be71dfc4d2..e863aa860e 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckinController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckinController.php @@ -102,7 +102,7 @@ class LicenseCheckinController extends Controller // Was the asset updated? if ($licenseSeat->save()) { - event(new CheckoutableCheckedIn($licenseSeat, $return_to, Auth::user(), $request->input('notes'))); + event(new CheckoutableCheckedIn($licenseSeat, $return_to, auth()->user(), $request->input('notes'))); if ($backTo == 'user') { return redirect()->route('users.show', $return_to->id)->with('success', trans('admin/licenses/message.checkin.success')); diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index d3887d365c..2fb0434f62 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -94,14 +94,14 @@ class LicenseCheckoutController extends Controller if (! $licenseSeat) { if ($seatId) { - throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', 'This Seat is not available for checkout.')); + throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkout.unavailable'))); } - throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', 'There are no available seats for this license.')); + throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkout.not_enough_seats'))); } if (! $licenseSeat->license->is($license)) { - throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', 'The license seat provided does not match the license.')); + throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkout.mismatch'))); } return $licenseSeat; @@ -119,7 +119,7 @@ class LicenseCheckoutController extends Controller $licenseSeat->assigned_to = $target->assigned_to; } if ($licenseSeat->save()) { - event(new CheckoutableCheckedOut($licenseSeat, $target, Auth::user(), request('notes'))); + event(new CheckoutableCheckedOut($licenseSeat, $target, auth()->user(), request('notes'))); return true; } @@ -136,7 +136,7 @@ class LicenseCheckoutController extends Controller $licenseSeat->assigned_to = request('assigned_to'); if ($licenseSeat->save()) { - event(new CheckoutableCheckedOut($licenseSeat, $target, Auth::user(), request('notes'))); + event(new CheckoutableCheckedOut($licenseSeat, $target, auth()->user(), request('notes'))); return true; } diff --git a/app/Http/Controllers/LocationsController.php b/app/Http/Controllers/LocationsController.php index 938c76fe12..c498f09926 100755 --- a/app/Http/Controllers/LocationsController.php +++ b/app/Http/Controllers/LocationsController.php @@ -6,11 +6,11 @@ use App\Http\Requests\ImageUploadRequest; use App\Models\Asset; use App\Models\Location; use App\Models\User; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; - +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Locations for * the Snipe-IT Asset Management application. @@ -26,10 +26,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @see LocationsController::getDatatable() method that generates the JSON response * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { // Grab all the locations $this->authorize('view', Location::class); @@ -43,10 +41,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @see LocationsController::postCreate() method that validates and stores the data * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', Location::class); @@ -62,10 +58,8 @@ class LocationsController extends Controller * @see LocationsController::getCreate() method that makes the form * @since [v1.0] * @param ImageUploadRequest $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize('create', Location::class); $location = new Location(); @@ -80,7 +74,7 @@ class LocationsController extends Controller $location->zip = $request->input('zip'); $location->ldap_ou = $request->input('ldap_ou'); $location->manager_id = $request->input('manager_id'); - $location->user_id = Auth::id(); + $location->user_id = auth()->id(); $location->phone = request('phone'); $location->fax = request('fax'); @@ -100,10 +94,8 @@ class LocationsController extends Controller * @see LocationsController::postCreate() method that validates and stores * @param int $locationId * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($locationId = null) + public function edit($locationId = null) : View | RedirectResponse { $this->authorize('update', Location::class); // Check if the location exists @@ -121,11 +113,9 @@ class LocationsController extends Controller * @see LocationsController::getEdit() method that makes the form view * @param ImageUploadRequest $request * @param int $locationId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @since [v1.0] */ - public function update(ImageUploadRequest $request, $locationId = null) + public function update(ImageUploadRequest $request, $locationId = null) : RedirectResponse { $this->authorize('update', Location::class); // Check if the location exists @@ -163,10 +153,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @param int $locationId * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($locationId) + public function destroy($locationId) : RedirectResponse { $this->authorize('delete', Location::class); if (is_null($location = Location::find($locationId))) { @@ -202,9 +190,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v1.0] - * @return \Illuminate\Contracts\View\View */ - public function show($id = null) + public function show($id = null) : View | RedirectResponse { $location = Location::find($id); @@ -215,7 +202,7 @@ class LocationsController extends Controller return redirect()->route('locations.index')->with('error', trans('admin/locations/message.does_not_exist')); } - public function print_assigned($id) + public function print_assigned($id) : View | RedirectResponse { if ($location = Location::where('id', $id)->first()) { @@ -240,9 +227,8 @@ class LocationsController extends Controller * @author [A. Gianotto] [] * @param int $locationId * @since [v6.0.14] - * @return \Illuminate\Contracts\View\View */ - public function getClone($locationId = null) + public function getClone($locationId = null) : View | RedirectResponse { $this->authorize('create', Location::class); @@ -263,7 +249,7 @@ class LocationsController extends Controller } - public function print_all_assigned($id) + public function print_all_assigned($id) : View | RedirectResponse { if ($location = Location::where('id', $id)->first()) { $parent = Location::where('id', $location->parent_id)->first(); @@ -282,9 +268,8 @@ class LocationsController extends Controller * * @author [A. Gianotto] [] * @since [v6.3.1] - * @return \Illuminate\Contracts\View\View */ - public function postBulkDelete(Request $request) + public function postBulkDelete(Request $request) : View | RedirectResponse { $locations_raw_array = $request->input('ids'); @@ -315,9 +300,10 @@ class LocationsController extends Controller * * @author [A. Gianotto] [] * @since [v6.3.1] - * @return \Illuminate\Http\RedirectResponse + */ - public function postBulkDeleteStore(Request $request) { + public function postBulkDeleteStore(Request $request) : RedirectResponse + { $locations_raw_array = $request->input('ids'); if ((is_array($locations_raw_array)) && (count($locations_raw_array) > 0)) { diff --git a/app/Http/Controllers/ManufacturersController.php b/app/Http/Controllers/ManufacturersController.php index 833c5b6977..8e979e3896 100755 --- a/app/Http/Controllers/ManufacturersController.php +++ b/app/Http/Controllers/ManufacturersController.php @@ -2,17 +2,15 @@ namespace App\Http\Controllers; -use App\Helpers\Helper; use App\Http\Requests\ImageUploadRequest; use App\Models\Actionlog; -use App\Models\Asset; use App\Models\Manufacturer; -use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; -use Redirect; use Illuminate\Support\Facades\Log; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Manufacturers for @@ -29,13 +27,10 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @see Api\ManufacturersController::index() method that generates the JSON response * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { $this->authorize('index', Manufacturer::class); - return view('manufacturers/index'); } @@ -45,10 +40,8 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @see ManufacturersController::store() * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', Manufacturer::class); @@ -62,10 +55,8 @@ class ManufacturersController extends Controller * @see ManufacturersController::create() * @since [v1.0] * @param ImageUploadRequest $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize('create', Manufacturer::class); $manufacturer = new Manufacturer; @@ -92,10 +83,8 @@ class ManufacturersController extends Controller * @see ManufacturersController::update() * @param int $manufacturerId * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($manufacturerId = null) + public function edit($manufacturerId = null) : View | RedirectResponse { // Handles manufacturer checks and permissions. $this->authorize('update', Manufacturer::class); @@ -116,11 +105,9 @@ class ManufacturersController extends Controller * @see ManufacturersController::getEdit() * @param Request $request * @param int $manufacturerId - * @return \Illuminate\Http\RedirectResponse * @since [v1.0] - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(ImageUploadRequest $request, $manufacturerId = null) + public function update(ImageUploadRequest $request, $manufacturerId = null) : RedirectResponse { $this->authorize('update', Manufacturer::class); // Check if the manufacturer exists @@ -157,10 +144,8 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @param int $manufacturerId * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($manufacturerId) + public function destroy($manufacturerId) : RedirectResponse { $this->authorize('delete', Manufacturer::class); if (is_null($manufacturer = Manufacturer::withTrashed()->withCount('models as models_count')->find($manufacturerId))) { @@ -197,10 +182,8 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @param int $manufacturerId * @since [v1.0] - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function show($manufacturerId = null) + public function show($manufacturerId = null) : View | RedirectResponse { $this->authorize('view', Manufacturer::class); $manufacturer = Manufacturer::find($manufacturerId); @@ -220,10 +203,8 @@ class ManufacturersController extends Controller * @author [A. Gianotto] [] * @since [v4.1.15] * @param int $manufacturers_id - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function restore($id) + public function restore($id) : RedirectResponse { $this->authorize('delete', Manufacturer::class); @@ -238,7 +219,7 @@ class ManufacturersController extends Controller $logaction->item_type = Manufacturer::class; $logaction->item_id = $manufacturer->id; $logaction->created_at = date('Y-m-d H:i:s'); - $logaction->user_id = Auth::user()->id; + $logaction->user_id = auth()->id(); $logaction->logaction('restore'); // Redirect them to the deleted page if there are more, otherwise the section index diff --git a/app/Http/Controllers/ModalController.php b/app/Http/Controllers/ModalController.php index 6f6b39dd12..fab491a5f4 100644 --- a/app/Http/Controllers/ModalController.php +++ b/app/Http/Controllers/ModalController.php @@ -15,7 +15,7 @@ class ModalController extends Controller * @version v5.3.7-pre * @author [Brady Wetherington] [] * @author [A. Gianotto] [] * @since [v1.0] - * @return \Illuminate\Contracts\View\View */ - public function getIndex() + public function getIndex() : View { $this->authorize('self.profile'); - $user = Auth::user(); + $user = auth()->user(); return view('account/profile', compact('user')); } @@ -38,12 +38,11 @@ class ProfileController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return \Illuminate\Http\RedirectResponse */ - public function postIndex(ImageUploadRequest $request) + public function postIndex(ImageUploadRequest $request) : RedirectResponse { $this->authorize('self.profile'); - $user = Auth::user(); + $user = auth()->user(); $user->first_name = $request->input('first_name'); $user->last_name = $request->input('last_name'); $user->website = $request->input('website'); @@ -84,7 +83,7 @@ class ProfileController extends Controller * @author [A. Gianotto] [] * @since [v4.0] */ - public function api(): \Illuminate\Contracts\View\View + public function api(): View { // Make sure the self.api permission has been granted if (!Gate::allows('self.api')) { @@ -97,27 +96,23 @@ class ProfileController extends Controller /** * User change email page. * - * @return View */ - public function password() + public function password() : View { - $user = Auth::user(); - + $user = auth()->user(); return view('account/change-password', compact('user')); } /** * Users change password form processing page. - * - * @return \Illuminate\Http\RedirectResponse */ - public function passwordSave(Request $request) + public function passwordSave(Request $request) : RedirectResponse { if (config('app.lock_passwords')) { return redirect()->route('account.password.index')->with('error', trans('admin/users/table.lock_passwords')); } - $user = Auth::user(); + $user = auth()->user(); if ($user->ldap_import == '1') { return redirect()->route('account.password.index')->with('error', trans('admin/users/message.error.password_ldap')); } @@ -178,9 +173,8 @@ class ProfileController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return View */ - public function getMenuState(Request $request) + public function getMenuState(Request $request) : void { if ($request->input('state') == 'open') { $request->session()->put('menu_state', 'open'); @@ -195,14 +189,13 @@ class ProfileController extends Controller * * @author A. Gianotto * @since [v6.0.12] - * @return Illuminate\View\View */ - public function printInventory() + public function printInventory() : View { - $show_user = Auth::user(); + $show_user = auth()->user(); return view('users/print') - ->with('assets', Auth::user()->assets) + ->with('assets', auth()->user()->assets) ->with('licenses', $show_user->licenses()->get()) ->with('accessories', $show_user->accessories()->get()) ->with('consumables', $show_user->consumables()->get()) @@ -215,12 +208,11 @@ class ProfileController extends Controller * * @author A. Gianotto * @since [v6.0.12] - * @return \Illuminate\Http\RedirectResponse */ - public function emailAssetList() + public function emailAssetList() : RedirectResponse { - if (!$user = User::find(Auth::user()->id)) { + if (!$user = User::find(auth()->id())) { return redirect()->back() ->with('error', trans('admin/users/message.user_not_found', ['id' => $id])); } diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 67a73d0dc0..c4b7ee0609 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -6,6 +6,8 @@ use App\Helpers\Helper; use App\Models\Accessory; use App\Models\Actionlog; use App\Models\Asset; +use App\Models\AssetModel; +use App\Models\Category; use App\Models\AssetMaintenance; use App\Models\CheckoutAcceptance; use App\Models\CustomField; @@ -14,17 +16,16 @@ use App\Models\License; use App\Models\Setting; use App\Notifications\CheckoutAssetNotification; use Carbon\Carbon; -use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Http\Request; +use Illuminate\Http\Response; use Illuminate\Support\Facades\Notification; -use Illuminate\Support\Facades\Response; -use Illuminate\Support\Facades\View; +use \Illuminate\Contracts\View\View; use League\Csv\Reader; use Symfony\Component\HttpFoundation\StreamedResponse; use League\Csv\EscapeFormula; use App\Http\Requests\CustomAssetReportRequest; use Illuminate\Support\Facades\Log; - +use Illuminate\Http\RedirectResponse; /** * This controller handles all actions related to Reports for @@ -47,9 +48,9 @@ class ReportsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View + * @return \Illuminate\Contracts\View\View */ - public function getAccessoryReport() + public function getAccessoryReport() : View { $this->authorize('reports.view'); @@ -65,7 +66,7 @@ class ReportsController extends Controller * @since [v1.0] * @return \Illuminate\Http\Response */ - public function exportAccessoryReport() + public function exportAccessoryReport() : Response { $this->authorize('reports.view'); $accessories = Accessory::orderBy('created_at', 'DESC')->get(); @@ -92,7 +93,7 @@ class ReportsController extends Controller } $csv = implode("\n", $rows); - $response = Response::make($csv, 200); + $response = response()->make($csv, 200); $response->header('Content-Type', 'text/csv'); $response->header('Content-disposition', 'attachment;filename=report.csv'); @@ -104,9 +105,8 @@ class ReportsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View */ - public function getDeprecationReport() + public function getDeprecationReport() : View { $this->authorize('reports.view'); $depreciations = Depreciation::get(); @@ -119,9 +119,8 @@ class ReportsController extends Controller * @deprecated Server-side exports have been replaced by datatables export since v2. * @author [A. Gianotto] [] * @since [v1.0] - * @return \Illuminate\Http\Response */ - public function exportDeprecationReport() + public function exportDeprecationReport() : Response { $this->authorize('reports.view'); // Grab all the assets @@ -197,12 +196,10 @@ class ReportsController extends Controller * * @author [A. Gianotto] [] * @since [v4.0] - * @return View */ - public function audit() + public function audit() : View { $this->authorize('reports.view'); - return view('reports/audit'); } @@ -212,9 +209,8 @@ class ReportsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View */ - public function getActivityReport() + public function getActivityReport() : View { $this->authorize('reports.view'); @@ -226,9 +222,8 @@ class ReportsController extends Controller * * @author [A. Gianotto] [] * @since [v5.0.7] - * @return \Illuminate\Http\Response */ - public function postActivityReport(Request $request) + public function postActivityReport(Request $request) : StreamedResponse { ini_set('max_execution_time', 12000); $this->authorize('reports.view'); @@ -328,9 +323,8 @@ class ReportsController extends Controller * * @author [A. Gianotto] [] * @since [v1.0] - * @return View */ - public function getLicenseReport() + public function getLicenseReport() : View { $this->authorize('reports.view'); $licenses = License::with('depreciation')->orderBy('created_at', 'DESC') @@ -346,9 +340,8 @@ class ReportsController extends Controller * @deprecated Server-side exports have been replaced by datatables export since v2. * @author [A. Gianotto] [] * @since [v1.0] - * @return \Illuminate\Http\Response */ - public function exportLicenseReport() + public function exportLicenseReport() : Response { $this->authorize('reports.view'); $licenses = License::orderBy('created_at', 'DESC')->get(); @@ -385,7 +378,7 @@ class ReportsController extends Controller $csv = implode("\n", $rows); - $response = Response::make($csv, 200); + $response = response()->make($csv, 200); $response->header('Content-Type', 'text/csv'); $response->header('Content-disposition', 'attachment;filename=report.csv'); @@ -398,9 +391,8 @@ class ReportsController extends Controller * @author [A. Gianotto] [] * @see ReportsController::postCustomReport() method that generates the CSV * @since [v1.0] - * @return \Illuminate\Http\Response */ - public function getCustomReport() + public function getCustomReport() : View { $this->authorize('reports.view'); $customfields = CustomField::get(); @@ -414,9 +406,8 @@ class ReportsController extends Controller * @author [A. Gianotto] [] * @see ReportsController::getCustomReport() method that generates form view * @since [v1.0] - * @return \Illuminate\Http\Response */ - public function postCustom(CustomAssetReportRequest $request) + public function postCustom(CustomAssetReportRequest $request) : StreamedResponse { ini_set('max_execution_time', env('REPORT_TIME_LIMIT', 12000)); //12000 seconds = 200 minutes $this->authorize('reports.view'); @@ -681,15 +672,15 @@ class ReportsController extends Controller } if (($request->filled('created_start')) && ($request->filled('created_end'))) { - $created_start = \Carbon::parse($request->input('created_start'))->startOfDay(); - $created_end = \Carbon::parse($request->input('created_end'))->endOfDay(); + $created_start = Carbon::parse($request->input('created_start'))->startOfDay(); + $created_end = Carbon::parse($request->input('created_end'))->endOfDay(); $assets->whereBetween('assets.created_at', [$created_start, $created_end]); } if (($request->filled('checkout_date_start')) && ($request->filled('checkout_date_end'))) { - $checkout_start = \Carbon::parse($request->input('checkout_date_start'))->startOfDay(); - $checkout_end = \Carbon::parse($request->input('checkout_date_end',now()))->endOfDay(); + $checkout_start = Carbon::parse($request->input('checkout_date_start'))->startOfDay(); + $checkout_end = Carbon::parse($request->input('checkout_date_end',now()))->endOfDay(); $actionlogassets = Actionlog::where('action_type','=', 'checkout') ->where('item_type', 'LIKE', '%Asset%',) @@ -700,9 +691,9 @@ class ReportsController extends Controller } if (($request->filled('checkin_date_start'))) { - $checkin_start = \Carbon::parse($request->input('checkin_date_start'))->startOfDay(); + $checkin_start = Carbon::parse($request->input('checkin_date_start'))->startOfDay(); // use today's date is `checkin_date_end` is not provided - $checkin_end = \Carbon::parse($request->input('checkin_date_end', now()))->endOfDay(); + $checkin_end = Carbon::parse($request->input('checkin_date_end', now()))->endOfDay(); $assets->whereBetween('assets.last_checkin', [$checkin_start, $checkin_end ]); } @@ -713,8 +704,8 @@ class ReportsController extends Controller } if (($request->filled('last_audit_start')) && ($request->filled('last_audit_end'))) { - $last_audit_start = \Carbon::parse($request->input('last_audit_start'))->startOfDay(); - $last_audit_end = \Carbon::parse($request->input('last_audit_end'))->endOfDay(); + $last_audit_start = Carbon::parse($request->input('last_audit_start'))->startOfDay(); + $last_audit_end = Carbon::parse($request->input('last_audit_end'))->endOfDay(); $assets->whereBetween('assets.last_audit_date', [$last_audit_start, $last_audit_end]); } @@ -1015,11 +1006,10 @@ class ReportsController extends Controller /** * getImprovementsReport * - * @return View * @author Vincent Sposato * @version v1.0 */ - public function getAssetMaintenancesReport() + public function getAssetMaintenancesReport() : View { $this->authorize('reports.view'); @@ -1029,11 +1019,10 @@ class ReportsController extends Controller /** * exportImprovementsReport * - * @return \Illuminate\Http\Response * @author Vincent Sposato * @version v1.0 */ - public function exportAssetMaintenancesReport() + public function exportAssetMaintenancesReport() : Response { $this->authorize('reports.view'); // Grab all the improvements @@ -1080,7 +1069,7 @@ class ReportsController extends Controller // spit out a csv $csv = implode("\n", $rows); - $response = Response::make($csv, 200); + $response = response()->make($csv, 200); $response->header('Content-Type', 'text/csv'); $response->header('Content-disposition', 'attachment;filename=report.csv'); @@ -1090,13 +1079,10 @@ class ReportsController extends Controller /** * getAssetAcceptanceReport * - * @return mixed - * @throws \Illuminate\Auth\Access\AuthorizationException - * @author Vincent Sposato * @version v1.0 */ - public function getAssetAcceptanceReport($deleted = false) + public function getAssetAcceptanceReport($deleted = false) : View { $this->authorize('reports.view'); $showDeleted = $deleted == 'deleted'; @@ -1132,11 +1118,9 @@ class ReportsController extends Controller * sentAssetAcceptanceReminder * * @param integer|null $acceptanceId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @version v1.0 */ - public function sentAssetAcceptanceReminder(Request $request) + public function sentAssetAcceptanceReminder(Request $request) : RedirectResponse { $this->authorize('reports.view'); @@ -1190,11 +1174,9 @@ class ReportsController extends Controller * sentAssetAcceptanceReminder * * @param integer|null $acceptanceId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException * @version v1.0 */ - public function deleteAssetAcceptance($acceptanceId = null) + public function deleteAssetAcceptance($acceptanceId = null) : RedirectResponse { $this->authorize('reports.view'); @@ -1213,11 +1195,10 @@ class ReportsController extends Controller /** * Exports the AssetAcceptance report to CSV * - * @return \Illuminate\Http\Response * @author Vincent Sposato * @version v1.0 */ - public function postAssetAcceptanceReport($deleted = false) + public function postAssetAcceptanceReport($deleted = false) : Response { $this->authorize('reports.view'); $showDeleted = $deleted == 'deleted'; @@ -1268,7 +1249,7 @@ class ReportsController extends Controller // spit out a csv $csv = implode("\n", $rows); - $response = Response::make($csv, 200); + $response = response()->make($csv, 200); $response->header('Content-Type', 'text/csv'); $response->header('Content-disposition', 'attachment;filename=report.csv'); @@ -1284,7 +1265,7 @@ class ReportsController extends Controller * @author Vincent Sposato * @version v1.0 */ - protected function getCheckedOutAssetsRequiringAcceptance($modelsInCategoriesThatRequireAcceptance) + protected function getCheckedOutAssetsRequiringAcceptance($modelsInCategoriesThatRequireAcceptance) : View { $this->authorize('reports.view'); $assets = Asset::deployed() @@ -1304,11 +1285,11 @@ class ReportsController extends Controller * @author Vincent Sposato * @version v1.0 */ - protected function getModelsInCategoriesThatRequireAcceptance($assetCategoriesRequiringAcceptance) + protected function getModelsInCategoriesThatRequireAcceptance($assetCategoriesRequiringAcceptance) : array { $this->authorize('reports.view'); - return array_pluck(Model::inCategory($assetCategoriesRequiringAcceptance) + return array_pluck(AssetModel::inCategory($assetCategoriesRequiringAcceptance) ->select('id') ->get() ->toArray(), 'id'); @@ -1321,7 +1302,7 @@ class ReportsController extends Controller * @author Vincent Sposato * @version v1.0 */ - protected function getCategoriesThatRequireAcceptance() + protected function getCategoriesThatRequireAcceptance() : array { $this->authorize('reports.view'); @@ -1334,11 +1315,10 @@ class ReportsController extends Controller /** * getAssetsCheckedOutRequiringAcceptance * - * @return array * @author Vincent Sposato * @version v1.0 */ - protected function getAssetsCheckedOutRequiringAcceptance() + protected function getAssetsCheckedOutRequiringAcceptance() : array { $this->authorize('reports.view'); diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index a3c3cab8f7..ca4563ba2d 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -19,7 +19,9 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Storage; use Illuminate\Validation\Rule; -use Redirect; +use Illuminate\Http\RedirectResponse; +use Illuminate\Http\JsonResponse; +use \Illuminate\Contracts\View\View; use Illuminate\Support\Str; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Auth; @@ -30,6 +32,7 @@ use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\Validator; +use Symfony\Component\HttpFoundation\BinaryFileResponse; /** * This controller handles all actions related to Settings for @@ -47,9 +50,9 @@ class SettingsController extends Controller * * @since [v3.0] * - * @return View + * @return \Illuminate\Contracts\View\View | \Illuminate\Http\Response */ - public function getSetupIndex() + public function getSetupIndex() : View { $start_settings['php_version_min'] = false; @@ -123,7 +126,7 @@ class SettingsController extends Controller * @return bool This method will return true when exceptions (such as curl exception) is thrown. * Check the log files to see more details about the exception. */ - protected function dotEnvFileIsExposed() + protected function dotEnvFileIsExposed() : bool { try { return Http::timeout(10) @@ -153,13 +156,12 @@ class SettingsController extends Controller * Save the first admin user from Setup. * * @author [A. Gianotto] [] - * * @since [v3.0] * - * @return \Illuminate\Http\RedirectResponse */ - public function postSaveFirstAdmin(SetupUserRequest $request) + public function postSaveFirstAdmin(SetupUserRequest $request) : RedirectResponse { + $user = new User(); $user->first_name = $data['first_name'] = $request->input('first_name'); $user->last_name = $request->input('last_name'); @@ -214,10 +216,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v3.0] - * - * @return View */ - public function getSetupUser() + public function getSetupUser() : View { return view('setup/user') ->with('step', 3) @@ -230,10 +230,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v3.0] - * - * @return View */ - public function getSetupDone() + public function getSetupDone() : View { return view('setup/done') ->with('step', 4) @@ -247,10 +245,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v3.0] - * - * @return View */ - public function getSetupMigrate() + public function getSetupMigrate() : View { Artisan::call('migrate', ['--force' => true]); if ((! file_exists(storage_path().'/oauth-private.key')) || (! file_exists(storage_path().'/oauth-public.key'))) { @@ -270,10 +266,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function index() + public function index() : View { $settings = Setting::getSettings(); @@ -286,10 +280,9 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getEdit() + public function getEdit() : View + { $setting = Setting::getSettings(); @@ -302,10 +295,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getSettings() + public function getSettings() : View { $setting = Setting::getSettings(); @@ -318,10 +309,9 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function postSettings(Request $request) + public function postSettings(Request $request) : RedirectResponse + { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -348,7 +338,6 @@ class SettingsController extends Controller } $setting->default_eula_text = $request->input('default_eula_text'); - $setting->load_remote = $request->input('load_remote', 0); $setting->thumbnail_max_h = $request->input('thumbnail_max_h'); $setting->privacy_policy_link = $request->input('privacy_policy_link'); $setting->depreciation_method = $request->input('depreciation_method'); @@ -376,10 +365,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getBranding() + public function getBranding() : View { $setting = Setting::getSettings(); @@ -392,11 +379,10 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function postBranding(ImageUploadRequest $request) + public function postBranding(ImageUploadRequest $request) : RedirectResponse { + // Something has gone horribly wrong - no settings record exists! if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); } @@ -407,51 +393,67 @@ class SettingsController extends Controller $setting->version_footer = $request->input('version_footer'); $setting->footer_text = $request->input('footer_text'); $setting->skin = $request->input('skin'); - $setting->allow_user_skin = $request->input('allow_user_skin'); + $setting->allow_user_skin = $request->input('allow_user_skin', '0'); $setting->show_url_in_emails = $request->input('show_url_in_emails', '0'); $setting->logo_print_assets = $request->input('logo_print_assets', '0'); + $setting->load_remote = $request->input('load_remote', 0); - // Only allow the site name and CSS to be changed if lock_passwords is false + // Only allow the site name, images, and CSS to be changed if lock_passwords is false // Because public demos make people act like dicks - if (! config('app.lock_passwords')) { - $request->validate(['site_name' => 'required']); - $setting->site_name = $request->input('site_name'); + if (!config('app.lock_passwords')) { + + if ($request->has('site_name')) { + $request->validate(['site_name' => 'required']); + } + + $setting->site_name = $request->input('site_name', 'Snipe-IT'); $setting->custom_css = $request->input('custom_css'); + + // Logo upload $setting = $request->handleImages($setting, 600, 'logo', '', 'logo'); - if ('1' == $request->input('clear_logo')) { - Storage::disk('public')->delete($setting->logo); + if ($request->input('clear_logo') == '1') { + $setting = $request->deleteExistingImage($setting, '', 'logo'); $setting->logo = null; $setting->brand = 1; } - + // Email logo upload $setting = $request->handleImages($setting, 600, 'email_logo', '', 'email_logo'); - - - if ('1' == $request->input('clear_email_logo')) { - Storage::disk('public')->delete($setting->email_logo); + if ($request->input('clear_email_logo') == '1') { + $setting = $request->deleteExistingImage($setting, '', 'email_logo'); $setting->email_logo = null; - // If they are uploading an image, validate it and upload it } - + // Label logo upload $setting = $request->handleImages($setting, 600, 'label_logo', '', 'label_logo'); - if ('1' == $request->input('clear_label_logo')) { - Storage::disk('public')->delete($setting->label_logo); + if ($request->input('clear_label_logo') == '1') { + $setting = $request->deleteExistingImage($setting, '', 'label_logo'); $setting->label_logo = null; } - - $setting = $request->handleImages($setting, 600, 'favicon', '', 'favicon'); - - // If the user wants to clear the favicon... + // Favicon upload + $setting = $request->handleImages($setting, 100, 'favicon', '', 'favicon'); if ('1' == $request->input('clear_favicon')) { - Storage::disk('public')->delete($setting->favicon); + $setting = $request->deleteExistingImage($setting, '', 'favicon'); $setting->favicon = null; } + + // Default avatar upload + $setting = $request->handleImages($setting, 500, 'default_avatar', 'avatars', 'default_avatar'); + if ($request->input('clear_default_avatar') == '1') { + // Don't delete the file, just update the field if this is the default + if ($setting->default_avatar!='default.png') { + $setting = $request->deleteExistingImage($setting, 'avatars', 'default_avatar'); + } + $setting->default_avatar = null; + } + + if ($request->input('restore_default_avatar') == '1') { + $setting->default_avatar = 'default.png'; + } } if ($setting->save()) { @@ -469,10 +471,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getSecurity() + public function getSecurity() : View { $setting = Setting::getSettings(); @@ -485,10 +485,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function postSecurity(Request $request) + public function postSecurity(Request $request) : RedirectResponse { $this->validate($request, [ 'pwd_secure_complexity' => 'array', @@ -543,10 +541,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getLocalization() + public function getLocalization() : View { $setting = Setting::getSettings(); @@ -559,10 +555,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function postLocalization(Request $request) + public function postLocalization(Request $request) : RedirectResponse { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -591,10 +585,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getAlerts() + public function getAlerts() : View { $setting = Setting::getSettings(); @@ -605,12 +597,9 @@ class SettingsController extends Controller * Return a form to allow a super admin to update settings. * * @author [A. Gianotto] [] - * * @since [v1.0] - * - * @return View */ - public function postAlerts(Request $request) + public function postAlerts(Request $request) : RedirectResponse { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -664,10 +653,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getSlack() + public function getSlack() : View { $setting = Setting::getSettings(); @@ -680,10 +667,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getAssetTags() + public function getAssetTags() : View { $setting = Setting::getSettings(); @@ -696,10 +681,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function postAssetTags(Request $request) + public function postAssetTags(Request $request) : RedirectResponse { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -724,10 +707,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function getBarcodes() + public function getBarcodes() : View { $setting = Setting::getSettings(); $is_gd_installed = extension_loaded('gd'); @@ -741,10 +722,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.0] - * - * @return View */ - public function postBarcodes(Request $request) + public function postBarcodes(Request $request) : RedirectResponse { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -770,10 +749,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v4.0] - * - * @return View */ - public function getPhpInfo() + public function getPhpInfo() : View | RedirectResponse { if (config('app.debug') === true) { return view('settings.phpinfo'); @@ -787,12 +764,9 @@ class SettingsController extends Controller * Return a form to allow a super admin to update settings. * * @author [A. Gianotto] [] - * * @since [v4.0] - * - * @return View */ - public function getLabels() + public function getLabels() : View { return view('settings.labels') ->with('setting', Setting::getSettings()) @@ -803,12 +777,9 @@ class SettingsController extends Controller * Saves settings from form. * * @author [A. Gianotto] [] - * * @since [v4.0] - * - * @return View */ - public function postLabels(Request $request) + public function postLabels(Request $request) : RedirectResponse { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -882,10 +853,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v4.0] - * - * @return View */ - public function getLdapSettings() + public function getLdapSettings() : View { $setting = Setting::getSettings(); $groups = Group::pluck('name', 'id'); @@ -915,12 +884,9 @@ class SettingsController extends Controller * Saves settings from form. * * @author [A. Gianotto] [] - * * @since [v4.0] - * - * @return View */ - public function postLdapSettings(Request $request) + public function postLdapSettings(Request $request) : RedirectResponse { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -974,15 +940,11 @@ class SettingsController extends Controller * Return a form to allow a super admin to update settings. * * @author Johnson Yi - * * @since v5.0.0 - * - * @return View */ - public function getSamlSettings() + public function getSamlSettings() : View { $setting = Setting::getSettings(); - return view('settings.saml', compact('setting')); } @@ -990,12 +952,9 @@ class SettingsController extends Controller * Saves settings from form. * * @author Johnson Yi - * * @since v5.0.0 - * - * @return View */ - public function postSamlSettings(SettingsSamlRequest $request) + public function postSamlSettings(SettingsSamlRequest $request) : RedirectResponse { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); @@ -1024,10 +983,13 @@ class SettingsController extends Controller return redirect()->back()->withInput()->withErrors($setting->getErrors()); } - public static function getPDFBranding() - { - $pdf_branding= Setting::getSettings(); + /** + * Do we need this? Can we not just call getSettings() directly? + */ + public static function getPDFBranding() : Setting + { + $pdf_branding = Setting::getSettings(); return $pdf_branding; } @@ -1037,9 +999,8 @@ class SettingsController extends Controller * * @author [A. Gianotto] [] * @since [v6.1.1] - * @return View */ - public function getGoogleLoginSettings() + public function getGoogleLoginSettings() : View { $setting = Setting::getSettings(); return view('settings.google', compact('setting')); @@ -1050,9 +1011,8 @@ class SettingsController extends Controller * * @author [A. Gianotto] [] * @since [v6.1.1] - * @return View */ - public function postGoogleLoginSettings(Request $request) + public function postGoogleLoginSettings(Request $request) : RedirectResponse { if (!config('app.lock_passwords')) { $setting = Setting::getSettings(); @@ -1079,10 +1039,8 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v1.8] - * - * @return View */ - public function getBackups() + public function getBackups() : View { $settings = Setting::getSettings(); $path = 'app/backups'; @@ -1118,12 +1076,9 @@ class SettingsController extends Controller * Process the backup. * * @author [A. Gianotto] [] - * * @since [v1.8] - * - * @return \Illuminate\Http\RedirectResponse */ - public function postBackups() + public function postBackups() : RedirectResponse { if (! config('app.lock_passwords')) { Artisan::call('snipeit:backup', ['--filename' => 'manual-backup-'.date('Y-m-d-H-i-s')]); @@ -1152,12 +1107,9 @@ class SettingsController extends Controller * Download the backup file. * * @author [A. Gianotto] [] - * * @since [v1.8] - * - * @return Storage */ - public function downloadFile($filename = null) + public function downloadFile($filename = null) : RedirectResponse | BinaryFileResponse { $path = 'app/backups'; @@ -1178,12 +1130,9 @@ class SettingsController extends Controller * Delete the backup file. * * @author [A. Gianotto] [] - * * @since [v1.8] - * - * @return View */ - public function deleteFile($filename = null) + public function deleteFile($filename = null) : RedirectResponse { if (config('app.allow_backup_delete')=='true') { @@ -1207,7 +1156,7 @@ class SettingsController extends Controller } // Hell to the no - Log::warning('User ID '.Auth::user()->id.' is attempting to delete backup file '.$filename.' and is not authorized to.'); + Log::warning('User ID '.auth()->id().' is attempting to delete backup file '.$filename.' and is not authorized to.'); return redirect()->route('settings.backups.index')->with('error', trans('general.backup_delete_not_allowed')); } @@ -1216,13 +1165,11 @@ class SettingsController extends Controller * Uploads a backup file * * @author [A. Gianotto] [] - * * @since [v6.0] - * - * @return \Illuminate\Http\RedirectResponse */ - public function postUploadBackup(Request $request) { + public function postUploadBackup(Request $request) : RedirectResponse + { if (! config('app.lock_passwords')) { if (!$request->hasFile('file')) { @@ -1254,12 +1201,9 @@ class SettingsController extends Controller * Restore the backup file. * * @author [A. Gianotto] [] - * * @since [v6.0] - * - * @return View */ - public function postRestore($filename = null) + public function postRestore($filename = null) : RedirectResponse { if (! config('app.lock_passwords')) { @@ -1268,7 +1212,7 @@ class SettingsController extends Controller if (Storage::exists($path.'/'.$filename)) { // grab the user's info so we can make sure they exist in the system - $user = User::find(Auth::user()->id); + $user = User::find(auth()->id()); // TODO: run a backup @@ -1327,13 +1271,11 @@ class SettingsController extends Controller * @author [A. Gianotto] [] * * @since [v4.0] - * - * @return View */ - public function getPurge() + public function getPurge() : View | RedirectResponse { - Log::warning('User '.Auth::user()->username.' (ID'.Auth::user()->id.') is attempting a PURGE'); + Log::warning('User '.auth()->user()->username.' (ID: '.auth()->id().') is attempting a PURGE'); if (config('app.allow_purge')=='true') { return view('settings.purge-form'); @@ -1346,14 +1288,11 @@ class SettingsController extends Controller * Purges soft-deletes. * * @author [A. Gianotto] [] - * * @since [v3.0] - * - * @return View */ - public function postPurge(Request $request) + public function postPurge(Request $request) : RedirectResponse { - Log::warning('User '.Auth::user()->username.' (ID'.Auth::user()->id.') is attempting a PURGE'); + Log::warning('User '.auth()->user()->username.' (ID'.auth()->id().') is attempting a PURGE'); if (config('app.allow_purge')=='true') { Log::debug('Purging is not allowed via the .env'); @@ -1362,7 +1301,7 @@ class SettingsController extends Controller if ($request->input('confirm_purge')=='DELETE') { - Log::warning('User ID ' . Auth::user()->id . ' initiated a PURGE!'); + Log::warning('User ID ' . auth()->id() . ' initiated a PURGE!'); // Run a backup immediately before processing Artisan::call('backup:run'); Artisan::call('snipeit:purge', ['--force' => 'true', '--no-interaction' => true]); @@ -1380,7 +1319,7 @@ class SettingsController extends Controller } } - Log::error('User '.Auth::user()->username.' (ID'.Auth::user()->id.') is attempting to purge deleted data and is not authorized to.'); + Log::error('User '.auth()->user()->username.' (ID'.auth()->id().') is attempting to purge deleted data and is not authorized to.'); // Nope. @@ -1395,12 +1334,9 @@ class SettingsController extends Controller * in the routes file if you want to be able to cache the routes. * * @author [A. Gianotto] [] - * * @since [v4.0] - * - * @return View */ - public function api() + public function api() : View { return view('settings.api'); } @@ -1409,12 +1345,9 @@ class SettingsController extends Controller * Test the email configuration. * * @author [A. Gianotto] [] - * * @since [v3.0] - * - * @return \Illuminate\Http\RedirectResponse */ - public function ajaxTestEmail() + public function ajaxTestEmail() : JsonResponse { try { (new User())->forceFill([ @@ -1422,13 +1355,20 @@ class SettingsController extends Controller 'email' => config('mail.from.address'), ])->notify(new MailTest()); - return response()->json(Helper::formatStandardApiResponse('success', null, 'Maiol sent!')); + return response()->json(Helper::formatStandardApiResponse('success', null, trans('mail_sent.mail_sent'))); } catch (\Exception $e) { return response()->json(Helper::formatStandardApiResponse('success', null, $e->getMessage())); } } - public function getLoginAttempts() + + + /** + * Get login attempts view + * + * @author [A. Gianotto] [] + */ + public function getLoginAttempts() : View { return view('settings.logins'); } diff --git a/app/Http/Controllers/StatuslabelsController.php b/app/Http/Controllers/StatuslabelsController.php index 0c559560e0..535117e97f 100755 --- a/app/Http/Controllers/StatuslabelsController.php +++ b/app/Http/Controllers/StatuslabelsController.php @@ -6,6 +6,8 @@ use App\Helpers\Helper; use App\Models\Statuslabel; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Status Labels for @@ -17,18 +19,14 @@ class StatuslabelsController extends Controller { /** * Show a list of all the statuslabels. - * - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { $this->authorize('view', Statuslabel::class); - return view('statuslabels.index'); } - public function show($id) + public function show($id) : View | RedirectResponse { $this->authorize('view', Statuslabel::class); if ($statuslabel = Statuslabel::find($id)) { @@ -41,10 +39,8 @@ class StatuslabelsController extends Controller /** * Statuslabel create. * - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { // Show the page $this->authorize('create', Statuslabel::class); @@ -58,10 +54,8 @@ class StatuslabelsController extends Controller * Statuslabel create form processing. * * @param Request $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(Request $request) + public function store(Request $request) : RedirectResponse { $this->authorize('create', Statuslabel::class); // create a new model instance @@ -96,10 +90,8 @@ class StatuslabelsController extends Controller * Statuslabel update. * * @param int $statuslabelId - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($statuslabelId = null) + public function edit($statuslabelId = null) : View | RedirectResponse { $this->authorize('update', Statuslabel::class); // Check if the Statuslabel exists @@ -119,10 +111,8 @@ class StatuslabelsController extends Controller * Statuslabel update form processing page. * * @param int $statuslabelId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update(Request $request, $statuslabelId = null) + public function update(Request $request, $statuslabelId = null) : RedirectResponse { $this->authorize('update', Statuslabel::class); // Check if the Statuslabel exists @@ -159,10 +149,8 @@ class StatuslabelsController extends Controller * Delete the given Statuslabel. * * @param int $statuslabelId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($statuslabelId) + public function destroy($statuslabelId) : RedirectResponse { $this->authorize('delete', Statuslabel::class); // Check if the Statuslabel exists diff --git a/app/Http/Controllers/SuppliersController.php b/app/Http/Controllers/SuppliersController.php index b901224714..e96e32b84f 100755 --- a/app/Http/Controllers/SuppliersController.php +++ b/app/Http/Controllers/SuppliersController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers; use App\Http\Requests\ImageUploadRequest; use App\Models\Supplier; use Illuminate\Support\Facades\Auth; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to Suppliers for @@ -20,25 +22,19 @@ class SuppliersController extends Controller * @return \Illuminate\Contracts\View\View * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function index() + public function index() : View { - // Grab all the suppliers $this->authorize('view', Supplier::class); - - // Show the page return view('suppliers/index'); } /** * Supplier create. * - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create() : View { $this->authorize('create', Supplier::class); - return view('suppliers/edit')->with('item', new Supplier); } @@ -46,10 +42,8 @@ class SuppliersController extends Controller * Supplier create form processing. * * @param ImageUploadRequest $request - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function store(ImageUploadRequest $request) + public function store(ImageUploadRequest $request) : RedirectResponse { $this->authorize('create', Supplier::class); // Create a new supplier @@ -82,10 +76,8 @@ class SuppliersController extends Controller * Supplier update. * * @param int $supplierId - * @return \Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($supplierId = null) + public function edit($supplierId = null) : View | RedirectResponse { $this->authorize('update', Supplier::class); // Check if the supplier exists @@ -102,15 +94,12 @@ class SuppliersController extends Controller * Supplier update form processing page. * * @param int $supplierId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update($supplierId, ImageUploadRequest $request) + public function update($supplierId, ImageUploadRequest $request) : RedirectResponse { $this->authorize('update', Supplier::class); - // Check if the supplier exists + if (is_null($supplier = Supplier::find($supplierId))) { - // Redirect to the supplier page return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.does_not_exist')); } @@ -141,10 +130,8 @@ class SuppliersController extends Controller * Delete the given supplier. * * @param int $supplierId - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function destroy($supplierId) + public function destroy($supplierId) : RedirectResponse { $this->authorize('delete', Supplier::class); if (is_null($supplier = Supplier::with('asset_maintenances', 'assets', 'licenses')->withCount('asset_maintenances as asset_maintenances_count', 'assets as assets_count', 'licenses as licenses_count')->find($supplierId))) { @@ -174,10 +161,9 @@ class SuppliersController extends Controller * Get the asset information to present to the supplier view page * * @param null $supplierId - * @return \Illuminate\Contracts\View\View * @internal param int $assetId */ - public function show($supplierId = null) + public function show($supplierId = null) : View | RedirectResponse { $this->authorize('view', Supplier::class); $supplier = Supplier::find($supplierId); diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index d028560607..b0683e2cbc 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -42,7 +42,7 @@ class BulkUsersController extends Controller // Get the list of affected users $user_raw_array = request('ids'); $users = User::whereIn('id', $user_raw_array) - ->with('groups', 'assets', 'licenses', 'accessories')->get(); + ->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations','uploads', 'acceptances')->get(); // bulk edit, display the bulk edit form if ($request->input('bulk_actions') == 'edit') { @@ -102,7 +102,7 @@ class BulkUsersController extends Controller // Remove the user from any updates. $user_raw_array = array_diff($user_raw_array, [Auth::id()]); $manager_conflict = false; - $users = User::whereIn('id', $user_raw_array)->where('id', '!=', Auth::user()->id)->get(); + $users = User::whereIn('id', $user_raw_array)->where('id', '!=', auth()->id())->get(); $return_array = [ 'success' => trans('admin/users/message.success.update_bulk'), @@ -317,8 +317,8 @@ class BulkUsersController extends Controller // Get the users $merge_into_user = User::find($request->input('merge_into_id')); - $users_to_merge = User::whereIn('id', $user_ids_to_merge)->with('assets', 'licenses', 'consumables','accessories')->get(); - $admin = User::find(Auth::user()->id); + $users_to_merge = User::whereIn('id', $user_ids_to_merge)->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations','uploads', 'acceptances')->get(); + $admin = User::find(auth()->id()); // Walk users foreach ($users_to_merge as $user_to_merge) { @@ -344,10 +344,20 @@ class BulkUsersController extends Controller } foreach ($user_to_merge->userlog as $log) { - $log->target_id = $user_to_merge->id; + $log->target_id = $merge_into_user->id; $log->save(); } + foreach ($user_to_merge->uploads as $upload) { + $upload->item_id = $merge_into_user->id; + $upload->save(); + } + + foreach ($user_to_merge->acceptances as $acceptance) { + $acceptance->item_id = $merge_into_user->id; + $acceptance->save(); + } + User::where('manager_id', '=', $user_to_merge->id)->update(['manager_id' => $merge_into_user->id]); foreach ($user_to_merge->managedLocations as $managedLocation) { @@ -356,7 +366,6 @@ class BulkUsersController extends Controller } $user_to_merge->delete(); - //$user_to_merge->save(); event(new UserMerged($user_to_merge, $merge_into_user, $admin)); diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 0b16dd0a95..7cff29fe59 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -117,7 +117,7 @@ class UsersController extends Controller $user->zip = $request->input('zip', null); $user->remote = $request->input('remote', 0); $user->website = $request->input('website', null); - $user->created_by = Auth::user()->id; + $user->created_by = auth()->id(); $user->start_date = $request->input('start_date', null); $user->end_date = $request->input('end_date', null); $user->autoassign_licenses = $request->input('autoassign_licenses', 0); @@ -125,7 +125,7 @@ class UsersController extends Controller // Strip out the superuser permission if the user isn't a superadmin $permissions_array = $request->input('permission'); - if (! Auth::user()->isSuperUser()) { + if (! auth()->user()->isSuperUser()) { unset($permissions_array['superuser']); } $user->permissions = json_encode($permissions_array); @@ -176,7 +176,7 @@ class UsersController extends Controller * @author [A. Gianotto] [] * @since [v1.0] * @param $permissions - * @return View + * @return \Illuminate\Contracts\View\View * @internal param int $id * @throws \Illuminate\Auth\Access\AuthorizationException */ @@ -246,7 +246,7 @@ class UsersController extends Controller } // Only save groups if the user is a superuser - if (Auth::user()->isSuperUser()) { + if (auth()->user()->isSuperUser()) { $user->groups()->sync($request->input('groups')); } @@ -300,7 +300,7 @@ class UsersController extends Controller // Strip out the superuser permission if the user isn't a superadmin - if (! Auth::user()->isSuperUser()) { + if (! auth()->user()->isSuperUser()) { unset($permissions_array['superuser']); $permissions_array['superuser'] = $orig_superuser; } @@ -379,7 +379,7 @@ class UsersController extends Controller $logaction->item_type = User::class; $logaction->item_id = $user->id; $logaction->created_at = date('Y-m-d H:i:s'); - $logaction->user_id = Auth::user()->id; + $logaction->user_id = auth()->id(); $logaction->logaction('restore'); // Redirect them to the deleted page if there are more, otherwise the section index diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php index cbff99937d..db4afc8322 100755 --- a/app/Http/Controllers/ViewAssetsController.php +++ b/app/Http/Controllers/ViewAssetsController.php @@ -8,11 +8,11 @@ use App\Models\AssetModel; use App\Models\Company; use App\Models\Setting; use App\Models\User; -use App\Models\CustomField; use App\Notifications\RequestAssetCancelation; use App\Notifications\RequestAssetNotification; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; +use Illuminate\Http\RedirectResponse; +use \Illuminate\Contracts\View\View; /** * This controller handles all actions related to the ability for users @@ -25,9 +25,8 @@ class ViewAssetsController extends Controller /** * Redirect to the profile page. * - * @return \Illuminate\Http\RedirectResponse */ - public function getIndex() + public function getIndex() : View | RedirectResponse { $user = User::with( 'assets', @@ -36,7 +35,7 @@ class ViewAssetsController extends Controller 'consumables', 'accessories', 'licenses', - )->find(Auth::user()->id); + )->find(auth()->id()); $field_array = array(); @@ -72,9 +71,8 @@ class ViewAssetsController extends Controller /** * Returns view of requestable items for a user. - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function getRequestableIndex() + public function getRequestableIndex() : View { $assets = Asset::with('model', 'defaultLoc', 'location', 'assignedTo', 'requests')->Hardware()->RequestableAssets(); $models = AssetModel::with('category', 'requests', 'assets')->RequestableModels()->get(); @@ -82,7 +80,7 @@ class ViewAssetsController extends Controller return view('account/requestable-assets', compact('assets', 'models')); } - public function getRequestItem(Request $request, $itemType, $itemId = null, $cancel_by_admin = false, $requestingUser = null) + public function getRequestItem(Request $request, $itemType, $itemId = null, $cancel_by_admin = false, $requestingUser = null) : RedirectResponse { $item = null; $fullItemType = 'App\\Models\\'.studly_case($itemType); @@ -92,7 +90,7 @@ class ViewAssetsController extends Controller } $item = call_user_func([$fullItemType, 'find'], $itemId); - $user = Auth::user(); + $user = auth()->user(); $logaction = new Actionlog(); $logaction->item_id = $data['asset_id'] = $item->id; @@ -102,14 +100,15 @@ class ViewAssetsController extends Controller if ($user->location_id) { $logaction->location_id = $user->location_id; } - $logaction->target_id = $data['user_id'] = Auth::user()->id; + + $logaction->target_id = $data['user_id'] = auth()->id(); $logaction->target_type = User::class; $data['item_quantity'] = $request->has('request-quantity') ? e($request->input('request-quantity')) : 1; $data['requested_by'] = $user->present()->fullName(); $data['item'] = $item; $data['item_type'] = $itemType; - $data['target'] = Auth::user(); + $data['target'] = auth()->user(); if ($fullItemType == Asset::class) { $data['item_url'] = route('hardware.show', $item->id); @@ -143,11 +142,10 @@ class ViewAssetsController extends Controller /** * Process a specific requested asset * @param null $assetId - * @return \Illuminate\Http\RedirectResponse */ - public function getRequestAsset($assetId = null) + public function getRequestAsset($assetId = null) : RedirectResponse { - $user = Auth::user(); + $user = auth()->user(); // Check if the asset exists and is requestable if (is_null($asset = Asset::RequestableAssets()->find($assetId))) { @@ -160,7 +158,7 @@ class ViewAssetsController extends Controller } $data['item'] = $asset; - $data['target'] = Auth::user(); + $data['target'] = auth()->user(); $data['item_quantity'] = 1; $settings = Setting::getSettings(); @@ -172,11 +170,11 @@ class ViewAssetsController extends Controller if ($user->location_id) { $logaction->location_id = $user->location_id; } - $logaction->target_id = $data['user_id'] = Auth::user()->id; + $logaction->target_id = $data['user_id'] = auth()->id(); $logaction->target_type = User::class; // If it's already requested, cancel the request. - if ($asset->isRequestedBy(Auth::user())) { + if ($asset->isRequestedBy(auth()->user())) { $asset->cancelRequest(); $asset->decrement('requests_counter', 1); @@ -195,7 +193,7 @@ class ViewAssetsController extends Controller return redirect()->route('requestable-assets')->with('success')->with('success', trans('admin/hardware/message.requests.success')); } - public function getRequestedAssets() + public function getRequestedAssets() : View { return view('account/requested'); } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index e2d8b07d02..73358454df 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -43,6 +43,7 @@ class Kernel extends HttpKernel \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class, \App\Http\Middleware\AssetCountForSidebar::class, \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ diff --git a/app/Http/Middleware/CheckForDebug.php b/app/Http/Middleware/CheckForDebug.php index 85311cf539..3bf919f1f2 100644 --- a/app/Http/Middleware/CheckForDebug.php +++ b/app/Http/Middleware/CheckForDebug.php @@ -18,7 +18,7 @@ class CheckForDebug { view()->share('debug_in_production', false); - if (((Auth::check() && (Auth::user()->isSuperUser()))) && (app()->environment() == 'production') && (config('app.warn_debug') === true) && (config('app.debug') === true)) { + if (((Auth::check() && (auth()->user()->isSuperUser()))) && (app()->environment() == 'production') && (config('app.warn_debug') === true) && (config('app.debug') === true)) { view()->share('debug_in_production', true); } diff --git a/app/Http/Middleware/CheckForTwoFactor.php b/app/Http/Middleware/CheckForTwoFactor.php index 7846d00ade..b94423d205 100644 --- a/app/Http/Middleware/CheckForTwoFactor.php +++ b/app/Http/Middleware/CheckForTwoFactor.php @@ -38,17 +38,17 @@ class CheckForTwoFactor if ($settings = Setting::getSettings()) { if (Auth::check() && ($settings->two_factor_enabled != '')) { // This user is already 2fa-authed - if ($request->session()->get('2fa_authed')==Auth::user()->id) { + if ($request->session()->get('2fa_authed')==auth()->id()) { return $next($request); } // Two-factor is optional and the user has NOT opted in, let them through - if (($settings->two_factor_enabled == '1') && (Auth::user()->two_factor_optin != '1')) { + if (($settings->two_factor_enabled == '1') && (auth()->user()->two_factor_optin != '1')) { return $next($request); } // Otherwise make sure they're enrolled and show them the 2FA code screen - if ((Auth::user()->two_factor_secret != '') && (Auth::user()->two_factor_enrolled == '1')) { + if ((auth()->user()->two_factor_secret != '') && (auth()->user()->two_factor_enrolled == '1')) { return redirect()->route('two-factor')->with('info', trans('auth/message.two_factor.enter_two_factor_code')); } diff --git a/app/Http/Middleware/CheckLocale.php b/app/Http/Middleware/CheckLocale.php index 412a423f22..68a9c48c34 100644 --- a/app/Http/Middleware/CheckLocale.php +++ b/app/Http/Middleware/CheckLocale.php @@ -45,7 +45,7 @@ class CheckLocale } - \App::setLocale(Helper::mapLegacyLocale($language)); + app()->setLocale(Helper::mapLegacyLocale($language)); return $next($request); } } diff --git a/app/Http/Middleware/CheckPermissions.php b/app/Http/Middleware/CheckPermissions.php index a51484f283..3eda3e3144 100644 --- a/app/Http/Middleware/CheckPermissions.php +++ b/app/Http/Middleware/CheckPermissions.php @@ -26,6 +26,6 @@ class CheckPermissions return response()->view('layouts/basic', [ 'content' => view('errors/403'), - ]); + ], 403); } } diff --git a/app/Http/Requests/AccessoryCheckoutRequest.php b/app/Http/Requests/AccessoryCheckoutRequest.php new file mode 100644 index 0000000000..0e17b390c2 --- /dev/null +++ b/app/Http/Requests/AccessoryCheckoutRequest.php @@ -0,0 +1,79 @@ +accessory) { + + $this->diff = ($this->accessory->numRemaining() - $this->checkout_qty); + $this->merge([ + 'checkout_qty' => $this->checkout_qty ?? 1, + 'number_remaining_after_checkout' => (int) ($this->accessory->numRemaining() - $this->checkout_qty), + 'number_currently_remaining' => (int) $this->accessory->numRemaining(), + 'checkout_difference' => (int) $this->diff, + ]); + + \Log::debug('---------------------------------------------'); + } + + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + + return array_merge( + [ + 'assigned_to' => [ + 'required', + 'integer', + 'exists:users,id,deleted_at,NULL', + 'not_array' + ], + + 'number_remaining_after_checkout' => [ + 'min:0', + 'required', + 'integer', + ], + + 'checkout_qty' => [ + 'integer', + 'lte:number_currently_remaining', + 'min:1', + ], + ], + ); + } + + public function messages(): array + { + $messages = [ + 'checkout_qty.lte' => trans_choice('admin/accessories/message.checkout.checkout_qty.lte', $this->number_currently_remaining, [ + 'number_currently_remaining' => $this->number_currently_remaining, + 'checkout_qty' => $this->checkout_qty, + ]), + ]; + return $messages; + } +} diff --git a/app/Http/Requests/DeleteUserRequest.php b/app/Http/Requests/DeleteUserRequest.php index 282919d7ae..99574950d8 100644 --- a/app/Http/Requests/DeleteUserRequest.php +++ b/app/Http/Requests/DeleteUserRequest.php @@ -29,7 +29,7 @@ class DeleteUserRequest extends FormRequest if ($user_to_delete) { $this->merge([ 'user' => request()->route('user'), - 'admin_id' => Auth::user()->id, + 'admin_id' => auth()->id(), 'managed_users' => $user_to_delete->managesUsers()->count(), 'managed_locations' => $user_to_delete->managedLocations()->count(), 'assigned_assets' => $user_to_delete->assets()->count(), @@ -48,7 +48,7 @@ class DeleteUserRequest extends FormRequest public function rules(): array { return [ - 'user' => Rule::notIn([auth()->user()->id]), + 'user' => Rule::notIn([auth()->id()]), 'managed_users' => Rule::in([0]), 'managed_locations' => Rule::in([0]), 'assigned_assets' => Rule::in([0]), diff --git a/app/Http/Requests/ImageUploadRequest.php b/app/Http/Requests/ImageUploadRequest.php index c75454d0f3..abb0cee5f7 100644 --- a/app/Http/Requests/ImageUploadRequest.php +++ b/app/Http/Requests/ImageUploadRequest.php @@ -10,6 +10,7 @@ use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Storage; use Intervention\Image\Exception\NotReadableException; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Validator; class ImageUploadRequest extends Request { @@ -96,10 +97,7 @@ class ImageUploadRequest extends Request $ext = $image->guessExtension(); $file_name = $type.'-'.$form_fieldname.'-'.$item->id.'-'.str_random(10).'.'.$ext; - - Log::info('File name will be: '.$file_name); - Log::debug('File extension is: '.$ext); - + if (($image->getMimeType() == 'image/vnd.microsoft.icon') || ($image->getMimeType() == 'image/x-icon') || ($image->getMimeType() == 'image/avif') || ($image->getMimeType() == 'image/webp')) { // If the file is an icon, webp or avif, we need to just move it since gd doesn't support resizing // icons or avif, and webp support and needs to be compiled into gd for resizing to be available @@ -126,7 +124,7 @@ class ImageUploadRequest extends Request } catch(NotReadableException $e) { Log::debug($e); - $validator = \Validator::make([], []); + $validator = Validator::make([], []); $validator->errors()->add($form_fieldname, trans('general.unaccepted_image_type', ['mimetype' => $image->getClientMimeType()])); throw new \Illuminate\Validation\ValidationException($validator); @@ -138,28 +136,28 @@ class ImageUploadRequest extends Request } // Remove Current image if exists - if (($item->{$form_fieldname}!='') && (Storage::disk('public')->exists($path.'/'.$item->{$db_fieldname}))) { - try { - Storage::disk('public')->delete($path.'/'.$item->{$form_fieldname}); - } catch (\Exception $e) { - Log::debug('Could not delete old file. '.$path.'/'.$file_name.' does not exist?'); - } - } - + $item = $this->deleteExistingImage($item, $path, $db_fieldname); $item->{$db_fieldname} = $file_name; } // If the user isn't uploading anything new but wants to delete their old image, do so } elseif ($this->input('image_delete') == '1') { - Log::debug('Deleting image'); + $item = $this->deleteExistingImage($item, $path, $db_fieldname); + } + + return $item; + } + + public function deleteExistingImage($item, $path = null, $db_fieldname = 'image') { + + if ($item->{$db_fieldname}!='') { try { Storage::disk('public')->delete($path.'/'.$item->{$db_fieldname}); - $item->{$db_fieldname} = null; + $item->{$db_fieldname} = null; } catch (\Exception $e) { Log::debug($e); } - } return $item; diff --git a/app/Http/Requests/StoreAccessoryRequest.php b/app/Http/Requests/StoreAccessoryRequest.php new file mode 100644 index 0000000000..c41bae7b40 --- /dev/null +++ b/app/Http/Requests/StoreAccessoryRequest.php @@ -0,0 +1,56 @@ +category_id) { + if ($category = Category::find($this->category_id)) { + $this->merge([ + 'category_type' => $category->category_type ?? null, + ]); + } + } + + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return array_merge( + ['category_type' => 'in:accessory'], + parent::rules(), + ); + } + + public function messages(): array + { + $messages = ['category_type.in' => trans('admin/accessories/message.invalid_category_type')]; + return $messages; + } + + public function response(array $errors) + { + return $this->redirector->back()->withInput()->withErrors($errors, $this->errorBag); + } +} diff --git a/app/Http/Requests/StoreAssetModelRequest.php b/app/Http/Requests/StoreAssetModelRequest.php new file mode 100644 index 0000000000..635d45cf89 --- /dev/null +++ b/app/Http/Requests/StoreAssetModelRequest.php @@ -0,0 +1,56 @@ +category_id) { + if ($category = Category::find($this->category_id)) { + $this->merge([ + 'category_type' => $category->category_type ?? null, + ]); + } + } + + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return array_merge( + ['category_type' => 'in:asset'], + parent::rules(), + ); + } + + public function messages(): array + { + $messages = ['category_type.in' => trans('admin/models/message.invalid_category_type')]; + return $messages; + } + + public function response(array $errors) + { + return $this->redirector->back()->withInput()->withErrors($errors, $this->errorBag); + } +} diff --git a/app/Http/Requests/StoreConsumableRequest.php b/app/Http/Requests/StoreConsumableRequest.php new file mode 100644 index 0000000000..9062b07cc5 --- /dev/null +++ b/app/Http/Requests/StoreConsumableRequest.php @@ -0,0 +1,56 @@ +category_id) { + if ($category = Category::find($this->category_id)) { + $this->merge([ + 'category_type' => $category->category_type ?? null, + ]); + } + } + + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return array_merge( + ['category_type' => 'in:consumable'], + parent::rules(), + ); + } + + public function messages(): array + { + $messages = ['category_type.in' => trans('admin/consumables/message.invalid_category_type')]; + return $messages; + } + + public function response(array $errors) + { + return $this->redirector->back()->withInput()->withErrors($errors, $this->errorBag); + } +} diff --git a/app/Http/Transformers/ActionlogsTransformer.php b/app/Http/Transformers/ActionlogsTransformer.php index ef00c74471..8a09cc8402 100644 --- a/app/Http/Transformers/ActionlogsTransformer.php +++ b/app/Http/Transformers/ActionlogsTransformer.php @@ -256,7 +256,7 @@ class ActionlogsTransformer $clean_meta['rtd_location_id']['old'] = $clean_meta['rtd_location_id']['old'] ? "[id: ".$clean_meta['rtd_location_id']['old']."] ". $oldRtdName : ''; $clean_meta['rtd_location_id']['new'] = $clean_meta['rtd_location_id']['new'] ? "[id: ".$clean_meta['rtd_location_id']['new']."] ". $newRtdName : ''; - $clean_meta['Default Location'] = $clean_meta['rtd_location_id']; + $clean_meta[trans('admin/hardware/form.default_location')] = $clean_meta['rtd_location_id']; unset($clean_meta['rtd_location_id']); } @@ -272,7 +272,7 @@ class ActionlogsTransformer $clean_meta['location_id']['old'] = $clean_meta['location_id']['old'] ? "[id: ".$clean_meta['location_id']['old']."] ". $oldLocationName : ''; $clean_meta['location_id']['new'] = $clean_meta['location_id']['new'] ? "[id: ".$clean_meta['location_id']['new']."] ". $newLocationName : ''; - $clean_meta['Current Location'] = $clean_meta['location_id']; + $clean_meta[trans('admin/locations/message.current_location')] = $clean_meta['location_id']; unset($clean_meta['location_id']); } @@ -287,7 +287,7 @@ class ActionlogsTransformer $clean_meta['model_id']['old'] = "[id: ".$clean_meta['model_id']['old']."] ".$oldModelName; $clean_meta['model_id']['new'] = "[id: ".$clean_meta['model_id']['new']."] ".$newModelName; /** model is required at asset creation */ - $clean_meta['Model'] = $clean_meta['model_id']; + $clean_meta[trans('admin/hardware/form.model')] = $clean_meta['model_id']; unset($clean_meta['model_id']); } if(array_key_exists('company_id', $clean_meta)) { @@ -300,7 +300,7 @@ class ActionlogsTransformer $clean_meta['company_id']['old'] = $clean_meta['company_id']['old'] ? "[id: ".$clean_meta['company_id']['old']."] ". $oldCompanyName : trans('general.unassigned'); $clean_meta['company_id']['new'] = $clean_meta['company_id']['new'] ? "[id: ".$clean_meta['company_id']['new']."] ". $newCompanyName : trans('general.unassigned'); - $clean_meta['Company'] = $clean_meta['company_id']; + $clean_meta[trans('general.company')] = $clean_meta['company_id']; unset($clean_meta['company_id']); } if(array_key_exists('supplier_id', $clean_meta)) { @@ -313,7 +313,7 @@ class ActionlogsTransformer $clean_meta['supplier_id']['old'] = $clean_meta['supplier_id']['old'] ? "[id: ".$clean_meta['supplier_id']['old']."] ". $oldSupplierName : trans('general.unassigned'); $clean_meta['supplier_id']['new'] = $clean_meta['supplier_id']['new'] ? "[id: ".$clean_meta['supplier_id']['new']."] ". $newSupplierName : trans('general.unassigned'); - $clean_meta['Supplier'] = $clean_meta['supplier_id']; + $clean_meta[trans('general.supplier')] = $clean_meta['supplier_id']; unset($clean_meta['supplier_id']); } if(array_key_exists('status_id', $clean_meta)) { @@ -326,11 +326,11 @@ class ActionlogsTransformer $clean_meta['status_id']['old'] = $clean_meta['status_id']['old'] ? "[id: ".$clean_meta['status_id']['old']."] ". $oldStatusName : trans('general.unassigned'); $clean_meta['status_id']['new'] = $clean_meta['status_id']['new'] ? "[id: ".$clean_meta['status_id']['new']."] ". $newStatusName : trans('general.unassigned'); - $clean_meta['Status'] = $clean_meta['status_id']; + $clean_meta[trans('general.status_label')] = $clean_meta['status_id']; unset($clean_meta['status_id']); } if(array_key_exists('asset_eol_date', $clean_meta)) { - $clean_meta['EOL date'] = $clean_meta['asset_eol_date']; + $clean_meta[trans('admin/hardware/form.eol_date')] = $clean_meta['asset_eol_date']; unset($clean_meta['asset_eol_date']); } diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index eeb10eb0d2..d3a19929e1 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -231,7 +231,7 @@ class AssetsTransformer 'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'), 'location' => ($asset->location) ? e($asset->location->name) : null, 'status'=> ($asset->assetstatus) ? $asset->present()->statusMeta : null, - 'assigned_to_self' => ($asset->assigned_to == \Auth::user()->id), + 'assigned_to_self' => ($asset->assigned_to == auth()->id()), ]; if (($asset->model) && ($asset->model->fieldset) && ($asset->model->fieldset->fields->count() > 0)) { @@ -258,8 +258,8 @@ class AssetsTransformer $permissions_array['available_actions'] = [ - 'cancel' => ($asset->isRequestedBy(\Auth::user())) ? true : false, - 'request' => ($asset->isRequestedBy(\Auth::user())) ? false : true, + 'cancel' => ($asset->isRequestedBy(auth()->user())) ? true : false, + 'request' => ($asset->isRequestedBy(auth()->user())) ? false : true, ]; $array += $permissions_array; diff --git a/app/Http/Transformers/ConsumablesTransformer.php b/app/Http/Transformers/ConsumablesTransformer.php index f23ebc0382..d0ae57eef0 100644 --- a/app/Http/Transformers/ConsumablesTransformer.php +++ b/app/Http/Transformers/ConsumablesTransformer.php @@ -55,6 +55,7 @@ class ConsumablesTransformer 'checkin' => Gate::allows('checkin', Consumable::class), 'update' => Gate::allows('update', Consumable::class), 'delete' => Gate::allows('delete', Consumable::class), + 'clone' => (Gate::allows('create', Consumable::class) && ($consumable->deleted_at == '')), ]; $array += $permissions_array; diff --git a/app/Http/Transformers/LicenseSeatsTransformer.php b/app/Http/Transformers/LicenseSeatsTransformer.php index 47133a9b95..7ae68e9e44 100644 --- a/app/Http/Transformers/LicenseSeatsTransformer.php +++ b/app/Http/Transformers/LicenseSeatsTransformer.php @@ -51,7 +51,7 @@ class LicenseSeatsTransformer ]; if ($seat_count != 0) { - $array['name'] = 'Seat '.$seat_count; + $array['name'] = trans('admin/licenses/general.seat_count', ['count' => $seat_count]); } $permissions_array['available_actions'] = [ diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index 64752d0445..0b573b8388 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -24,7 +24,7 @@ class UsersTransformer $array = [ 'id' => (int) $user->id, - 'avatar' => e($user->present()->gravatar), + 'avatar' => e($user->present()->gravatar) ?? null, 'name' => e($user->getFullNameAttribute()), 'first_name' => e($user->first_name), 'last_name' => e($user->last_name), diff --git a/app/Importer/AssetImporter.php b/app/Importer/AssetImporter.php index 02ffa2077c..4bb887bcd8 100644 --- a/app/Importer/AssetImporter.php +++ b/app/Importer/AssetImporter.php @@ -3,14 +3,10 @@ namespace App\Importer; use App\Models\Asset; -use App\Models\AssetModel; use App\Models\Statuslabel; use App\Models\User; use App\Events\CheckoutableCheckedIn; -use Carbon\CarbonImmutable; -use Illuminate\Support\Facades\Auth; -use Carbon\Carbon; -use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Crypt; class AssetImporter extends ItemImporter { @@ -184,7 +180,7 @@ class AssetImporter extends ItemImporter if (isset($target) && ($target !== false)) { if (!is_null($asset->assigned_to)){ if ($asset->assigned_to != $target->id) { - event(new CheckoutableCheckedIn($asset, User::find($asset->assigned_to), Auth::user(), 'Checkin from CSV Importer', $checkin_date)); + event(new CheckoutableCheckedIn($asset, User::find($asset->assigned_to), auth()->user(), 'Checkin from CSV Importer', $checkin_date)); } } diff --git a/app/Importer/LocationImporter.php b/app/Importer/LocationImporter.php index 3b1b65b08f..e344b6beaf 100644 --- a/app/Importer/LocationImporter.php +++ b/app/Importer/LocationImporter.php @@ -65,7 +65,7 @@ class LocationImporter extends ItemImporter $this->item['ldap_ou'] = trim($this->findCsvMatch($row, 'ldap_ou')); $this->item['manager'] = trim($this->findCsvMatch($row, 'manager')); $this->item['manager_username'] = trim($this->findCsvMatch($row, 'manager_username')); - $this->item['user_id'] = \Auth::user()->id; + $this->item['user_id'] = auth()->id(); if ($this->findCsvMatch($row, 'parent_location')) { $this->item['parent_id'] = $this->createOrFetchLocation(trim($this->findCsvMatch($row, 'parent_location'))); diff --git a/app/Listeners/CheckoutableListener.php b/app/Listeners/CheckoutableListener.php index 4bc367f025..63e552233c 100644 --- a/app/Listeners/CheckoutableListener.php +++ b/app/Listeners/CheckoutableListener.php @@ -69,9 +69,9 @@ class CheckoutableListener } } } catch (ClientException $e) { - Log::warning("Exception caught during checkout notification: " . $e->getMessage()); + Log::debug("Exception caught during checkout notification: " . $e->getMessage()); } catch (Exception $e) { - Log::warning("Exception caught during checkout notification: " . $e->getMessage()); + Log::debug("Exception caught during checkout notification: " . $e->getMessage()); } } diff --git a/app/Listeners/LogListener.php b/app/Listeners/LogListener.php index 57eee03f17..b44fcdfcb4 100644 --- a/app/Listeners/LogListener.php +++ b/app/Listeners/LogListener.php @@ -111,7 +111,7 @@ class LogListener $logaction->target_type = User::class; $logaction->action_type = 'merged'; $logaction->note = trans('general.merged_log_this_user_from', $to_from_array); - $logaction->user_id = $event->admin->id; + $logaction->user_id = $event->admin->id ?? null; $logaction->save(); // Add a record to the users being merged TO @@ -122,7 +122,7 @@ class LogListener $logaction->item_type = User::class; $logaction->action_type = 'merged'; $logaction->note = trans('general.merged_log_this_user_into', $to_from_array); - $logaction->user_id = $event->admin->id; + $logaction->user_id = $event->admin->id ?? null; $logaction->save(); diff --git a/app/Livewire/OauthClients.php b/app/Livewire/OauthClients.php index 02fc77848b..fda91260c8 100644 --- a/app/Livewire/OauthClients.php +++ b/app/Livewire/OauthClients.php @@ -22,8 +22,8 @@ class OauthClients extends Component public function render() { return view('livewire.oauth-clients', [ - 'clients' => app(ClientRepository::class)->activeForUser(auth()->user()->id), - 'authorized_tokens' => app(TokenRepository::class)->forUser(auth()->user()->id)->where('revoked', false), + 'clients' => app(ClientRepository::class)->activeForUser(auth()->id()), + 'authorized_tokens' => app(TokenRepository::class)->forUser(auth()->id())->where('revoked', false), ]); } @@ -35,7 +35,7 @@ class OauthClients extends Component ]); app(ClientRepository::class)->create( - auth()->user()->id, + auth()->id(), $this->name, $this->redirect, ); @@ -47,10 +47,10 @@ class OauthClients extends Component { // test for safety // ->delete must be of type Client - thus the model binding - if ($clientId->user_id == auth()->user()->id) { + if ($clientId->user_id == auth()->id()) { app(ClientRepository::class)->delete($clientId); } else { - Log::warning('User ' . auth()->user()->id . ' attempted to delete client ' . $clientId->id . ' which belongs to user ' . $clientId->user_id); + Log::warning('User ' . auth()->id() . ' attempted to delete client ' . $clientId->id . ' which belongs to user ' . $clientId->user_id); $this->authorizationError = 'You are not authorized to delete this client.'; } } @@ -58,10 +58,10 @@ class OauthClients extends Component public function deleteToken($tokenId): void { $token = app(TokenRepository::class)->find($tokenId); - if ($token->user_id == auth()->user()->id) { + if ($token->user_id == auth()->id()) { app(TokenRepository::class)->revokeAccessToken($tokenId); } else { - Log::warning('User ' . auth()->user()->id . ' attempted to delete token ' . $tokenId . ' which belongs to user ' . $token->user_id); + Log::warning('User ' . auth()->id() . ' attempted to delete token ' . $tokenId . ' which belongs to user ' . $token->user_id); $this->authorizationError = 'You are not authorized to delete this token.'; } } @@ -84,12 +84,12 @@ class OauthClients extends Component ]); $client = app(ClientRepository::class)->find($editClientId->id); - if ($client->user_id == auth()->user()->id) { + if ($client->user_id == auth()->id()) { $client->name = $this->editName; $client->redirect = $this->editRedirect; $client->save(); } else { - Log::warning('User ' . auth()->user()->id . ' attempted to edit client ' . $editClientId->id . ' which belongs to user ' . $client->user_id); + Log::warning('User ' . auth()->id() . ' attempted to edit client ' . $editClientId->id . ' which belongs to user ' . $client->user_id); $this->authorizationError = 'You are not authorized to edit this client.'; } diff --git a/app/Livewire/PersonalAccessTokens.php b/app/Livewire/PersonalAccessTokens.php index 2d2f56662a..79543a609e 100644 --- a/app/Livewire/PersonalAccessTokens.php +++ b/app/Livewire/PersonalAccessTokens.php @@ -23,7 +23,7 @@ class PersonalAccessTokens extends Component public function render() { return view('livewire.personal-access-tokens', [ - 'tokens' => Auth::user()->tokens, + 'tokens' => auth()->user()->tokens, ]); } @@ -38,7 +38,7 @@ class PersonalAccessTokens extends Component { $this->validate(); - $newToken = Auth::user()->createToken($this->name); + $newToken = auth()->user()->createToken($this->name); $this->newTokenString = $newToken->accessToken; @@ -49,6 +49,6 @@ class PersonalAccessTokens extends Component { //this needs safety (though the scope of auth::user might kind of do it...) //seems like it does, test more - Auth::user()->tokens()->find($tokenId)->delete(); + auth()->user()->tokens()->find($tokenId)?->delete(); } } diff --git a/app/Models/Accessory.php b/app/Models/Accessory.php index a234b1e570..20d2584c31 100755 --- a/app/Models/Accessory.php +++ b/app/Models/Accessory.php @@ -63,7 +63,7 @@ class Accessory extends SnipeModel 'company_id' => 'integer|nullable', 'min_amt' => 'integer|min:0|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', - 'purchase_date' => 'date_format:Y-m-d|nullable', + 'purchase_date' => 'date_format:Y-m-d|nullable', ]; @@ -329,11 +329,24 @@ class Accessory extends SnipeModel } + /** + * Check how many items within an accessory are checked out + * + * @author [A. Gianotto] [] + * @since [v5.0] + * @return int + */ + public function numCheckedOut() + { + return $this->users_count ?? $this->users()->count(); + } + + /** * Check how many items of an accessory remain. * * In order to use this model method, you MUST call withCount('users as users_count') - * on the eloquent query in the controller, otherwise $this->>users_count will be null and + * on the eloquent query in the controller, otherwise $this->users_count will be null and * bad things happen. * * @author [A. Gianotto] [] @@ -342,11 +355,11 @@ class Accessory extends SnipeModel */ public function numRemaining() { - $checkedout = $this->users_count; + $checkedout = $this->numCheckedOut(); $total = $this->qty; $remaining = $total - $checkedout; - return (int) $remaining; + return $remaining; } /** diff --git a/app/Models/Actionlog.php b/app/Models/Actionlog.php index 90e0e884f8..33e9707f2a 100755 --- a/app/Models/Actionlog.php +++ b/app/Models/Actionlog.php @@ -4,7 +4,7 @@ namespace App\Models; use App\Models\Traits\Searchable; use App\Presenters\Presentable; -use Carbon; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Facades\Auth; @@ -81,14 +81,14 @@ class Actionlog extends SnipeModel parent::boot(); static::creating(function (self $actionlog) { // If the admin is a superadmin, let's see if the target instead has a company. - if (Auth::user() && Auth::user()->isSuperUser()) { + if (auth()->user() && auth()->user()->isSuperUser()) { if ($actionlog->target) { $actionlog->company_id = $actionlog->target->company_id; } elseif ($actionlog->item) { $actionlog->company_id = $actionlog->item->company_id; } - } elseif (Auth::user() && Auth::user()->company) { - $actionlog->company_id = Auth::user()->company_id; + } elseif (auth()->user() && auth()->user()->company) { + $actionlog->company_id = auth()->user()->company_id; } }); } diff --git a/app/Models/Asset.php b/app/Models/Asset.php index 278ff15b07..cddca9802c 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -372,7 +372,7 @@ class Asset extends Depreciable } elseif (get_class($admin) === \App\Models\User::class) { $checkedOutBy = $admin; } else { - $checkedOutBy = Auth::user(); + $checkedOutBy = auth()->user(); } event(new CheckoutableCheckedOut($this, $target, $checkedOutBy, $note, $originalValues)); diff --git a/app/Models/AssetModel.php b/app/Models/AssetModel.php index c5fb9284aa..07e7a5e244 100755 --- a/app/Models/AssetModel.php +++ b/app/Models/AssetModel.php @@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Storage; use Watson\Validating\ValidatingTrait; +use \App\Presenters\AssetModelPresenter; /** * Model for Asset Models. Asset Models contain higher level @@ -20,7 +21,7 @@ class AssetModel extends SnipeModel { use HasFactory; use SoftDeletes; - protected $presenter = \App\Presenters\AssetModelPresenter::class; + protected $presenter = AssetModelPresenter::class; use Loggable, Requestable, Presentable; protected $table = 'models'; @@ -37,7 +38,7 @@ class AssetModel extends SnipeModel ]; /** - * Whether the model should inject it's identifier to the unique + * Whether the model should inject its identifier to the unique * validation rules before attempting validation. If this property * is not set in the model it will default to true. * diff --git a/app/Models/Category.php b/app/Models/Category.php index 17e41da1fc..f21038bab0 100755 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -171,15 +171,15 @@ class Category extends SnipeModel switch ($this->category_type) { case 'asset': - return $this->assets()->count(); + return $this->assets->count(); case 'accessory': - return $this->accessories()->count(); + return $this->accessories->count(); case 'component': - return $this->components()->count(); + return $this->components->count(); case 'consumable': - return $this->consumables()->count(); + return $this->consumables->count(); case 'license': - return $this->licenses()->count(); + return $this->licenses->count(); default: return 0; } diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index 9c501aaf63..b1c6c79141 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -70,7 +70,7 @@ class CheckoutAcceptance extends Model */ public function isCheckedOutTo(User $user) { - return $this->assignedTo->is($user); + return $this->assignedTo?->is($user); } /** diff --git a/app/Models/Company.php b/app/Models/Company.php index ea8a28b7e1..657b34390b 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -106,7 +106,7 @@ final class Company extends SnipeModel if (! static::isFullMultipleCompanySupportEnabled()) { return static::getIdFromInput($unescaped_input); } else { - $current_user = Auth::user(); + $current_user = auth()->user(); // Super users should be able to set a company to whatever they need if ($current_user->isSuperUser()) { @@ -157,24 +157,24 @@ final class Company extends SnipeModel } - if (Auth::user()) { + if (auth()->user()) { Log::warning('Companyable is '.$companyable); - $current_user_company_id = Auth::user()->company_id; + $current_user_company_id = auth()->user()->company_id; $companyable_company_id = $companyable->company_id; - return $current_user_company_id == null || $current_user_company_id == $companyable_company_id || Auth::user()->isSuperUser(); + return $current_user_company_id == null || $current_user_company_id == $companyable_company_id || auth()->user()->isSuperUser(); } } public static function isCurrentUserAuthorized() { - return (! static::isFullMultipleCompanySupportEnabled()) || (Auth::user()->isSuperUser()); + return (! static::isFullMultipleCompanySupportEnabled()) || (auth()->user()->isSuperUser()); } public static function canManageUsersCompanies() { - return ! static::isFullMultipleCompanySupportEnabled() || Auth::user()->isSuperUser() || - Auth::user()->company_id == null; + return ! static::isFullMultipleCompanySupportEnabled() || auth()->user()->isSuperUser() || + auth()->user()->company_id == null; } /** @@ -200,7 +200,7 @@ final class Company extends SnipeModel */ public static function getIdForUser($unescaped_input) { - if (! static::isFullMultipleCompanySupportEnabled() || Auth::user()->isSuperUser()) { + if (! static::isFullMultipleCompanySupportEnabled() || auth()->user()->isSuperUser()) { return static::getIdFromInput($unescaped_input); } else { return static::getIdForCurrentUser($unescaped_input); @@ -259,7 +259,7 @@ final class Company extends SnipeModel public static function scopeCompanyables($query, $column = 'company_id', $table_name = null) { // If not logged in and hitting this, assume we are on the command line and don't scope?' - if (! static::isFullMultipleCompanySupportEnabled() || (Auth::hasUser() && Auth::user()->isSuperUser()) || (! Auth::hasUser())) { + if (! static::isFullMultipleCompanySupportEnabled() || (Auth::hasUser() && auth()->user()->isSuperUser()) || (! Auth::hasUser())) { return $query; } else { return static::scopeCompanyablesDirectly($query, $column, $table_name); @@ -277,7 +277,7 @@ final class Company extends SnipeModel // Get the company ID of the logged-in user, or set it to null if there is no company associated with the user if (Auth::hasUser()) { - $company_id = Auth::user()->company_id; + $company_id = auth()->user()->company_id; } else { $company_id = null; } @@ -309,7 +309,7 @@ final class Company extends SnipeModel if (count($companyable_names) == 0) { throw new Exception('No Companyable Children to scope'); - } elseif (! static::isFullMultipleCompanySupportEnabled() || (Auth::hasUser() && Auth::user()->isSuperUser())) { + } elseif (! static::isFullMultipleCompanySupportEnabled() || (Auth::hasUser() && auth()->user()->isSuperUser())) { return $query; } else { $f = function ($q) { diff --git a/app/Models/Consumable.php b/app/Models/Consumable.php index 008dffa4ca..944ac5bfde 100644 --- a/app/Models/Consumable.php +++ b/app/Models/Consumable.php @@ -10,12 +10,21 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Facades\Storage; use Watson\Validating\ValidatingTrait; +use Illuminate\Database\Eloquent\Relations\Relation; +use App\Presenters\ConsumablePresenter; +use App\Models\Actionlog; +use App\Models\ConsumableAssignment; +use App\Models\User; +use App\Models\Location; +use App\Models\Manufacturer; +use App\Models\Supplier; +use App\Models\Category; class Consumable extends SnipeModel { use HasFactory; - protected $presenter = \App\Presenters\ConsumablePresenter::class; + protected $presenter = ConsumablePresenter::class; use CompanyableTrait; use Loggable, Presentable; use SoftDeletes; @@ -37,10 +46,10 @@ class Consumable extends SnipeModel */ public $rules = [ 'name' => 'required|min:3|max:255', - 'qty' => 'required|integer|min:0', + 'qty' => 'required|integer|min:0|max:99999', 'category_id' => 'required|integer', 'company_id' => 'integer|nullable', - 'min_amt' => 'integer|min:0|nullable', + 'min_amt' => 'integer|min:0|max:99999|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', 'purchase_date' => 'date_format:Y-m-d|nullable', ]; @@ -109,7 +118,7 @@ class Consumable extends SnipeModel */ public function uploads() { - return $this->hasMany(\App\Models\Actionlog::class, 'item_id') + return $this->hasMany(Actionlog::class, 'item_id') ->where('item_type', '=', self::class) ->where('action_type', '=', 'uploaded') ->whereNotNull('filename') @@ -147,7 +156,7 @@ class Consumable extends SnipeModel */ public function admin() { - return $this->belongsTo(\App\Models\User::class, 'user_id'); + return $this->belongsTo(User::class, 'user_id'); } /** @@ -159,7 +168,7 @@ class Consumable extends SnipeModel */ public function consumableAssignments() { - return $this->hasMany(\App\Models\ConsumableAssignment::class); + return $this->hasMany(ConsumableAssignment::class); } /** @@ -183,7 +192,7 @@ class Consumable extends SnipeModel */ public function manufacturer() { - return $this->belongsTo(\App\Models\Manufacturer::class, 'manufacturer_id'); + return $this->belongsTo(Manufacturer::class, 'manufacturer_id'); } /** @@ -195,7 +204,7 @@ class Consumable extends SnipeModel */ public function location() { - return $this->belongsTo(\App\Models\Location::class, 'location_id'); + return $this->belongsTo(Location::class, 'location_id'); } /** @@ -207,7 +216,7 @@ class Consumable extends SnipeModel */ public function category() { - return $this->belongsTo(\App\Models\Category::class, 'category_id'); + return $this->belongsTo(Category::class, 'category_id'); } @@ -220,7 +229,7 @@ class Consumable extends SnipeModel */ public function assetlog() { - return $this->hasMany(\App\Models\Actionlog::class, 'item_id')->where('item_type', self::class)->orderBy('created_at', 'desc')->withTrashed(); + return $this->hasMany(Actionlog::class, 'item_id')->where('item_type', self::class)->orderBy('created_at', 'desc')->withTrashed(); } /** @@ -244,11 +253,10 @@ class Consumable extends SnipeModel * * @author [A. Gianotto] [] * @since [v3.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation */ - public function users() + public function users() : Relation { - return $this->belongsToMany(\App\Models\User::class, 'consumables_users', 'consumable_id', 'assigned_to')->withPivot('user_id')->withTrashed()->withTimestamps(); + return $this->belongsToMany(User::class, 'consumables_users', 'consumable_id', 'assigned_to')->withPivot('user_id')->withTrashed()->withTimestamps(); } /** @@ -260,7 +268,7 @@ class Consumable extends SnipeModel */ public function supplier() { - return $this->belongsTo(\App\Models\Supplier::class, 'supplier_id'); + return $this->belongsTo(Supplier::class, 'supplier_id'); } @@ -317,10 +325,7 @@ class Consumable extends SnipeModel */ public function numCheckedOut() { - $checkedout = 0; - $checkedout = $this->users->count(); - - return $checkedout; + return $this->consumables_users_count ?? $this->users()->count(); } /** @@ -332,7 +337,7 @@ class Consumable extends SnipeModel */ public function numRemaining() { - $checkedout = $this->users->count(); + $checkedout = $this->numCheckedOut(); $total = $this->qty; $remaining = $total - $checkedout; diff --git a/app/Models/ConsumableAssignment.php b/app/Models/ConsumableAssignment.php index 1e21a7f7d2..db0cfa4bd6 100644 --- a/app/Models/ConsumableAssignment.php +++ b/app/Models/ConsumableAssignment.php @@ -3,13 +3,19 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Watson\Validating\ValidatingTrait; class ConsumableAssignment extends Model { use CompanyableTrait; + use ValidatingTrait; protected $table = 'consumables_users'; + public $rules = [ + 'assigned_to' => 'required|exists:users,id', + ]; + public function consumable() { return $this->belongsTo(\App\Models\Consumable::class); diff --git a/app/Models/Ldap.php b/app/Models/Ldap.php index dd3920b56a..ecce46d82a 100644 --- a/app/Models/Ldap.php +++ b/app/Models/Ldap.php @@ -229,6 +229,7 @@ class Ldap extends Model $item['department'] = $ldapattributes[$ldap_result_dept][0] ?? ''; $item['manager'] = $ldapattributes[$ldap_result_manager][0] ?? ''; $item['location'] = $ldapattributes[$ldap_result_location][0] ?? ''; + $item['locale'] = app()->getLocale(); return $item; } @@ -239,7 +240,7 @@ class Ldap extends Model * @author [A. Gianotto] [] * @since [v3.0] * @param $ldapatttibutes - * @return array|bool + * @return User | bool */ public static function createUserFromLdap($ldapatttibutes, $password) { @@ -252,6 +253,7 @@ class Ldap extends Model $user->last_name = $item['lastname']; $user->username = $item['username']; $user->email = $item['email']; + $user->locale = $item['locale']; $user->password = $user->noPassword(); if (Setting::getSettings()->ldap_pw_sync == '1') { diff --git a/app/Models/Loggable.php b/app/Models/Loggable.php index f855b41253..ae5d554882 100644 --- a/app/Models/Loggable.php +++ b/app/Models/Loggable.php @@ -36,8 +36,8 @@ trait Loggable { $log = new Actionlog; $log = $this->determineLogItemType($log); - if (Auth::user()) { - $log->user_id = Auth::user()->id; + if (auth()->user()) { + $log->user_id = auth()->id(); } if (! isset($target)) { @@ -148,8 +148,8 @@ trait Loggable $log->action_date = date('Y-m-d H:i:s'); } - if (Auth::user()) { - $log->user_id = Auth::user()->id; + if (auth()->user()) { + $log->user_id = auth()->id(); } $changed = []; @@ -225,7 +225,7 @@ trait Loggable } $log->location_id = ($location_id) ? $location_id : null; $log->note = $note; - $log->user_id = Auth::user()->id; + $log->user_id = auth()->id(); $log->filename = $filename; $log->logaction('audit'); @@ -249,8 +249,8 @@ trait Loggable public function logCreate($note = null) { $user_id = -1; - if (Auth::user()) { - $user_id = Auth::user()->id; + if (auth()->user()) { + $user_id = auth()->id(); } $log = new Actionlog; if (static::class == LicenseSeat::class) { @@ -284,7 +284,7 @@ trait Loggable $log->item_type = static::class; $log->item_id = $this->id; } - $log->user_id = Auth::user()->id; + $log->user_id = auth()->id(); $log->note = $note; $log->target_id = null; $log->created_at = date('Y-m-d H:i:s'); diff --git a/app/Models/Manufacturer.php b/app/Models/Manufacturer.php index 5408d50c36..85907f7ddb 100755 --- a/app/Models/Manufacturer.php +++ b/app/Models/Manufacturer.php @@ -22,9 +22,9 @@ class Manufacturer extends SnipeModel // Declare the rules for the form validation protected $rules = [ 'name' => 'required|min:2|max:255|unique:manufacturers,name,NULL,id,deleted_at,NULL', - 'url' => 'url|nullable', + 'url' => 'nullable|starts_with:http://,https://,afp://,facetime://,file://,irc://', 'support_email' => 'email|nullable', - 'support_url' => 'nullable|url', + 'support_url' => 'nullable|starts_with:http://,https://,afp://,facetime://,file://,irc://', 'warranty_lookup_url' => 'nullable|starts_with:http://,https://,afp://,facetime://,file://,irc://' ]; diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 30600aea56..1a25735e0d 100755 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -9,6 +9,7 @@ use Illuminate\Support\Collection; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Cache; use App\Helpers\Helper; +use Illuminate\Support\Facades\Storage; use Watson\Validating\ValidatingTrait; use Illuminate\Support\Facades\Log; diff --git a/app/Models/User.php b/app/Models/User.php index 30e32061ed..a93eb26561 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -481,8 +481,6 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo /** * Establishes the user -> uploads relationship * - * @todo I don't think we use this? - * * @author A. Gianotto * @since [v3.0] * @return \Illuminate\Database\Eloquent\Relations\Relation @@ -496,6 +494,21 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo ->orderBy('created_at', 'desc'); } + /** + * Establishes the user -> acceptances relationship + * + * @author A. Gianotto + * @since [v7.0.7] + * @return \Illuminate\Database\Eloquent\Relations\Relation + */ + public function acceptances() + { + return $this->hasMany(\App\Models\Actionlog::class, 'target_id') + ->where('target_type', self::class) + ->where('action_type', '=', 'accepted') + ->orderBy('created_at', 'desc'); + } + /** * Establishes the user -> requested assets relationship * diff --git a/app/Notifications/CheckoutAccessoryNotification.php b/app/Notifications/CheckoutAccessoryNotification.php index 803b697e86..721ba7f6a4 100644 --- a/app/Notifications/CheckoutAccessoryNotification.php +++ b/app/Notifications/CheckoutAccessoryNotification.php @@ -30,6 +30,7 @@ class CheckoutAccessoryNotification extends Notification $this->item = $accessory; $this->admin = $checkedOutBy; $this->note = $note; + $this->checkout_qty = $accessory->checkout_qty; $this->target = $checkedOutTo; $this->acceptance = $acceptance; $this->settings = Setting::getSettings(); @@ -107,7 +108,7 @@ class CheckoutAccessoryNotification extends Notification ->from($botname) ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { - $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) + $attachment->title(htmlspecialchars_decode($this->checkout_qty.' x '.$item->present()->name), $item->present()->viewUrl()) ->fields($fields) ->content($note); }); @@ -127,6 +128,7 @@ class CheckoutAccessoryNotification extends Notification ->addStartGroupToSection('activityText') ->fact(htmlspecialchars_decode($item->present()->name), '', 'activityTitle') ->fact(trans('mail.assigned_to'), $target->present()->name) + ->fact(trans('general.qty'), $this->checkout_qty) ->fact(trans('mail.checkedout_from'), $item->location->name ? $item->location->name : '') ->fact(trans('mail.Accessory_Checkout_Notification') . " by ", $admin->present()->fullName()) ->fact(trans('admin/consumables/general.remaining'), $item->numRemaining()) @@ -184,6 +186,7 @@ class CheckoutAccessoryNotification extends Notification 'eula' => $eula, 'req_accept' => $req_accept, 'accept_url' => $accept_url, + 'checkout_qty' => $this->checkout_qty, ]) ->subject(trans('mail.Confirm_accessory_delivery')); } diff --git a/app/Notifications/UnacceptedAssetReminderNotification.php b/app/Notifications/UnacceptedAssetReminderNotification.php new file mode 100644 index 0000000000..e05b007033 --- /dev/null +++ b/app/Notifications/UnacceptedAssetReminderNotification.php @@ -0,0 +1,73 @@ +count = $count; + $this->target = $checkout_info['acceptance']->assignedTo; + $this->acceptance = $checkout_info['acceptance']; + + } + + /** + * Get the notification's delivery channels. + * + * @param mixed $notifiable + * @return array + */ + public function via() + { + return ['mail']; + } + + /** + * Get the mail representation of the notification. + * + * @param mixed $notifiable + * @return \Illuminate\Notifications\Messages\MailMessage + */ + public function toMail() + { + $accept_url = route('account.accept'); + $message = (new MailMessage)->markdown('notifications.markdown.asset-reminder', + [ + 'count' => $this->count, + 'assigned_to' => $this->target->present()->fullName, + 'link' => route('account.accept'), + 'accept_url' => $accept_url, + ]) + ->subject(trans('mail.unaccepted_asset_reminder')); + + return $message; + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + // + ]; + } +} diff --git a/app/Observers/ConsumableObserver.php b/app/Observers/ConsumableObserver.php index 08c56d2ee2..377995ebb9 100644 --- a/app/Observers/ConsumableObserver.php +++ b/app/Observers/ConsumableObserver.php @@ -5,6 +5,8 @@ namespace App\Observers; use App\Models\Actionlog; use App\Models\Consumable; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Storage; class ConsumableObserver { @@ -16,12 +18,26 @@ class ConsumableObserver */ public function updated(Consumable $consumable) { - $logAction = new Actionlog(); - $logAction->item_type = Consumable::class; - $logAction->item_id = $consumable->id; - $logAction->created_at = date('Y-m-d H:i:s'); - $logAction->user_id = Auth::id(); - $logAction->logaction('update'); + + $changed = []; + + foreach ($consumable->getRawOriginal() as $key => $value) { + // Check and see if the value changed + if ($consumable->getRawOriginal()[$key] != $consumable->getAttributes()[$key]) { + $changed[$key]['old'] = $consumable->getRawOriginal()[$key]; + $changed[$key]['new'] = $consumable->getAttributes()[$key]; + } + } + + if (count($changed) > 0) { + $logAction = new Actionlog(); + $logAction->item_type = Consumable::class; + $logAction->item_id = $consumable->id; + $logAction->created_at = date('Y-m-d H:i:s'); + $logAction->user_id = Auth::id(); + $logAction->log_meta = json_encode($changed); + $logAction->logaction('update'); + } } /** @@ -52,6 +68,32 @@ class ConsumableObserver */ public function deleting(Consumable $consumable) { + + $consumable->users()->detach(); + $uploads = $consumable->uploads; + + foreach ($uploads as $file) { + try { + Storage::delete('private_uploads/consumables/'.$file->filename); + $file->delete(); + } catch (\Exception $e) { + Log::info($e); + } + } + + + + try { + Storage::disk('public')->delete('consumables/'.$consumable->image); + } catch (\Exception $e) { + Log::info($e); + } + + $consumable->image = null; + $consumable->save(); + + + $logAction = new Actionlog(); $logAction->item_type = Consumable::class; $logAction->item_id = $consumable->id; diff --git a/app/Presenters/ActionlogPresenter.php b/app/Presenters/ActionlogPresenter.php index 2794b6c5fb..ebbe3d7823 100644 --- a/app/Presenters/ActionlogPresenter.php +++ b/app/Presenters/ActionlogPresenter.php @@ -75,7 +75,7 @@ class ActionlogPresenter extends Presenter } if ($this->actionType()=='delete') { - return 'fa-solid fa-user-xmark'; + return 'fa-solid fa-trash'; } if ($this->actionType()=='update') { diff --git a/app/Presenters/AssetPresenter.php b/app/Presenters/AssetPresenter.php index 163ee1b606..b86135f33b 100644 --- a/app/Presenters/AssetPresenter.php +++ b/app/Presenters/AssetPresenter.php @@ -556,13 +556,12 @@ class AssetPresenter extends Presenter } /** - * Used to take user created warranty URL and dynamically fill in the needed values per asset + * Used to take user created URL and dynamically fill in the needed values per asset * @return string */ - public function dynamicWarrantyUrl() + public function dynamicUrl($dynamic_url) { - $warranty_lookup_url = $this->model->model->manufacturer->warranty_lookup_url; - $url = (str_replace('{LOCALE}',\App\Models\Setting::getSettings()->locale, $warranty_lookup_url)); + $url = (str_replace('{LOCALE}',\App\Models\Setting::getSettings()->locale, $dynamic_url)); $url = (str_replace('{SERIAL}', urlencode($this->model->serial), $url)); $url = (str_replace('{MODEL_NAME}', urlencode($this->model->model->name), $url)); $url = (str_replace('{MODEL_NUMBER}', urlencode($this->model->model->model_number), $url)); diff --git a/app/Presenters/UserPresenter.php b/app/Presenters/UserPresenter.php index d0f5c13fec..7054676a93 100644 --- a/app/Presenters/UserPresenter.php +++ b/app/Presenters/UserPresenter.php @@ -432,6 +432,8 @@ class UserPresenter extends Presenter */ public function gravatar() { + + // User's specific avatar if ($this->avatar) { // Check if it's a google avatar or some external avatar @@ -443,21 +445,31 @@ class UserPresenter extends Presenter return Storage::disk('public')->url('avatars/'.e($this->avatar)); } - if (Setting::getSettings()->load_remote == '1') { - if ($this->model->gravatar != '') { + // If the default is system default + if (Setting::getSettings()->default_avatar == 'default.png') { + return Storage::disk('public')->url('default.png'); + } + + // If there is a custom default avatar + if (Setting::getSettings()->default_avatar != '') { + return Storage::disk('public')->url('avatars/'.e(Setting::getSettings()->default_avatar)); + } + + // If there is no default and no custom avatar, check for gravatar + if ((Setting::getSettings()->load_remote == '1') && (Setting::getSettings()->default_avatar == '')) { + + if ($this->model->gravatar != '') { $gravatar = md5(strtolower(trim($this->model->gravatar))); return '//gravatar.com/avatar/'.$gravatar; } elseif ($this->email != '') { - $gravatar = md5(strtolower(trim($this->email))); return '//gravatar.com/avatar/'.$gravatar; } } - // Set a fun, gender-neutral default icon - return config('app.url').'/img/default-sm.png'; + return false; } /** diff --git a/app/Providers/LivewireServiceProvider.php b/app/Providers/LivewireServiceProvider.php new file mode 100644 index 0000000000..9fd0fd561f --- /dev/null +++ b/app/Providers/LivewireServiceProvider.php @@ -0,0 +1,32 @@ +get('expected_checkin'); } - $admin = Auth::user(); + $admin = auth()->user(); $note = e($request->get('note')); diff --git a/config/app.php b/config/app.php index f17b856d05..9de8b63c6d 100755 --- a/config/app.php +++ b/config/app.php @@ -242,7 +242,7 @@ return [ | */ - 'min_php' => '7.4.0', + 'min_php' => '8.1.2', /* @@ -311,8 +311,9 @@ return [ App\Providers\ValidationServiceProvider::class, /* - * Custom service provider + * Custom Service Providers... */ + App\Providers\LivewireServiceProvider::class, App\Providers\MacroServiceProvider::class, App\Providers\SamlServiceProvider::class, @@ -339,7 +340,7 @@ return [ 'Cache' => Illuminate\Support\Facades\Cache::class, 'Config' => Illuminate\Support\Facades\Config::class, 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\FacadesCrypt::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, 'Date' => Illuminate\Support\Facades\Date::class, 'DB' => Illuminate\Support\Facades\DB::class, 'Eloquent' => Illuminate\Database\Eloquent\Model::class, @@ -426,5 +427,5 @@ return [ */ 'escape_formulas' => env('CSV_ESCAPE_FORMULAS', true), - + ]; diff --git a/config/livewire.php b/config/livewire.php index 8cc482183b..d9db384bd6 100644 --- a/config/livewire.php +++ b/config/livewire.php @@ -157,4 +157,21 @@ return [ */ 'pagination_theme' => 'tailwind', + + /* + |--------------------------------------------------------------------------- + | URL Prefix + |--------------------------------------------------------------------------- + | + | By default, Livewire sends network requests to {app.com}/livewire/update + | while javascript assets are served via {app.com}/livewire/livewire.js + | If you need to adjust the prefix of those urls you can do it below. + | + | Defining a prefix will result in the following url + | {app.com}/{prefix}/livewire/{update|livewire.js} + | Note: do not include the leading or trailing / + | + */ + + 'url_prefix' => env('LIVEWIRE_URL_PREFIX', null), ]; diff --git a/config/version.php b/config/version.php index 20e9d1696c..2713cc35cb 100644 --- a/config/version.php +++ b/config/version.php @@ -1,10 +1,10 @@ 'v7.0.7', - 'full_app_version' => 'v7.0.7 - build 14172-ge50296870', - 'build_version' => '14172', + 'app_version' => 'v7.0.9', + 'full_app_version' => 'v7.0.9 - build 14485-ga98ad76c6', + 'build_version' => '14485', 'prerelease_version' => '', - 'hash_version' => 'ge50296870', - 'full_hash' => 'v7.0.7-53-ge50296870', + 'hash_version' => 'ga98ad76c6', + 'full_hash' => 'v7.0.9-112-ga98ad76c6', 'branch' => 'develop', ); \ No newline at end of file diff --git a/database/factories/ActionlogFactory.php b/database/factories/ActionlogFactory.php index 1a4007888c..a88166d14b 100644 --- a/database/factories/ActionlogFactory.php +++ b/database/factories/ActionlogFactory.php @@ -105,4 +105,64 @@ class ActionlogFactory extends Factory ]; }); } + + public function filesUploaded() + { + return $this->state(function () { + + return [ + 'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'action_type' => 'uploaded', + 'item_type' => User::class, + 'filename' => $this->faker->unixTime('now'), + ]; + }); + } + + public function acceptedSignature() + { + return $this->state(function () { + + $asset = Asset::factory()->create(); + + return [ + 'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'action_type' => 'accepted', + 'item_id' => $asset->id, + 'item_type' => Asset::class, + 'target_type' => User::class, + 'accept_signature' => $this->faker->unixTime('now'), + ]; + }); + } + + public function acceptedEula() + { + return $this->state(function () { + + $asset = Asset::factory()->create(); + + return [ + 'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'action_type' => 'accepted', + 'item_id' => $asset->id, + 'item_type' => Asset::class, + 'target_type' => User::class, + 'filename' => $this->faker->unixTime('now'), + ]; + }); + } + + public function userUpdated() + { + return $this->state(function () { + + return [ + 'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'action_type' => 'update', + 'target_type' => User::class, + 'item_type' => User::class, + ]; + }); + } } diff --git a/database/factories/AssetFactory.php b/database/factories/AssetFactory.php index a787ffb417..b1255baeee 100644 --- a/database/factories/AssetFactory.php +++ b/database/factories/AssetFactory.php @@ -301,11 +301,11 @@ class AssetFactory extends Factory }); } - public function assignedToLocation() + public function assignedToLocation(Location $location = null) { - return $this->state(function () { + return $this->state(function () use ($location) { return [ - 'assigned_to' => Location::factory(), + 'assigned_to' => $location->id ?? Location::factory(), 'assigned_type' => Location::class, ]; }); diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php index fe6bc255b7..2a89c12892 100644 --- a/database/factories/CategoryFactory.php +++ b/database/factories/CategoryFactory.php @@ -178,4 +178,32 @@ class CategoryFactory extends Factory 'category_type' => 'accessory', ]); } + + public function forAssets() + { + return $this->state([ + 'category_type' => 'asset', + ]); + } + + public function forLicenses() + { + return $this->state([ + 'category_type' => 'license', + ]); + } + + public function forComponents() + { + return $this->state([ + 'category_type' => 'component', + ]); + } + + public function forConsumables() + { + return $this->state([ + 'category_type' => 'consumable', + ]); + } } diff --git a/database/factories/ConsumableFactory.php b/database/factories/ConsumableFactory.php index d9aec36afa..ca3a2faf95 100644 --- a/database/factories/ConsumableFactory.php +++ b/database/factories/ConsumableFactory.php @@ -7,6 +7,7 @@ use App\Models\Company; use App\Models\Consumable; use App\Models\Manufacturer; use App\Models\User; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\Factory; use App\Models\Supplier; @@ -116,4 +117,16 @@ class ConsumableFactory extends Factory $consumable->category->update(['require_acceptance' => 1]); }); } + + public function checkedOutToUser(User $user = null) + { + return $this->afterCreating(function (Consumable $consumable) use ($user) { + $consumable->users()->attach($consumable->id, [ + 'consumable_id' => $consumable->id, + 'created_at' => Carbon::now(), + 'user_id' => User::factory()->create()->id, + 'assigned_to' => $user->id ?? User::factory()->create()->id, + ]); + }); + } } diff --git a/database/factories/LocationFactory.php b/database/factories/LocationFactory.php index 94c0efe966..3aa0577bd8 100644 --- a/database/factories/LocationFactory.php +++ b/database/factories/LocationFactory.php @@ -25,9 +25,19 @@ class LocationFactory extends Factory 'image' => rand(1, 9).'.jpg', ]; } - + + // one of these can eventuall go away - left temporarily for conflict resolution public function deleted(): self { return $this->state(['deleted_at' => $this->faker->dateTime()]); } + + public function deletedLocation() + { + return $this->state(function () { + return [ + 'deleted_at' => $this->faker->dateTime(), + ]; + }); + } } diff --git a/database/migrations/2024_07_04_103729_add_default_avatar_to_settings.php b/database/migrations/2024_07_04_103729_add_default_avatar_to_settings.php new file mode 100644 index 0000000000..423f45e9ee --- /dev/null +++ b/database/migrations/2024_07_04_103729_add_default_avatar_to_settings.php @@ -0,0 +1,28 @@ +string('default_avatar')->after('favicon')->default('default.png')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('settings', function (Blueprint $table) { + $table->dropColumn('default_avatar'); + }); + } +}; diff --git a/database/migrations/2024_07_23_172032_change_no__n_o_to_nb__n_o.php b/database/migrations/2024_07_23_172032_change_no__n_o_to_nb__n_o.php new file mode 100644 index 0000000000..6ed7e2b3a1 --- /dev/null +++ b/database/migrations/2024_07_23_172032_change_no__n_o_to_nb__n_o.php @@ -0,0 +1,28 @@ +update(['locale' => 'nb-NO']); + User::where('locale', 'no-NO')->update(['locale' => 'nb-NO']); + + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + + } +}; diff --git a/database/seeders/SettingsSeeder.php b/database/seeders/SettingsSeeder.php index c90ce52d07..b913caf6a4 100644 --- a/database/seeders/SettingsSeeder.php +++ b/database/seeders/SettingsSeeder.php @@ -36,6 +36,7 @@ class SettingsSeeder extends Seeder $settings->version_footer = 'on'; $settings->support_footer = 'on'; $settings->pwd_secure_min = '8'; + $settings->default_avatar = 'default.png'; $settings->save(); if ($user = User::where('username', '=', 'admin')->first()) { diff --git a/docker/entrypoint_alpine.sh b/docker/entrypoint_alpine.sh index 783b50b69c..c1a75b0cbd 100644 --- a/docker/entrypoint_alpine.sh +++ b/docker/entrypoint_alpine.sh @@ -39,6 +39,14 @@ chown -R apache:root /var/lib/snipeit/data/* chown -R apache:root /var/lib/snipeit/dumps chown -R apache:root /var/lib/snipeit/keys +# Fix php settings +if [ ! -z "${PHP_UPLOAD_LIMIT}" ] +then + echo "Changing upload limit to ${PHP_UPLOAD_LIMIT}" + sed -i "s/^upload_max_filesize.*/upload_max_filesize = ${PHP_UPLOAD_LIMIT}M/" /etc/php*/php.ini + sed -i "s/^post_max_size.*/post_max_size = ${PHP_UPLOAD_LIMIT}M/" /etc/php*/php.ini +fi + # If the Oauth DB files are not present copy the vendor files over to the db migrations if [ ! -f "/var/www/html/database/migrations/*create_oauth*" ] then diff --git a/package-lock.json b/package-lock.json index f8eddcc97b..8ede991415 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "dependencies": { "@fortawesome/fontawesome-free": "^6.5.2", - "acorn": "^8.11.2", + "acorn": "^8.12.0", "acorn-import-assertions": "^1.9.0", "admin-lte": "^2.4.18", "ajv": "^6.12.6", @@ -15,7 +15,7 @@ "bootstrap-colorpicker": "^2.5.3", "bootstrap-datepicker": "^1.10.0", "bootstrap-less": "^3.3.8", - "bootstrap-table": "1.22.5", + "bootstrap-table": "1.23.0", "chart.js": "^2.9.4", "clipboard": "^2.0.11", "css-loader": "^5.0.0", @@ -23,7 +23,7 @@ "imagemin": "^8.0.1", "jquery-slimscroll": "^1.3.8", "jquery-ui": "^1.13.3", - "jquery-validation": "^1.20.0", + "jquery-validation": "^1.20.1", "jquery.iframe-transport": "^1.0.0", "jspdf-autotable": "^3.8.2", "less": "^4.2.0", @@ -36,7 +36,7 @@ "signature_pad": "^4.2.0", "tableexport.jquery.plugin": "1.30.0", "tether": "^1.4.0", - "webpack": "^5.90.2" + "webpack": "^5.92.0" }, "devDependencies": { "all-contributors-cli": "^6.26.1", @@ -2481,8 +2481,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "license": "MIT", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "bin": { "acorn": "bin/acorn" }, @@ -2497,6 +2498,14 @@ "acorn": "^8" } }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-node": { "version": "1.8.2", "license": "Apache-2.0", @@ -3683,9 +3692,9 @@ "license": "MIT" }, "node_modules/bootstrap-table": { - "version": "1.22.5", - "resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.22.5.tgz", - "integrity": "sha512-iaQBfZzNuMRVughNYdonPGvgL6A7xfsruqYKaSuDuUWqQDTt8WvTBVwV61XiDv2aks7RaAQoZhoi2jo9nF6U7w==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.23.0.tgz", + "integrity": "sha512-fAIhu2CAqMsZWkzeFxXyh0yQA2DMBdB0tCdr1iF6bKr3c/Hf79cw5PykNt7NdtqLz/a0p192S8EKyT5lG4yrpw==", "peerDependencies": { "jquery": "3" } @@ -5291,8 +5300,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "license": "MIT", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -7054,8 +7064,9 @@ } }, "node_modules/jquery-validation": { - "version": "1.20.0", - "license": "MIT", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.1.tgz", + "integrity": "sha512-rbBy36Xe5WBCO8OLdZLhPhVjb70KayuoX3WYRNwNpy9TXuUadhNTcaipr6jEIacn+V4jgXB2xUJl6hYzJxr5jw==", "peerDependencies": { "jquery": "^1.7 || ^2.0 || ^3.1" } @@ -10394,7 +10405,8 @@ }, "node_modules/tapable": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "engines": { "node": ">=6" } @@ -10857,8 +10869,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.91.0", - "license": "MIT", + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", @@ -10866,10 +10879,10 @@ "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", diff --git a/package.json b/package.json index 9f1ce36f2b..e933aae374 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@fortawesome/fontawesome-free": "^6.5.2", - "acorn": "^8.11.2", + "acorn": "^8.12.0", "acorn-import-assertions": "^1.9.0", "admin-lte": "^2.4.18", "ajv": "^6.12.6", @@ -35,7 +35,7 @@ "bootstrap-colorpicker": "^2.5.3", "bootstrap-datepicker": "^1.10.0", "bootstrap-less": "^3.3.8", - "bootstrap-table": "1.22.5", + "bootstrap-table": "1.23.0", "chart.js": "^2.9.4", "clipboard": "^2.0.11", "css-loader": "^5.0.0", @@ -43,7 +43,7 @@ "imagemin": "^8.0.1", "jquery-slimscroll": "^1.3.8", "jquery-ui": "^1.13.3", - "jquery-validation": "^1.20.0", + "jquery-validation": "^1.20.1", "jquery.iframe-transport": "^1.0.0", "jspdf-autotable": "^3.8.2", "less": "^4.2.0", @@ -56,6 +56,6 @@ "signature_pad": "^4.2.0", "tableexport.jquery.plugin": "1.30.0", "tether": "^1.4.0", - "webpack": "^5.90.2" + "webpack": "^5.92.0" } } diff --git a/public/css/dist/all.css b/public/css/dist/all.css index 48cf0fefe1..4ee80b33c9 100644 --- a/public/css/dist/all.css +++ b/public/css/dist/all.css @@ -21122,394 +21122,7 @@ hr { .ekko-lightbox{display:-ms-flexbox!important;display:flex!important;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-right:0!important}.ekko-lightbox-container{position:relative}.ekko-lightbox-container>div.ekko-lightbox-item{position:absolute;top:0;left:0;bottom:0;right:0;width:100%}.ekko-lightbox iframe{width:100%;height:100%}.ekko-lightbox-nav-overlay{z-index:1;position:absolute;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex}.ekko-lightbox-nav-overlay a{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0;transition:opacity .5s;color:#fff;font-size:30px;z-index:1}.ekko-lightbox-nav-overlay a>*{-ms-flex-positive:1;flex-grow:1}.ekko-lightbox-nav-overlay a>:focus{outline:none}.ekko-lightbox-nav-overlay a span{padding:0 30px}.ekko-lightbox-nav-overlay a:last-child span{text-align:right}.ekko-lightbox-nav-overlay a:hover{text-decoration:none}.ekko-lightbox-nav-overlay a:focus{outline:none}.ekko-lightbox-nav-overlay a.disabled{cursor:default;visibility:hidden}.ekko-lightbox a:hover{opacity:1;text-decoration:none}.ekko-lightbox .modal-dialog{display:none}.ekko-lightbox .modal-footer{text-align:left}.ekko-lightbox-loader{position:absolute;top:0;left:0;bottom:0;right:0;width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.ekko-lightbox-loader>div{width:40px;height:40px;position:relative;text-align:center}.ekko-lightbox-loader>div>div{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;animation:a 2s infinite ease-in-out}.ekko-lightbox-loader>div>div:last-child{animation-delay:-1s}.modal-dialog .ekko-lightbox-loader>div>div{background-color:#333}@keyframes a{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}} /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVra28tbGlnaHRib3guY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQ0UsOEJBQXlCLEFBQXpCLHVCQUF5QixBQUN6QixzQkFBb0IsQUFBcEIsbUJBQW9CLEFBQ3BCLHFCQUF3QixBQUF4Qix1QkFBd0IsQUFDeEIseUJBQTZCLENBQzlCLEFBQ0QseUJBQ0UsaUJBQW1CLENBQ3BCLEFBQ0QsZ0RBQ0Usa0JBQW1CLEFBQ25CLE1BQU8sQUFDUCxPQUFRLEFBQ1IsU0FBVSxBQUNWLFFBQVMsQUFDVCxVQUFZLENBQ2IsQUFDRCxzQkFDRSxXQUFZLEFBQ1osV0FBYSxDQUNkLEFBQ0QsMkJBQ0UsVUFBYSxBQUNiLGtCQUFtQixBQUNuQixNQUFPLEFBQ1AsT0FBUSxBQUNSLFdBQVksQUFDWixZQUFhLEFBQ2Isb0JBQWMsQUFBZCxZQUFjLENBQ2YsQUFDRCw2QkFDRSxXQUFRLEFBQVIsT0FBUSxBQUNSLG9CQUFjLEFBQWQsYUFBYyxBQUNkLHNCQUFvQixBQUFwQixtQkFBb0IsQUFDcEIsVUFBVyxBQUNYLHVCQUF5QixBQUN6QixXQUFZLEFBQ1osZUFBZ0IsQUFDaEIsU0FBYSxDQUNkLEFBQ0QsK0JBQ0Usb0JBQWEsQUFBYixXQUFhLENBQ2QsQUFDRCxvQ0FDRSxZQUFjLENBQ2YsQUFDRCxrQ0FDRSxjQUFnQixDQUNqQixBQUNELDZDQUNFLGdCQUFrQixDQUNuQixBQUNELG1DQUNFLG9CQUFzQixDQUN2QixBQUNELG1DQUNFLFlBQWMsQ0FDZixBQUNELHNDQUNFLGVBQWdCLEFBQ2hCLGlCQUFtQixDQUNwQixBQUNELHVCQUNFLFVBQVcsQUFDWCxvQkFBc0IsQ0FDdkIsQUFDRCw2QkFDRSxZQUFjLENBQ2YsQUFDRCw2QkFDRSxlQUFpQixDQUNsQixBQUNELHNCQUNFLGtCQUFtQixBQUNuQixNQUFPLEFBQ1AsT0FBUSxBQUNSLFNBQVUsQUFDVixRQUFTLEFBQ1QsV0FBWSxBQUNaLG9CQUFjLEFBQWQsYUFBYyxBQUVkLDBCQUF1QixBQUF2QixzQkFBdUIsQUFFdkIscUJBQXdCLEFBQXhCLHVCQUF3QixBQUV4QixzQkFBb0IsQUFBcEIsa0JBQW9CLENBQ3JCLEFBQ0QsMEJBQ0UsV0FBWSxBQUNaLFlBQWEsQUFDYixrQkFBbUIsQUFDbkIsaUJBQW1CLENBQ3BCLEFBQ0QsOEJBQ0UsV0FBWSxBQUNaLFlBQWEsQUFDYixrQkFBbUIsQUFDbkIsc0JBQXVCLEFBQ3ZCLFdBQWEsQUFDYixrQkFBbUIsQUFDbkIsTUFBTyxBQUNQLE9BQVEsQUFDUixtQ0FBNkMsQ0FDOUMsQUFDRCx5Q0FDRSxtQkFBcUIsQ0FDdEIsQUFDRCw0Q0FDRSxxQkFBdUIsQ0FDeEIsQUFVRCxhQUNFLE1BRUUsbUJBQW9CLEFBQ3BCLDBCQUE0QixDQUM3QixBQUNELElBQ0UsbUJBQW9CLEFBQ3BCLDBCQUE0QixDQUM3QixDQUNGIiwiZmlsZSI6ImVra28tbGlnaHRib3guY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmVra28tbGlnaHRib3gge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLXJpZ2h0OiAwcHghaW1wb3J0YW50O1xufVxuLmVra28tbGlnaHRib3gtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmVra28tbGlnaHRib3gtY29udGFpbmVyID4gZGl2LmVra28tbGlnaHRib3gtaXRlbSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5la2tvLWxpZ2h0Ym94IGlmcmFtZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSB7XG4gIHotaW5kZXg6IDEwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhIHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAzMHB4O1xuICB6LWluZGV4OiAxMDA7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhID4gKiB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGEgPiAqOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGEgc3BhbiB7XG4gIHBhZGRpbmc6IDAgMzBweDtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGE6bGFzdC1jaGlsZCBzcGFuIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmVra28tbGlnaHRib3gtbmF2LW92ZXJsYXkgYTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhLmRpc2FibGVkIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uZWtrby1saWdodGJveCBhOmhvdmVyIHtcbiAgb3BhY2l0eTogMTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmVra28tbGlnaHRib3ggLm1vZGFsLWRpYWxvZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uZWtrby1saWdodGJveCAubW9kYWwtZm9vdGVyIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5la2tvLWxpZ2h0Ym94LWxvYWRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgLyogZXN0YWJsaXNoIGZsZXggY29udGFpbmVyICovXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC8qIG1ha2UgbWFpbiBheGlzIHZlcnRpY2FsICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBjZW50ZXIgaXRlbXMgdmVydGljYWxseSwgaW4gdGhpcyBjYXNlICovXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYge1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5la2tvLWxpZ2h0Ym94LWxvYWRlciA+IGRpdiA+IGRpdiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC42O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYW5pbWF0aW9uOiBzay1ib3VuY2UgMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7XG59XG4uZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYgPiBkaXY6bGFzdC1jaGlsZCB7XG4gIGFuaW1hdGlvbi1kZWxheTogLTFzO1xufVxuLm1vZGFsLWRpYWxvZyAuZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYgPiBkaXYge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuQC13ZWJraXQta2V5ZnJhbWVzIHNrLWJvdW5jZSB7XG4gIDAlLFxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2stYm91bmNlIHtcbiAgMCUsXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cbiJdfQ== */ -/** - * @author zhixin wen - * version: 1.22.5 - * https://github.com/wenzhixin/bootstrap-table/ - */ -/* stylelint-disable annotation-no-unknown, max-line-length */ -/* stylelint-enable annotation-no-unknown, max-line-length */ -.bootstrap-table .fixed-table-toolbar::after { - content: ""; - display: block; - clear: both; -} - -.bootstrap-table .fixed-table-toolbar .bs-bars, -.bootstrap-table .fixed-table-toolbar .search, -.bootstrap-table .fixed-table-toolbar .columns { - position: relative; - margin-top: 10px; - margin-bottom: 10px; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group { - display: inline-block; - margin-left: -1px !important; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group > .btn { - border-radius: 0; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:first-child > .btn { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:last-child > .btn { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu { - text-align: left; - max-height: 300px; - overflow: auto; - -ms-overflow-style: scrollbar; - z-index: 1001; -} - -.bootstrap-table .fixed-table-toolbar .columns label { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.4286; -} - -.bootstrap-table .fixed-table-toolbar .columns-left { - margin-right: 5px; -} - -.bootstrap-table .fixed-table-toolbar .columns-right { - margin-left: 5px; -} - -.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu { - right: 0; - left: auto; -} - -.bootstrap-table .fixed-table-container { - position: relative; - clear: both; -} - -.bootstrap-table .fixed-table-container .table { - width: 100%; - margin-bottom: 0 !important; -} - -.bootstrap-table .fixed-table-container .table th, -.bootstrap-table .fixed-table-container .table td { - vertical-align: middle; - box-sizing: border-box; -} - -.bootstrap-table .fixed-table-container .table thead th, -.bootstrap-table .fixed-table-container .table tfoot th { - vertical-align: bottom; - padding: 0; - margin: 0; -} - -.bootstrap-table .fixed-table-container .table thead th:focus, -.bootstrap-table .fixed-table-container .table tfoot th:focus { - outline: 0 solid transparent; -} - -.bootstrap-table .fixed-table-container .table thead th.detail, -.bootstrap-table .fixed-table-container .table tfoot th.detail { - width: 30px; -} - -.bootstrap-table .fixed-table-container .table thead th .th-inner, -.bootstrap-table .fixed-table-container .table tfoot th .th-inner { - padding: 0.75rem; - vertical-align: bottom; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.bootstrap-table .fixed-table-container .table thead th .sortable, -.bootstrap-table .fixed-table-container .table tfoot th .sortable { - cursor: pointer; - background-position: right; - background-repeat: no-repeat; - padding-right: 30px !important; -} - -.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center, -.bootstrap-table .fixed-table-container .table tfoot th .sortable.sortable-center { - padding-left: 20px !important; - padding-right: 20px !important; -} - -.bootstrap-table .fixed-table-container .table thead th .both, -.bootstrap-table .fixed-table-container .table tfoot th .both { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC"); -} - -.bootstrap-table .fixed-table-container .table thead th .asc, -.bootstrap-table .fixed-table-container .table tfoot th .asc { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=="); -} - -.bootstrap-table .fixed-table-container .table thead th .desc, -.bootstrap-table .fixed-table-container .table tfoot th .desc { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= "); -} - -.bootstrap-table .fixed-table-container .table tbody tr.selected td { - background-color: rgba(0, 0, 0, 0.075); -} - -.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td { - text-align: center; -} - -.bootstrap-table .fixed-table-container .table tbody tr .card-view { - display: flex; -} - -.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title { - font-weight: bold; - display: inline-block; - min-width: 30%; - width: auto !important; - text-align: left !important; -} - -.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value { - width: 100% !important; - text-align: left !important; -} - -.bootstrap-table .fixed-table-container .table .bs-checkbox { - text-align: center; -} - -.bootstrap-table .fixed-table-container .table .bs-checkbox label { - margin-bottom: 0; -} - -.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type="radio"], -.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type="checkbox"] { - margin: 0 auto !important; -} - -.bootstrap-table .fixed-table-container .table.table-sm .th-inner { - padding: 0.25rem; -} - -.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer) { - border-bottom: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height.has-card-view { - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border { - border-left: 1px solid #dee2e6; - border-right: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height .table thead th { - border-bottom: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th { - border-bottom: 1px solid #32383e; -} - -.bootstrap-table .fixed-table-container .fixed-table-header { - overflow: hidden; -} - -.bootstrap-table .fixed-table-container .fixed-table-body { - overflow: auto auto; - height: 100%; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading { - align-items: center; - background: #fff; - display: flex; - justify-content: center; - position: absolute; - bottom: 0; - width: 100%; - max-width: 100%; - z-index: 1000; - transition: visibility 0s, opacity 0.15s ease-in-out; - opacity: 0; - visibility: hidden; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open { - visibility: visible; - opacity: 1; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap { - align-items: baseline; - display: flex; - justify-content: center; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text { - margin-right: 6px; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap { - align-items: center; - display: flex; - justify-content: center; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before { - content: ""; - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-name: loading; - background: #212529; - border-radius: 50%; - display: block; - height: 5px; - margin: 0 4px; - opacity: 0; - width: 5px; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot { - animation-delay: 0.3s; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after { - animation-delay: 0.6s; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark { - background: #212529; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before { - background: #fff; -} - -.bootstrap-table .fixed-table-container .fixed-table-footer { - overflow: hidden; -} - -.bootstrap-table .fixed-table-pagination::after { - content: ""; - display: block; - clear: both; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail, -.bootstrap-table .fixed-table-pagination > .pagination { - margin-top: 10px; - margin-bottom: 10px; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .pagination-info { - line-height: 34px; - margin-right: 5px; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list { - display: inline-block; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group { - position: relative; - display: inline-block; - vertical-align: middle; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group .dropdown-menu { - margin-bottom: 0; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination { - margin: 0; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a { - color: #c8c8c8; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::before { - content: "\2B05"; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::after { - content: "\27A1"; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.disabled a { - pointer-events: none; - cursor: default; -} - -.bootstrap-table.fullscreen { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - width: 100% !important; - background: #fff; - height: calc(100vh); - overflow-y: scroll; -} - -.bootstrap-table.bootstrap4 .pagination-lg .page-link, .bootstrap-table.bootstrap5 .pagination-lg .page-link { - padding: 0.5rem 1rem; -} - -.bootstrap-table.bootstrap5 .float-left { - float: left; -} - -.bootstrap-table.bootstrap5 .float-right { - float: right; -} - -/* calculate scrollbar width */ -div.fixed-table-scroll-inner { - width: 100%; - height: 200px; -} - -div.fixed-table-scroll-outer { - top: 0; - left: 0; - visibility: hidden; - width: 200px; - height: 150px; - overflow: hidden; -} - -@keyframes loading { - 0% { - opacity: 0; - } - 50% { - opacity: 1; - } - 100% { - opacity: 0; - } -} +.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .search,.bootstrap-table .fixed-table-toolbar .columns{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px !important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0 !important}.bootstrap-table .fixed-table-container .table th,.bootstrap-table .fixed-table-container .table td{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th,.bootstrap-table .fixed-table-container .table tfoot th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus,.bootstrap-table .fixed-table-container .table tfoot th:focus{outline:0 solid rgba(0,0,0,0)}.bootstrap-table .fixed-table-container .table thead th.detail,.bootstrap-table .fixed-table-container .table tfoot th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner,.bootstrap-table .fixed-table-container .table tfoot th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable,.bootstrap-table .fixed-table-container .table tfoot th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px !important}.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center,.bootstrap-table .fixed-table-container .table tfoot th .sortable.sortable-center{padding-left:20px !important;padding-right:20px !important}.bootstrap-table .fixed-table-container .table thead th .both,.bootstrap-table .fixed-table-container .table tfoot th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc,.bootstrap-table .fixed-table-container .table tfoot th .asc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==")}.bootstrap-table .fixed-table-container .table thead th .desc,.bootstrap-table .fixed-table-container .table tfoot th .desc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ")}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:bold;display:inline-block;min-width:30%;width:auto !important;text-align:left !important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100% !important;text-align:left !important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox]{margin:0 auto !important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.25rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow:auto auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination-detail,.bootstrap-table .fixed-table-pagination>.pagination{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"⬅"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"➡"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100% !important;background:#fff;height:100vh;overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; diff --git a/public/css/dist/bootstrap-table.css b/public/css/dist/bootstrap-table.css index eb5b8c0b19..29f63a0968 100644 --- a/public/css/dist/bootstrap-table.css +++ b/public/css/dist/bootstrap-table.css @@ -1,413 +1,6 @@ -/** - * @author zhixin wen - * version: 1.22.5 - * https://github.com/wenzhixin/bootstrap-table/ - */ -/* stylelint-disable annotation-no-unknown, max-line-length */ -/* stylelint-enable annotation-no-unknown, max-line-length */ -.bootstrap-table .fixed-table-toolbar::after { - content: ""; - display: block; - clear: both; -} +.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .search,.bootstrap-table .fixed-table-toolbar .columns{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px !important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0 !important}.bootstrap-table .fixed-table-container .table th,.bootstrap-table .fixed-table-container .table td{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th,.bootstrap-table .fixed-table-container .table tfoot th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus,.bootstrap-table .fixed-table-container .table tfoot th:focus{outline:0 solid rgba(0,0,0,0)}.bootstrap-table .fixed-table-container .table thead th.detail,.bootstrap-table .fixed-table-container .table tfoot th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner,.bootstrap-table .fixed-table-container .table tfoot th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable,.bootstrap-table .fixed-table-container .table tfoot th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px !important}.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center,.bootstrap-table .fixed-table-container .table tfoot th .sortable.sortable-center{padding-left:20px !important;padding-right:20px !important}.bootstrap-table .fixed-table-container .table thead th .both,.bootstrap-table .fixed-table-container .table tfoot th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc,.bootstrap-table .fixed-table-container .table tfoot th .asc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==")}.bootstrap-table .fixed-table-container .table thead th .desc,.bootstrap-table .fixed-table-container .table tfoot th .desc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ")}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:bold;display:inline-block;min-width:30%;width:auto !important;text-align:left !important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100% !important;text-align:left !important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox]{margin:0 auto !important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.25rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow:auto auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination-detail,.bootstrap-table .fixed-table-pagination>.pagination{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"⬅"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"➡"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100% !important;background:#fff;height:100vh;overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} -.bootstrap-table .fixed-table-toolbar .bs-bars, -.bootstrap-table .fixed-table-toolbar .search, -.bootstrap-table .fixed-table-toolbar .columns { - position: relative; - margin-top: 10px; - margin-bottom: 10px; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group { - display: inline-block; - margin-left: -1px !important; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group > .btn { - border-radius: 0; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:first-child > .btn { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:last-child > .btn { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu { - text-align: left; - max-height: 300px; - overflow: auto; - -ms-overflow-style: scrollbar; - z-index: 1001; -} - -.bootstrap-table .fixed-table-toolbar .columns label { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.4286; -} - -.bootstrap-table .fixed-table-toolbar .columns-left { - margin-right: 5px; -} - -.bootstrap-table .fixed-table-toolbar .columns-right { - margin-left: 5px; -} - -.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu { - right: 0; - left: auto; -} - -.bootstrap-table .fixed-table-container { - position: relative; - clear: both; -} - -.bootstrap-table .fixed-table-container .table { - width: 100%; - margin-bottom: 0 !important; -} - -.bootstrap-table .fixed-table-container .table th, -.bootstrap-table .fixed-table-container .table td { - vertical-align: middle; - box-sizing: border-box; -} - -.bootstrap-table .fixed-table-container .table thead th, -.bootstrap-table .fixed-table-container .table tfoot th { - vertical-align: bottom; - padding: 0; - margin: 0; -} - -.bootstrap-table .fixed-table-container .table thead th:focus, -.bootstrap-table .fixed-table-container .table tfoot th:focus { - outline: 0 solid transparent; -} - -.bootstrap-table .fixed-table-container .table thead th.detail, -.bootstrap-table .fixed-table-container .table tfoot th.detail { - width: 30px; -} - -.bootstrap-table .fixed-table-container .table thead th .th-inner, -.bootstrap-table .fixed-table-container .table tfoot th .th-inner { - padding: 0.75rem; - vertical-align: bottom; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.bootstrap-table .fixed-table-container .table thead th .sortable, -.bootstrap-table .fixed-table-container .table tfoot th .sortable { - cursor: pointer; - background-position: right; - background-repeat: no-repeat; - padding-right: 30px !important; -} - -.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center, -.bootstrap-table .fixed-table-container .table tfoot th .sortable.sortable-center { - padding-left: 20px !important; - padding-right: 20px !important; -} - -.bootstrap-table .fixed-table-container .table thead th .both, -.bootstrap-table .fixed-table-container .table tfoot th .both { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC"); -} - -.bootstrap-table .fixed-table-container .table thead th .asc, -.bootstrap-table .fixed-table-container .table tfoot th .asc { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=="); -} - -.bootstrap-table .fixed-table-container .table thead th .desc, -.bootstrap-table .fixed-table-container .table tfoot th .desc { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= "); -} - -.bootstrap-table .fixed-table-container .table tbody tr.selected td { - background-color: rgba(0, 0, 0, 0.075); -} - -.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td { - text-align: center; -} - -.bootstrap-table .fixed-table-container .table tbody tr .card-view { - display: flex; -} - -.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title { - font-weight: bold; - display: inline-block; - min-width: 30%; - width: auto !important; - text-align: left !important; -} - -.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value { - width: 100% !important; - text-align: left !important; -} - -.bootstrap-table .fixed-table-container .table .bs-checkbox { - text-align: center; -} - -.bootstrap-table .fixed-table-container .table .bs-checkbox label { - margin-bottom: 0; -} - -.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type="radio"], -.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type="checkbox"] { - margin: 0 auto !important; -} - -.bootstrap-table .fixed-table-container .table.table-sm .th-inner { - padding: 0.25rem; -} - -.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer) { - border-bottom: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height.has-card-view { - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border { - border-left: 1px solid #dee2e6; - border-right: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height .table thead th { - border-bottom: 1px solid #dee2e6; -} - -.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th { - border-bottom: 1px solid #32383e; -} - -.bootstrap-table .fixed-table-container .fixed-table-header { - overflow: hidden; -} - -.bootstrap-table .fixed-table-container .fixed-table-body { - overflow: auto auto; - height: 100%; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading { - align-items: center; - background: #fff; - display: flex; - justify-content: center; - position: absolute; - bottom: 0; - width: 100%; - max-width: 100%; - z-index: 1000; - transition: visibility 0s, opacity 0.15s ease-in-out; - opacity: 0; - visibility: hidden; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open { - visibility: visible; - opacity: 1; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap { - align-items: baseline; - display: flex; - justify-content: center; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text { - margin-right: 6px; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap { - align-items: center; - display: flex; - justify-content: center; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before { - content: ""; - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-name: loading; - background: #212529; - border-radius: 50%; - display: block; - height: 5px; - margin: 0 4px; - opacity: 0; - width: 5px; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot { - animation-delay: 0.3s; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after { - animation-delay: 0.6s; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark { - background: #212529; -} - -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after, -.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before { - background: #fff; -} - -.bootstrap-table .fixed-table-container .fixed-table-footer { - overflow: hidden; -} - -.bootstrap-table .fixed-table-pagination::after { - content: ""; - display: block; - clear: both; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail, -.bootstrap-table .fixed-table-pagination > .pagination { - margin-top: 10px; - margin-bottom: 10px; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .pagination-info { - line-height: 34px; - margin-right: 5px; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list { - display: inline-block; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group { - position: relative; - display: inline-block; - vertical-align: middle; -} - -.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group .dropdown-menu { - margin-bottom: 0; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination { - margin: 0; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a { - color: #c8c8c8; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::before { - content: "\2B05"; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::after { - content: "\27A1"; -} - -.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.disabled a { - pointer-events: none; - cursor: default; -} - -.bootstrap-table.fullscreen { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - width: 100% !important; - background: #fff; - height: calc(100vh); - overflow-y: scroll; -} - -.bootstrap-table.bootstrap4 .pagination-lg .page-link, .bootstrap-table.bootstrap5 .pagination-lg .page-link { - padding: 0.5rem 1rem; -} - -.bootstrap-table.bootstrap5 .float-left { - float: left; -} - -.bootstrap-table.bootstrap5 .float-right { - float: right; -} - -/* calculate scrollbar width */ -div.fixed-table-scroll-inner { - width: 100%; - height: 200px; -} - -div.fixed-table-scroll-outer { - top: 0; - left: 0; - visibility: hidden; - width: 200px; - height: 150px; - overflow: hidden; -} - -@keyframes loading { - 0% { - opacity: 0; - } - 50% { - opacity: 1; - } - 100% { - opacity: 0; - } -} - -/** - * @author vincent loh - * @update zhixin wen - */ -.fix-sticky { - position: fixed !important; - overflow: hidden; - z-index: 100; -} - -.fix-sticky table thead { - background: #fff; -} - -.fix-sticky table thead.thead-light { - background: #e9ecef; -} - -.fix-sticky table thead.thead-dark { - background: #212529; -} +.fix-sticky{position:fixed !important;overflow:hidden;z-index:100}.fix-sticky table thead{background:#fff}.fix-sticky table thead.thead-light{background:#e9ecef}.fix-sticky table thead.thead-dark{background:#212529} /* * dragtable diff --git a/public/img/default-sm.png b/public/img/default-sm.png deleted file mode 100644 index 49aa98b55d..0000000000 Binary files a/public/img/default-sm.png and /dev/null differ diff --git a/public/img/default.png b/public/img/demo/avatars/default.png similarity index 100% rename from public/img/default.png rename to public/img/demo/avatars/default.png diff --git a/public/js/build/app.js b/public/js/build/app.js index 50fab0d8d0..bec87e49ba 100644 --- a/public/js/build/app.js +++ b/public/js/build/app.js @@ -251,6 +251,8 @@ $(document).ready(function () { */ placeholder: '', allowClear: true, + language: $('meta[name="language"]').attr('content'), + dir: $('meta[name="language-direction"]').attr('content'), ajax: { // the baseUrl includes a trailing slash url: baseUrl + 'api/v1/' + endpoint + '/selectlist', diff --git a/public/js/build/vendor.js b/public/js/build/vendor.js index 03b90c5529..cb51290282 100644 --- a/public/js/build/vendor.js +++ b/public/js/build/vendor.js @@ -54842,11 +54842,11 @@ return SignaturePad; })); /*! - * jQuery Validation Plugin v1.20.0 + * jQuery Validation Plugin v1.20.1 * * https://jqueryvalidation.org/ * - * Copyright (c) 2023 Jörn Zaefferer + * Copyright (c) 2024 Jörn Zaefferer * Released under the MIT license */ (function( factory ) { @@ -56455,11 +56455,12 @@ $.extend( $.validator, { param = typeof param === "string" && { url: param } || param; optionDataString = $.param( $.extend( { data: value }, param.data ) ); - if ( previous.old === optionDataString ) { + if ( previous.valid !== null && previous.old === optionDataString ) { return previous.valid; } previous.old = optionDataString; + previous.valid = null; validator = this; this.startRequest( element ); data = {}; diff --git a/public/js/dist/all.js b/public/js/dist/all.js index 6e04bad7dd..a8dbd199aa 100644 --- a/public/js/dist/all.js +++ b/public/js/dist/all.js @@ -54842,11 +54842,11 @@ return SignaturePad; })); /*! - * jQuery Validation Plugin v1.20.0 + * jQuery Validation Plugin v1.20.1 * * https://jqueryvalidation.org/ * - * Copyright (c) 2023 Jörn Zaefferer + * Copyright (c) 2024 Jörn Zaefferer * Released under the MIT license */ (function( factory ) { @@ -56455,11 +56455,12 @@ $.extend( $.validator, { param = typeof param === "string" && { url: param } || param; optionDataString = $.param( $.extend( { data: value }, param.data ) ); - if ( previous.old === optionDataString ) { + if ( previous.valid !== null && previous.old === optionDataString ) { return previous.valid; } previous.old = optionDataString; + previous.valid = null; validator = this; this.startRequest( element ); data = {}; @@ -59442,6 +59443,8 @@ $(document).ready(function () { */ placeholder: '', allowClear: true, + language: $('meta[name="language"]').attr('content'), + dir: $('meta[name="language-direction"]').attr('content'), ajax: { // the baseUrl includes a trailing slash url: baseUrl + 'api/v1/' + endpoint + '/selectlist', diff --git a/public/js/dist/bootstrap-table-en-US.min.js b/public/js/dist/bootstrap-table-en-US.min.js new file mode 100644 index 0000000000..a62b1e8812 --- /dev/null +++ b/public/js/dist/bootstrap-table-en-US.min.js @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.23.0 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(o,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("core-js/modules/es.array.concat.js"),require("core-js/modules/es.object.assign.js"),require("jquery")):"function"==typeof define&&define.amd?define(["core-js/modules/es.array.concat.js","core-js/modules/es.object.assign.js","jquery"],n):n(null,null,(o="undefined"!=typeof globalThis?globalThis:o||self).jQuery)}(this,(function(o,n,t){"use strict";t.fn.bootstrapTable.locales["en-US"]=t.fn.bootstrapTable.locales.en={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(o){return"".concat(o," rows per page")},formatShowingRows:function(o,n,t,r){return void 0!==r&&r>0&&r>t?"Showing ".concat(o," to ").concat(n," of ").concat(t," rows (filtered from ").concat(r," total rows)"):"Showing ".concat(o," to ").concat(n," of ").concat(t," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(o){return"to page ".concat(o)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(o){return"Showing ".concat(o," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["en-US"])})); diff --git a/public/js/dist/bootstrap-table-locale-all.min.js b/public/js/dist/bootstrap-table-locale-all.min.js new file mode 100644 index 0000000000..b0ed3c69bd --- /dev/null +++ b/public/js/dist/bootstrap-table-locale-all.min.js @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.23.0 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("core-js/modules/es.array.concat.js"),require("core-js/modules/es.object.assign.js"),require("jquery")):"function"==typeof define&&define.amd?define(["core-js/modules/es.array.concat.js","core-js/modules/es.object.assign.js","jquery"],n):n(null,null,(t="undefined"!=typeof globalThis?globalThis:t||self).jQuery)}(this,(function(t,n,r){"use strict";r.fn.bootstrapTable.locales["af-ZA"]=r.fn.bootstrapTable.locales.af={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Besig om te laai, wag asseblief"},formatRecordsPerPage:function(t){return"".concat(t," rekords per bladsy")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Resultate ".concat(t," tot ").concat(n," van ").concat(r," rye (filtered from ").concat(o," total rows)"):"Resultate ".concat(t," tot ").concat(n," van ").concat(r," rye")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Soek"},formatNoMatches:function(){return"Geen rekords gevind nie"},formatPaginationSwitch:function(){return"Wys/verberg bladsy nummering"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Herlaai"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolomme"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["af-ZA"]),r.fn.bootstrapTable.locales["ar-SA"]=r.fn.bootstrapTable.locales.ar={formatCopyRows:function(){return"نسخ الصفوف"},formatPrint:function(){return"طباعة"},formatLoadingMessage:function(){return"جارٍ التحميل، يرجى الانتظار..."},formatRecordsPerPage:function(t){return"".concat(t," صف لكل صفحة")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"الظاهر ".concat(t," إلى ").concat(n," من ").concat(r," سجل ").concat(o," إجمالي الصفوف)"):"الظاهر ".concat(t," إلى ").concat(n," من ").concat(r," سجل")},formatSRPaginationPreText:function(){return"الصفحة السابقة"},formatSRPaginationPageText:function(t){return"إلى الصفحة ".concat(t)},formatSRPaginationNextText:function(){return"الصفحة التالية"},formatDetailPagination:function(t){return"عرض ".concat(t," أعمدة")},formatClearSearch:function(){return"مسح مربع البحث"},formatSearch:function(){return"بحث"},formatNoMatches:function(){return"لا توجد نتائج مطابقة للبحث"},formatPaginationSwitch:function(){return"إخفاء/إظهار ترقيم الصفحات"},formatPaginationSwitchDown:function(){return"إظهار ترقيم الصفحات"},formatPaginationSwitchUp:function(){return"إخفاء ترقيم الصفحات"},formatRefresh:function(){return"تحديث"},formatToggleOn:function(){return"إظهار كبطاقات"},formatToggleOff:function(){return"إلغاء البطاقات"},formatColumns:function(){return"أعمدة"},formatColumnsToggleAll:function(){return"تبديل الكل"},formatFullscreen:function(){return"الشاشة كاملة"},formatAllRows:function(){return"الكل"},formatAutoRefresh:function(){return"تحديث تلقائي"},formatExport:function(){return"تصدير البيانات"},formatJumpTo:function(){return"قفز"},formatAdvancedSearch:function(){return"بحث متقدم"},formatAdvancedCloseButton:function(){return"إغلاق"},formatFilterControlSwitch:function(){return"عرض/إخفاء عناصر التصفية"},formatFilterControlSwitchHide:function(){return"إخفاء عناصر التصفية"},formatFilterControlSwitchShow:function(){return"عرض عناصر التصفية"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ar-SA"]),r.fn.bootstrapTable.locales["bg-BG"]=r.fn.bootstrapTable.locales.bg={formatCopyRows:function(){return"Копиране на редове"},formatPrint:function(){return"Печат"},formatLoadingMessage:function(){return"Зареждане, моля изчакайте"},formatRecordsPerPage:function(t){return"".concat(t," реда на страница")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Показани редове от ".concat(t," до ").concat(n," от ").concat(r," (филтрирани от общо ").concat(o,")"):"Показани редове от ".concat(t," до ").concat(n," от общо ").concat(r)},formatSRPaginationPreText:function(){return"предишна страница"},formatSRPaginationPageText:function(t){return"до страница ".concat(t)},formatSRPaginationNextText:function(){return"следваща страница"},formatDetailPagination:function(t){return"Показани ".concat(t," реда")},formatClearSearch:function(){return"Изчистване на търсенето"},formatSearch:function(){return"Търсене"},formatNoMatches:function(){return"Не са намерени съвпадащи записи"},formatPaginationSwitch:function(){return"Скриване/Показване на странициране"},formatPaginationSwitchDown:function(){return"Показване на странициране"},formatPaginationSwitchUp:function(){return"Скриване на странициране"},formatRefresh:function(){return"Обновяване"},formatToggleOn:function(){return"Показване на изглед карта"},formatToggleOff:function(){return"Скриване на изглед карта"},formatColumns:function(){return"Колони"},formatColumnsToggleAll:function(){return"Превключване на всички"},formatFullscreen:function(){return"Цял екран"},formatAllRows:function(){return"Всички"},formatAutoRefresh:function(){return"Автоматично обновяване"},formatExport:function(){return"Експорт на данни"},formatJumpTo:function(){return"ОТИДИ"},formatAdvancedSearch:function(){return"Разширено търсене"},formatAdvancedCloseButton:function(){return"Затваряне"},formatFilterControlSwitch:function(){return"Скрива/показва контроли"},formatFilterControlSwitchHide:function(){return"Скрива контроли"},formatFilterControlSwitchShow:function(){return"Показва контроли"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["bg-BG"]),r.fn.bootstrapTable.locales["ca-ES"]=r.fn.bootstrapTable.locales.ca={formatCopyRows:function(){return"Copia resultats"},formatPrint:function(){return"Imprimeix"},formatLoadingMessage:function(){return"Espereu, si us plau"},formatRecordsPerPage:function(t){return"".concat(t," resultats per pàgina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrant resultats ".concat(t," fins ").concat(n," - ").concat(r," resultats (filtrats d'un total de ").concat(o," resultats)"):"Mostrant resultats ".concat(t," fins ").concat(n," - ").concat(r," resultats en total")},formatSRPaginationPreText:function(){return"Pàgina anterior"},formatSRPaginationPageText:function(t){return"A la pàgina ".concat(t)},formatSRPaginationNextText:function(){return"Pàgina següent"},formatDetailPagination:function(t){return"Mostrant ".concat(t," resultats")},formatClearSearch:function(){return"Neteja cerca"},formatSearch:function(){return"Cerca"},formatNoMatches:function(){return"No s'han trobat resultats"},formatPaginationSwitch:function(){return"Amaga/Mostra paginació"},formatPaginationSwitchDown:function(){return"Mostra paginació"},formatPaginationSwitchUp:function(){return"Amaga paginació"},formatRefresh:function(){return"Refresca"},formatToggleOn:function(){return"Mostra vista de tarjeta"},formatToggleOff:function(){return"Amaga vista de tarjeta"},formatColumns:function(){return"Columnes"},formatColumnsToggleAll:function(){return"Alterna totes"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Tots"},formatAutoRefresh:function(){return"Auto Refresca"},formatExport:function(){return"Exporta dades"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Cerca avançada"},formatAdvancedCloseButton:function(){return"Tanca"},formatFilterControlSwitch:function(){return"Mostra/Amaga controls"},formatFilterControlSwitchHide:function(){return"Mostra controls"},formatFilterControlSwitchShow:function(){return"Amaga controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ca-ES"]),r.fn.bootstrapTable.locales["cs-CZ"]=r.fn.bootstrapTable.locales.cs={formatCopyRows:function(){return"Kopírovat řádky"},formatPrint:function(){return"Tisk"},formatLoadingMessage:function(){return"Čekejte, prosím"},formatRecordsPerPage:function(t){return"".concat(t," položek na stránku")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Zobrazena ".concat(t,". - ").concat(n," . položka z celkových ").concat(r," (filtered from ").concat(o," total rows)"):"Zobrazena ".concat(t,". - ").concat(n," . položka z celkových ").concat(r)},formatSRPaginationPreText:function(){return"předchozí strana"},formatSRPaginationPageText:function(t){return"na stranu ".concat(t)},formatSRPaginationNextText:function(){return"další strana"},formatDetailPagination:function(t){return"Zobrazuji ".concat(t," řádek")},formatClearSearch:function(){return"Smazat hledání"},formatSearch:function(){return"Vyhledávání"},formatNoMatches:function(){return"Nenalezena žádná vyhovující položka"},formatPaginationSwitch:function(){return"Skrýt/Zobrazit stránkování"},formatPaginationSwitchDown:function(){return"Zobrazit stránkování"},formatPaginationSwitchUp:function(){return"Skrýt stránkování"},formatRefresh:function(){return"Aktualizovat"},formatToggleOn:function(){return"Zobrazit karty"},formatToggleOff:function(){return"Zobrazit tabulku"},formatColumns:function(){return"Sloupce"},formatColumnsToggleAll:function(){return"Zobrazit/Skrýt vše"},formatFullscreen:function(){return"Zapnout/Vypnout fullscreen"},formatAllRows:function(){return"Vše"},formatAutoRefresh:function(){return"Automatické obnovení"},formatExport:function(){return"Export dat"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Pokročilé hledání"},formatAdvancedCloseButton:function(){return"Zavřít"},formatFilterControlSwitch:function(){return"Skrýt/Zobrazit ovladače"},formatFilterControlSwitchHide:function(){return"Skrýt ovladače"},formatFilterControlSwitchShow:function(){return"Zobrazit ovladače"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["cs-CZ"]),r.fn.bootstrapTable.locales["da-DK"]=r.fn.bootstrapTable.locales.da={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Indlæser, vent venligst"},formatRecordsPerPage:function(t){return"".concat(t," poster pr side")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Viser ".concat(t," til ").concat(n," af ").concat(r," række").concat(r>1?"r":""," (filtered from ").concat(o," total rows)"):"Viser ".concat(t," til ").concat(n," af ").concat(r," række").concat(r>1?"r":"")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Viser ".concat(t," række").concat(t>1?"r":"")},formatClearSearch:function(){return"Ryd filtre"},formatSearch:function(){return"Søg"},formatNoMatches:function(){return"Ingen poster fundet"},formatPaginationSwitch:function(){return"Skjul/vis nummerering"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Opdater"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolonner"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Eksporter"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["da-DK"]),r.fn.bootstrapTable.locales["de-DE"]=r.fn.bootstrapTable.locales.de={formatCopyRows:function(){return"Zeilen kopieren"},formatPrint:function(){return"Drucken"},formatLoadingMessage:function(){return"Lade, bitte warten"},formatRecordsPerPage:function(t){return"".concat(t," Zeilen pro Seite.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Zeige Zeile ".concat(t," bis ").concat(n," von ").concat(r," Zeile").concat(r>1?"n":""," (Gefiltert von ").concat(o," Zeile").concat(o>1?"n":"",")"):"Zeige Zeile ".concat(t," bis ").concat(n," von ").concat(r," Zeile").concat(r>1?"n":"",".")},formatSRPaginationPreText:function(){return"Vorherige Seite"},formatSRPaginationPageText:function(t){return"Zu Seite ".concat(t)},formatSRPaginationNextText:function(){return"Nächste Seite"},formatDetailPagination:function(t){return"Zeige ".concat(t," Zeile").concat(t>1?"n":"",".")},formatClearSearch:function(){return"Lösche Filter"},formatSearch:function(){return"Suchen"},formatNoMatches:function(){return"Keine passenden Ergebnisse gefunden"},formatPaginationSwitch:function(){return"Verstecke/Zeige Nummerierung"},formatPaginationSwitchDown:function(){return"Zeige Nummerierung"},formatPaginationSwitchUp:function(){return"Verstecke Nummerierung"},formatRefresh:function(){return"Neu laden"},formatToggleOn:function(){return"Normale Ansicht"},formatToggleOff:function(){return"Kartenansicht"},formatColumns:function(){return"Spalten"},formatColumnsToggleAll:function(){return"Alle umschalten"},formatFullscreen:function(){return"Vollbild"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Automatisches Neuladen"},formatExport:function(){return"Datenexport"},formatJumpTo:function(){return"Springen"},formatAdvancedSearch:function(){return"Erweiterte Suche"},formatAdvancedCloseButton:function(){return"Schließen"},formatFilterControlSwitch:function(){return"Verstecke/Zeige Filter"},formatFilterControlSwitchHide:function(){return"Verstecke Filter"},formatFilterControlSwitchShow:function(){return"Zeige Filter"},formatAddLevel:function(){return"Ebene hinzufügen"},formatCancel:function(){return"Abbrechen"},formatColumn:function(){return"Spalte"},formatDeleteLevel:function(){return"Ebene entfernen"},formatDuplicateAlertTitle:function(){return"Doppelte Einträge gefunden!"},formatDuplicateAlertDescription:function(){return"Bitte doppelte Spalten entfenen oder ändern"},formatMultipleSort:function(){return"Mehrfachsortierung"},formatOrder:function(){return"Reihenfolge"},formatSort:function(){return"Sortieren"},formatSortBy:function(){return"Sortieren nach"},formatThenBy:function(){return"anschließend"},formatSortOrders:function(){return{asc:"Aufsteigend",desc:"Absteigend"}}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["de-DE"]),r.fn.bootstrapTable.locales["el-GR"]=r.fn.bootstrapTable.locales.el={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Φορτώνει, παρακαλώ περιμένετε"},formatRecordsPerPage:function(t){return"".concat(t," αποτελέσματα ανά σελίδα")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Εμφανίζονται από την ".concat(t," ως την ").concat(n," από σύνολο ").concat(r," σειρών (filtered from ").concat(o," total rows)"):"Εμφανίζονται από την ".concat(t," ως την ").concat(n," από σύνολο ").concat(r," σειρών")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Αναζητήστε"},formatNoMatches:function(){return"Δεν βρέθηκαν αποτελέσματα"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["el-GR"]),r.fn.bootstrapTable.locales["en-US"]=r.fn.bootstrapTable.locales.en={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(t){return"".concat(t," rows per page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Showing ".concat(t," to ").concat(n," of ").concat(r," rows (filtered from ").concat(o," total rows)"):"Showing ".concat(t," to ").concat(n," of ").concat(r," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["en-US"]),r.fn.bootstrapTable.locales["es-AR"]={formatCopyRows:function(){return"Copiar Filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, espere por favor"},formatRecordsPerPage:function(t){return"".concat(t," registros por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando desde ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de ").concat(o," columnas totales)"):"Mostrando desde ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"a la página ".concat(t)},formatSRPaginationNextText:function(){return"siguiente página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," columnas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Recargar"},formatToggleOn:function(){return"Mostrar vista de carta"},formatToggleOff:function(){return"Ocultar vista de carta"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Cambiar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Recargar"},formatExport:function(){return"Exportar datos"},formatJumpTo:function(){return"Ir"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["es-AR"]),r.fn.bootstrapTable.locales["es-CL"]={formatCopyRows:function(){return"Copiar Filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, espere por favor"},formatRecordsPerPage:function(t){return"".concat(t," filas por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de ").concat(o," filas totales)"):"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"a la página ".concat(t)},formatSRPaginationNextText:function(){return"siguiente página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," filas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Refrescar"},formatToggleOn:function(){return"Mostrar vista de carta"},formatToggleOff:function(){return"Ocultar vista de carta"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Cambiar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Recargar"},formatExport:function(){return"Exportar datos"},formatJumpTo:function(){return"IR"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["es-CL"]),r.fn.bootstrapTable.locales["es-CR"]={formatCopyRows:function(){return"Copiar filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, por favor espere"},formatRecordsPerPage:function(t){return"".concat(t," filas por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de un total de ").concat(o," filas)"):"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir a la página ".concat(t)},formatSRPaginationNextText:function(){return"página siguiente"},formatDetailPagination:function(t){return"Mostrando ".concat(t," filas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron resultados"},formatPaginationSwitch:function(){return"Mostrar/ocultar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Mostrar vista en tarjetas"},formatToggleOff:function(){return"Ocultar vista en tarjetas"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Alternar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todas las filas"},formatAutoRefresh:function(){return"Actualización automática"},formatExport:function(){return"Exportar"},formatJumpTo:function(){return"Ver"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Mostrar/ocultar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["es-CR"]),r.fn.bootstrapTable.locales["es-ES"]=r.fn.bootstrapTable.locales.es={formatCopyRows:function(){return"Copiar filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, por favor espere"},formatRecordsPerPage:function(t){return"".concat(t," resultados por página")},formatShowingRows:function(t,n,r,o){var a=r>1?"s":"";return void 0!==o&&o>0&&o>r?"Mostrando desde ".concat(t," hasta ").concat(n," - En total ").concat(r," resultado").concat(a," (filtrado de un total de ").concat(o," fila").concat(a,")"):"Mostrando desde ".concat(t," hasta ").concat(n," - En total ").concat(r," resultado").concat(a)},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"a la página ".concat(t)},formatSRPaginationNextText:function(){return"siguiente página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," fila").concat(t>1?"s":"")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron resultados coincidentes"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Recargar"},formatToggleOn:function(){return"Mostrar vista de carta"},formatToggleOff:function(){return"Ocultar vista de carta"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Cambiar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todos"},formatAutoRefresh:function(){return"Auto Recargar"},formatExport:function(){return"Exportar los datos"},formatJumpTo:function(){return"IR"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Exibir controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"},formatAddLevel:function(){return"Agregar nivel"},formatCancel:function(){return"Cancelar"},formatColumn:function(){return"Columna"},formatDeleteLevel:function(){return"Eliminar nivel"},formatDuplicateAlertTitle:function(){return"¡Se encontraron entradas duplicadas!"},formatDuplicateAlertDescription:function(){return"Por favor, elimine o modifique las columnas duplicadas"},formatMultipleSort:function(){return"Ordenación múltiple"},formatOrder:function(){return"Orden"},formatSort:function(){return"Ordenar"},formatSortBy:function(){return"Ordenar por"},formatThenBy:function(){return"a continuación"},formatSortOrders:function(){return{asc:"Ascendente",desc:"Descendente"}}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["es-ES"]),r.fn.bootstrapTable.locales["es-MX"]={formatCopyRows:function(){return"Copiar Filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, espere por favor"},formatRecordsPerPage:function(t){return"".concat(t," resultados por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de ").concat(o," filas totales)"):"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir a la página ".concat(t)},formatSRPaginationNextText:function(){return"página siguiente"},formatDetailPagination:function(t){return"Mostrando ".concat(t," filas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros que coincidan"},formatPaginationSwitch:function(){return"Mostrar/ocultar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Mostrar vista"},formatToggleOff:function(){return"Ocultar vista"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Alternar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto actualizar"},formatExport:function(){return"Exportar datos"},formatJumpTo:function(){return"IR"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["es-MX"]),r.fn.bootstrapTable.locales["es-NI"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Cargando, por favor espere"},formatRecordsPerPage:function(t){return"".concat(t," registros por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando de ".concat(t," a ").concat(n," registros de ").concat(r," registros en total (filtered from ").concat(o," total rows)"):"Mostrando de ".concat(t," a ").concat(n," registros de ").concat(r," registros en total")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refrescar"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["es-NI"]),r.fn.bootstrapTable.locales["es-SP"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Cargando, por favor espera"},formatRecordsPerPage:function(t){return"".concat(t," registros por página.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(t," - ").concat(n," de ").concat(r," registros (filtered from ").concat(o," total rows)"):"".concat(t," - ").concat(n," de ").concat(r," registros.")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se han encontrado registros."},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["es-SP"]),r.fn.bootstrapTable.locales["et-EE"]=r.fn.bootstrapTable.locales.et={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Päring käib, palun oota"},formatRecordsPerPage:function(t){return"".concat(t," rida lehe kohta")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Näitan tulemusi ".concat(t," kuni ").concat(n," - kokku ").concat(r," tulemust (filtered from ").concat(o," total rows)"):"Näitan tulemusi ".concat(t," kuni ").concat(n," - kokku ").concat(r," tulemust")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Otsi"},formatNoMatches:function(){return"Päringu tingimustele ei vastanud ühtegi tulemust"},formatPaginationSwitch:function(){return"Näita/Peida lehtedeks jagamine"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Värskenda"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Veerud"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Kõik"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["et-EE"]),r.fn.bootstrapTable.locales["eu-EU"]=r.fn.bootstrapTable.locales.eu={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Itxaron mesedez"},formatRecordsPerPage:function(t){return"".concat(t," emaitza orriko.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(r," erregistroetatik ").concat(t,"etik ").concat(n,"erakoak erakusten (filtered from ").concat(o," total rows)"):"".concat(r," erregistroetatik ").concat(t,"etik ").concat(n,"erakoak erakusten.")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Bilatu"},formatNoMatches:function(){return"Ez da emaitzarik aurkitu"},formatPaginationSwitch:function(){return"Ezkutatu/Erakutsi orrikatzea"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Eguneratu"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Zutabeak"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Guztiak"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["eu-EU"]),r.fn.bootstrapTable.locales["fa-IR"]=r.fn.bootstrapTable.locales.fa={formatCopyRows:function(){return"کپی ردیف ها"},formatPrint:function(){return"پرینت"},formatLoadingMessage:function(){return"در حال بارگذاری, لطفا صبر کنید"},formatRecordsPerPage:function(t){return"".concat(t," رکورد در صفحه")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"نمایش ".concat(t," تا ").concat(n," از ").concat(r," ردیف (filtered from ").concat(o," total rows)"):"نمایش ".concat(t," تا ").concat(n," از ").concat(r," ردیف")},formatSRPaginationPreText:function(){return"صفحه قبلی"},formatSRPaginationPageText:function(t){return"به صفحه ".concat(t)},formatSRPaginationNextText:function(){return"صفحه بعدی"},formatDetailPagination:function(t){return"نمایش ".concat(t," سطرها")},formatClearSearch:function(){return"پاک کردن جستجو"},formatSearch:function(){return"جستجو"},formatNoMatches:function(){return"رکوردی یافت نشد."},formatPaginationSwitch:function(){return"نمایش/مخفی صفحه بندی"},formatPaginationSwitchDown:function(){return"نمایش صفحه بندی"},formatPaginationSwitchUp:function(){return"پنهان کردن صفحه بندی"},formatRefresh:function(){return"به روز رسانی"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"سطر ها"},formatColumnsToggleAll:function(){return"تغییر وضعیت همه"},formatFullscreen:function(){return"تمام صفحه"},formatAllRows:function(){return"همه"},formatAutoRefresh:function(){return"رفرش اتوماتیک"},formatExport:function(){return"خروجی دیتا"},formatJumpTo:function(){return"برو"},formatAdvancedSearch:function(){return"جستجوی پیشرفته"},formatAdvancedCloseButton:function(){return"بستن"},formatFilterControlSwitch:function(){return"پنهان/نمایش دادن کنترل ها"},formatFilterControlSwitchHide:function(){return"پنهان کردن کنترل ها"},formatFilterControlSwitchShow:function(){return"نمایش کنترل ها"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["fa-IR"]),r.fn.bootstrapTable.locales["fi-FI"]=r.fn.bootstrapTable.locales.fi={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Ladataan, ole hyvä ja odota"},formatRecordsPerPage:function(t){return"".concat(t," riviä sivulla")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Näytetään rivit ".concat(t," - ").concat(n," / ").concat(r," (filtered from ").concat(o," total rows)"):"Näytetään rivit ".concat(t," - ").concat(n," / ").concat(r)},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Poista suodattimet"},formatSearch:function(){return"Hae"},formatNoMatches:function(){return"Hakuehtoja vastaavia tuloksia ei löytynyt"},formatPaginationSwitch:function(){return"Näytä/Piilota sivutus"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Päivitä"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Sarakkeet"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Kaikki"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Vie tiedot"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["fi-FI"]),r.fn.bootstrapTable.locales["fr-BE"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affiche de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrés à partir de ").concat(o," lignes)"):"Affiche de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affiche ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Recherche"},formatNoMatches:function(){return"Pas de lignes trouvés"},formatPaginationSwitch:function(){return"Cacher/Afficher pagination"},formatPaginationSwitchDown:function(){return"Afficher pagination"},formatPaginationSwitchUp:function(){return"Cacher pagination"},formatRefresh:function(){return"Rafraichir"},formatToggleOn:function(){return"Afficher vue carte"},formatToggleOff:function(){return"Cacher vue carte"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout basculer"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Rafraîchissement automatique"},formatExport:function(){return"Exporter les données"},formatJumpTo:function(){return"Aller à"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Cacher/Afficher controls"},formatFilterControlSwitchHide:function(){return"Cacher controls"},formatFilterControlSwitchShow:function(){return"Afficher controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["fr-BE"]),r.fn.bootstrapTable.locales["fr-CH"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affiche de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrés à partir de ").concat(o," lignes)"):"Affiche de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affiche ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Recherche"},formatNoMatches:function(){return"Pas de lignes trouvés"},formatPaginationSwitch:function(){return"Cacher/Afficher pagination"},formatPaginationSwitchDown:function(){return"Afficher pagination"},formatPaginationSwitchUp:function(){return"Cacher pagination"},formatRefresh:function(){return"Rafraichir"},formatToggleOn:function(){return"Afficher vue carte"},formatToggleOff:function(){return"Cacher vue carte"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout basculer"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Rafraîchissement automatique"},formatExport:function(){return"Exporter les données"},formatJumpTo:function(){return"Aller à"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Cacher/Afficher controls"},formatFilterControlSwitchHide:function(){return"Cacher controls"},formatFilterControlSwitchShow:function(){return"Afficher controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["fr-CH"]),r.fn.bootstrapTable.locales["fr-FR"]=r.fn.bootstrapTable.locales.fr={formatCopyRows:function(){return"Copier les lignes"},formatPrint:function(){return"Imprimer"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrés à partir de ").concat(o," lignes)"):"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affichage de ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Recherche"},formatNoMatches:function(){return"Aucun résultat"},formatPaginationSwitch:function(){return"Masquer/Afficher la pagination"},formatPaginationSwitchDown:function(){return"Afficher la pagination"},formatPaginationSwitchUp:function(){return"Masquer la pagination"},formatRefresh:function(){return"Actualiser"},formatToggleOn:function(){return"Afficher la vue carte"},formatToggleOff:function(){return"Masquer la vue carte"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout basculer"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Actualisation automatique"},formatExport:function(){return"Exporter les données"},formatJumpTo:function(){return"ALLER"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Masquer/Afficher les contrôles"},formatFilterControlSwitchHide:function(){return"Masquer les contrôles"},formatFilterControlSwitchShow:function(){return"Afficher les contrôles"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["fr-FR"]),r.fn.bootstrapTable.locales["fr-LU"]={formatCopyRows:function(){return"Copier les lignes"},formatPrint:function(){return"Imprimer"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affiche de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrés à partir de ").concat(o," lignes)"):"Affiche de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affiche ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Recherche"},formatNoMatches:function(){return"Pas de lignes trouvés"},formatPaginationSwitch:function(){return"Cacher/Afficher pagination"},formatPaginationSwitchDown:function(){return"Afficher pagination"},formatPaginationSwitchUp:function(){return"Cacher pagination"},formatRefresh:function(){return"Rafraichir"},formatToggleOn:function(){return"Afficher vue carte"},formatToggleOff:function(){return"Cacher vue carte"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout basculer"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Rafraîchissement automatique"},formatExport:function(){return"Exporter les données"},formatJumpTo:function(){return"Aller à"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Cacher/Afficher controls"},formatFilterControlSwitchHide:function(){return"Cacher controls"},formatFilterControlSwitchShow:function(){return"Afficher controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["fr-LU"]),r.fn.bootstrapTable.locales["he-IL"]=r.fn.bootstrapTable.locales.he={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"טוען, נא להמתין"},formatRecordsPerPage:function(t){return"".concat(t," שורות בעמוד")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"מציג ".concat(t," עד ").concat(n," מ-").concat(r,"שורות").concat(o," total rows)"):"מציג ".concat(t," עד ").concat(n," מ-").concat(r," שורות")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"חיפוש"},formatNoMatches:function(){return"לא נמצאו רשומות תואמות"},formatPaginationSwitch:function(){return"הסתר/הצג מספור דפים"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"רענן"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"עמודות"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"הכל"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["he-IL"]),r.fn.bootstrapTable.locales["hr-HR"]=r.fn.bootstrapTable.locales.hr={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Molimo pričekajte"},formatRecordsPerPage:function(t){return"".concat(t," broj zapisa po stranici")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Prikazujem ".concat(t,". - ").concat(n,". od ukupnog broja zapisa ").concat(r," (filtered from ").concat(o," total rows)"):"Prikazujem ".concat(t,". - ").concat(n,". od ukupnog broja zapisa ").concat(r)},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Pretraži"},formatNoMatches:function(){return"Nije pronađen niti jedan zapis"},formatPaginationSwitch:function(){return"Prikaži/sakrij stranice"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Osvježi"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolone"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Sve"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["hr-HR"]),r.fn.bootstrapTable.locales["hi-IN"]={formatCopyRows:function(){return"पंक्तियों की कॉपी करें"},formatPrint:function(){return"प्रिंट"},formatLoadingMessage:function(){return"लोड हो रहा है कृपया प्रतीक्षा करें"},formatRecordsPerPage:function(t){return"".concat(t," प्रति पृष्ठ पंक्तियाँ")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(t," - ").concat(n," पक्तिया ").concat(r," में से ( ").concat(o," पक्तिया)"):"".concat(t," - ").concat(n," पक्तिया ").concat(r," में से")},formatSRPaginationPreText:function(){return"पिछला पृष्ठ"},formatSRPaginationPageText:function(t){return"".concat(t," पृष्ठ पर")},formatSRPaginationNextText:function(){return"अगला पृष्ठ"},formatDetailPagination:function(t){return"".concat(t," पंक्तियां")},formatClearSearch:function(){return"सर्च क्लिअर करें"},formatSearch:function(){return"सर्च"},formatNoMatches:function(){return"मेल खाते रिकॉर्ड नही मिले"},formatPaginationSwitch:function(){return"छुपाओ/दिखाओ पृष्ठ संख्या"},formatPaginationSwitchDown:function(){return"दिखाओ पृष्ठ संख्या"},formatPaginationSwitchUp:function(){return"छुपाओ पृष्ठ संख्या"},formatRefresh:function(){return"रिफ्रेश"},formatToggleOn:function(){return"कार्ड दृश्य दिखाएं"},formatToggleOff:function(){return"कार्ड दृश्य छुपाएं"},formatColumns:function(){return"कॉलम"},formatColumnsToggleAll:function(){return"टॉगल आल"},formatFullscreen:function(){return"पूर्ण स्क्रीन"},formatAllRows:function(){return"सब"},formatAutoRefresh:function(){return"ऑटो रिफ्रेश"},formatExport:function(){return"एक्सपोर्ट डाटा"},formatJumpTo:function(){return"जाओ"},formatAdvancedSearch:function(){return"एडवांस सर्च"},formatAdvancedCloseButton:function(){return"बंद करे"},formatFilterControlSwitch:function(){return"छुपाओ/दिखाओ कंट्रोल्स"},formatFilterControlSwitchHide:function(){return"छुपाओ कंट्रोल्स"},formatFilterControlSwitchShow:function(){return"दिखाओ कंट्रोल्स"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["hi-IN"]),r.fn.bootstrapTable.locales["hu-HU"]=r.fn.bootstrapTable.locales.hu={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Betöltés, kérem várjon"},formatRecordsPerPage:function(t){return"".concat(t," rekord per oldal")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Megjelenítve ".concat(t," - ").concat(n," / ").concat(r," összesen (filtered from ").concat(o," total rows)"):"Megjelenítve ".concat(t," - ").concat(n," / ").concat(r," összesen")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Keresés"},formatNoMatches:function(){return"Nincs találat"},formatPaginationSwitch:function(){return"Lapozó elrejtése/megjelenítése"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Frissítés"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Oszlopok"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Összes"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["hu-HU"]),r.fn.bootstrapTable.locales["id-ID"]=r.fn.bootstrapTable.locales.id={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Memuat, mohon tunggu"},formatRecordsPerPage:function(t){return"".concat(t," baris per halaman")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Menampilkan ".concat(t," sampai ").concat(n," dari ").concat(r," baris (filtered from ").concat(o," total rows)"):"Menampilkan ".concat(t," sampai ").concat(n," dari ").concat(r," baris")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Bersihkan filter"},formatSearch:function(){return"Pencarian"},formatNoMatches:function(){return"Tidak ditemukan data yang cocok"},formatPaginationSwitch:function(){return"Sembunyikan/Tampilkan halaman"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Muat ulang"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"kolom"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Semua"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Ekspor data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["id-ID"]),r.fn.bootstrapTable.locales["it-IT"]=r.fn.bootstrapTable.locales.it={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Caricamento in corso"},formatRecordsPerPage:function(t){return"".concat(t," elementi per pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Visualizzazione da ".concat(t," a ").concat(n," di ").concat(r," elementi (filtrati da ").concat(o," elementi totali)"):"Visualizzazione da ".concat(t," a ").concat(n," di ").concat(r," elementi")},formatSRPaginationPreText:function(){return"pagina precedente"},formatSRPaginationPageText:function(t){return"alla pagina ".concat(t)},formatSRPaginationNextText:function(){return"pagina successiva"},formatDetailPagination:function(t){return"Mostrando ".concat(t," elementi")},formatClearSearch:function(){return"Pulisci filtri"},formatSearch:function(){return"Cerca"},formatNoMatches:function(){return"Nessun elemento trovato"},formatPaginationSwitch:function(){return"Nascondi/Mostra paginazione"},formatPaginationSwitchDown:function(){return"Mostra paginazione"},formatPaginationSwitchUp:function(){return"Nascondi paginazione"},formatRefresh:function(){return"Aggiorna"},formatToggleOn:function(){return"Mostra visuale a scheda"},formatToggleOff:function(){return"Nascondi visuale a scheda"},formatColumns:function(){return"Colonne"},formatColumnsToggleAll:function(){return"Mostra tutte"},formatFullscreen:function(){return"Schermo intero"},formatAllRows:function(){return"Tutto"},formatAutoRefresh:function(){return"Auto Aggiornamento"},formatExport:function(){return"Esporta dati"},formatJumpTo:function(){return"VAI"},formatAdvancedSearch:function(){return"Filtri avanzati"},formatAdvancedCloseButton:function(){return"Chiudi"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["it-IT"]),r.fn.bootstrapTable.locales["ja-JP"]=r.fn.bootstrapTable.locales.ja={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"読み込み中です。少々お待ちください。"},formatRecordsPerPage:function(t){return"ページ当たり最大".concat(t,"件")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"全".concat(r,"件から、").concat(t,"から").concat(n,"件目まで表示しています (filtered from ").concat(o," total rows)"):"全".concat(r,"件から、").concat(t,"から").concat(n,"件目まで表示しています")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"検索"},formatNoMatches:function(){return"該当するレコードが見つかりません"},formatPaginationSwitch:function(){return"ページ数を表示・非表示"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"更新"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"すべて"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ja-JP"]),r.fn.bootstrapTable.locales["ka-GE"]=r.fn.bootstrapTable.locales.ka={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"იტვირთება, გთხოვთ მოიცადოთ"},formatRecordsPerPage:function(t){return"".concat(t," ჩანაწერი თითო გვერდზე")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"ნაჩვენებია ".concat(t,"-დან ").concat(n,"-მდე ჩანაწერი ჯამური ").concat(r,"-დან (filtered from ").concat(o," total rows)"):"ნაჩვენებია ".concat(t,"-დან ").concat(n,"-მდე ჩანაწერი ჯამური ").concat(r,"-დან")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"ძებნა"},formatNoMatches:function(){return"მონაცემები არ არის"},formatPaginationSwitch:function(){return"გვერდების გადამრთველის დამალვა/გამოჩენა"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"განახლება"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"სვეტები"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ka-GE"]),r.fn.bootstrapTable.locales["ko-KR"]=r.fn.bootstrapTable.locales.ko={formatCopyRows:function(){return"행 복사"},formatPrint:function(){return"프린트"},formatLoadingMessage:function(){return"데이터를 불러오는 중입니다"},formatRecordsPerPage:function(t){return"페이지 당 ".concat(t,"개 데이터 출력")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"전체 ".concat(r,"개 중 ").concat(t,"~").concat(n,"번째 데이터 출력, (전체 ").concat(o," 행에서 필터됨)"):"전체 ".concat(r,"개 중 ").concat(t,"~").concat(n,"번째 데이터 출력,")},formatSRPaginationPreText:function(){return"이전 페이지"},formatSRPaginationPageText:function(t){return"".concat(t," 페이지로 이동")},formatSRPaginationNextText:function(){return"다음 페이지"},formatDetailPagination:function(t){return"".concat(t," 행들 표시 중")},formatClearSearch:function(){return"검색 초기화"},formatSearch:function(){return"검색"},formatNoMatches:function(){return"조회된 데이터가 없습니다."},formatPaginationSwitch:function(){return"페이지 넘버 보기/숨기기"},formatPaginationSwitchDown:function(){return"페이지 넘버 보기"},formatPaginationSwitchUp:function(){return"페이지 넘버 숨기기"},formatRefresh:function(){return"새로 고침"},formatToggleOn:function(){return"카드뷰 보기"},formatToggleOff:function(){return"카드뷰 숨기기"},formatColumns:function(){return"컬럼 필터링"},formatColumnsToggleAll:function(){return"전체 토글"},formatFullscreen:function(){return"전체 화면"},formatAllRows:function(){return"전체"},formatAutoRefresh:function(){return"자동 갱신"},formatExport:function(){return"데이터 추출"},formatJumpTo:function(){return"이동"},formatAdvancedSearch:function(){return"심화 검색"},formatAdvancedCloseButton:function(){return"닫기"},formatFilterControlSwitch:function(){return"컨트롤 보기/숨기기"},formatFilterControlSwitchHide:function(){return"컨트롤 숨기기"},formatFilterControlSwitchShow:function(){return"컨트롤 보기"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ko-KR"]),r.fn.bootstrapTable.locales["lb-LU"]=r.fn.bootstrapTable.locales.lb={formatCopyRows:function(){return"Zeilen kopéieren"},formatPrint:function(){return"Drécken"},formatLoadingMessage:function(){return"Gëtt gelueden, gedellëgt Iech wannechgelift ee Moment"},formatRecordsPerPage:function(t){return"".concat(t," Zeilen per Säit")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Weist Zeil ".concat(t," bis ").concat(n," vun ").concat(r," Zeil").concat(r>1?"en":""," (gefiltert vun insgesamt ").concat(o," Zeil").concat(r>1?"en":"",")"):"Weist Zeil ".concat(t," bis ").concat(n," vun ").concat(r," Zeil").concat(r>1?"en":"")},formatSRPaginationPreText:function(){return"viregt Säit"},formatSRPaginationPageText:function(t){return"op Säit ".concat(t)},formatSRPaginationNextText:function(){return"nächst Säit"},formatDetailPagination:function(t){return"Weist ".concat(t," Zeilen")},formatClearSearch:function(){return"Sich réckgängeg maachen"},formatSearch:function(){return"Sich"},formatNoMatches:function(){return"Keng passend Anträg fonnt"},formatPaginationSwitch:function(){return"Paginatioun uweisen/verstoppen"},formatPaginationSwitchDown:function(){return"Paginatioun uweisen"},formatPaginationSwitchUp:function(){return"Paginatioun verstoppen"},formatRefresh:function(){return"Nei lueden"},formatToggleOn:function(){return"Kaartenusiicht uweisen"},formatToggleOff:function(){return"Kaartenusiicht verstoppen"},formatColumns:function(){return"Kolonnen"},formatColumnsToggleAll:function(){return"All ëmschalten"},formatFullscreen:function(){return"Vollbild"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Automatescht neilueden"},formatExport:function(){return"Daten exportéieren"},formatJumpTo:function(){return"Sprangen"},formatAdvancedSearch:function(){return"Erweidert Sich"},formatAdvancedCloseButton:function(){return"Zoumaachen"},formatFilterControlSwitch:function(){return"Schaltelementer uweisen/verstoppen"},formatFilterControlSwitchHide:function(){return"Schaltelementer verstoppen"},formatFilterControlSwitchShow:function(){return"Schaltelementer uweisen"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["lb-LU"]),r.fn.bootstrapTable.locales["ms-MY"]=r.fn.bootstrapTable.locales.ms={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Permintaan sedang dimuatkan. Sila tunggu sebentar"},formatRecordsPerPage:function(t){return"".concat(t," rekod setiap muka surat")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Sedang memaparkan rekod ".concat(t," hingga ").concat(n," daripada jumlah ").concat(r," rekod (filtered from ").concat(o," total rows)"):"Sedang memaparkan rekod ".concat(t," hingga ").concat(n," daripada jumlah ").concat(r," rekod")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Cari"},formatNoMatches:function(){return"Tiada rekod yang menyamai permintaan"},formatPaginationSwitch:function(){return"Tunjuk/sembunyi muka surat"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Muatsemula"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Lajur"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Semua"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ms-MY"]),r.fn.bootstrapTable.locales["nb-NO"]=r.fn.bootstrapTable.locales.nb={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Oppdaterer, vennligst vent"},formatRecordsPerPage:function(t){return"".concat(t," poster pr side")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Viser ".concat(t," til ").concat(n," av ").concat(r," rekker (filtered from ").concat(o," total rows)"):"Viser ".concat(t," til ").concat(n," av ").concat(r," rekker")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Søk"},formatNoMatches:function(){return"Ingen poster funnet"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Oppdater"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolonner"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["nb-NO"]),r.fn.bootstrapTable.locales["nl-BE"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Laden, even geduld"},formatRecordsPerPage:function(t){return"".concat(t," records per pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":""," (gefilterd van ").concat(o," records in totaal)"):"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":"")},formatSRPaginationPreText:function(){return"vorige pagina"},formatSRPaginationPageText:function(t){return"tot pagina ".concat(t)},formatSRPaginationNextText:function(){return"volgende pagina"},formatDetailPagination:function(t){return"Toon ".concat(t," record").concat(t>1?"s":"")},formatClearSearch:function(){return"Verwijder filters"},formatSearch:function(){return"Zoeken"},formatNoMatches:function(){return"Geen resultaten gevonden"},formatPaginationSwitch:function(){return"Verberg/Toon paginering"},formatPaginationSwitchDown:function(){return"Toon paginering"},formatPaginationSwitchUp:function(){return"Verberg paginering"},formatRefresh:function(){return"Vernieuwen"},formatToggleOn:function(){return"Toon kaartweergave"},formatToggleOff:function(){return"Verberg kaartweergave"},formatColumns:function(){return"Kolommen"},formatColumnsToggleAll:function(){return"Allen omschakelen"},formatFullscreen:function(){return"Volledig scherm"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Automatisch vernieuwen"},formatExport:function(){return"Exporteer gegevens"},formatJumpTo:function(){return"GA"},formatAdvancedSearch:function(){return"Geavanceerd zoeken"},formatAdvancedCloseButton:function(){return"Sluiten"},formatFilterControlSwitch:function(){return"Verberg/Toon controls"},formatFilterControlSwitchHide:function(){return"Verberg controls"},formatFilterControlSwitchShow:function(){return"Toon controls"},formatAddLevel:function(){return"Niveau toevoegen"},formatCancel:function(){return"Annuleren"},formatColumn:function(){return"Kolom"},formatDeleteLevel:function(){return"Niveau verwijderen"},formatDuplicateAlertTitle:function(){return"Duplicaten gevonden!"},formatDuplicateAlertDescription:function(){return"Gelieve dubbele kolommen te verwijderen of wijzigen"},formatMultipleSort:function(){return"Meervoudige sortering"},formatOrder:function(){return"Volgorde"},formatSort:function(){return"Sorteren"},formatSortBy:function(){return"Sorteren op"},formatThenBy:function(){return"vervolgens"},formatSortOrders:function(){return{asc:"Oplopend",desc:"Aflopend"}}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["nl-BE"]),r.fn.bootstrapTable.locales["nl-NL"]=r.fn.bootstrapTable.locales.nl={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Laden, even geduld"},formatRecordsPerPage:function(t){return"".concat(t," records per pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":""," (gefilterd van ").concat(o," records in totaal)"):"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":"")},formatSRPaginationPreText:function(){return"vorige pagina"},formatSRPaginationPageText:function(t){return"tot pagina ".concat(t)},formatSRPaginationNextText:function(){return"volgende pagina"},formatDetailPagination:function(t){return"Toon ".concat(t," record").concat(t>1?"s":"")},formatClearSearch:function(){return"Verwijder filters"},formatSearch:function(){return"Zoeken"},formatNoMatches:function(){return"Geen resultaten gevonden"},formatPaginationSwitch:function(){return"Verberg/Toon paginering"},formatPaginationSwitchDown:function(){return"Toon paginering"},formatPaginationSwitchUp:function(){return"Verberg paginering"},formatRefresh:function(){return"Vernieuwen"},formatToggleOn:function(){return"Toon kaartweergave"},formatToggleOff:function(){return"Verberg kaartweergave"},formatColumns:function(){return"Kolommen"},formatColumnsToggleAll:function(){return"Allen omschakelen"},formatFullscreen:function(){return"Volledig scherm"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Automatisch vernieuwen"},formatExport:function(){return"Exporteer gegevens"},formatJumpTo:function(){return"GA"},formatAdvancedSearch:function(){return"Geavanceerd zoeken"},formatAdvancedCloseButton:function(){return"Sluiten"},formatFilterControlSwitch:function(){return"Verberg/Toon controls"},formatFilterControlSwitchHide:function(){return"Verberg controls"},formatFilterControlSwitchShow:function(){return"Toon controls"},formatAddLevel:function(){return"Niveau toevoegen"},formatCancel:function(){return"Annuleren"},formatColumn:function(){return"Kolom"},formatDeleteLevel:function(){return"Niveau verwijderen"},formatDuplicateAlertTitle:function(){return"Duplicaten gevonden!"},formatDuplicateAlertDescription:function(){return"Gelieve dubbele kolommen te verwijderen of wijzigen"},formatMultipleSort:function(){return"Meervoudige sortering"},formatOrder:function(){return"Volgorde"},formatSort:function(){return"Sorteren"},formatSortBy:function(){return"Sorteren op"},formatThenBy:function(){return"vervolgens"},formatSortOrders:function(){return{asc:"Oplopend",desc:"Aflopend"}}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["nl-NL"]),r.fn.bootstrapTable.locales["pl-PL"]=r.fn.bootstrapTable.locales.pl={formatCopyRows:function(){return"Kopiuj wiersze"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Ładowanie, proszę czekać"},formatRecordsPerPage:function(t){return"".concat(t," rekordów na stronę")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Wyświetlanie rekordów od ".concat(t," do ").concat(n," z ").concat(r," (filtered from ").concat(o," total rows)"):"Wyświetlanie rekordów od ".concat(t," do ").concat(n," z ").concat(r)},formatSRPaginationPreText:function(){return"poprzednia strona"},formatSRPaginationPageText:function(t){return"z ".concat(t)},formatSRPaginationNextText:function(){return"następna strona"},formatDetailPagination:function(t){return"Wyświetla ".concat(t," wierszy")},formatClearSearch:function(){return"Wyczyść wyszukiwanie"},formatSearch:function(){return"Szukaj"},formatNoMatches:function(){return"Niestety, nic nie znaleziono"},formatPaginationSwitch:function(){return"Pokaż/ukryj stronicowanie"},formatPaginationSwitchDown:function(){return"Pokaż stronicowanie"},formatPaginationSwitchUp:function(){return"Ukryj stronicowanie"},formatRefresh:function(){return"Odśwież"},formatToggleOn:function(){return"Pokaż układ karty"},formatToggleOff:function(){return"Ukryj układ karty"},formatColumns:function(){return"Kolumny"},formatColumnsToggleAll:function(){return"Zaznacz wszystko"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Wszystkie"},formatAutoRefresh:function(){return"Auto odświeżanie"},formatExport:function(){return"Eksport danych"},formatJumpTo:function(){return"Przejdź"},formatAdvancedSearch:function(){return"Wyszukiwanie zaawansowane"},formatAdvancedCloseButton:function(){return"Zamknij"},formatFilterControlSwitch:function(){return"Pokaż/Ukryj"},formatFilterControlSwitchHide:function(){return"Pokaż"},formatFilterControlSwitchShow:function(){return"Ukryj"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["pl-PL"]),r.fn.bootstrapTable.locales["pt-BR"]=r.fn.bootstrapTable.locales.br={formatCopyRows:function(){return"Copiar linhas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Carregando, aguarde"},formatRecordsPerPage:function(t){return"".concat(t," registros por página")},formatShowingRows:function(t,n,r,o){var a=r>1?"s":"";return void 0!==o&&o>0&&o>r?"Exibindo ".concat(t," até ").concat(n," de ").concat(r," linha").concat(a," (filtrado de um total de ").concat(o," linha").concat(a,")"):"Exibindo ".concat(t," até ").concat(n," de ").concat(r," linha").concat(a)},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir para a página ".concat(t)},formatSRPaginationNextText:function(){return"próxima página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," linha").concat(t>1?"s":"")},formatClearSearch:function(){return"Limpar Pesquisa"},formatSearch:function(){return"Pesquisar"},formatNoMatches:function(){return"Nenhum registro encontrado"},formatPaginationSwitch:function(){return"Ocultar/Exibir paginação"},formatPaginationSwitchDown:function(){return"Mostrar Paginação"},formatPaginationSwitchUp:function(){return"Esconder Paginação"},formatRefresh:function(){return"Recarregar"},formatToggleOn:function(){return"Mostrar visualização de cartão"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Colunas"},formatColumnsToggleAll:function(){return"Alternar tudo"},formatFullscreen:function(){return"Tela cheia"},formatAllRows:function(){return"Tudo"},formatAutoRefresh:function(){return"Atualização Automática"},formatExport:function(){return"Exportar dados"},formatJumpTo:function(){return"Ir"},formatAdvancedSearch:function(){return"Pesquisa Avançada"},formatAdvancedCloseButton:function(){return"Fechar"},formatFilterControlSwitch:function(){return"Ocultar/Exibir controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Exibir controles"},formatAddLevel:function(){return"Adicionar nível"},formatCancel:function(){return"Cancelar"},formatColumn:function(){return"Coluna"},formatDeleteLevel:function(){return"Remover nível"},formatDuplicateAlertTitle:function(){return"Encontradas entradas duplicadas!"},formatDuplicateAlertDescription:function(){return"Por favor, remova ou altere as colunas duplicadas"},formatMultipleSort:function(){return"Ordenação múltipla"},formatOrder:function(){return"Ordem"},formatSort:function(){return"Ordenar"},formatSortBy:function(){return"Ordenar por"},formatThenBy:function(){return"em seguida"},formatSortOrders:function(){return{asc:"Crescente",desc:"Decrescente"}}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["pt-BR"]),r.fn.bootstrapTable.locales["pt-PT"]=r.fn.bootstrapTable.locales.pt={formatCopyRows:function(){return"Copiar Linhas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"A carregar, por favor aguarde"},formatRecordsPerPage:function(t){return"".concat(t," registos por página")},formatShowingRows:function(t,n,r,o){var a=r>1?"s":"";return void 0!==o&&o>0&&o>r?"A mostrar ".concat(t," até ").concat(n," de ").concat(r," linha").concat(a," (filtrado de um total de ").concat(o," linha").concat(a,")"):"A mostrar ".concat(t," até ").concat(n," de ").concat(r," linha").concat(a)},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir para página ".concat(t)},formatSRPaginationNextText:function(){return"próxima página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," linha").concat(t>1?"s":"")},formatClearSearch:function(){return"Limpar Pesquisa"},formatSearch:function(){return"Pesquisa"},formatNoMatches:function(){return"Nenhum registo encontrado"},formatPaginationSwitch:function(){return"Esconder/Mostrar paginação"},formatPaginationSwitchDown:function(){return"Mostrar página"},formatPaginationSwitchUp:function(){return"Esconder página"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Mostrar vista em forma de cartão"},formatToggleOff:function(){return"Esconder vista em forma de cartão"},formatColumns:function(){return"Colunas"},formatColumnsToggleAll:function(){return"Activar tudo"},formatFullscreen:function(){return"Ecrã completo"},formatAllRows:function(){return"Tudo"},formatAutoRefresh:function(){return"Actualização autmática"},formatExport:function(){return"Exportar dados"},formatJumpTo:function(){return"Avançar"},formatAdvancedSearch:function(){return"Pesquisa avançada"},formatAdvancedCloseButton:function(){return"Fechar"},formatFilterControlSwitch:function(){return"Ocultar/Exibir controles"},formatFilterControlSwitchHide:function(){return"Esconder controlos"},formatFilterControlSwitchShow:function(){return"Exibir controlos"},formatAddLevel:function(){return"Adicionar nível"},formatCancel:function(){return"Cancelar"},formatColumn:function(){return"Coluna"},formatDeleteLevel:function(){return"Remover nível"},formatDuplicateAlertTitle:function(){return"Foram encontradas entradas duplicadas!"},formatDuplicateAlertDescription:function(){return"Por favor, remova ou altere as colunas duplicadas"},formatMultipleSort:function(){return"Ordenação múltipla"},formatOrder:function(){return"Ordem"},formatSort:function(){return"Ordenar"},formatSortBy:function(){return"Ordenar por"},formatThenBy:function(){return"em seguida"},formatSortOrders:function(){return{asc:"Ascendente",desc:"Descendente"}}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["pt-PT"]),r.fn.bootstrapTable.locales["ro-RO"]=r.fn.bootstrapTable.locales.ro={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Se incarca, va rugam asteptati"},formatRecordsPerPage:function(t){return"".concat(t," inregistrari pe pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Arata de la ".concat(t," pana la ").concat(n," din ").concat(r," randuri (filtered from ").concat(o," total rows)"):"Arata de la ".concat(t," pana la ").concat(n," din ").concat(r," randuri")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Cauta"},formatNoMatches:function(){return"Nu au fost gasite inregistrari"},formatPaginationSwitch:function(){return"Ascunde/Arata paginatia"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Reincarca"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Coloane"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Toate"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ro-RO"]),r.fn.bootstrapTable.locales["ru-RU"]=r.fn.bootstrapTable.locales.ru={formatCopyRows:function(){return"Скопировать строки"},formatPrint:function(){return"Печать"},formatLoadingMessage:function(){return"Пожалуйста, подождите, идёт загрузка"},formatRecordsPerPage:function(t){return"".concat(t," записей на страницу")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Записи с ".concat(t," по ").concat(n," из ").concat(r," (отфильтровано, всего на сервере ").concat(o," записей)"):"Записи с ".concat(t," по ").concat(n," из ").concat(r)},formatSRPaginationPreText:function(){return"предыдущая страница"},formatSRPaginationPageText:function(t){return"перейти к странице ".concat(t)},formatSRPaginationNextText:function(){return"следующая страница"},formatDetailPagination:function(t){return"Загружено ".concat(t," строк")},formatClearSearch:function(){return"Очистить фильтры"},formatSearch:function(){return"Поиск"},formatNoMatches:function(){return"Ничего не найдено"},formatPaginationSwitch:function(){return"Скрыть/Показать постраничную навигацию"},formatPaginationSwitchDown:function(){return"Показать постраничную навигацию"},formatPaginationSwitchUp:function(){return"Скрыть постраничную навигацию"},formatRefresh:function(){return"Обновить"},formatToggleOn:function(){return"Показать записи в виде карточек"},formatToggleOff:function(){return"Табличный режим просмотра"},formatColumns:function(){return"Колонки"},formatColumnsToggleAll:function(){return"Выбрать все"},formatFullscreen:function(){return"Полноэкранный режим"},formatAllRows:function(){return"Все"},formatAutoRefresh:function(){return"Автоматическое обновление"},formatExport:function(){return"Экспортировать данные"},formatJumpTo:function(){return"Стр."},formatAdvancedSearch:function(){return"Расширенный поиск"},formatAdvancedCloseButton:function(){return"Закрыть"},formatFilterControlSwitch:function(){return"Скрыть/Показать панель инструментов"},formatFilterControlSwitchHide:function(){return"Скрыть панель инструментов"},formatFilterControlSwitchShow:function(){return"Показать панель инструментов"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ru-RU"]),r.fn.bootstrapTable.locales["sk-SK"]=r.fn.bootstrapTable.locales.sk={formatCopyRows:function(){return"Skopírovať riadky"},formatPrint:function(){return"Vytlačiť"},formatLoadingMessage:function(){return"Prosím čakajte"},formatRecordsPerPage:function(t){return"".concat(t," záznamov na stranu")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Zobrazená ".concat(t,". - ").concat(n,". položka z celkových ").concat(r," (filtered from ").concat(o," total rows)"):"Zobrazená ".concat(t,". - ").concat(n,". položka z celkových ").concat(r)},formatSRPaginationPreText:function(){return"Predchádzajúca strana"},formatSRPaginationPageText:function(t){return"na stranu ".concat(t)},formatSRPaginationNextText:function(){return"Nasledujúca strana"},formatDetailPagination:function(t){return"Zobrazuje sa ".concat(t," riadkov")},formatClearSearch:function(){return"Odstráň filtre"},formatSearch:function(){return"Vyhľadávanie"},formatNoMatches:function(){return"Nenájdená žiadna vyhovujúca položka"},formatPaginationSwitch:function(){return"Skry/Zobraz stránkovanie"},formatPaginationSwitchDown:function(){return"Zobraziť stránkovanie"},formatPaginationSwitchUp:function(){return"Skryť stránkovanie"},formatRefresh:function(){return"Obnoviť"},formatToggleOn:function(){return"Zobraziť kartové zobrazenie"},formatToggleOff:function(){return"skryť kartové zobrazenie"},formatColumns:function(){return"Stĺpce"},formatColumnsToggleAll:function(){return"Prepnúť všetky"},formatFullscreen:function(){return"Celá obrazovka"},formatAllRows:function(){return"Všetky"},formatAutoRefresh:function(){return"Automatické obnovenie"},formatExport:function(){return"Exportuj dáta"},formatJumpTo:function(){return"Ísť"},formatAdvancedSearch:function(){return"Pokročilé vyhľadávanie"},formatAdvancedCloseButton:function(){return"Zatvoriť"},formatFilterControlSwitch:function(){return"Zobraziť/Skryť tlačidlá"},formatFilterControlSwitchHide:function(){return"Skryť tlačidlá"},formatFilterControlSwitchShow:function(){return"Zobraziť tlačidlá"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["sk-SK"]),r.fn.bootstrapTable.locales["sl-SI"]=r.fn.bootstrapTable.locales.sl={formatCopyRows:function(){return"Kopiraj vrstice"},formatPrint:function(){return"Natisni"},formatLoadingMessage:function(){return"Prosim počakajte..."},formatRecordsPerPage:function(t){return"".concat(t," vrstic na stran")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Prikaz ".concat(t," do ").concat(n," od ").concat(r," vrstic (filtrirano od skupno ").concat(o," vrstic)"):"Prikaz ".concat(t," do ").concat(n," od ").concat(r," vrstic")},formatSRPaginationPreText:function(){return"prejšnja stran"},formatSRPaginationPageText:function(t){return"na stran ".concat(t)},formatSRPaginationNextText:function(){return"na slednja stran"},formatDetailPagination:function(t){return"Prikaz ".concat(t," vrstic")},formatClearSearch:function(){return"Počisti"},formatSearch:function(){return"Iskanje"},formatNoMatches:function(){return"Ni najdenih rezultatov"},formatPaginationSwitch:function(){return"Skrij/Pokaži oštevilčevanje strani"},formatPaginationSwitchDown:function(){return"Pokaži oštevilčevanje strani"},formatPaginationSwitchUp:function(){return"Skrij oštevilčevanje strani"},formatRefresh:function(){return"Osveži"},formatToggleOn:function(){return"Prikaži kartični pogled"},formatToggleOff:function(){return"Skrij kartični pogled"},formatColumns:function(){return"Stolpci"},formatColumnsToggleAll:function(){return"Preklopi vse"},formatFullscreen:function(){return"Celozaslonski prikaz"},formatAllRows:function(){return"Vse"},formatAutoRefresh:function(){return"Samodejna osvežitev"},formatExport:function(){return"Izvoz podatkov"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Napredno iskanje"},formatAdvancedCloseButton:function(){return"Zapri"},formatFilterControlSwitch:function(){return"Skrij/Pokaži kontrole"},formatFilterControlSwitchHide:function(){return"Skrij kontrole"},formatFilterControlSwitchShow:function(){return"Pokaži kontrole"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["sl-SI"]),r.fn.bootstrapTable.locales["sr-Cyrl-RS"]=r.fn.bootstrapTable.locales.sr={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Молим сачекај"},formatRecordsPerPage:function(t){return"".concat(t," редова по страни")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Приказано ".concat(t,". - ").concat(n,". од укупног броја редова ").concat(r," (филтрирано од ").concat(o,")"):"Приказано ".concat(t,". - ").concat(n,". од укупног броја редова ").concat(r)},formatSRPaginationPreText:function(){return"претходна страна"},formatSRPaginationPageText:function(t){return"на страну ".concat(t)},formatSRPaginationNextText:function(){return"следећа страна"},formatDetailPagination:function(t){return"Приказано ".concat(t," редова")},formatClearSearch:function(){return"Обриши претрагу"},formatSearch:function(){return"Пронађи"},formatNoMatches:function(){return"Није пронађен ни један податак"},formatPaginationSwitch:function(){return"Прикажи/сакриј пагинацију"},formatPaginationSwitchDown:function(){return"Прикажи пагинацију"},formatPaginationSwitchUp:function(){return"Сакриј пагинацију"},formatRefresh:function(){return"Освежи"},formatToggleOn:function(){return"Прикажи картице"},formatToggleOff:function(){return"Сакриј картице"},formatColumns:function(){return"Колоне"},formatColumnsToggleAll:function(){return"Прикажи/сакриј све"},formatFullscreen:function(){return"Цео екран"},formatAllRows:function(){return"Све"},formatAutoRefresh:function(){return"Аутоматско освежавање"},formatExport:function(){return"Извези податке"},formatJumpTo:function(){return"Иди"},formatAdvancedSearch:function(){return"Напредна претрага"},formatAdvancedCloseButton:function(){return"Затвори"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["sr-Cyrl-RS"]),r.fn.bootstrapTable.locales["sr-Latn-RS"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Molim sačekaj"},formatRecordsPerPage:function(t){return"".concat(t," redova po strani")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Prikazano ".concat(t,". - ").concat(n,". od ukupnog broja redova ").concat(r," (filtrirano od ").concat(o,")"):"Prikazano ".concat(t,". - ").concat(n,". od ukupnog broja redova ").concat(r)},formatSRPaginationPreText:function(){return"prethodna strana"},formatSRPaginationPageText:function(t){return"na stranu ".concat(t)},formatSRPaginationNextText:function(){return"sledeća strana"},formatDetailPagination:function(t){return"Prikazano ".concat(t," redova")},formatClearSearch:function(){return"Obriši pretragu"},formatSearch:function(){return"Pronađi"},formatNoMatches:function(){return"Nije pronađen ni jedan podatak"},formatPaginationSwitch:function(){return"Prikaži/sakrij paginaciju"},formatPaginationSwitchDown:function(){return"Prikaži paginaciju"},formatPaginationSwitchUp:function(){return"Sakrij paginaciju"},formatRefresh:function(){return"Osveži"},formatToggleOn:function(){return"Prikaži kartice"},formatToggleOff:function(){return"Sakrij kartice"},formatColumns:function(){return"Kolone"},formatColumnsToggleAll:function(){return"Prikaži/sakrij sve"},formatFullscreen:function(){return"Ceo ekran"},formatAllRows:function(){return"Sve"},formatAutoRefresh:function(){return"Automatsko osvežavanje"},formatExport:function(){return"Izvezi podatke"},formatJumpTo:function(){return"Idi"},formatAdvancedSearch:function(){return"Napredna pretraga"},formatAdvancedCloseButton:function(){return"Zatvori"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["sr-Latn-RS"]),r.fn.bootstrapTable.locales["sv-SE"]=r.fn.bootstrapTable.locales.sv={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Laddar, vänligen vänta"},formatRecordsPerPage:function(t){return"".concat(t," rader per sida")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Visa ".concat(t," till ").concat(n," av ").concat(r," rader (filtered from ").concat(o," total rows)"):"Visa ".concat(t," till ").concat(n," av ").concat(r," rader")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Sök"},formatNoMatches:function(){return"Inga matchande resultat funna."},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Uppdatera"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"kolumn"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["sv-SE"]),r.fn.bootstrapTable.locales["th-TH"]=r.fn.bootstrapTable.locales.th={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"กำลังโหลดข้อมูล, กรุณารอสักครู่"},formatRecordsPerPage:function(t){return"".concat(t," รายการต่อหน้า")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"รายการที่ ".concat(t," ถึง ").concat(n," จากทั้งหมด ").concat(r," รายการ (filtered from ").concat(o," total rows)"):"รายการที่ ".concat(t," ถึง ").concat(n," จากทั้งหมด ").concat(r," รายการ")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"ค้นหา"},formatNoMatches:function(){return"ไม่พบรายการที่ค้นหา !"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"รีเฟรส"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"คอลัมน์"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["th-TH"]),r.fn.bootstrapTable.locales["tr-TR"]=r.fn.bootstrapTable.locales.tr={formatCopyRows:function(){return"Satırları Kopyala"},formatPrint:function(){return"Yazdır"},formatLoadingMessage:function(){return"Yükleniyor, lütfen bekleyin"},formatRecordsPerPage:function(t){return"Sayfa başına ".concat(t," kayıt.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(r," kayıttan ").concat(t,"-").concat(n," arası gösteriliyor (").concat(o," toplam satır filtrelendi)."):"".concat(r," kayıttan ").concat(t,"-").concat(n," arası gösteriliyor.")},formatSRPaginationPreText:function(){return"önceki sayfa"},formatSRPaginationPageText:function(t){return"sayfa ".concat(t)},formatSRPaginationNextText:function(){return"sonraki sayfa"},formatDetailPagination:function(t){return"".concat(t," satır gösteriliyor")},formatClearSearch:function(){return"Aramayı Temizle"},formatSearch:function(){return"Ara"},formatNoMatches:function(){return"Eşleşen kayıt bulunamadı."},formatPaginationSwitch:function(){return"Sayfalamayı Gizle/Göster"},formatPaginationSwitchDown:function(){return"Sayfalamayı Göster"},formatPaginationSwitchUp:function(){return"Sayfalamayı Gizle"},formatRefresh:function(){return"Yenile"},formatToggleOn:function(){return"Kart Görünümünü Göster"},formatToggleOff:function(){return"Kart Görünümünü Gizle"},formatColumns:function(){return"Sütunlar"},formatColumnsToggleAll:function(){return"Tümünü Kapat"},formatFullscreen:function(){return"Tam Ekran"},formatAllRows:function(){return"Tüm Satırlar"},formatAutoRefresh:function(){return"Otomatik Yenileme"},formatExport:function(){return"Verileri Dışa Aktar"},formatJumpTo:function(){return"Git"},formatAdvancedSearch:function(){return"Gelişmiş Arama"},formatAdvancedCloseButton:function(){return"Kapat"},formatFilterControlSwitch:function(){return"Kontrolleri Gizle/Göster"},formatFilterControlSwitchHide:function(){return"Kontrolleri Gizle"},formatFilterControlSwitchShow:function(){return"Kontrolleri Göster"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["tr-TR"]),r.fn.bootstrapTable.locales["uk-UA"]=r.fn.bootstrapTable.locales.uk={formatCopyRows:function(){return"Скопіювати рядки"},formatPrint:function(){return"Друк"},formatLoadingMessage:function(){return"Завантаження, будь ласка, зачекайте"},formatRecordsPerPage:function(t){return"".concat(t," рядків на сторінку")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Відображено рядки з ".concat(t," по ").concat(n," з ").concat(r," загалом (відфільтровано з ").concat(o," рядків)"):"Відображено рядки з ".concat(t," по ").concat(n," з ").concat(r," загалом")},formatSRPaginationPreText:function(){return"попередня сторінка"},formatSRPaginationPageText:function(t){return"до сторінки ".concat(t)},formatSRPaginationNextText:function(){return"наступна сторінка"},formatDetailPagination:function(t){return"Відображено ".concat(t," рядків")},formatClearSearch:function(){return"Скинути фільтри"},formatSearch:function(){return"Пошук"},formatNoMatches:function(){return"Не знайдено жодного запису"},formatPaginationSwitch:function(){return"Сховати/Відобразити пагінацію"},formatPaginationSwitchDown:function(){return"Відобразити пагінацію"},formatPaginationSwitchUp:function(){return"Сховати пагінацію"},formatRefresh:function(){return"Оновити"},formatToggleOn:function(){return"Відобразити у форматі карток"},formatToggleOff:function(){return"Вимкнути формат карток"},formatColumns:function(){return"Стовпці"},formatColumnsToggleAll:function(){return"Переключити усі"},formatFullscreen:function(){return"Повноекранний режим"},formatAllRows:function(){return"Усі"},formatAutoRefresh:function(){return"Автооновлення"},formatExport:function(){return"Експортувати дані"},formatJumpTo:function(){return"Швидкий перехід до"},formatAdvancedSearch:function(){return"Розширений пошук"},formatAdvancedCloseButton:function(){return"Закрити"},formatFilterControlSwitch:function(){return"Сховати/Відобразити елементи керування"},formatFilterControlSwitchHide:function(){return"Сховати елементи керування"},formatFilterControlSwitchShow:function(){return"Відобразити елементи керування"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["uk-UA"]),r.fn.bootstrapTable.locales["ur-PK"]=r.fn.bootstrapTable.locales.ur={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"براۓ مہربانی انتظار کیجئے"},formatRecordsPerPage:function(t){return"".concat(t," ریکارڈز فی صفہ ")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"دیکھیں ".concat(t," سے ").concat(n," کے ").concat(r,"ریکارڈز (filtered from ").concat(o," total rows)"):"دیکھیں ".concat(t," سے ").concat(n," کے ").concat(r,"ریکارڈز")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"تلاش"},formatNoMatches:function(){return"کوئی ریکارڈ نہیں ملا"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"تازہ کریں"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"کالم"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["ur-PK"]),r.fn.bootstrapTable.locales["uz-Latn-UZ"]=r.fn.bootstrapTable.locales.uz={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Yuklanyapti, iltimos kuting"},formatRecordsPerPage:function(t){return"".concat(t," qator har sahifada")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Ko'rsatypati ".concat(t," dan ").concat(n," gacha ").concat(r," qatorlarni (filtered from ").concat(o," total rows)"):"Ko'rsatypati ".concat(t," dan ").concat(n," gacha ").concat(r," qatorlarni")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Filtrlarni tozalash"},formatSearch:function(){return"Qidirish"},formatNoMatches:function(){return"Hech narsa topilmadi"},formatPaginationSwitch:function(){return"Sahifalashni yashirish/ko'rsatish"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Yangilash"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Ustunlar"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Hammasi"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Eksport"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["uz-Latn-UZ"]),r.fn.bootstrapTable.locales["vi-VN"]=r.fn.bootstrapTable.locales.vi={formatCopyRows:function(){return"Sao chép hàng"},formatPrint:function(){return"In"},formatLoadingMessage:function(){return"Đang tải"},formatRecordsPerPage:function(t){return"".concat(t," bản ghi mỗi trang")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Hiển thị từ trang ".concat(t," đến ").concat(n," của ").concat(r," bản ghi (được lọc từ tổng ").concat(o," hàng)"):"Hiển thị từ trang ".concat(t," đến ").concat(n," của ").concat(r," bản ghi")},formatSRPaginationPreText:function(){return"trang trước"},formatSRPaginationPageText:function(t){return"đến trang ".concat(t)},formatSRPaginationNextText:function(){return"trang sau"},formatDetailPagination:function(t){return"Đang hiện ".concat(t," hàng")},formatClearSearch:function(){return"Xoá tìm kiếm"},formatSearch:function(){return"Tìm kiếm"},formatNoMatches:function(){return"Không có dữ liệu"},formatPaginationSwitch:function(){return"Ẩn/Hiện phân trang"},formatPaginationSwitchDown:function(){return"Hiện phân trang"},formatPaginationSwitchUp:function(){return"Ẩn phân trang"},formatRefresh:function(){return"Làm mới"},formatToggleOn:function(){return"Hiển thị các thẻ"},formatToggleOff:function(){return"Ẩn các thẻ"},formatColumns:function(){return"Cột"},formatColumnsToggleAll:function(){return"Hiện tất cả"},formatFullscreen:function(){return"Toàn màn hình"},formatAllRows:function(){return"Tất cả"},formatAutoRefresh:function(){return"Tự động làm mới"},formatExport:function(){return"Xuất dữ liệu"},formatJumpTo:function(){return"Đến"},formatAdvancedSearch:function(){return"Tìm kiếm nâng cao"},formatAdvancedCloseButton:function(){return"Đóng"},formatFilterControlSwitch:function(){return"Ẩn/Hiện điều khiển"},formatFilterControlSwitchHide:function(){return"Ẩn điều khiển"},formatFilterControlSwitchShow:function(){return"Hiện điều khiển"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["vi-VN"]),r.fn.bootstrapTable.locales["zh-TW"]={formatCopyRows:function(){return"複製行"},formatPrint:function(){return"列印"},formatLoadingMessage:function(){return"正在努力地載入資料,請稍候"},formatRecordsPerPage:function(t){return"每頁顯示 ".concat(t," 項記錄")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"顯示第 ".concat(t," 到第 ").concat(n," 項記錄,總共 ").concat(r," 項記錄(從 ").concat(o," 總記錄中過濾)"):"顯示第 ".concat(t," 到第 ").concat(n," 項記錄,總共 ").concat(r," 項記錄")},formatSRPaginationPreText:function(){return"上一頁"},formatSRPaginationPageText:function(t){return"第".concat(t,"頁")},formatSRPaginationNextText:function(){return"下一頁"},formatDetailPagination:function(t){return"總共 ".concat(t," 項記錄")},formatClearSearch:function(){return"清空過濾"},formatSearch:function(){return"搜尋"},formatNoMatches:function(){return"沒有找到符合的結果"},formatPaginationSwitch:function(){return"隱藏/顯示分頁"},formatPaginationSwitchDown:function(){return"顯示分頁"},formatPaginationSwitchUp:function(){return"隱藏分頁"},formatRefresh:function(){return"重新整理"},formatToggleOn:function(){return"顯示卡片視圖"},formatToggleOff:function(){return"隱藏卡片視圖"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"切換所有"},formatFullscreen:function(){return"全屏"},formatAllRows:function(){return"所有"},formatAutoRefresh:function(){return"自動刷新"},formatExport:function(){return"導出數據"},formatJumpTo:function(){return"跳轉"},formatAdvancedSearch:function(){return"高級搜尋"},formatAdvancedCloseButton:function(){return"關閉"},formatFilterControlSwitch:function(){return"隱藏/顯示過濾控制"},formatFilterControlSwitchHide:function(){return"隱藏過濾控制"},formatFilterControlSwitchShow:function(){return"顯示過濾控制"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["zh-TW"]),r.fn.bootstrapTable.locales["zh-CN"]=r.fn.bootstrapTable.locales.zh={formatCopyRows:function(){return"复制行"},formatPrint:function(){return"打印"},formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候"},formatRecordsPerPage:function(t){return"每页显示 ".concat(t," 条记录")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"显示第 ".concat(t," 到第 ").concat(n," 条记录,总共 ").concat(r," 条记录(从 ").concat(o," 总记录中过滤)"):"显示第 ".concat(t," 到第 ").concat(n," 条记录,总共 ").concat(r," 条记录")},formatSRPaginationPreText:function(){return"上一页"},formatSRPaginationPageText:function(t){return"第".concat(t,"页")},formatSRPaginationNextText:function(){return"下一页"},formatDetailPagination:function(t){return"总共 ".concat(t," 条记录")},formatClearSearch:function(){return"清空过滤"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatPaginationSwitchDown:function(){return"显示分页"},formatPaginationSwitchUp:function(){return"隐藏分页"},formatRefresh:function(){return"刷新"},formatToggleOn:function(){return"显示卡片视图"},formatToggleOff:function(){return"隐藏卡片视图"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"切换所有"},formatFullscreen:function(){return"全屏"},formatAllRows:function(){return"所有"},formatAutoRefresh:function(){return"自动刷新"},formatExport:function(){return"导出数据"},formatJumpTo:function(){return"跳转"},formatAdvancedSearch:function(){return"高级搜索"},formatAdvancedCloseButton:function(){return"关闭"},formatFilterControlSwitch:function(){return"隐藏/显示过滤控制"},formatFilterControlSwitchHide:function(){return"隐藏过滤控制"},formatFilterControlSwitchShow:function(){return"显示过滤控制"}},Object.assign(r.fn.bootstrapTable.defaults,r.fn.bootstrapTable.locales["zh-CN"])})); diff --git a/public/js/dist/bootstrap-table.js b/public/js/dist/bootstrap-table.js index 5b74860cb5..bdc1127c52 100644 --- a/public/js/dist/bootstrap-table.js +++ b/public/js/dist/bootstrap-table.js @@ -402,11 +402,87 @@ } })(jQuery); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BootstrapTable = factory(global.jQuery)); -})(this, (function ($$q) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.filter.js'), require('core-js/modules/es.array.find.js'), require('core-js/modules/es.array.find-index.js'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.array.index-of.js'), require('core-js/modules/es.array.iterator.js'), require('core-js/modules/es.array.join.js'), require('core-js/modules/es.array.map.js'), require('core-js/modules/es.array.reverse.js'), require('core-js/modules/es.array.slice.js'), require('core-js/modules/es.array.sort.js'), require('core-js/modules/es.array.splice.js'), require('core-js/modules/es.date.to-json.js'), require('core-js/modules/es.number.constructor.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.entries.js'), require('core-js/modules/es.object.keys.js'), require('core-js/modules/es.object.to-string.js'), require('core-js/modules/es.parse-float.js'), require('core-js/modules/es.parse-int.js'), require('core-js/modules/es.regexp.constructor.js'), require('core-js/modules/es.regexp.exec.js'), require('core-js/modules/es.regexp.to-string.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/es.string.replace.js'), require('core-js/modules/es.string.search.js'), require('core-js/modules/es.string.split.js'), require('core-js/modules/es.string.trim.js'), require('core-js/modules/web.dom-collections.for-each.js'), require('core-js/modules/web.dom-collections.iterator.js'), require('jquery'), require('core-js/modules/es.object.get-prototype-of.js'), require('core-js/modules/es.string.ends-with.js'), require('core-js/modules/es.string.match.js'), require('core-js/modules/es.string.starts-with.js')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.filter.js', 'core-js/modules/es.array.find.js', 'core-js/modules/es.array.find-index.js', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.array.index-of.js', 'core-js/modules/es.array.iterator.js', 'core-js/modules/es.array.join.js', 'core-js/modules/es.array.map.js', 'core-js/modules/es.array.reverse.js', 'core-js/modules/es.array.slice.js', 'core-js/modules/es.array.sort.js', 'core-js/modules/es.array.splice.js', 'core-js/modules/es.date.to-json.js', 'core-js/modules/es.number.constructor.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.entries.js', 'core-js/modules/es.object.keys.js', 'core-js/modules/es.object.to-string.js', 'core-js/modules/es.parse-float.js', 'core-js/modules/es.parse-int.js', 'core-js/modules/es.regexp.constructor.js', 'core-js/modules/es.regexp.exec.js', 'core-js/modules/es.regexp.to-string.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/es.string.replace.js', 'core-js/modules/es.string.search.js', 'core-js/modules/es.string.split.js', 'core-js/modules/es.string.trim.js', 'core-js/modules/web.dom-collections.for-each.js', 'core-js/modules/web.dom-collections.iterator.js', 'jquery', 'core-js/modules/es.object.get-prototype-of.js', 'core-js/modules/es.string.ends-with.js', 'core-js/modules/es.string.match.js', 'core-js/modules/es.string.starts-with.js'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BootstrapTable = factory(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_filter_js, es_array_find_js, es_array_findIndex_js, es_array_includes_js, es_array_indexOf_js, es_array_iterator_js, es_array_join_js, es_array_map_js, es_array_reverse_js, es_array_slice_js, es_array_sort_js, es_array_splice_js, es_date_toJson_js, es_number_constructor_js, es_object_assign_js, es_object_entries_js, es_object_keys_js, es_object_toString_js, es_parseFloat_js, es_parseInt_js, es_regexp_constructor_js, es_regexp_exec_js, es_regexp_toString_js, es_string_includes_js, es_string_replace_js, es_string_search_js, es_string_split_js, es_string_trim_js, web_domCollections_forEach_js, web_domCollections_iterator_js, $) { 'use strict'; + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e ) { + t && (r = t); + var n = 0, + F = function () {}; + return { + s: F, + n: function () { + return n >= r.length ? { + done: !0 + } : { + done: !1, + value: r[n++] + }; + }, + e: function (r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = !0, + u = !1; + return { + s: function () { + t = t.call(r); + }, + n: function () { + var r = t.next(); + return a = r.done, r; + }, + e: function (r) { + u = !0, o = r; + }, + f: function () { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } + }; + } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { @@ -418,10 +494,7 @@ f = !0, o = !1; try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { @@ -434,15 +507,27 @@ return a; } } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { - var i = e.call(t, r || "default"); + var i = e.call(t, r ); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return (String )(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); @@ -457,4155 +542,19 @@ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function () {}; - return { - s: F, - n: function () { - if (i >= o.length) return { - done: true - }; - return { - done: false, - value: o[i++] - }; - }, - e: function (e) { - throw e; - }, - f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, - didErr = false, - err; - return { - s: function () { - it = it.call(o); - }, - n: function () { - var step = it.next(); - normalCompletion = step.done; - return step; - }, - e: function (e) { - didErr = true; - err = e; - }, - f: function () { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } - }; - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$k = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$x = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$w = fails$x; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$w(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$v = fails$x; - - var functionBindNative = !fails$v(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$3 = functionBindNative; - - var call$f = Function.prototype.call; - - var functionCall = NATIVE_BIND$3 ? call$f.bind(call$f) : function () { - return call$f.apply(call$f, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$5 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$5 && !$propertyIsEnumerable$1.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$5(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable$1; - - var createPropertyDescriptor$4 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$2 = functionBindNative; - - var FunctionPrototype$2 = Function.prototype; - var call$e = FunctionPrototype$2.call; - var uncurryThisWithBind = NATIVE_BIND$2 && FunctionPrototype$2.bind.bind(call$e, call$e); - - var functionUncurryThis = NATIVE_BIND$2 ? uncurryThisWithBind : function (fn) { - return function () { - return call$e.apply(fn, arguments); - }; - }; - - var uncurryThis$y = functionUncurryThis; - - var toString$h = uncurryThis$y({}.toString); - var stringSlice$9 = uncurryThis$y(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$9(toString$h(it), 8, -1); - }; - - var uncurryThis$x = functionUncurryThis; - var fails$u = fails$x; - var classof$7 = classofRaw$2; - - var $Object$4 = Object; - var split = uncurryThis$x(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$u(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$4('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$7(it) === 'String' ? split(it, '') : $Object$4(it); - } : $Object$4; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$7 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$6 = isNullOrUndefined$7; - - var $TypeError$c = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$c = function (it) { - if (isNullOrUndefined$6(it)) throw new $TypeError$c("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$3 = indexedObject; - var requireObjectCoercible$b = requireObjectCoercible$c; - - var toIndexedObject$8 = function (it) { - return IndexedObject$3(requireObjectCoercible$b(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$i = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$h = isCallable$i; - - var isObject$d = function (it) { - return typeof it == 'object' ? it !== null : isCallable$h(it); - }; - - var global$j = global$k; - var isCallable$g = isCallable$i; - - var aFunction = function (argument) { - return isCallable$g(argument) ? argument : undefined; - }; - - var getBuiltIn$5 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$j[namespace]) : global$j[namespace] && global$j[namespace][method]; - }; - - var uncurryThis$w = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$w({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$i = global$k; - var userAgent$2 = engineUserAgent; - - var process = global$i.process; - var Deno = global$i.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent$2) { - match = userAgent$2.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent$2.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$t = fails$x; - var global$h = global$k; - - var $String$5 = global$h.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$t(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$5(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$4 = getBuiltIn$5; - var isCallable$f = isCallable$i; - var isPrototypeOf$3 = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$3 = Object; - - var isSymbol$3 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$4('Symbol'); - return isCallable$f($Symbol) && isPrototypeOf$3($Symbol.prototype, $Object$3(it)); - }; - - var $String$4 = String; - - var tryToString$3 = function (argument) { - try { - return $String$4(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$e = isCallable$i; - var tryToString$2 = tryToString$3; - - var $TypeError$b = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$4 = function (argument) { - if (isCallable$e(argument)) return argument; - throw new $TypeError$b(tryToString$2(argument) + ' is not a function'); - }; - - var aCallable$3 = aCallable$4; - var isNullOrUndefined$5 = isNullOrUndefined$7; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$5 = function (V, P) { - var func = V[P]; - return isNullOrUndefined$5(func) ? undefined : aCallable$3(func); - }; - - var call$d = functionCall; - var isCallable$d = isCallable$i; - var isObject$c = isObject$d; - - var $TypeError$a = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$d(fn = input.toString) && !isObject$c(val = call$d(fn, input))) return val; - if (isCallable$d(fn = input.valueOf) && !isObject$c(val = call$d(fn, input))) return val; - if (pref !== 'string' && isCallable$d(fn = input.toString) && !isObject$c(val = call$d(fn, input))) return val; - throw new $TypeError$a("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var isPure = false; - - var global$g = global$k; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$8 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$8(global$g, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$g[key] = value; - } return value; - }; - - var globalThis$1 = global$k; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$4 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible$a = requireObjectCoercible$c; - - var $Object$2 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$b = function (argument) { - return $Object$2(requireObjectCoercible$a(argument)); - }; - - var uncurryThis$v = functionUncurryThis; - var toObject$a = toObject$b; - - var hasOwnProperty = uncurryThis$v({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$a(it), key); - }; - - var uncurryThis$u = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$g = uncurryThis$u(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$g(++id + postfix, 36); - }; - - var global$f = global$k; - var shared$3 = shared$4; - var hasOwn$b = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$3 = global$f.Symbol; - var WellKnownSymbolsStore = shared$3('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$3['for'] || Symbol$3 : Symbol$3 && Symbol$3.withoutSetter || uid$1; - - var wellKnownSymbol$j = function (name) { - if (!hasOwn$b(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$b(Symbol$3, name) - ? Symbol$3[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$c = functionCall; - var isObject$b = isObject$d; - var isSymbol$2 = isSymbol$3; - var getMethod$4 = getMethod$5; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$i = wellKnownSymbol$j; - - var $TypeError$9 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$i('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$3 = function (input, pref) { - if (!isObject$b(input) || isSymbol$2(input)) return input; - var exoticToPrim = getMethod$4(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$c(exoticToPrim, input, pref); - if (!isObject$b(result) || isSymbol$2(result)) return result; - throw new $TypeError$9("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive$2 = toPrimitive$3; - var isSymbol$1 = isSymbol$3; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive$2(argument, 'string'); - return isSymbol$1(key) ? key : key + ''; - }; - - var global$e = global$k; - var isObject$a = isObject$d; - - var document$1 = global$e.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$a(document$1) && isObject$a(document$1.createElement); - - var documentCreateElement$2 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$f = descriptors; - var fails$s = fails$x; - var createElement = documentCreateElement$2; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$f && !fails$s(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$e = descriptors; - var call$b = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$3 = createPropertyDescriptor$4; - var toIndexedObject$7 = toIndexedObject$8; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$a = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$e ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$7(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$a(O, P)) return createPropertyDescriptor$3(!call$b(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$d = descriptors; - var fails$r = fails$x; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$d && fails$r(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$9 = isObject$d; - - var $String$3 = String; - var $TypeError$8 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$c = function (argument) { - if (isObject$9(argument)) return argument; - throw new $TypeError$8($String$3(argument) + ' is not an object'); - }; - - var DESCRIPTORS$c = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$b = anObject$c; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$7 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$c ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$b(O); - P = toPropertyKey(P); - anObject$b(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$b(O); - P = toPropertyKey(P); - anObject$b(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$7('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$b = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$2 = createPropertyDescriptor$4; - - var createNonEnumerableProperty$7 = DESCRIPTORS$b ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$2(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$3 = {exports: {}}; - - var DESCRIPTORS$a = descriptors; - var hasOwn$9 = hasOwnProperty_1; - - var FunctionPrototype$1 = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$a && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$9(FunctionPrototype$1, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$a || (DESCRIPTORS$a && getDescriptor(FunctionPrototype$1, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$t = functionUncurryThis; - var isCallable$c = isCallable$i; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$t(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$c(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$d = global$k; - var isCallable$b = isCallable$i; - - var WeakMap$1 = global$d.WeakMap; - - var weakMapBasicDetection = isCallable$b(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$2 = shared$4; - var uid = uid$2; - - var keys$1 = shared$2('keys'); - - var sharedKey$3 = function (key) { - return keys$1[key] || (keys$1[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$c = global$k; - var isObject$8 = isObject$d; - var createNonEnumerableProperty$6 = createNonEnumerableProperty$7; - var hasOwn$8 = hasOwnProperty_1; - var shared$1 = sharedStoreExports; - var sharedKey$2 = sharedKey$3; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$2 = global$c.TypeError; - var WeakMap = global$c.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$8(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$2('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared$1.state) { - var store = shared$1.state || (shared$1.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$2('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$8(it, STATE)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$6(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$8(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$8(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$s = functionUncurryThis; - var fails$q = fails$x; - var isCallable$a = isCallable$i; - var hasOwn$7 = hasOwnProperty_1; - var DESCRIPTORS$9 = descriptors; - var CONFIGURABLE_FUNCTION_NAME$1 = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule$1 = internalState; - - var enforceInternalState$1 = InternalStateModule$1.enforce; - var getInternalState$2 = InternalStateModule$1.get; - var $String$2 = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$7 = Object.defineProperty; - var stringSlice$8 = uncurryThis$s(''.slice); - var replace$4 = uncurryThis$s(''.replace); - var join = uncurryThis$s([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$9 && !fails$q(function () { - return defineProperty$7(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$2 = makeBuiltIn$3.exports = function (value, name, options) { - if (stringSlice$8($String$2(name), 0, 7) === 'Symbol(') { - name = '[' + replace$4($String$2(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$7(value, 'name') || (CONFIGURABLE_FUNCTION_NAME$1 && value.name !== name)) { - if (DESCRIPTORS$9) defineProperty$7(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$7(options, 'arity') && value.length !== options.arity) { - defineProperty$7(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$7(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$9) defineProperty$7(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState$1(value); - if (!hasOwn$7(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$2(function toString() { - return isCallable$a(this) && getInternalState$2(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$3.exports; - - var isCallable$9 = isCallable$i; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn$1 = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$7 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$9(value)) makeBuiltIn$1(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor$2 = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor$2 : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$5 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$4 = toIntegerOrInfinity$5; - - var max$3 = Math.max; - var min$6 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$3 = function (index, length) { - var integer = toIntegerOrInfinity$4(index); - return integer < 0 ? max$3(integer + length, 0) : min$6(integer, length); - }; - - var toIntegerOrInfinity$3 = toIntegerOrInfinity$5; - - var min$5 = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$6 = function (argument) { - var len = toIntegerOrInfinity$3(argument); - return len > 0 ? min$5(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength$5 = toLength$6; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$6 = function (obj) { - return toLength$5(obj.length); - }; - - var toIndexedObject$6 = toIndexedObject$8; - var toAbsoluteIndex$2 = toAbsoluteIndex$3; - var lengthOfArrayLike$5 = lengthOfArrayLike$6; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$4 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$6($this); - var length = lengthOfArrayLike$5(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex$2(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$4(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$4(false) - }; - - var uncurryThis$r = functionUncurryThis; - var hasOwn$6 = hasOwnProperty_1; - var toIndexedObject$5 = toIndexedObject$8; - var indexOf$1 = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$5 = uncurryThis$r([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$5(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$6(hiddenKeys$2, key) && hasOwn$6(O, key) && push$5(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$6(O, key = names[i++])) { - ~indexOf$1(result, key) || push$5(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$3 = getBuiltIn$5; - var uncurryThis$q = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$a = anObject$c; - - var concat$2 = uncurryThis$q([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$3('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$a(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$2(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn$5 = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$2 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn$5(target, key) && !(exceptions && hasOwn$5(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$p = fails$x; - var isCallable$8 = isCallable$i; - - var replacement = /#|\.prototype\./; - - var isForced$3 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$8(detection) ? fails$p(detection) - : !!detection; - }; - - var normalize = isForced$3.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$3.data = {}; - var NATIVE = isForced$3.NATIVE = 'N'; - var POLYFILL = isForced$3.POLYFILL = 'P'; - - var isForced_1 = isForced$3; - - var global$b = global$k; - var getOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty$5 = createNonEnumerableProperty$7; - var defineBuiltIn$6 = defineBuiltIn$7; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties$1 = copyConstructorProperties$2; - var isForced$2 = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$b; - } else if (STATIC) { - target = global$b[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$b[TARGET] && global$b[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor$4(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced$2(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties$1(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty$5(sourceProperty, 'sham', true); - } - defineBuiltIn$6(target, key, sourceProperty, options); - } - }; - - var classof$6 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$5 = Array.isArray || function isArray(argument) { - return classof$6(argument) === 'Array'; - }; - - var $TypeError$6 = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$2 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError$6('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$8 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor$1 = createPropertyDescriptor$4; - - var createProperty$3 = function (object, key, value) { - if (DESCRIPTORS$8) definePropertyModule$1.f(object, key, createPropertyDescriptor$1(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$h = wellKnownSymbol$j; - - var TO_STRING_TAG$2 = wellKnownSymbol$h('toStringTag'); - var test$2 = {}; - - test$2[TO_STRING_TAG$2] = 'z'; - - var toStringTagSupport = String(test$2) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$7 = isCallable$i; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$g = wellKnownSymbol$j; - - var TO_STRING_TAG$1 = wellKnownSymbol$g('toStringTag'); - var $Object$1 = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$5 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object$1(it), TO_STRING_TAG$1)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$7(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$p = functionUncurryThis; - var fails$o = fails$x; - var isCallable$6 = isCallable$i; - var classof$4 = classof$5; - var getBuiltIn$2 = getBuiltIn$5; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$2('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec$3 = uncurryThis$p(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable$6(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable$6(argument)) return false; - switch (classof$4(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec$3(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$3 = !construct || fails$o(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$4 = isArray$5; - var isConstructor$2 = isConstructor$3; - var isObject$7 = isObject$d; - var wellKnownSymbol$f = wellKnownSymbol$j; - - var SPECIES$5 = wellKnownSymbol$f('species'); - var $Array$1 = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$4(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor$2(C) && (C === $Array$1 || isArray$4(C.prototype))) C = undefined; - else if (isObject$7(C)) { - C = C[SPECIES$5]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array$1 : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$3 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$n = fails$x; - var wellKnownSymbol$e = wellKnownSymbol$j; - var V8_VERSION$1 = engineV8Version; - - var SPECIES$4 = wellKnownSymbol$e('species'); - - var arrayMethodHasSpeciesSupport$5 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$n(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES$4] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$p = _export; - var fails$m = fails$x; - var isArray$3 = isArray$5; - var isObject$6 = isObject$d; - var toObject$9 = toObject$b; - var lengthOfArrayLike$4 = lengthOfArrayLike$6; - var doesNotExceedSafeInteger$1 = doesNotExceedSafeInteger$2; - var createProperty$2 = createProperty$3; - var arraySpeciesCreate$2 = arraySpeciesCreate$3; - var arrayMethodHasSpeciesSupport$4 = arrayMethodHasSpeciesSupport$5; - var wellKnownSymbol$d = wellKnownSymbol$j; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$d('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$m(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject$6(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray$3(O); - }; - - var FORCED$7 = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport$4('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$p({ target: 'Array', proto: true, arity: 1, forced: FORCED$7 }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$9(this); - var A = arraySpeciesCreate$2(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike$4(E); - doesNotExceedSafeInteger$1(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty$2(A, n, E[k]); - } else { - doesNotExceedSafeInteger$1(n + 1); - createProperty$2(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var classofRaw = classofRaw$2; - var uncurryThis$o = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$o(fn); - }; - - var uncurryThis$n = functionUncurryThisClause; - var aCallable$2 = aCallable$4; - var NATIVE_BIND$1 = functionBindNative; - - var bind$1 = uncurryThis$n(uncurryThis$n.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable$2(fn); - return that === undefined ? fn : NATIVE_BIND$1 ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var bind = functionBindContext; - var uncurryThis$m = functionUncurryThis; - var IndexedObject$2 = indexedObject; - var toObject$8 = toObject$b; - var lengthOfArrayLike$3 = lengthOfArrayLike$6; - var arraySpeciesCreate$1 = arraySpeciesCreate$3; - - var push$4 = uncurryThis$m([].push); - - // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation - var createMethod$3 = function (TYPE) { - var IS_MAP = TYPE === 1; - var IS_FILTER = TYPE === 2; - var IS_SOME = TYPE === 3; - var IS_EVERY = TYPE === 4; - var IS_FIND_INDEX = TYPE === 6; - var IS_FILTER_REJECT = TYPE === 7; - var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject$8($this); - var self = IndexedObject$2(O); - var length = lengthOfArrayLike$3(self); - var boundFunction = bind(callbackfn, that); - var index = 0; - var create = specificCreate || arraySpeciesCreate$1; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push$4(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push$4(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod$3(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod$3(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod$3(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod$3(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod$3(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod$3(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod$3(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod$3(7) - }; - - var $$o = _export; - var $filter = arrayIteration.filter; - var arrayMethodHasSpeciesSupport$3 = arrayMethodHasSpeciesSupport$5; - - var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$3('filter'); - - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - // with adding support of @@species - $$o({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 }, { - filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$3 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$7 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$9 = anObject$c; - var toIndexedObject$4 = toIndexedObject$8; - var objectKeys$2 = objectKeys$3; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$7 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$9(O); - var props = toIndexedObject$4(Properties); - var keys = objectKeys$2(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn$1 = getBuiltIn$5; - - var html$1 = getBuiltIn$1('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject$8 = anObject$c; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement$1 = documentCreateElement$2; - var sharedKey$1 = sharedKey$3; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO$1 = sharedKey$1('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement$1('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO$1] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject$8(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO$1] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol$c = wellKnownSymbol$j; - var create$3 = objectCreate; - var defineProperty$6 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol$c('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$6(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create$3(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$4 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var $$n = _export; - var $find = arrayIteration.find; - var addToUnscopables$3 = addToUnscopables$4; - - var FIND = 'find'; - var SKIPS_HOLES$1 = true; - - // Shouldn't skip holes - // eslint-disable-next-line es/no-array-prototype-find -- testing - if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES$1 = false; }); - - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - $$n({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 }, { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables$3(FIND); - - var $$m = _export; - var $findIndex = arrayIteration.findIndex; - var addToUnscopables$2 = addToUnscopables$4; - - var FIND_INDEX = 'findIndex'; - var SKIPS_HOLES = true; - - // Shouldn't skip holes - // eslint-disable-next-line es/no-array-prototype-findindex -- testing - if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; }); - - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findindex - $$m({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { - findIndex: function findIndex(callbackfn /* , that = undefined */) { - return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables$2(FIND_INDEX); - - var $$l = _export; - var $includes = arrayIncludes.includes; - var fails$l = fails$x; - var addToUnscopables$1 = addToUnscopables$4; - - // FF99+ bug - var BROKEN_ON_SPARSE = fails$l(function () { - // eslint-disable-next-line es/no-array-prototype-includes -- detection - return !Array(1).includes(); - }); - - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - $$l({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { - includes: function includes(el /* , fromIndex = 0 */) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables$1('includes'); - - var fails$k = fails$x; - - var arrayMethodIsStrict$4 = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails$k(function () { - // eslint-disable-next-line no-useless-call -- required for testing - method.call(null, argument || function () { return 1; }, 1); - }); - }; - - /* eslint-disable es/no-array-prototype-indexof -- required for testing */ - var $$k = _export; - var uncurryThis$l = functionUncurryThisClause; - var $indexOf = arrayIncludes.indexOf; - var arrayMethodIsStrict$3 = arrayMethodIsStrict$4; - - var nativeIndexOf = uncurryThis$l([].indexOf); - - var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0; - var FORCED$6 = NEGATIVE_ZERO || !arrayMethodIsStrict$3('indexOf'); - - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - $$k({ target: 'Array', proto: true, forced: FORCED$6 }, { - indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { - var fromIndex = arguments.length > 1 ? arguments[1] : undefined; - return NEGATIVE_ZERO - // convert -0 to +0 - ? nativeIndexOf(this, searchElement, fromIndex) || 0 - : $indexOf(this, searchElement, fromIndex); - } - }); - - var iterators = {}; - - var fails$j = fails$x; - - var correctPrototypeGetter = !fails$j(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - // eslint-disable-next-line es/no-object-getprototypeof -- required for testing - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - - var hasOwn$4 = hasOwnProperty_1; - var isCallable$5 = isCallable$i; - var toObject$7 = toObject$b; - var sharedKey = sharedKey$3; - var CORRECT_PROTOTYPE_GETTER$1 = correctPrototypeGetter; - - var IE_PROTO = sharedKey('IE_PROTO'); - var $Object = Object; - var ObjectPrototype = $Object.prototype; - - // `Object.getPrototypeOf` method - // https://tc39.es/ecma262/#sec-object.getprototypeof - // eslint-disable-next-line es/no-object-getprototypeof -- safe - var objectGetPrototypeOf$1 = CORRECT_PROTOTYPE_GETTER$1 ? $Object.getPrototypeOf : function (O) { - var object = toObject$7(O); - if (hasOwn$4(object, IE_PROTO)) return object[IE_PROTO]; - var constructor = object.constructor; - if (isCallable$5(constructor) && object instanceof constructor) { - return constructor.prototype; - } return object instanceof $Object ? ObjectPrototype : null; - }; - - var fails$i = fails$x; - var isCallable$4 = isCallable$i; - var isObject$5 = isObject$d; - var getPrototypeOf$1 = objectGetPrototypeOf$1; - var defineBuiltIn$5 = defineBuiltIn$7; - var wellKnownSymbol$b = wellKnownSymbol$j; - - var ITERATOR$4 = wellKnownSymbol$b('iterator'); - var BUGGY_SAFARI_ITERATORS$1 = false; - - // `%IteratorPrototype%` object - // https://tc39.es/ecma262/#sec-%iteratorprototype%-object - var IteratorPrototype$2, PrototypeOfArrayIteratorPrototype, arrayIterator; - - /* eslint-disable es/no-array-prototype-keys -- safe */ - if ([].keys) { - arrayIterator = [].keys(); - // Safari 8 has buggy iterators w/o `next` - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS$1 = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf$1(getPrototypeOf$1(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype$2 = PrototypeOfArrayIteratorPrototype; - } - } - - var NEW_ITERATOR_PROTOTYPE = !isObject$5(IteratorPrototype$2) || fails$i(function () { - var test = {}; - // FF44- legacy iterators case - return IteratorPrototype$2[ITERATOR$4].call(test) !== test; - }); - - if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$2 = {}; - - // `%IteratorPrototype%[@@iterator]()` method - // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator - if (!isCallable$4(IteratorPrototype$2[ITERATOR$4])) { - defineBuiltIn$5(IteratorPrototype$2, ITERATOR$4, function () { - return this; - }); - } - - var iteratorsCore = { - IteratorPrototype: IteratorPrototype$2, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1 - }; - - var defineProperty$5 = objectDefineProperty.f; - var hasOwn$3 = hasOwnProperty_1; - var wellKnownSymbol$a = wellKnownSymbol$j; - - var TO_STRING_TAG = wellKnownSymbol$a('toStringTag'); - - var setToStringTag$3 = function (target, TAG, STATIC) { - if (target && !STATIC) target = target.prototype; - if (target && !hasOwn$3(target, TO_STRING_TAG)) { - defineProperty$5(target, TO_STRING_TAG, { configurable: true, value: TAG }); - } - }; - - var IteratorPrototype$1 = iteratorsCore.IteratorPrototype; - var create$2 = objectCreate; - var createPropertyDescriptor = createPropertyDescriptor$4; - var setToStringTag$2 = setToStringTag$3; - var Iterators$2 = iterators; - - var returnThis$1 = function () { return this; }; - - var iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create$2(IteratorPrototype$1, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); - setToStringTag$2(IteratorConstructor, TO_STRING_TAG, false); - Iterators$2[TO_STRING_TAG] = returnThis$1; - return IteratorConstructor; - }; - - var uncurryThis$k = functionUncurryThis; - var aCallable$1 = aCallable$4; - - var functionUncurryThisAccessor = function (object, key, method) { - try { - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - return uncurryThis$k(aCallable$1(Object.getOwnPropertyDescriptor(object, key)[method])); - } catch (error) { /* empty */ } - }; - - var isObject$4 = isObject$d; - - var isPossiblePrototype$1 = function (argument) { - return isObject$4(argument) || argument === null; - }; - - var isPossiblePrototype = isPossiblePrototype$1; - - var $String$1 = String; - var $TypeError$5 = TypeError; - - var aPossiblePrototype$1 = function (argument) { - if (isPossiblePrototype(argument)) return argument; - throw new $TypeError$5("Can't set " + $String$1(argument) + ' as a prototype'); - }; - - /* eslint-disable no-proto -- safe */ - var uncurryThisAccessor = functionUncurryThisAccessor; - var isObject$3 = isObject$d; - var requireObjectCoercible$9 = requireObjectCoercible$c; - var aPossiblePrototype = aPossiblePrototype$1; - - // `Object.setPrototypeOf` method - // https://tc39.es/ecma262/#sec-object.setprototypeof - // Works with __proto__ only. Old v8 can't work with null proto objects. - // eslint-disable-next-line es/no-object-setprototypeof -- safe - var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - try { - setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); - setter(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { /* empty */ } - return function setPrototypeOf(O, proto) { - requireObjectCoercible$9(O); - aPossiblePrototype(proto); - if (!isObject$3(O)) return O; - if (CORRECT_SETTER) setter(O, proto); - else O.__proto__ = proto; - return O; - }; - }() : undefined); - - var $$j = _export; - var call$a = functionCall; - var FunctionName = functionName; - var isCallable$3 = isCallable$i; - var createIteratorConstructor = iteratorCreateConstructor; - var getPrototypeOf = objectGetPrototypeOf$1; - var setPrototypeOf$1 = objectSetPrototypeOf; - var setToStringTag$1 = setToStringTag$3; - var createNonEnumerableProperty$4 = createNonEnumerableProperty$7; - var defineBuiltIn$4 = defineBuiltIn$7; - var wellKnownSymbol$9 = wellKnownSymbol$j; - var Iterators$1 = iterators; - var IteratorsCore = iteratorsCore; - - var PROPER_FUNCTION_NAME$2 = FunctionName.PROPER; - var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR$3 = wellKnownSymbol$9('iterator'); - var KEYS = 'keys'; - var VALUES = 'values'; - var ENTRIES = 'entries'; - - var returnThis = function () { return this; }; - - var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - - var getIterationMethod = function (KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND]; - - switch (KIND) { - case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; - case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; - case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; - } - - return function () { return new IteratorConstructor(this); }; - }; - - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR$3] - || IterablePrototype['@@iterator'] - || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - - // fix native - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf$1) { - setPrototypeOf$1(CurrentIteratorPrototype, IteratorPrototype); - } else if (!isCallable$3(CurrentIteratorPrototype[ITERATOR$3])) { - defineBuiltIn$4(CurrentIteratorPrototype, ITERATOR$3, returnThis); - } - } - // Set @@toStringTag to native iterators - setToStringTag$1(CurrentIteratorPrototype, TO_STRING_TAG, true); - } - } - - // fix Array.prototype.{ values, @@iterator }.name in V8 / FF - if (PROPER_FUNCTION_NAME$2 && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) { - if (CONFIGURABLE_FUNCTION_NAME) { - createNonEnumerableProperty$4(IterablePrototype, 'name', VALUES); - } else { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { return call$a(nativeIterator, this); }; - } - } - - // export additional methods - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - defineBuiltIn$4(IterablePrototype, KEY, methods[KEY]); - } - } else $$j({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); - } - - // define iterator - if (IterablePrototype[ITERATOR$3] !== defaultIterator) { - defineBuiltIn$4(IterablePrototype, ITERATOR$3, defaultIterator, { name: DEFAULT }); - } - Iterators$1[NAME] = defaultIterator; - - return methods; - }; - - // `CreateIterResultObject` abstract operation - // https://tc39.es/ecma262/#sec-createiterresultobject - var createIterResultObject$1 = function (value, done) { - return { value: value, done: done }; - }; - - var toIndexedObject$3 = toIndexedObject$8; - var addToUnscopables = addToUnscopables$4; - var Iterators = iterators; - var InternalStateModule = internalState; - var defineProperty$4 = objectDefineProperty.f; - var defineIterator = iteratorDefine; - var createIterResultObject = createIterResultObject$1; - var DESCRIPTORS$6 = descriptors; - - var ARRAY_ITERATOR = 'Array Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalState$1 = InternalStateModule.getterFor(ARRAY_ITERATOR); - - // `Array.prototype.entries` method - // https://tc39.es/ecma262/#sec-array.prototype.entries - // `Array.prototype.keys` method - // https://tc39.es/ecma262/#sec-array.prototype.keys - // `Array.prototype.values` method - // https://tc39.es/ecma262/#sec-array.prototype.values - // `Array.prototype[@@iterator]` method - // https://tc39.es/ecma262/#sec-array.prototype-@@iterator - // `CreateArrayIterator` internal method - // https://tc39.es/ecma262/#sec-createarrayiterator - var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) { - setInternalState(this, { - type: ARRAY_ITERATOR, - target: toIndexedObject$3(iterated), // target - index: 0, // next index - kind: kind // kind - }); - // `%ArrayIteratorPrototype%.next` method - // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next - }, function () { - var state = getInternalState$1(this); - var target = state.target; - var index = state.index++; - if (!target || index >= target.length) { - state.target = undefined; - return createIterResultObject(undefined, true); - } - switch (state.kind) { - case 'keys': return createIterResultObject(index, false); - case 'values': return createIterResultObject(target[index], false); - } return createIterResultObject([index, target[index]], false); - }, 'values'); - - // argumentsList[@@iterator] is %ArrayProto_values% - // https://tc39.es/ecma262/#sec-createunmappedargumentsobject - // https://tc39.es/ecma262/#sec-createmappedargumentsobject - var values = Iterators.Arguments = Iterators.Array; - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables('keys'); - addToUnscopables('values'); - addToUnscopables('entries'); - - // V8 ~ Chrome 45- bug - if (DESCRIPTORS$6 && values.name !== 'values') try { - defineProperty$4(values, 'name', { value: 'values' }); - } catch (error) { /* empty */ } - - var $$i = _export; - var uncurryThis$j = functionUncurryThis; - var IndexedObject$1 = indexedObject; - var toIndexedObject$2 = toIndexedObject$8; - var arrayMethodIsStrict$2 = arrayMethodIsStrict$4; - - var nativeJoin = uncurryThis$j([].join); - - var ES3_STRINGS = IndexedObject$1 !== Object; - var FORCED$5 = ES3_STRINGS || !arrayMethodIsStrict$2('join', ','); - - // `Array.prototype.join` method - // https://tc39.es/ecma262/#sec-array.prototype.join - $$i({ target: 'Array', proto: true, forced: FORCED$5 }, { - join: function join(separator) { - return nativeJoin(toIndexedObject$2(this), separator === undefined ? ',' : separator); - } - }); - - var $$h = _export; - var $map = arrayIteration.map; - var arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$5; - - var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$2('map'); - - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - // with adding support of @@species - $$h({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 }, { - map: function map(callbackfn /* , thisArg */) { - return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - var $$g = _export; - var uncurryThis$i = functionUncurryThis; - var isArray$2 = isArray$5; - - var nativeReverse = uncurryThis$i([].reverse); - var test$1 = [1, 2]; - - // `Array.prototype.reverse` method - // https://tc39.es/ecma262/#sec-array.prototype.reverse - // fix for Safari 12.0 bug - // https://bugs.webkit.org/show_bug.cgi?id=188794 - $$g({ target: 'Array', proto: true, forced: String(test$1) === String(test$1.reverse()) }, { - reverse: function reverse() { - // eslint-disable-next-line no-self-assign -- dirty hack - if (isArray$2(this)) this.length = this.length; - return nativeReverse(this); - } - }); - - var uncurryThis$h = functionUncurryThis; - - var arraySlice$1 = uncurryThis$h([].slice); - - var $$f = _export; - var isArray$1 = isArray$5; - var isConstructor$1 = isConstructor$3; - var isObject$2 = isObject$d; - var toAbsoluteIndex$1 = toAbsoluteIndex$3; - var lengthOfArrayLike$2 = lengthOfArrayLike$6; - var toIndexedObject$1 = toIndexedObject$8; - var createProperty$1 = createProperty$3; - var wellKnownSymbol$8 = wellKnownSymbol$j; - var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$5; - var nativeSlice = arraySlice$1; - - var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('slice'); - - var SPECIES$3 = wellKnownSymbol$8('species'); - var $Array = Array; - var max$2 = Math.max; - - // `Array.prototype.slice` method - // https://tc39.es/ecma262/#sec-array.prototype.slice - // fallback for not array-like ES3 strings and DOM objects - $$f({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 }, { - slice: function slice(start, end) { - var O = toIndexedObject$1(this); - var length = lengthOfArrayLike$2(O); - var k = toAbsoluteIndex$1(start, length); - var fin = toAbsoluteIndex$1(end === undefined ? length : end, length); - // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible - var Constructor, result, n; - if (isArray$1(O)) { - Constructor = O.constructor; - // cross-realm fallback - if (isConstructor$1(Constructor) && (Constructor === $Array || isArray$1(Constructor.prototype))) { - Constructor = undefined; - } else if (isObject$2(Constructor)) { - Constructor = Constructor[SPECIES$3]; - if (Constructor === null) Constructor = undefined; - } - if (Constructor === $Array || Constructor === undefined) { - return nativeSlice(O, k, fin); - } - } - result = new (Constructor === undefined ? $Array : Constructor)(max$2(fin - k, 0)); - for (n = 0; k < fin; k++, n++) if (k in O) createProperty$1(result, n, O[k]); - result.length = n; - return result; - } - }); - - var tryToString$1 = tryToString$3; - - var $TypeError$4 = TypeError; - - var deletePropertyOrThrow$2 = function (O, P) { - if (!delete O[P]) throw new $TypeError$4('Cannot delete property ' + tryToString$1(P) + ' of ' + tryToString$1(O)); - }; - - var classof$3 = classof$5; - - var $String = String; - - var toString$f = function (argument) { - if (classof$3(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); - return $String(argument); - }; - - var arraySlice = arraySlice$1; - - var floor$1 = Math.floor; - - var sort = function (array, comparefn) { - var length = array.length; - - if (length < 8) { - // insertion sort - var i = 1; - var element, j; - - while (i < length) { - j = i; - element = array[i]; - while (j && comparefn(array[j - 1], element) > 0) { - array[j] = array[--j]; - } - if (j !== i++) array[j] = element; - } - } else { - // merge sort - var middle = floor$1(length / 2); - var left = sort(arraySlice(array, 0, middle), comparefn); - var right = sort(arraySlice(array, middle), comparefn); - var llength = left.length; - var rlength = right.length; - var lindex = 0; - var rindex = 0; - - while (lindex < llength || rindex < rlength) { - array[lindex + rindex] = (lindex < llength && rindex < rlength) - ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++] - : lindex < llength ? left[lindex++] : right[rindex++]; - } - } - - return array; - }; - - var arraySort = sort; - - var userAgent$1 = engineUserAgent; - - var firefox = userAgent$1.match(/firefox\/(\d+)/i); - - var engineFfVersion = !!firefox && +firefox[1]; - - var UA = engineUserAgent; - - var engineIsIeOrEdge = /MSIE|Trident/.test(UA); - - var userAgent = engineUserAgent; - - var webkit = userAgent.match(/AppleWebKit\/(\d+)\./); - - var engineWebkitVersion = !!webkit && +webkit[1]; - - var $$e = _export; - var uncurryThis$g = functionUncurryThis; - var aCallable = aCallable$4; - var toObject$6 = toObject$b; - var lengthOfArrayLike$1 = lengthOfArrayLike$6; - var deletePropertyOrThrow$1 = deletePropertyOrThrow$2; - var toString$e = toString$f; - var fails$h = fails$x; - var internalSort = arraySort; - var arrayMethodIsStrict$1 = arrayMethodIsStrict$4; - var FF = engineFfVersion; - var IE_OR_EDGE = engineIsIeOrEdge; - var V8 = engineV8Version; - var WEBKIT = engineWebkitVersion; - - var test = []; - var nativeSort = uncurryThis$g(test.sort); - var push$3 = uncurryThis$g(test.push); - - // IE8- - var FAILS_ON_UNDEFINED = fails$h(function () { - test.sort(undefined); - }); - // V8 bug - var FAILS_ON_NULL = fails$h(function () { - test.sort(null); - }); - // Old WebKit - var STRICT_METHOD$1 = arrayMethodIsStrict$1('sort'); - - var STABLE_SORT = !fails$h(function () { - // feature detection can be too slow, so check engines versions - if (V8) return V8 < 70; - if (FF && FF > 3) return; - if (IE_OR_EDGE) return true; - if (WEBKIT) return WEBKIT < 603; - - var result = ''; - var code, chr, value, index; - - // generate an array with more 512 elements (Chakra and old V8 fails only in this case) - for (code = 65; code < 76; code++) { - chr = String.fromCharCode(code); - - switch (code) { - case 66: case 69: case 70: case 72: value = 3; break; - case 68: case 71: value = 4; break; - default: value = 2; - } - - for (index = 0; index < 47; index++) { - test.push({ k: chr + index, v: value }); - } - } - - test.sort(function (a, b) { return b.v - a.v; }); - - for (index = 0; index < test.length; index++) { - chr = test[index].k.charAt(0); - if (result.charAt(result.length - 1) !== chr) result += chr; - } - - return result !== 'DGBEFHACIJK'; - }); - - var FORCED$4 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD$1 || !STABLE_SORT; - - var getSortCompare = function (comparefn) { - return function (x, y) { - if (y === undefined) return -1; - if (x === undefined) return 1; - if (comparefn !== undefined) return +comparefn(x, y) || 0; - return toString$e(x) > toString$e(y) ? 1 : -1; - }; - }; - - // `Array.prototype.sort` method - // https://tc39.es/ecma262/#sec-array.prototype.sort - $$e({ target: 'Array', proto: true, forced: FORCED$4 }, { - sort: function sort(comparefn) { - if (comparefn !== undefined) aCallable(comparefn); - - var array = toObject$6(this); - - if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn); - - var items = []; - var arrayLength = lengthOfArrayLike$1(array); - var itemsLength, index; - - for (index = 0; index < arrayLength; index++) { - if (index in array) push$3(items, array[index]); - } - - internalSort(items, getSortCompare(comparefn)); - - itemsLength = lengthOfArrayLike$1(items); - index = 0; - - while (index < itemsLength) array[index] = items[index++]; - while (index < arrayLength) deletePropertyOrThrow$1(array, index++); - - return array; - } - }); - - var DESCRIPTORS$5 = descriptors; - var isArray = isArray$5; - - var $TypeError$3 = TypeError; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$3 = Object.getOwnPropertyDescriptor; - - // Safari < 13 does not throw an error in this case - var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS$5 && !function () { - // makes no sense without proper strict mode support - if (this !== undefined) return true; - try { - // eslint-disable-next-line es/no-object-defineproperty -- safe - Object.defineProperty([], 'length', { writable: false }).length = 1; - } catch (error) { - return error instanceof TypeError; - } - }(); - - var arraySetLength = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { - if (isArray(O) && !getOwnPropertyDescriptor$3(O, 'length').writable) { - throw new $TypeError$3('Cannot set read only .length'); - } return O.length = length; - } : function (O, length) { - return O.length = length; - }; - - var $$d = _export; - var toObject$5 = toObject$b; - var toAbsoluteIndex = toAbsoluteIndex$3; - var toIntegerOrInfinity$2 = toIntegerOrInfinity$5; - var lengthOfArrayLike = lengthOfArrayLike$6; - var setArrayLength = arraySetLength; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$2; - var arraySpeciesCreate = arraySpeciesCreate$3; - var createProperty = createProperty$3; - var deletePropertyOrThrow = deletePropertyOrThrow$2; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$5; - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); - - var max$1 = Math.max; - var min$4 = Math.min; - - // `Array.prototype.splice` method - // https://tc39.es/ecma262/#sec-array.prototype.splice - // with adding support of @@species - $$d({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { - splice: function splice(start, deleteCount /* , ...items */) { - var O = toObject$5(this); - var len = lengthOfArrayLike(O); - var actualStart = toAbsoluteIndex(start, len); - var argumentsLength = arguments.length; - var insertCount, actualDeleteCount, A, k, from, to; - if (argumentsLength === 0) { - insertCount = actualDeleteCount = 0; - } else if (argumentsLength === 1) { - insertCount = 0; - actualDeleteCount = len - actualStart; - } else { - insertCount = argumentsLength - 2; - actualDeleteCount = min$4(max$1(toIntegerOrInfinity$2(deleteCount), 0), len - actualStart); - } - doesNotExceedSafeInteger(len + insertCount - actualDeleteCount); - A = arraySpeciesCreate(O, actualDeleteCount); - for (k = 0; k < actualDeleteCount; k++) { - from = actualStart + k; - if (from in O) createProperty(A, k, O[from]); - } - A.length = actualDeleteCount; - if (insertCount < actualDeleteCount) { - for (k = actualStart; k < len - actualDeleteCount; k++) { - from = k + actualDeleteCount; - to = k + insertCount; - if (from in O) O[to] = O[from]; - else deletePropertyOrThrow(O, to); - } - for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1); - } else if (insertCount > actualDeleteCount) { - for (k = len - actualDeleteCount; k > actualStart; k--) { - from = k + actualDeleteCount - 1; - to = k + insertCount - 1; - if (from in O) O[to] = O[from]; - else deletePropertyOrThrow(O, to); - } - } - for (k = 0; k < insertCount; k++) { - O[k + actualStart] = arguments[k + 2]; - } - setArrayLength(O, len - actualDeleteCount + insertCount); - return A; - } - }); - - var $$c = _export; - var fails$g = fails$x; - var toObject$4 = toObject$b; - var toPrimitive$1 = toPrimitive$3; - - var FORCED$3 = fails$g(function () { - return new Date(NaN).toJSON() !== null - || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; - }); - - // `Date.prototype.toJSON` method - // https://tc39.es/ecma262/#sec-date.prototype.tojson - $$c({ target: 'Date', proto: true, arity: 1, forced: FORCED$3 }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - toJSON: function toJSON(key) { - var O = toObject$4(this); - var pv = toPrimitive$1(O, 'number'); - return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); - } - }); - - var global$a = global$k; - - var path$1 = global$a; - - var isCallable$2 = isCallable$i; - var isObject$1 = isObject$d; - var setPrototypeOf = objectSetPrototypeOf; - - // makes subclassing work correct for wrapped built-ins - var inheritIfRequired$2 = function ($this, dummy, Wrapper) { - var NewTarget, NewTargetPrototype; - if ( - // it can work only with native `setPrototypeOf` - setPrototypeOf && - // we haven't completely correct pre-ES6 way for getting `new.target`, so use this - isCallable$2(NewTarget = dummy.constructor) && - NewTarget !== Wrapper && - isObject$1(NewTargetPrototype = NewTarget.prototype) && - NewTargetPrototype !== Wrapper.prototype - ) setPrototypeOf($this, NewTargetPrototype); - return $this; - }; - - var uncurryThis$f = functionUncurryThis; - - // `thisNumberValue` abstract operation - // https://tc39.es/ecma262/#sec-thisnumbervalue - var thisNumberValue$1 = uncurryThis$f(1.0.valueOf); - - // a string of all valid unicode whitespaces - var whitespaces$4 = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + - '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; - - var uncurryThis$e = functionUncurryThis; - var requireObjectCoercible$8 = requireObjectCoercible$c; - var toString$d = toString$f; - var whitespaces$3 = whitespaces$4; - - var replace$3 = uncurryThis$e(''.replace); - var ltrim = RegExp('^[' + whitespaces$3 + ']+'); - var rtrim = RegExp('(^|[^' + whitespaces$3 + '])[' + whitespaces$3 + ']+$'); - - // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation - var createMethod$2 = function (TYPE) { - return function ($this) { - var string = toString$d(requireObjectCoercible$8($this)); - if (TYPE & 1) string = replace$3(string, ltrim, ''); - if (TYPE & 2) string = replace$3(string, rtrim, '$1'); - return string; - }; - }; - - var stringTrim = { - // `String.prototype.{ trimLeft, trimStart }` methods - // https://tc39.es/ecma262/#sec-string.prototype.trimstart - start: createMethod$2(1), - // `String.prototype.{ trimRight, trimEnd }` methods - // https://tc39.es/ecma262/#sec-string.prototype.trimend - end: createMethod$2(2), - // `String.prototype.trim` method - // https://tc39.es/ecma262/#sec-string.prototype.trim - trim: createMethod$2(3) - }; - - var $$b = _export; - var IS_PURE = isPure; - var DESCRIPTORS$4 = descriptors; - var global$9 = global$k; - var path = path$1; - var uncurryThis$d = functionUncurryThis; - var isForced$1 = isForced_1; - var hasOwn$2 = hasOwnProperty_1; - var inheritIfRequired$1 = inheritIfRequired$2; - var isPrototypeOf$2 = objectIsPrototypeOf; - var isSymbol = isSymbol$3; - var toPrimitive = toPrimitive$3; - var fails$f = fails$x; - var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; - var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; - var defineProperty$3 = objectDefineProperty.f; - var thisNumberValue = thisNumberValue$1; - var trim$2 = stringTrim.trim; - - var NUMBER = 'Number'; - var NativeNumber = global$9[NUMBER]; - path[NUMBER]; - var NumberPrototype = NativeNumber.prototype; - var TypeError$1 = global$9.TypeError; - var stringSlice$7 = uncurryThis$d(''.slice); - var charCodeAt$1 = uncurryThis$d(''.charCodeAt); - - // `ToNumeric` abstract operation - // https://tc39.es/ecma262/#sec-tonumeric - var toNumeric = function (value) { - var primValue = toPrimitive(value, 'number'); - return typeof primValue == 'bigint' ? primValue : toNumber(primValue); - }; - - // `ToNumber` abstract operation - // https://tc39.es/ecma262/#sec-tonumber - var toNumber = function (argument) { - var it = toPrimitive(argument, 'number'); - var first, third, radix, maxCode, digits, length, index, code; - if (isSymbol(it)) throw new TypeError$1('Cannot convert a Symbol value to a number'); - if (typeof it == 'string' && it.length > 2) { - it = trim$2(it); - first = charCodeAt$1(it, 0); - if (first === 43 || first === 45) { - third = charCodeAt$1(it, 2); - if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix - } else if (first === 48) { - switch (charCodeAt$1(it, 1)) { - // fast equal of /^0b[01]+$/i - case 66: - case 98: - radix = 2; - maxCode = 49; - break; - // fast equal of /^0o[0-7]+$/i - case 79: - case 111: - radix = 8; - maxCode = 55; - break; - default: - return +it; - } - digits = stringSlice$7(it, 2); - length = digits.length; - for (index = 0; index < length; index++) { - code = charCodeAt$1(digits, index); - // parseInt parses a string to a first unavailable symbol - // but ToNumber should return NaN if a string contains unavailable symbols - if (code < 48 || code > maxCode) return NaN; - } return parseInt(digits, radix); - } - } return +it; - }; - - var FORCED$2 = isForced$1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1')); - - var calledWithNew = function (dummy) { - // includes check on 1..constructor(foo) case - return isPrototypeOf$2(NumberPrototype, dummy) && fails$f(function () { thisNumberValue(dummy); }); - }; - - // `Number` constructor - // https://tc39.es/ecma262/#sec-number-constructor - var NumberWrapper = function Number(value) { - var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value)); - return calledWithNew(this) ? inheritIfRequired$1(Object(n), this, NumberWrapper) : n; - }; - - NumberWrapper.prototype = NumberPrototype; - if (FORCED$2 && !IS_PURE) NumberPrototype.constructor = NumberWrapper; - - $$b({ global: true, constructor: true, wrap: true, forced: FORCED$2 }, { - Number: NumberWrapper - }); - - // Use `internal/copy-constructor-properties` helper in `core-js@4` - var copyConstructorProperties = function (target, source) { - for (var keys = DESCRIPTORS$4 ? getOwnPropertyNames$1(source) : ( - // ES3: - 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + - // ES2015 (in case, if modules with ES2015 Number statics required before): - 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' + - // ESNext - 'fromString,range' - ).split(','), j = 0, key; keys.length > j; j++) { - if (hasOwn$2(source, key = keys[j]) && !hasOwn$2(target, key)) { - defineProperty$3(target, key, getOwnPropertyDescriptor$2(source, key)); - } - } - }; - if (FORCED$2 || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber); - - var DESCRIPTORS$3 = descriptors; - var uncurryThis$c = functionUncurryThis; - var call$9 = functionCall; - var fails$e = fails$x; - var objectKeys$1 = objectKeys$3; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject$3 = toObject$b; - var IndexedObject = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty$2 = Object.defineProperty; - var concat$1 = uncurryThis$c([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails$e(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS$3 && $assign({ b: 1 }, $assign(defineProperty$2({}, 'a', { - enumerable: true, - get: function () { - defineProperty$2(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys$1($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject$3(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat$1(objectKeys$1(S), getOwnPropertySymbols(S)) : objectKeys$1(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS$3 || call$9(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $$a = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $$a({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var DESCRIPTORS$2 = descriptors; - var fails$d = fails$x; - var uncurryThis$b = functionUncurryThis; - var objectGetPrototypeOf = objectGetPrototypeOf$1; - var objectKeys = objectKeys$3; - var toIndexedObject = toIndexedObject$8; - var $propertyIsEnumerable = objectPropertyIsEnumerable.f; - - var propertyIsEnumerable = uncurryThis$b($propertyIsEnumerable); - var push$2 = uncurryThis$b([].push); - - // in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys - // of `null` prototype objects - var IE_BUG = DESCRIPTORS$2 && fails$d(function () { - // eslint-disable-next-line es/no-object-create -- safe - var O = Object.create(null); - O[2] = 2; - return !propertyIsEnumerable(O, 2); - }); - - // `Object.{ entries, values }` methods implementation - var createMethod$1 = function (TO_ENTRIES) { - return function (it) { - var O = toIndexedObject(it); - var keys = objectKeys(O); - var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) { - key = keys[i++]; - if (!DESCRIPTORS$2 || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { - push$2(result, TO_ENTRIES ? [key, O[key]] : O[key]); - } - } - return result; - }; - }; - - var objectToArray = { - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - entries: createMethod$1(true), - // `Object.values` method - // https://tc39.es/ecma262/#sec-object.values - values: createMethod$1(false) - }; - - var $$9 = _export; - var $entries = objectToArray.entries; - - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - $$9({ target: 'Object', stat: true }, { - entries: function entries(O) { - return $entries(O); - } - }); - - var $$8 = _export; - var toObject$2 = toObject$b; - var nativeKeys = objectKeys$3; - var fails$c = fails$x; - - var FAILS_ON_PRIMITIVES$1 = fails$c(function () { nativeKeys(1); }); - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - $$8({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$1 }, { - keys: function keys(it) { - return nativeKeys(toObject$2(it)); - } - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof$2 = classof$5; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof$2(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn$3 = defineBuiltIn$7; - var toString$c = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn$3(Object.prototype, 'toString', toString$c, { unsafe: true }); - } - - var global$8 = global$k; - var fails$b = fails$x; - var uncurryThis$a = functionUncurryThis; - var toString$b = toString$f; - var trim$1 = stringTrim.trim; - var whitespaces$2 = whitespaces$4; - - var charAt$5 = uncurryThis$a(''.charAt); - var $parseFloat$1 = global$8.parseFloat; - var Symbol$2 = global$8.Symbol; - var ITERATOR$2 = Symbol$2 && Symbol$2.iterator; - var FORCED$1 = 1 / $parseFloat$1(whitespaces$2 + '-0') !== -Infinity - // MS Edge 18- broken with boxed symbols - || (ITERATOR$2 && !fails$b(function () { $parseFloat$1(Object(ITERATOR$2)); })); - - // `parseFloat` method - // https://tc39.es/ecma262/#sec-parsefloat-string - var numberParseFloat = FORCED$1 ? function parseFloat(string) { - var trimmedString = trim$1(toString$b(string)); - var result = $parseFloat$1(trimmedString); - return result === 0 && charAt$5(trimmedString, 0) === '-' ? -0 : result; - } : $parseFloat$1; - - var $$7 = _export; - var $parseFloat = numberParseFloat; - - // `parseFloat` method - // https://tc39.es/ecma262/#sec-parsefloat-string - $$7({ global: true, forced: parseFloat !== $parseFloat }, { - parseFloat: $parseFloat - }); - - var global$7 = global$k; - var fails$a = fails$x; - var uncurryThis$9 = functionUncurryThis; - var toString$a = toString$f; - var trim = stringTrim.trim; - var whitespaces$1 = whitespaces$4; - - var $parseInt$1 = global$7.parseInt; - var Symbol$1 = global$7.Symbol; - var ITERATOR$1 = Symbol$1 && Symbol$1.iterator; - var hex = /^[+-]?0x/i; - var exec$2 = uncurryThis$9(hex.exec); - var FORCED = $parseInt$1(whitespaces$1 + '08') !== 8 || $parseInt$1(whitespaces$1 + '0x16') !== 22 - // MS Edge 18- broken with boxed symbols - || (ITERATOR$1 && !fails$a(function () { $parseInt$1(Object(ITERATOR$1)); })); - - // `parseInt` method - // https://tc39.es/ecma262/#sec-parseint-string-radix - var numberParseInt = FORCED ? function parseInt(string, radix) { - var S = trim(toString$a(string)); - return $parseInt$1(S, (radix >>> 0) || (exec$2(hex, S) ? 16 : 10)); - } : $parseInt$1; - - var $$6 = _export; - var $parseInt = numberParseInt; - - // `parseInt` method - // https://tc39.es/ecma262/#sec-parseint-string-radix - $$6({ global: true, forced: parseInt !== $parseInt }, { - parseInt: $parseInt - }); - - var isObject = isObject$d; - var classof$1 = classofRaw$2; - var wellKnownSymbol$7 = wellKnownSymbol$j; - - var MATCH$2 = wellKnownSymbol$7('match'); - - // `IsRegExp` abstract operation - // https://tc39.es/ecma262/#sec-isregexp - var isRegexp = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classof$1(it) === 'RegExp'); - }; - - var anObject$7 = anObject$c; - - // `RegExp.prototype.flags` getter implementation - // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags - var regexpFlags$1 = function () { - var that = anObject$7(this); - var result = ''; - if (that.hasIndices) result += 'd'; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.unicodeSets) result += 'v'; - if (that.sticky) result += 'y'; - return result; - }; - - var call$8 = functionCall; - var hasOwn$1 = hasOwnProperty_1; - var isPrototypeOf$1 = objectIsPrototypeOf; - var regExpFlags = regexpFlags$1; - - var RegExpPrototype$3 = RegExp.prototype; - - var regexpGetFlags = function (R) { - var flags = R.flags; - return flags === undefined && !('flags' in RegExpPrototype$3) && !hasOwn$1(R, 'flags') && isPrototypeOf$1(RegExpPrototype$3, R) - ? call$8(regExpFlags, R) : flags; - }; - - var fails$9 = fails$x; - var global$6 = global$k; - - // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var $RegExp$2 = global$6.RegExp; - - var UNSUPPORTED_Y$3 = fails$9(function () { - var re = $RegExp$2('a', 'y'); - re.lastIndex = 2; - return re.exec('abcd') !== null; - }); - - // UC Browser bug - // https://github.com/zloirock/core-js/issues/1008 - var MISSED_STICKY$1 = UNSUPPORTED_Y$3 || fails$9(function () { - return !$RegExp$2('a', 'y').sticky; - }); - - var BROKEN_CARET = UNSUPPORTED_Y$3 || fails$9(function () { - // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = $RegExp$2('^r', 'gy'); - re.lastIndex = 2; - return re.exec('str') !== null; - }); - - var regexpStickyHelpers = { - BROKEN_CARET: BROKEN_CARET, - MISSED_STICKY: MISSED_STICKY$1, - UNSUPPORTED_Y: UNSUPPORTED_Y$3 - }; - - var defineProperty$1 = objectDefineProperty.f; - - var proxyAccessor$1 = function (Target, Source, key) { - key in Target || defineProperty$1(Target, key, { - configurable: true, - get: function () { return Source[key]; }, - set: function (it) { Source[key] = it; } - }); - }; - - var makeBuiltIn = makeBuiltInExports; - var defineProperty = objectDefineProperty; - - var defineBuiltInAccessor$1 = function (target, name, descriptor) { - if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); - if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); - return defineProperty.f(target, name, descriptor); - }; - - var getBuiltIn = getBuiltIn$5; - var defineBuiltInAccessor = defineBuiltInAccessor$1; - var wellKnownSymbol$6 = wellKnownSymbol$j; - var DESCRIPTORS$1 = descriptors; - - var SPECIES$2 = wellKnownSymbol$6('species'); - - var setSpecies$1 = function (CONSTRUCTOR_NAME) { - var Constructor = getBuiltIn(CONSTRUCTOR_NAME); - - if (DESCRIPTORS$1 && Constructor && !Constructor[SPECIES$2]) { - defineBuiltInAccessor(Constructor, SPECIES$2, { - configurable: true, - get: function () { return this; } - }); - } - }; - - var fails$8 = fails$x; - var global$5 = global$k; - - // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError - var $RegExp$1 = global$5.RegExp; - - var regexpUnsupportedDotAll = fails$8(function () { - var re = $RegExp$1('.', 's'); - return !(re.dotAll && re.test('\n') && re.flags === 's'); - }); - - var fails$7 = fails$x; - var global$4 = global$k; - - // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError - var $RegExp = global$4.RegExp; - - var regexpUnsupportedNcg = fails$7(function () { - var re = $RegExp('(?b)', 'g'); - return re.exec('b').groups.a !== 'b' || - 'b'.replace(re, '$c') !== 'bc'; - }); - - var DESCRIPTORS = descriptors; - var global$3 = global$k; - var uncurryThis$8 = functionUncurryThis; - var isForced = isForced_1; - var inheritIfRequired = inheritIfRequired$2; - var createNonEnumerableProperty$3 = createNonEnumerableProperty$7; - var create$1 = objectCreate; - var getOwnPropertyNames = objectGetOwnPropertyNames.f; - var isPrototypeOf = objectIsPrototypeOf; - var isRegExp$1 = isRegexp; - var toString$9 = toString$f; - var getRegExpFlags$1 = regexpGetFlags; - var stickyHelpers$2 = regexpStickyHelpers; - var proxyAccessor = proxyAccessor$1; - var defineBuiltIn$2 = defineBuiltIn$7; - var fails$6 = fails$x; - var hasOwn = hasOwnProperty_1; - var enforceInternalState = internalState.enforce; - var setSpecies = setSpecies$1; - var wellKnownSymbol$5 = wellKnownSymbol$j; - var UNSUPPORTED_DOT_ALL$1 = regexpUnsupportedDotAll; - var UNSUPPORTED_NCG$1 = regexpUnsupportedNcg; - - var MATCH$1 = wellKnownSymbol$5('match'); - var NativeRegExp = global$3.RegExp; - var RegExpPrototype$2 = NativeRegExp.prototype; - var SyntaxError = global$3.SyntaxError; - var exec$1 = uncurryThis$8(RegExpPrototype$2.exec); - var charAt$4 = uncurryThis$8(''.charAt); - var replace$2 = uncurryThis$8(''.replace); - var stringIndexOf$2 = uncurryThis$8(''.indexOf); - var stringSlice$6 = uncurryThis$8(''.slice); - // TODO: Use only proper RegExpIdentifierName - var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/; - var re1 = /a/g; - var re2 = /a/g; - - // "new" should create a new object, old webkit bug - var CORRECT_NEW = new NativeRegExp(re1) !== re1; - - var MISSED_STICKY = stickyHelpers$2.MISSED_STICKY; - var UNSUPPORTED_Y$2 = stickyHelpers$2.UNSUPPORTED_Y; - - var BASE_FORCED = DESCRIPTORS && - (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL$1 || UNSUPPORTED_NCG$1 || fails$6(function () { - re2[MATCH$1] = false; - // RegExp constructor can alter flags and IsRegExp works correct with @@match - return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i'; - })); - - var handleDotAll = function (string) { - var length = string.length; - var index = 0; - var result = ''; - var brackets = false; - var chr; - for (; index <= length; index++) { - chr = charAt$4(string, index); - if (chr === '\\') { - result += chr + charAt$4(string, ++index); - continue; - } - if (!brackets && chr === '.') { - result += '[\\s\\S]'; - } else { - if (chr === '[') { - brackets = true; - } else if (chr === ']') { - brackets = false; - } result += chr; - } - } return result; - }; - - var handleNCG = function (string) { - var length = string.length; - var index = 0; - var result = ''; - var named = []; - var names = create$1(null); - var brackets = false; - var ncg = false; - var groupid = 0; - var groupname = ''; - var chr; - for (; index <= length; index++) { - chr = charAt$4(string, index); - if (chr === '\\') { - chr += charAt$4(string, ++index); - } else if (chr === ']') { - brackets = false; - } else if (!brackets) switch (true) { - case chr === '[': - brackets = true; - break; - case chr === '(': - if (exec$1(IS_NCG, stringSlice$6(string, index + 1))) { - index += 2; - ncg = true; - } - result += chr; - groupid++; - continue; - case chr === '>' && ncg: - if (groupname === '' || hasOwn(names, groupname)) { - throw new SyntaxError('Invalid capture group name'); - } - names[groupname] = true; - named[named.length] = [groupname, groupid]; - ncg = false; - groupname = ''; - continue; - } - if (ncg) groupname += chr; - else result += chr; - } return [result, named]; - }; - - // `RegExp` constructor - // https://tc39.es/ecma262/#sec-regexp-constructor - if (isForced('RegExp', BASE_FORCED)) { - var RegExpWrapper = function RegExp(pattern, flags) { - var thisIsRegExp = isPrototypeOf(RegExpPrototype$2, this); - var patternIsRegExp = isRegExp$1(pattern); - var flagsAreUndefined = flags === undefined; - var groups = []; - var rawPattern = pattern; - var rawFlags, dotAll, sticky, handled, result, state; - - if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) { - return pattern; - } - - if (patternIsRegExp || isPrototypeOf(RegExpPrototype$2, pattern)) { - pattern = pattern.source; - if (flagsAreUndefined) flags = getRegExpFlags$1(rawPattern); - } - - pattern = pattern === undefined ? '' : toString$9(pattern); - flags = flags === undefined ? '' : toString$9(flags); - rawPattern = pattern; - - if (UNSUPPORTED_DOT_ALL$1 && 'dotAll' in re1) { - dotAll = !!flags && stringIndexOf$2(flags, 's') > -1; - if (dotAll) flags = replace$2(flags, /s/g, ''); - } - - rawFlags = flags; - - if (MISSED_STICKY && 'sticky' in re1) { - sticky = !!flags && stringIndexOf$2(flags, 'y') > -1; - if (sticky && UNSUPPORTED_Y$2) flags = replace$2(flags, /y/g, ''); - } - - if (UNSUPPORTED_NCG$1) { - handled = handleNCG(pattern); - pattern = handled[0]; - groups = handled[1]; - } - - result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype$2, RegExpWrapper); - - if (dotAll || sticky || groups.length) { - state = enforceInternalState(result); - if (dotAll) { - state.dotAll = true; - state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags); - } - if (sticky) state.sticky = true; - if (groups.length) state.groups = groups; - } - - if (pattern !== rawPattern) try { - // fails in old engines, but we have no alternatives for unsupported regex syntax - createNonEnumerableProperty$3(result, 'source', rawPattern === '' ? '(?:)' : rawPattern); - } catch (error) { /* empty */ } - - return result; - }; - - for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) { - proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]); - } - - RegExpPrototype$2.constructor = RegExpWrapper; - RegExpWrapper.prototype = RegExpPrototype$2; - defineBuiltIn$2(global$3, 'RegExp', RegExpWrapper, { constructor: true }); - } - - // https://tc39.es/ecma262/#sec-get-regexp-@@species - setSpecies('RegExp'); - - /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ - /* eslint-disable regexp/no-useless-quantifier -- testing */ - var call$7 = functionCall; - var uncurryThis$7 = functionUncurryThis; - var toString$8 = toString$f; - var regexpFlags = regexpFlags$1; - var stickyHelpers$1 = regexpStickyHelpers; - var shared = shared$4; - var create = objectCreate; - var getInternalState = internalState.get; - var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll; - var UNSUPPORTED_NCG = regexpUnsupportedNcg; - - var nativeReplace = shared('native-string-replace', String.prototype.replace); - var nativeExec = RegExp.prototype.exec; - var patchedExec = nativeExec; - var charAt$3 = uncurryThis$7(''.charAt); - var indexOf = uncurryThis$7(''.indexOf); - var replace$1 = uncurryThis$7(''.replace); - var stringSlice$5 = uncurryThis$7(''.slice); - - var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - call$7(nativeExec, re1, 'a'); - call$7(nativeExec, re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - })(); - - var UNSUPPORTED_Y$1 = stickyHelpers$1.BROKEN_CARET; - - // nonparticipating capturing group, copied from es5-shim's String#split patch. - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1 || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; - - if (PATCH) { - patchedExec = function exec(string) { - var re = this; - var state = getInternalState(re); - var str = toString$8(string); - var raw = state.raw; - var result, reCopy, lastIndex, match, i, object, group; - - if (raw) { - raw.lastIndex = re.lastIndex; - result = call$7(patchedExec, raw, str); - re.lastIndex = raw.lastIndex; - return result; - } - - var groups = state.groups; - var sticky = UNSUPPORTED_Y$1 && re.sticky; - var flags = call$7(regexpFlags, re); - var source = re.source; - var charsAdded = 0; - var strCopy = str; - - if (sticky) { - flags = replace$1(flags, 'y', ''); - if (indexOf(flags, 'g') === -1) { - flags += 'g'; - } - - strCopy = stringSlice$5(str, re.lastIndex); - // Support anchored sticky behavior. - if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt$3(str, re.lastIndex - 1) !== '\n')) { - source = '(?: ' + source + ')'; - strCopy = ' ' + strCopy; - charsAdded++; - } - // ^(? + rx + ) is needed, in combination with some str slicing, to - // simulate the 'y' flag. - reCopy = new RegExp('^(?:' + source + ')', flags); - } - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + source + '$(?!\\s)', flags); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = call$7(nativeExec, sticky ? reCopy : re, strCopy); - - if (sticky) { - if (match) { - match.input = stringSlice$5(match.input, charsAdded); - match[0] = stringSlice$5(match[0], charsAdded); - match.index = re.lastIndex; - re.lastIndex += match[0].length; - } else re.lastIndex = 0; - } else if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ - call$7(nativeReplace, match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - if (match && groups) { - match.groups = object = create(null); - for (i = 0; i < groups.length; i++) { - group = groups[i]; - object[group[0]] = match[group[1]]; - } - } - - return match; - }; - } - - var regexpExec$2 = patchedExec; - - var $$5 = _export; - var exec = regexpExec$2; - - // `RegExp.prototype.exec` method - // https://tc39.es/ecma262/#sec-regexp.prototype.exec - $$5({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { - exec: exec - }); - - var PROPER_FUNCTION_NAME$1 = functionName.PROPER; - var defineBuiltIn$1 = defineBuiltIn$7; - var anObject$6 = anObject$c; - var $toString = toString$f; - var fails$5 = fails$x; - var getRegExpFlags = regexpGetFlags; - - var TO_STRING = 'toString'; - var RegExpPrototype$1 = RegExp.prototype; - var nativeToString = RegExpPrototype$1[TO_STRING]; - - var NOT_GENERIC = fails$5(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; }); - // FF44- RegExp#toString has a wrong name - var INCORRECT_NAME = PROPER_FUNCTION_NAME$1 && nativeToString.name !== TO_STRING; - - // `RegExp.prototype.toString` method - // https://tc39.es/ecma262/#sec-regexp.prototype.tostring - if (NOT_GENERIC || INCORRECT_NAME) { - defineBuiltIn$1(RegExpPrototype$1, TO_STRING, function toString() { - var R = anObject$6(this); - var pattern = $toString(R.source); - var flags = $toString(getRegExpFlags(R)); - return '/' + pattern + '/' + flags; - }, { unsafe: true }); - } - - var isRegExp = isRegexp; - - var $TypeError$2 = TypeError; - - var notARegexp = function (it) { - if (isRegExp(it)) { - throw new $TypeError$2("The method doesn't accept regular expressions"); - } return it; - }; - - var wellKnownSymbol$4 = wellKnownSymbol$j; - - var MATCH = wellKnownSymbol$4('match'); - - var correctIsRegexpLogic = function (METHOD_NAME) { - var regexp = /./; - try { - '/./'[METHOD_NAME](regexp); - } catch (error1) { - try { - regexp[MATCH] = false; - return '/./'[METHOD_NAME](regexp); - } catch (error2) { /* empty */ } - } return false; - }; - - var $$4 = _export; - var uncurryThis$6 = functionUncurryThis; - var notARegExp$2 = notARegexp; - var requireObjectCoercible$7 = requireObjectCoercible$c; - var toString$7 = toString$f; - var correctIsRegExpLogic$2 = correctIsRegexpLogic; - - var stringIndexOf$1 = uncurryThis$6(''.indexOf); - - // `String.prototype.includes` method - // https://tc39.es/ecma262/#sec-string.prototype.includes - $$4({ target: 'String', proto: true, forced: !correctIsRegExpLogic$2('includes') }, { - includes: function includes(searchString /* , position = 0 */) { - return !!~stringIndexOf$1( - toString$7(requireObjectCoercible$7(this)), - toString$7(notARegExp$2(searchString)), - arguments.length > 1 ? arguments[1] : undefined - ); - } - }); - - var NATIVE_BIND = functionBindNative; - - var FunctionPrototype = Function.prototype; - var apply$1 = FunctionPrototype.apply; - var call$6 = FunctionPrototype.call; - - // eslint-disable-next-line es/no-reflect -- safe - var functionApply = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call$6.bind(apply$1) : function () { - return call$6.apply(apply$1, arguments); - }); - - // TODO: Remove from `core-js@4` since it's moved to entry points - - var call$5 = functionCall; - var defineBuiltIn = defineBuiltIn$7; - var regexpExec$1 = regexpExec$2; - var fails$4 = fails$x; - var wellKnownSymbol$3 = wellKnownSymbol$j; - var createNonEnumerableProperty$2 = createNonEnumerableProperty$7; - - var SPECIES$1 = wellKnownSymbol$3('species'); - var RegExpPrototype = RegExp.prototype; - - var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) { - var SYMBOL = wellKnownSymbol$3(KEY); - - var DELEGATES_TO_SYMBOL = !fails$4(function () { - // String methods call symbol-named RegExp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) !== 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$4(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - - if (KEY === 'split') { - // We can't use real regex here since it causes deoptimization - // and serious performance degradation in V8 - // https://github.com/zloirock/core-js/issues/306 - re = {}; - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES$1] = function () { return re; }; - re.flags = ''; - re[SYMBOL] = /./[SYMBOL]; - } - - re.exec = function () { - execCalled = true; - return null; - }; - - re[SYMBOL](''); - return !execCalled; - }); - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - FORCED - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - var $exec = regexp.exec; - if ($exec === regexpExec$1 || $exec === RegExpPrototype.exec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: call$5(nativeRegExpMethod, regexp, str, arg2) }; - } - return { done: true, value: call$5(nativeMethod, str, regexp, arg2) }; - } - return { done: false }; - }); - - defineBuiltIn(String.prototype, KEY, methods[0]); - defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); - } - - if (SHAM) createNonEnumerableProperty$2(RegExpPrototype[SYMBOL], 'sham', true); - }; - - var uncurryThis$5 = functionUncurryThis; - var toIntegerOrInfinity$1 = toIntegerOrInfinity$5; - var toString$6 = toString$f; - var requireObjectCoercible$6 = requireObjectCoercible$c; - - var charAt$2 = uncurryThis$5(''.charAt); - var charCodeAt = uncurryThis$5(''.charCodeAt); - var stringSlice$4 = uncurryThis$5(''.slice); - - var createMethod = function (CONVERT_TO_STRING) { - return function ($this, pos) { - var S = toString$6(requireObjectCoercible$6($this)); - var position = toIntegerOrInfinity$1(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = charCodeAt(S, position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size - || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF - ? CONVERT_TO_STRING - ? charAt$2(S, position) - : first - : CONVERT_TO_STRING - ? stringSlice$4(S, position, position + 2) - : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; - }; - - var stringMultibyte = { - // `String.prototype.codePointAt` method - // https://tc39.es/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod(false), - // `String.prototype.at` method - // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod(true) - }; - - var charAt$1 = stringMultibyte.charAt; - - // `AdvanceStringIndex` abstract operation - // https://tc39.es/ecma262/#sec-advancestringindex - var advanceStringIndex$3 = function (S, index, unicode) { - return index + (unicode ? charAt$1(S, index).length : 1); - }; - - var uncurryThis$4 = functionUncurryThis; - var toObject$1 = toObject$b; - - var floor = Math.floor; - var charAt = uncurryThis$4(''.charAt); - var replace = uncurryThis$4(''.replace); - var stringSlice$3 = uncurryThis$4(''.slice); - // eslint-disable-next-line redos/no-vulnerable -- safe - var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; - var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; - - // `GetSubstitution` abstract operation - // https://tc39.es/ecma262/#sec-getsubstitution - var getSubstitution$1 = function (matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - if (namedCaptures !== undefined) { - namedCaptures = toObject$1(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - return replace(replacement, symbols, function (match, ch) { - var capture; - switch (charAt(ch, 0)) { - case '$': return '$'; - case '&': return matched; - case '`': return stringSlice$3(str, 0, position); - case "'": return stringSlice$3(str, tailPos); - case '<': - capture = namedCaptures[stringSlice$3(ch, 1, -1)]; - break; - default: // \d\d? - var n = +ch; - if (n === 0) return match; - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); - return match; - } - capture = captures[n - 1]; - } - return capture === undefined ? '' : capture; - }); - }; - - var call$4 = functionCall; - var anObject$5 = anObject$c; - var isCallable$1 = isCallable$i; - var classof = classofRaw$2; - var regexpExec = regexpExec$2; - - var $TypeError$1 = TypeError; - - // `RegExpExec` abstract operation - // https://tc39.es/ecma262/#sec-regexpexec - var regexpExecAbstract = function (R, S) { - var exec = R.exec; - if (isCallable$1(exec)) { - var result = call$4(exec, R, S); - if (result !== null) anObject$5(result); - return result; - } - if (classof(R) === 'RegExp') return call$4(regexpExec, R, S); - throw new $TypeError$1('RegExp#exec called on incompatible receiver'); - }; - - var apply = functionApply; - var call$3 = functionCall; - var uncurryThis$3 = functionUncurryThis; - var fixRegExpWellKnownSymbolLogic$3 = fixRegexpWellKnownSymbolLogic; - var fails$3 = fails$x; - var anObject$4 = anObject$c; - var isCallable = isCallable$i; - var isNullOrUndefined$4 = isNullOrUndefined$7; - var toIntegerOrInfinity = toIntegerOrInfinity$5; - var toLength$4 = toLength$6; - var toString$5 = toString$f; - var requireObjectCoercible$5 = requireObjectCoercible$c; - var advanceStringIndex$2 = advanceStringIndex$3; - var getMethod$3 = getMethod$5; - var getSubstitution = getSubstitution$1; - var regExpExec$3 = regexpExecAbstract; - var wellKnownSymbol$2 = wellKnownSymbol$j; - - var REPLACE = wellKnownSymbol$2('replace'); - var max = Math.max; - var min$3 = Math.min; - var concat = uncurryThis$3([].concat); - var push$1 = uncurryThis$3([].push); - var stringIndexOf = uncurryThis$3(''.indexOf); - var stringSlice$2 = uncurryThis$3(''.slice); - - var maybeToString = function (it) { - return it === undefined ? it : String(it); - }; - - // IE <= 11 replaces $0 with the whole match, as if it was $& - // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 - var REPLACE_KEEPS_$0 = (function () { - // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing - return 'a'.replace(/./, '$0') === '$0'; - })(); - - // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { - if (/./[REPLACE]) { - return /./[REPLACE]('a', '$0') === ''; - } - return false; - })(); - - var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$3(function () { - var re = /./; - re.exec = function () { - var result = []; - result.groups = { a: '7' }; - return result; - }; - // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive - return ''.replace(re, '$') !== '7'; - }); - - // @@replace logic - fixRegExpWellKnownSymbolLogic$3('replace', function (_, nativeReplace, maybeCallNative) { - var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; - - return [ - // `String.prototype.replace` method - // https://tc39.es/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = requireObjectCoercible$5(this); - var replacer = isNullOrUndefined$4(searchValue) ? undefined : getMethod$3(searchValue, REPLACE); - return replacer - ? call$3(replacer, searchValue, O, replaceValue) - : call$3(nativeReplace, toString$5(O), searchValue, replaceValue); - }, - // `RegExp.prototype[@@replace]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace - function (string, replaceValue) { - var rx = anObject$4(this); - var S = toString$5(string); - - if ( - typeof replaceValue == 'string' && - stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && - stringIndexOf(replaceValue, '$<') === -1 - ) { - var res = maybeCallNative(nativeReplace, rx, S, replaceValue); - if (res.done) return res.value; - } - - var functionalReplace = isCallable(replaceValue); - if (!functionalReplace) replaceValue = toString$5(replaceValue); - - var global = rx.global; - var fullUnicode; - if (global) { - fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - - var results = []; - var result; - while (true) { - result = regExpExec$3(rx, S); - if (result === null) break; - - push$1(results, result); - if (!global) break; - - var matchStr = toString$5(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex$2(S, toLength$4(rx.lastIndex), fullUnicode); - } - - var accumulatedResult = ''; - var nextSourcePosition = 0; - for (var i = 0; i < results.length; i++) { - result = results[i]; - - var matched = toString$5(result[0]); - var position = max(min$3(toIntegerOrInfinity(result.index), S.length), 0); - var captures = []; - var replacement; - // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - for (var j = 1; j < result.length; j++) push$1(captures, maybeToString(result[j])); - var namedCaptures = result.groups; - if (functionalReplace) { - var replacerArgs = concat([matched], captures, position, S); - if (namedCaptures !== undefined) push$1(replacerArgs, namedCaptures); - replacement = toString$5(apply(replaceValue, undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - if (position >= nextSourcePosition) { - accumulatedResult += stringSlice$2(S, nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - - return accumulatedResult + stringSlice$2(S, nextSourcePosition); - } - ]; - }, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); - - // `SameValue` abstract operation - // https://tc39.es/ecma262/#sec-samevalue - // eslint-disable-next-line es/no-object-is -- safe - var sameValue$1 = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare -- NaN check - return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y; - }; - - var call$2 = functionCall; - var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic; - var anObject$3 = anObject$c; - var isNullOrUndefined$3 = isNullOrUndefined$7; - var requireObjectCoercible$4 = requireObjectCoercible$c; - var sameValue = sameValue$1; - var toString$4 = toString$f; - var getMethod$2 = getMethod$5; - var regExpExec$2 = regexpExecAbstract; - - // @@search logic - fixRegExpWellKnownSymbolLogic$2('search', function (SEARCH, nativeSearch, maybeCallNative) { - return [ - // `String.prototype.search` method - // https://tc39.es/ecma262/#sec-string.prototype.search - function search(regexp) { - var O = requireObjectCoercible$4(this); - var searcher = isNullOrUndefined$3(regexp) ? undefined : getMethod$2(regexp, SEARCH); - return searcher ? call$2(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString$4(O)); - }, - // `RegExp.prototype[@@search]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@search - function (string) { - var rx = anObject$3(this); - var S = toString$4(string); - var res = maybeCallNative(nativeSearch, rx, S); - - if (res.done) return res.value; - - var previousLastIndex = rx.lastIndex; - if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; - var result = regExpExec$2(rx, S); - if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; - return result === null ? -1 : result.index; - } - ]; - }); - - var isConstructor = isConstructor$3; - var tryToString = tryToString$3; - - var $TypeError = TypeError; - - // `Assert: IsConstructor(argument) is true` - var aConstructor$1 = function (argument) { - if (isConstructor(argument)) return argument; - throw new $TypeError(tryToString(argument) + ' is not a constructor'); - }; - - var anObject$2 = anObject$c; - var aConstructor = aConstructor$1; - var isNullOrUndefined$2 = isNullOrUndefined$7; - var wellKnownSymbol$1 = wellKnownSymbol$j; - - var SPECIES = wellKnownSymbol$1('species'); - - // `SpeciesConstructor` abstract operation - // https://tc39.es/ecma262/#sec-speciesconstructor - var speciesConstructor$1 = function (O, defaultConstructor) { - var C = anObject$2(O).constructor; - var S; - return C === undefined || isNullOrUndefined$2(S = anObject$2(C)[SPECIES]) ? defaultConstructor : aConstructor(S); - }; - - var call$1 = functionCall; - var uncurryThis$2 = functionUncurryThis; - var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic; - var anObject$1 = anObject$c; - var isNullOrUndefined$1 = isNullOrUndefined$7; - var requireObjectCoercible$3 = requireObjectCoercible$c; - var speciesConstructor = speciesConstructor$1; - var advanceStringIndex$1 = advanceStringIndex$3; - var toLength$3 = toLength$6; - var toString$3 = toString$f; - var getMethod$1 = getMethod$5; - var regExpExec$1 = regexpExecAbstract; - var stickyHelpers = regexpStickyHelpers; - var fails$2 = fails$x; - - var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; - var MAX_UINT32 = 0xFFFFFFFF; - var min$2 = Math.min; - var push = uncurryThis$2([].push); - var stringSlice$1 = uncurryThis$2(''.slice); - - // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec - // Weex JS has frozen built-in prototypes, so use try / catch wrapper - var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$2(function () { - // eslint-disable-next-line regexp/no-empty-group -- required for testing - var re = /(?:)/; - var originalExec = re.exec; - re.exec = function () { return originalExec.apply(this, arguments); }; - var result = 'ab'.split(re); - return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; - }); - - var BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' || - // eslint-disable-next-line regexp/no-empty-group -- required for testing - 'test'.split(/(?:)/, -1).length !== 4 || - 'ab'.split(/(?:ab)*/).length !== 2 || - '.'.split(/(.?)(.?)/).length !== 4 || - // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing - '.'.split(/()()/).length > 1 || - ''.split(/.?/).length; - - // @@split logic - fixRegExpWellKnownSymbolLogic$1('split', function (SPLIT, nativeSplit, maybeCallNative) { - var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) { - return separator === undefined && limit === 0 ? [] : call$1(nativeSplit, this, separator, limit); - } : nativeSplit; - - return [ - // `String.prototype.split` method - // https://tc39.es/ecma262/#sec-string.prototype.split - function split(separator, limit) { - var O = requireObjectCoercible$3(this); - var splitter = isNullOrUndefined$1(separator) ? undefined : getMethod$1(separator, SPLIT); - return splitter - ? call$1(splitter, separator, O, limit) - : call$1(internalSplit, toString$3(O), separator, limit); - }, - // `RegExp.prototype[@@split]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@split - // - // NOTE: This cannot be properly polyfilled in engines that don't support - // the 'y' flag. - function (string, limit) { - var rx = anObject$1(this); - var S = toString$3(string); - - if (!BUGGY) { - var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit); - if (res.done) return res.value; - } - - var C = speciesConstructor(rx, RegExp); - var unicodeMatching = rx.unicode; - var flags = (rx.ignoreCase ? 'i' : '') + - (rx.multiline ? 'm' : '') + - (rx.unicode ? 'u' : '') + - (UNSUPPORTED_Y ? 'g' : 'y'); - // ^(? + rx + ) is needed, in combination with some S slicing, to - // simulate the 'y' flag. - var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (S.length === 0) return regExpExec$1(splitter, S) === null ? [S] : []; - var p = 0; - var q = 0; - var A = []; - while (q < S.length) { - splitter.lastIndex = UNSUPPORTED_Y ? 0 : q; - var z = regExpExec$1(splitter, UNSUPPORTED_Y ? stringSlice$1(S, q) : S); - var e; - if ( - z === null || - (e = min$2(toLength$3(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p - ) { - q = advanceStringIndex$1(S, q, unicodeMatching); - } else { - push(A, stringSlice$1(S, p, q)); - if (A.length === lim) return A; - for (var i = 1; i <= z.length - 1; i++) { - push(A, z[i]); - if (A.length === lim) return A; - } - q = p = e; - } - } - push(A, stringSlice$1(S, p)); - return A; - } - ]; - }, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y); - - var PROPER_FUNCTION_NAME = functionName.PROPER; - var fails$1 = fails$x; - var whitespaces = whitespaces$4; - - var non = '\u200B\u0085\u180E'; - - // check that a method works with the correct list - // of whitespaces and has a correct name - var stringTrimForced = function (METHOD_NAME) { - return fails$1(function () { - return !!whitespaces[METHOD_NAME]() - || non[METHOD_NAME]() !== non - || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME); - }); - }; - - var $$3 = _export; - var $trim = stringTrim.trim; - var forcedStringTrimMethod = stringTrimForced; - - // `String.prototype.trim` method - // https://tc39.es/ecma262/#sec-string.prototype.trim - $$3({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { - trim: function trim() { - return $trim(this); - } - }); - - // iterable DOM collections - // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods - var domIterables = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - - // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` - var documentCreateElement = documentCreateElement$2; - - var classList = documentCreateElement('span').classList; - var DOMTokenListPrototype$2 = classList && classList.constructor && classList.constructor.prototype; - - var domTokenListPrototype = DOMTokenListPrototype$2 === Object.prototype ? undefined : DOMTokenListPrototype$2; - - var $forEach = arrayIteration.forEach; - var arrayMethodIsStrict = arrayMethodIsStrict$4; - - var STRICT_METHOD = arrayMethodIsStrict('forEach'); - - // `Array.prototype.forEach` method implementation - // https://tc39.es/ecma262/#sec-array.prototype.foreach - var arrayForEach = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - // eslint-disable-next-line es/no-array-prototype-foreach -- safe - } : [].forEach; - - var global$2 = global$k; - var DOMIterables$1 = domIterables; - var DOMTokenListPrototype$1 = domTokenListPrototype; - var forEach = arrayForEach; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$7; - - var handlePrototype$1 = function (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - createNonEnumerableProperty$1(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } - }; - - for (var COLLECTION_NAME$1 in DOMIterables$1) { - if (DOMIterables$1[COLLECTION_NAME$1]) { - handlePrototype$1(global$2[COLLECTION_NAME$1] && global$2[COLLECTION_NAME$1].prototype); - } - } - - handlePrototype$1(DOMTokenListPrototype$1); - - var global$1 = global$k; - var DOMIterables = domIterables; - var DOMTokenListPrototype = domTokenListPrototype; - var ArrayIteratorMethods = es_array_iterator; - var createNonEnumerableProperty = createNonEnumerableProperty$7; - var setToStringTag = setToStringTag$3; - var wellKnownSymbol = wellKnownSymbol$j; - - var ITERATOR = wellKnownSymbol('iterator'); - var ArrayValues = ArrayIteratorMethods.values; - - var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { - if (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[ITERATOR] !== ArrayValues) try { - createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); - } catch (error) { - CollectionPrototype[ITERATOR] = ArrayValues; - } - setToStringTag(CollectionPrototype, COLLECTION_NAME, true); - if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { - createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); - } catch (error) { - CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; - } - } - } - }; - - for (var COLLECTION_NAME in DOMIterables) { - handlePrototype(global$1[COLLECTION_NAME] && global$1[COLLECTION_NAME].prototype, COLLECTION_NAME); - } - - handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); - - var $$2 = _export; - var fails = fails$x; - var toObject = toObject$b; - var nativeGetPrototypeOf = objectGetPrototypeOf$1; - var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; - - var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); }); - - // `Object.getPrototypeOf` method - // https://tc39.es/ecma262/#sec-object.getprototypeof - $$2({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { - getPrototypeOf: function getPrototypeOf(it) { - return nativeGetPrototypeOf(toObject(it)); - } - }); - - var $$1 = _export; - var uncurryThis$1 = functionUncurryThisClause; - var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; - var toLength$2 = toLength$6; - var toString$2 = toString$f; - var notARegExp$1 = notARegexp; - var requireObjectCoercible$2 = requireObjectCoercible$c; - var correctIsRegExpLogic$1 = correctIsRegexpLogic; - - var slice = uncurryThis$1(''.slice); - var min$1 = Math.min; - - var CORRECT_IS_REGEXP_LOGIC$1 = correctIsRegExpLogic$1('endsWith'); - // https://github.com/zloirock/core-js/pull/702 - var MDN_POLYFILL_BUG$1 = !CORRECT_IS_REGEXP_LOGIC$1 && !!function () { - var descriptor = getOwnPropertyDescriptor$1(String.prototype, 'endsWith'); - return descriptor && !descriptor.writable; - }(); - - // `String.prototype.endsWith` method - // https://tc39.es/ecma262/#sec-string.prototype.endswith - $$1({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG$1 && !CORRECT_IS_REGEXP_LOGIC$1 }, { - endsWith: function endsWith(searchString /* , endPosition = @length */) { - var that = toString$2(requireObjectCoercible$2(this)); - notARegExp$1(searchString); - var endPosition = arguments.length > 1 ? arguments[1] : undefined; - var len = that.length; - var end = endPosition === undefined ? len : min$1(toLength$2(endPosition), len); - var search = toString$2(searchString); - return slice(that, end - search.length, end) === search; - } - }); - - var call = functionCall; - var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic; - var anObject = anObject$c; - var isNullOrUndefined = isNullOrUndefined$7; - var toLength$1 = toLength$6; - var toString$1 = toString$f; - var requireObjectCoercible$1 = requireObjectCoercible$c; - var getMethod = getMethod$5; - var advanceStringIndex = advanceStringIndex$3; - var regExpExec = regexpExecAbstract; - - // @@match logic - fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) { - return [ - // `String.prototype.match` method - // https://tc39.es/ecma262/#sec-string.prototype.match - function match(regexp) { - var O = requireObjectCoercible$1(this); - var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH); - return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString$1(O)); - }, - // `RegExp.prototype[@@match]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@match - function (string) { - var rx = anObject(this); - var S = toString$1(string); - var res = maybeCallNative(nativeMatch, rx, S); - - if (res.done) return res.value; - - if (!rx.global) return regExpExec(rx, S); - - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - var A = []; - var n = 0; - var result; - while ((result = regExpExec(rx, S)) !== null) { - var matchStr = toString$1(result[0]); - A[n] = matchStr; - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength$1(rx.lastIndex), fullUnicode); - n++; - } - return n === 0 ? null : A; - } - ]; - }); - - var $ = _export; - var uncurryThis = functionUncurryThisClause; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var toLength = toLength$6; - var toString = toString$f; - var notARegExp = notARegexp; - var requireObjectCoercible = requireObjectCoercible$c; - var correctIsRegExpLogic = correctIsRegexpLogic; - - var stringSlice = uncurryThis(''.slice); - var min = Math.min; - - var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); - // https://github.com/zloirock/core-js/pull/702 - var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () { - var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith'); - return descriptor && !descriptor.writable; - }(); - - // `String.prototype.startsWith` method - // https://tc39.es/ecma262/#sec-string.prototype.startswith - $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { - startsWith: function startsWith(searchString /* , position = 0 */) { - var that = toString(requireObjectCoercible(this)); - notARegExp(searchString); - var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = toString(searchString); - return stringSlice(that, index, index + search.length) === search; - } - }); var Utils = { getBootstrapVersion: function getBootstrapVersion() { var bootstrapVersion = 5; try { - var rawVersion = $$q.fn.dropdown.Constructor.VERSION; + var rawVersion = $.fn.dropdown.Constructor.VERSION; // Only try to parse VERSION if it is defined. // It is undefined in older versions of Bootstrap (tested with 3.1.1). @@ -4710,7 +659,7 @@ }, getSearchInput: function getSearchInput(that) { if (typeof that.options.searchSelector === 'string') { - return $$q(that.options.searchSelector); + return $(that.options.searchSelector); } return that.$toolbar.find('.search input'); }, @@ -4982,10 +931,10 @@ }, getScrollBarWidth: function getScrollBarWidth() { if (this.cachedWidth === undefined) { - var $inner = $$q('
').addClass('fixed-table-scroll-inner'); - var $outer = $$q('
').addClass('fixed-table-scroll-outer'); + var $inner = $('
').addClass('fixed-table-scroll-inner'); + var $outer = $('
').addClass('fixed-table-scroll-outer'); $outer.append($inner); - $$q('body').append($outer); + $('body').append($outer); var w1 = $inner[0].offsetWidth; $outer.css('overflow', 'scroll'); var w2 = $inner[0].offsetWidth; @@ -5141,7 +1090,7 @@ var data = []; var m = []; $els.each(function (y, el) { - var $el = $$q(el); + var $el = $(el); var row = {}; // save tr's id, class and data-* attributes @@ -5150,7 +1099,7 @@ row._data = _this2.getRealDataAttr($el.data()); row._style = $el.attr('style'); $el.find('>td,>th').each(function (_x, el) { - var $el = $$q(el); + var $el = $(el); var colspan = +$el.attr('colspan') || 1; var rowspan = +$el.attr('rowspan') || 1; var x = _x; @@ -5285,7 +1234,7 @@ } }; - var VERSION = '1.22.5'; + var VERSION = '1.23.0'; var bootstrapVersion = Utils.getBootstrapVersion(); var CONSTANTS = { 3: { @@ -5929,7 +1878,7 @@ function BootstrapTable(el, options) { _classCallCheck(this, BootstrapTable); this.options = options; - this.$el = $$q(el); + this.$el = $(el); this.$el_ = this.$el.clone(); this.timeoutId_ = 0; this.timeoutFooter_ = 0; @@ -5955,16 +1904,16 @@ value: function initConstants() { var opts = this.options; this.constants = Constants.CONSTANTS; - this.constants.theme = $$q.fn.bootstrapTable.theme; + this.constants.theme = $.fn.bootstrapTable.theme; this.constants.dataToggle = this.constants.html.dataToggle || 'data-toggle'; // init iconsPrefix and icons - var iconsPrefix = Utils.getIconsPrefix($$q.fn.bootstrapTable.theme); + var iconsPrefix = Utils.getIconsPrefix($.fn.bootstrapTable.theme); if (typeof opts.icons === 'string') { opts.icons = Utils.calculateObjectValue(null, opts.icons); } - opts.iconsPrefix = opts.iconsPrefix || $$q.fn.bootstrapTable.defaults.iconsPrefix || iconsPrefix; - opts.icons = Object.assign(Utils.getIcons(opts.iconsPrefix), $$q.fn.bootstrapTable.defaults.icons, opts.icons); + opts.iconsPrefix = opts.iconsPrefix || $.fn.bootstrapTable.defaults.iconsPrefix || iconsPrefix; + opts.icons = Object.assign(Utils.getIcons(opts.iconsPrefix), $.fn.bootstrapTable.defaults.icons, opts.icons); // init buttons class var buttonsPrefix = opts.buttonsPrefix ? "".concat(opts.buttonsPrefix, "-") : ''; @@ -5978,7 +1927,7 @@ key: "initLocale", value: function initLocale() { if (this.options.locale) { - var locales = $$q.fn.bootstrapTable.locales; + var locales = $.fn.bootstrapTable.locales; var parts = this.options.locale.split(/-|_/); parts[0] = parts[0].toLowerCase(); if (parts[1]) { @@ -6012,7 +1961,7 @@ var topPagination = ['top', 'both'].includes(this.options.paginationVAlign) ? '
' : ''; var bottomPagination = ['bottom', 'both'].includes(this.options.paginationVAlign) ? '
' : ''; var loadingTemplate = Utils.calculateObjectValue(this.options, this.options.loadingTemplate, [this.options.formatLoadingMessage()]); - this.$container = $$q("\n
\n
\n ").concat(topPagination, "\n
\n
\n
\n
\n ").concat(loadingTemplate, "\n
\n
\n
\n
\n ").concat(bottomPagination, "\n
\n ")); + this.$container = $("\n
\n
\n ").concat(topPagination, "\n
\n
\n
\n
\n ").concat(loadingTemplate, "\n
\n
\n
\n
\n ").concat(bottomPagination, "\n
\n ")); this.$container.insertAfter(this.$el); this.$tableContainer = this.$container.find('.fixed-table-container'); this.$tableHeader = this.$container.find('.fixed-table-header'); @@ -6021,7 +1970,7 @@ this.$tableFooter = this.$el.find('tfoot'); // checking if custom table-toolbar exists or not if (this.options.buttonsToolbar) { - this.$toolbar = $$q('body').find(this.options.buttonsToolbar); + this.$toolbar = $('body').find(this.options.buttonsToolbar); } else { this.$toolbar = this.$container.find('.fixed-table-toolbar'); } @@ -6050,17 +1999,17 @@ var columns = []; this.$header = this.$el.find('>thead'); if (!this.$header.length) { - this.$header = $$q("")).appendTo(this.$el); + this.$header = $("")).appendTo(this.$el); } else if (this.options.theadClasses) { this.$header.addClass(this.options.theadClasses); } this._headerTrClasses = []; this._headerTrStyles = []; this.$header.find('tr').each(function (i, el) { - var $tr = $$q(el); + var $tr = $(el); var column = []; $tr.find('th').each(function (i, el) { - var $th = $$q(el); + var $th = $(el); // #2014: getFieldIndex and elsewhere assume this is string, causes issues if not if (typeof $th.data('field') !== 'undefined') { @@ -6068,7 +2017,7 @@ } var _data = Object.assign({}, $th.data()); for (var key in _data) { - if ($$q.fn.bootstrapTable.columnDefaults.hasOwnProperty(key)) { + if ($.fn.bootstrapTable.columnDefaults.hasOwnProperty(key)) { delete _data[key]; } } @@ -6249,10 +2198,10 @@ }); this.$header.html(headerHtml.join('')); this.$header.find('th[data-field]').each(function (i, el) { - $$q(el).data(visibleColumns[$$q(el).data('field')]); + $(el).data(visibleColumns[$(el).data('field')]); }); this.$container.off('click', '.th-inner').on('click', '.th-inner', function (e) { - var $this = $$q(e.currentTarget); + var $this = $(e.currentTarget); if (_this2.options.detailView && !$this.parent().hasClass('bs-checkbox')) { if ($this.closest('.bootstrap-table')[0] !== _this2.$container[0]) { return false; @@ -6263,7 +2212,7 @@ } }); var resizeEvent = Utils.getEventName('resize.bootstrap-table', this.$el.attr('id')); - $$q(window).off(resizeEvent); + $(window).off(resizeEvent); if (!this.options.showHeader || this.options.cardView) { this.$header.hide(); this.$tableHeader.hide(); @@ -6274,14 +2223,14 @@ this.$tableLoading.css('top', this.$header.outerHeight() + 1); // Assign the correct sortable arrow this.getCaret(); - $$q(window).on(resizeEvent, function () { + $(window).on(resizeEvent, function () { return _this2.resetView(); }); } this.$selectAll = this.$header.find('[name="btSelectAll"]'); this.$selectAll.off('click').on('click', function (e) { e.stopPropagation(); - var checked = $$q(e.currentTarget).prop('checked'); + var checked = $(e.currentTarget).prop('checked'); _this2[checked ? 'checkAll' : 'uncheckAll'](); _this2.updateSelected(); }); @@ -6365,7 +2314,7 @@ value: function onSort(_ref) { var type = _ref.type, currentTarget = _ref.currentTarget; - var $this = type === 'keypress' ? $$q(currentTarget) : $$q(currentTarget).parent(); + var $this = type === 'keypress' ? $(currentTarget) : $(currentTarget).parent(); var $this_ = this.$header.find('th').eq($this.index()); this.$header.add(this.$header_).find('span.order').remove(); if (this.options.sortName === $this.data('field')) { @@ -6422,11 +2371,11 @@ var $keepOpen; var switchableCount = 0; if (this.$toolbar.find('.bs-bars').children().length) { - $$q('body').append($$q(opts.toolbar)); + $('body').append($(opts.toolbar)); } this.$toolbar.html(''); if (typeof opts.toolbar === 'string' || _typeof(opts.toolbar) === 'object') { - $$q(Utils.sprintf('
', this.constants.classes.pull, opts.toolbarAlign)).appendTo(this.$toolbar).append($$q(opts.toolbar)); + $(Utils.sprintf('
', this.constants.classes.pull, opts.toolbarAlign)).appendTo(this.$toolbar).append($(opts.toolbar)); } // showColumns, showToggle, showRefresh @@ -6628,7 +2577,7 @@ }); $checkboxes.off('click').on('click', function (_ref2) { var currentTarget = _ref2.currentTarget; - var $this = $$q(currentTarget); + var $this = $(currentTarget); _this4._toggleColumn($this.val(), $this.prop('checked'), false); _this4.trigger('column-switch', $this.data('field'), $this.prop('checked')); $toggleAll.prop('checked', $checkboxes.filter(':checked').length === _this4.columns.filter(function (column) { @@ -6637,19 +2586,19 @@ }); $toggleAll.off('click').on('click', function (_ref3) { var currentTarget = _ref3.currentTarget; - _this4._toggleAllColumns($$q(currentTarget).prop('checked')); - _this4.trigger('column-switch-all', $$q(currentTarget).prop('checked')); + _this4._toggleAllColumns($(currentTarget).prop('checked')); + _this4.trigger('column-switch-all', $(currentTarget).prop('checked')); }); if (opts.showColumnsSearch) { var $columnsSearch = $keepOpen.find('[name="columnsSearch"]'); var $listItems = $keepOpen.find('.dropdown-item-marker'); $columnsSearch.on('keyup paste change', function (_ref4) { var currentTarget = _ref4.currentTarget; - var $this = $$q(currentTarget); + var $this = $(currentTarget); var searchValue = $this.val().toLowerCase(); $listItems.show(); $checkboxes.each(function (i, el) { - var $checkbox = $$q(el); + var $checkbox = $(el); var $listItem = $checkbox.parents('.dropdown-item-marker'); var text = $listItem.text().toLowerCase(); if (!text.includes(searchValue)) { @@ -6722,16 +2671,16 @@ currentTarget = _ref5.currentTarget, firedByInitSearchText = _ref5.firedByInitSearchText; var overwriteSearchText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - if (currentTarget !== undefined && $$q(currentTarget).length && overwriteSearchText) { - var text = $$q(currentTarget).val().trim(); - if (this.options.trimOnSearch && $$q(currentTarget).val() !== text) { - $$q(currentTarget).val(text); + if (currentTarget !== undefined && $(currentTarget).length && overwriteSearchText) { + var text = $(currentTarget).val().trim(); + if (this.options.trimOnSearch && $(currentTarget).val() !== text) { + $(currentTarget).val(text); } if (this.searchText === text) { return; } var $searchInput = Utils.getSearchInput(this); - var $currentTarget = currentTarget instanceof jQuery ? currentTarget : $$q(currentTarget); + var $currentTarget = currentTarget instanceof jQuery ? currentTarget : $(currentTarget); if ($currentTarget.is($searchInput) || $currentTarget.hasClass('search-input')) { this.searchText = text; this.options.searchText = text; @@ -7082,7 +3031,7 @@ key: "updatePagination", value: function updatePagination(event) { // Fix #171: IE disabled button can be clicked bug. - if (event && $$q(event.currentTarget).hasClass('disabled')) { + if (event && $(event.currentTarget).hasClass('disabled')) { return; } if (!this.options.maintainMetaData) { @@ -7100,7 +3049,7 @@ key: "onPageListChange", value: function onPageListChange(event) { event.preventDefault(); - var $this = $$q(event.currentTarget); + var $this = $(event.currentTarget); $this.parent().addClass(this.constants.classes.dropdownActive).siblings().removeClass(this.constants.classes.dropdownActive); this.options.pageSize = $this.text().toUpperCase() === this.options.formatAllRows().toUpperCase() ? this.options.formatAllRows() : +$this.text(); this.$toolbar.find('.page-size').text(this.options.pageSize); @@ -7110,7 +3059,7 @@ }, { key: "onPagePre", value: function onPagePre(event) { - if ($$q(event.target).hasClass('disabled')) { + if ($(event.target).hasClass('disabled')) { return; } event.preventDefault(); @@ -7125,7 +3074,7 @@ }, { key: "onPageNext", value: function onPageNext(event) { - if ($$q(event.target).hasClass('disabled')) { + if ($(event.target).hasClass('disabled')) { return; } event.preventDefault(); @@ -7141,10 +3090,10 @@ key: "onPageNumber", value: function onPageNumber(event) { event.preventDefault(); - if (this.options.pageNumber === +$$q(event.currentTarget).text()) { + if (this.options.pageNumber === +$(event.currentTarget).text()) { return; } - this.options.pageNumber = +$$q(event.currentTarget).text(); + this.options.pageNumber = +$(event.currentTarget).text(); this.updatePagination(event); return false; } @@ -7354,7 +3303,7 @@ this.trigger('pre-body', data); this.$body = this.$el.find('>tbody'); if (!this.$body.length) { - this.$body = $$q('').appendTo(this.$el); + this.$body = $('').appendTo(this.$el); } // Fix #389 Bootstrap-table-flatJSON is not working @@ -7363,7 +3312,7 @@ this.pageTo = data.length; } var rows = []; - var trFragments = $$q(document.createDocumentFragment()); + var trFragments = $(document.createDocumentFragment()); var hasTr = false; var toExpand = []; this.autoMergeCells = Utils.checkAutoMergeCells(data.slice(this.pageFrom - 1, this.pageTo)); @@ -7435,13 +3384,13 @@ var _this9 = this; // click to select by column this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) { - var $td = $$q(e.currentTarget); + var $td = $(e.currentTarget); if ($td.find('.detail-icon').length || $td.index() - Utils.getDetailViewIndexOffset(_this9.options) < 0) { return; } var $tr = $td.parent(); - var $cardViewArr = $$q(e.target).parents('.card-views').children(); - var $cardViewTarget = $$q(e.target).parents('.card-view'); + var $cardViewArr = $(e.target).parents('.card-views').children(); + var $cardViewTarget = $(e.target).parents('.card-view'); var rowIndex = $tr.data('index'); var item = _this9.data[rowIndex]; var index = _this9.options.cardView ? $cardViewArr.index($cardViewTarget) : $td[0].cellIndex; @@ -7469,13 +3418,13 @@ }); this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function (e) { e.preventDefault(); - _this9.toggleDetailView($$q(e.currentTarget).parent().parent().data('index')); + _this9.toggleDetailView($(e.currentTarget).parent().parent().data('index')); return false; }); this.$selectItem = this.$body.find(Utils.sprintf('[name="%s"]', this.options.selectItemName)); this.$selectItem.off('click').on('click', function (e) { e.stopImmediatePropagation(); - var $this = $$q(e.currentTarget); + var $this = $(e.currentTarget); _this9._toggleCheck($this.prop('checked'), $this.data('index')); }); this.header.events.forEach(function (_events, i) { @@ -7502,7 +3451,7 @@ } var event = events[key]; _this9.$body.find('>tr:not(.no-records-found)').each(function (i, tr) { - var $tr = $$q(tr); + var $tr = $(tr); var $td = $tr.find(_this9.options.cardView ? '.card-views>.card-view' : '>td').eq(fieldIndex); var index = key.indexOf(' '); var name = key.substring(0, index); @@ -7634,7 +3583,7 @@ this._xhrAbort = true; this._xhr.abort(); } - this._xhr = $$q.ajax(request); + this._xhr = $.ajax(request); } return data; } @@ -7658,7 +3607,7 @@ value: function getCaret() { var _this11 = this; this.$header.find('th').each(function (i, th) { - $$q(th).find('.sortable').removeClass('desc asc').addClass($$q(th).data('field') === _this11.options.sortName ? _this11.options.sortOrder : 'both'); + $(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === _this11.options.sortName ? _this11.options.sortOrder : 'both'); }); } }, { @@ -7667,7 +3616,7 @@ var checkAll = this.$selectItem.filter(':enabled').length && this.$selectItem.filter(':enabled').length === this.$selectItem.filter(':enabled').filter(':checked').length; this.$selectAll.add(this.$selectAll_).prop('checked', checkAll); this.$selectItem.each(function (i, el) { - $$q(el).closest('tr')[$$q(el).prop('checked') ? 'addClass' : 'removeClass']('selected'); + $(el).closest('tr')[$(el).prop('checked') ? 'addClass' : 'removeClass']('selected'); }); } }, { @@ -7675,7 +3624,7 @@ value: function updateRows() { var _this12 = this; this.$selectItem.each(function (i, el) { - _this12.data[$$q(el).data('index')][_this12.header.stateField] = $$q(el).prop('checked'); + _this12.data[$(el).data('index')][_this12.header.stateField] = $(el).prop('checked'); }); } }, { @@ -7708,11 +3657,11 @@ args[_key4 - 1] = arguments[_key4]; } (_this$options = this.options)[BootstrapTable.EVENTS[name]].apply(_this$options, [].concat(args, [this])); - this.$el.trigger($$q.Event(name, { + this.$el.trigger($.Event(name, { sender: this }), args); (_this$options2 = this.options).onAll.apply(_this$options2, [name].concat([].concat(args, [this]))); - this.$el.trigger($$q.Event('all.bs.table', { + this.$el.trigger($.Event('all.bs.table', { sender: this }), [name, args]); } @@ -7757,7 +3706,7 @@ this.$selectAll_ = this.$header_.find('[name="btSelectAll"]'); this.$tableHeader.css('margin-right', scrollWidth).find('table').css('width', this.$el.outerWidth()).html('').attr('class', this.$el.attr('class')).append(this.$header_); this.$tableLoading.css('width', this.$el.outerWidth()); - var focusedTemp = $$q('.focus-temp:visible:eq(0)'); + var focusedTemp = $('.focus-temp:visible:eq(0)'); if (focusedTemp.length > 0) { focusedTemp.focus(); this.$header.find('.focus-temp').removeClass('focus-temp'); @@ -7765,7 +3714,7 @@ // fix bug: $.data() is not working as expected after $.append() this.$header.find('th[data-field]').each(function (i, el) { - _this14.$header_.find(Utils.sprintf('th[data-field="%s"]', $$q(el).data('field'))).data($$q(el).data()); + _this14.$header_.find(Utils.sprintf('th[data-field="%s"]', $(el).data('field'))).data($(el).data()); }); var visibleFields = this.getVisibleFields(); var $ths = this.$header_.find('th'); @@ -7775,7 +3724,7 @@ } var trLength = $tr.find('> *').length; $tr.find('> *').each(function (i, el) { - var $this = $$q(el); + var $this = $(el); if (Utils.hasDetailViewIcon(_this14.options)) { if (i === 0 && _this14.options.detailViewAlign !== 'right' || i === trLength - 1 && _this14.options.detailViewAlign === 'right') { var $thDetail = $ths.filter('.detail'); @@ -7787,7 +3736,7 @@ var index = i - Utils.getDetailViewIndexOffset(_this14.options); var $th = _this14.$header_.find(Utils.sprintf('th[data-field="%s"]', visibleFields[index])); if ($th.length > 1) { - $th = $$q($ths[$this[0].cellIndex]); + $th = $($ths[$this[0].cellIndex]); } var zoomWidth = $th.innerWidth() - $th.find('.fht-cell').width(); $th.find('.fht-cell').width($this.innerWidth() - zoomWidth); @@ -7900,7 +3849,7 @@ } var trLength = $tr.find('> *').length; $tr.find('> *').each(function (i, el) { - var $this = $$q(el); + var $this = $(el); if (Utils.hasDetailViewIcon(_this15.options)) { if (i === 0 && _this15.options.detailViewAlign === 'left' || i === trLength - 1 && _this15.options.detailViewAlign === 'right') { var $thDetail = $ths.filter('.detail'); @@ -8002,16 +3951,16 @@ data = data.slice(this.pageFrom - 1, this.pageTo); } if (params && params.formatted) { - data.forEach(function (row) { + return data.map(function (row) { for (var _i15 = 0, _Object$entries14 = Object.entries(row); _i15 < _Object$entries14.length; _i15++) { var _Object$entries14$_i = _slicedToArray(_Object$entries14[_i15], 2), key = _Object$entries14$_i[0], value = _Object$entries14$_i[1]; var column = _this17.columns[_this17.fieldsColumnsIndex[key]]; if (!column) { - return; + continue; } - row[key] = Utils.calculateObjectValue(column, _this17.header.formatters[column.fieldIndex], [value, row, row.index, column.field], value); + return Utils.calculateObjectValue(column, _this17.header.formatters[column.fieldIndex], [value, row, row.index, column.field], value); } }); } @@ -8232,7 +4181,7 @@ return; } fieldIndex += Utils.getDetailViewIndexOffset(this.options); - this.$body.find(">tr[data-index=".concat(index, "]")).find(">td:eq(".concat(fieldIndex, ")")).replaceWith($$q(rowHtml).find(">td:eq(".concat(fieldIndex, ")"))); + this.$body.find(">tr[data-index=".concat(index, "]")).find(">td:eq(".concat(fieldIndex, ")")).replaceWith($(rowHtml).find(">td:eq(".concat(fieldIndex, ")"))); this.initBodyEvent(); this.initFooter(); this.resetView(); @@ -8354,7 +4303,7 @@ }, { key: "_toggleColumn", value: function _toggleColumn(index, checked, needUpdate) { - if (index === -1 || this.columns[index].visible === checked) { + if (index === undefined || this.columns[index].visible === checked) { return; } this.columns[index].visible = checked; @@ -8437,7 +4386,7 @@ } else { $items.get().reverse().forEach(function (item) { if ($items.filter(':checked').length > _this23.options.minimumCountColumns) { - $$q(item).prop('checked', visible); + $(item).prop('checked', visible); } }); } @@ -8499,7 +4448,7 @@ var $items = this.$selectItem.filter(':enabled'); var checked = $items.filter(':checked'); $items.each(function (i, el) { - $$q(el).prop('checked', !$$q(el).prop('checked')); + $(el).prop('checked', !$(el).prop('checked')); }); this.updateRows(); this.updateSelected(); @@ -8613,13 +4562,13 @@ key: "destroy", value: function destroy() { this.$el.insertBefore(this.$container); - $$q(this.options.toolbar).insertBefore(this.$el); + $(this.options.toolbar).insertBefore(this.$el); this.$container.next().remove(); this.$container.remove(); this.$el.html(this.$el_.html()).css('margin-top', '0').attr('class', this.$el_.attr('class') || ''); // reset the class var resizeEvent = Utils.getEventName('resize.bootstrap-table', this.$el.attr('id')); - $$q(window).off(resizeEvent); + $(window).off(resizeEvent); } }, { key: "resetView", @@ -8766,7 +4715,7 @@ if (options.unit === 'rows') { scrollTo = 0; this.$body.find("> tr:lt(".concat(options.value, ")")).each(function (i, el) { - scrollTo += $$q(el).outerHeight(true); + scrollTo += $(el).outerHeight(true); }); } this.$tableBody.scrollTop(scrollTo); @@ -8868,7 +4817,7 @@ value: function expandAllRows() { var trs = this.$body.find('> tr[data-index][data-has-detail-view]'); for (var i = 0; i < trs.length; i++) { - this.expandRow($$q(trs[i]).data('index')); + this.expandRow($(trs[i]).data('index')); } } }, { @@ -8876,7 +4825,7 @@ value: function collapseAllRows() { var trs = this.$body.find('> tr[data-index][data-has-detail-view]'); for (var i = 0; i < trs.length; i++) { - this.collapseRow($$q(trs[i]).data('index')); + this.collapseRow($(trs[i]).data('index')); } } }, { @@ -8888,8 +4837,8 @@ this.columns[this.fieldsColumnsIndex[params.field]].title = this.options.escape && this.options.escapeTitle ? Utils.escapeHTML(params.title) : params.title; if (this.columns[this.fieldsColumnsIndex[params.field]].visible) { this.$header.find('th[data-field]').each(function (i, el) { - if ($$q(el).data('field') === params.field) { - $$q($$q(el).find('.th-inner')[0]).html(params.title); + if ($(el).data('field') === params.field) { + $($(el).find('.th-inner')[0]).html(params.title); return false; } }); @@ -8925,14 +4874,14 @@ // BOOTSTRAP TABLE PLUGIN DEFINITION // ======================= - $$q.BootstrapTable = BootstrapTable; - $$q.fn.bootstrapTable = function (option) { + $.BootstrapTable = BootstrapTable; + $.fn.bootstrapTable = function (option) { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key5 = 1; _key5 < _len2; _key5++) { args[_key5 - 1] = arguments[_key5]; } var value; this.each(function (i, el) { - var data = $$q(el).data('bootstrap.table'); + var data = $(el).data('bootstrap.table'); if (typeof option === 'string') { var _data2; if (!Constants.METHODS.includes(option)) { @@ -8943,7 +4892,7 @@ } value = (_data2 = data)[option].apply(_data2, args); if (option === 'destroy') { - $$q(el).removeData('bootstrap.table'); + $(el).removeData('bootstrap.table'); } return; } @@ -8951,28 +4900,28 @@ console.warn('You cannot initialize the table more than once!'); return; } - var options = Utils.extend(true, {}, BootstrapTable.DEFAULTS, $$q(el).data(), _typeof(option) === 'object' && option); - data = new $$q.BootstrapTable(el, options); - $$q(el).data('bootstrap.table', data); + var options = Utils.extend(true, {}, BootstrapTable.DEFAULTS, $(el).data(), _typeof(option) === 'object' && option); + data = new $.BootstrapTable(el, options); + $(el).data('bootstrap.table', data); data.init(); }); return typeof value === 'undefined' ? this : value; }; - $$q.fn.bootstrapTable.Constructor = BootstrapTable; - $$q.fn.bootstrapTable.theme = Constants.THEME; - $$q.fn.bootstrapTable.VERSION = Constants.VERSION; - $$q.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS; - $$q.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS; - $$q.fn.bootstrapTable.events = BootstrapTable.EVENTS; - $$q.fn.bootstrapTable.locales = BootstrapTable.LOCALES; - $$q.fn.bootstrapTable.methods = BootstrapTable.METHODS; - $$q.fn.bootstrapTable.utils = Utils; + $.fn.bootstrapTable.Constructor = BootstrapTable; + $.fn.bootstrapTable.theme = Constants.THEME; + $.fn.bootstrapTable.VERSION = Constants.VERSION; + $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS; + $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS; + $.fn.bootstrapTable.events = BootstrapTable.EVENTS; + $.fn.bootstrapTable.locales = BootstrapTable.LOCALES; + $.fn.bootstrapTable.methods = BootstrapTable.METHODS; + $.fn.bootstrapTable.utils = Utils; // BOOTSTRAP TABLE INIT // ======================= - $$q(function () { - $$q('[data-toggle="table"]').bootstrapTable(); + $(function () { + $('[data-toggle="table"]').bootstrapTable(); }); return BootstrapTable; @@ -8980,14 +4929,58 @@ })); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); -})(this, (function ($$4) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.to-string.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/web.dom-collections.for-each.js'), require('jquery')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.to-string.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/web.dom-collections.for-each.js', 'jquery'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(null, null, null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_includes_js, es_object_assign_js, es_object_toString_js, es_string_includes_js, web_domCollections_forEach_js, $) { 'use strict'; + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); @@ -8996,1838 +4989,34 @@ return !!t; })(); } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { - var i = e.call(t, r || "default"); + var i = e.call(t, r ); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return (String )(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$b = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$e = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$d = fails$e; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$d(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$c = fails$e; - - var functionBindNative = !fails$c(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$2 = functionBindNative; - - var call$5 = Function.prototype.call; - - var functionCall = NATIVE_BIND$2 ? call$5.bind(call$5) : function () { - return call$5.apply(call$5, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$1(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable; - - var createPropertyDescriptor$3 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$1 = functionBindNative; - - var FunctionPrototype$1 = Function.prototype; - var call$4 = FunctionPrototype$1.call; - var uncurryThisWithBind = NATIVE_BIND$1 && FunctionPrototype$1.bind.bind(call$4, call$4); - - var functionUncurryThis = NATIVE_BIND$1 ? uncurryThisWithBind : function (fn) { - return function () { - return call$4.apply(fn, arguments); - }; - }; - - var uncurryThis$e = functionUncurryThis; - - var toString$4 = uncurryThis$e({}.toString); - var stringSlice$1 = uncurryThis$e(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$1(toString$4(it), 8, -1); - }; - - var uncurryThis$d = functionUncurryThis; - var fails$b = fails$e; - var classof$6 = classofRaw$2; - - var $Object$3 = Object; - var split = uncurryThis$d(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$b(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$3('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$6(it) === 'String' ? split(it, '') : $Object$3(it); - } : $Object$3; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$2 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$1 = isNullOrUndefined$2; - - var $TypeError$7 = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$3 = function (it) { - if (isNullOrUndefined$1(it)) throw new $TypeError$7("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$2 = indexedObject; - var requireObjectCoercible$2 = requireObjectCoercible$3; - - var toIndexedObject$4 = function (it) { - return IndexedObject$2(requireObjectCoercible$2(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$c = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$b = isCallable$c; - - var isObject$8 = function (it) { - return typeof it == 'object' ? it !== null : isCallable$b(it); - }; - - var global$a = global$b; - var isCallable$a = isCallable$c; - - var aFunction = function (argument) { - return isCallable$a(argument) ? argument : undefined; - }; - - var getBuiltIn$4 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$a[namespace]) : global$a[namespace] && global$a[namespace][method]; - }; - - var uncurryThis$c = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$c({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$9 = global$b; - var userAgent = engineUserAgent; - - var process = global$9.process; - var Deno = global$9.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$a = fails$e; - var global$8 = global$b; - - var $String$4 = global$8.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$a(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$4(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$3 = getBuiltIn$4; - var isCallable$9 = isCallable$c; - var isPrototypeOf = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$2 = Object; - - var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$3('Symbol'); - return isCallable$9($Symbol) && isPrototypeOf($Symbol.prototype, $Object$2(it)); - }; - - var $String$3 = String; - - var tryToString$1 = function (argument) { - try { - return $String$3(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$8 = isCallable$c; - var tryToString = tryToString$1; - - var $TypeError$6 = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$2 = function (argument) { - if (isCallable$8(argument)) return argument; - throw new $TypeError$6(tryToString(argument) + ' is not a function'); - }; - - var aCallable$1 = aCallable$2; - var isNullOrUndefined = isNullOrUndefined$2; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$1 = function (V, P) { - var func = V[P]; - return isNullOrUndefined(func) ? undefined : aCallable$1(func); - }; - - var call$3 = functionCall; - var isCallable$7 = isCallable$c; - var isObject$7 = isObject$8; - - var $TypeError$5 = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$7(fn = input.toString) && !isObject$7(val = call$3(fn, input))) return val; - if (isCallable$7(fn = input.valueOf) && !isObject$7(val = call$3(fn, input))) return val; - if (pref !== 'string' && isCallable$7(fn = input.toString) && !isObject$7(val = call$3(fn, input))) return val; - throw new $TypeError$5("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var global$7 = global$b; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$3 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$3(global$7, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$7[key] = value; - } return value; - }; - - var globalThis$1 = global$b; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$3 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible$1 = requireObjectCoercible$3; - - var $Object$1 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$4 = function (argument) { - return $Object$1(requireObjectCoercible$1(argument)); - }; - - var uncurryThis$b = functionUncurryThis; - var toObject$3 = toObject$4; - - var hasOwnProperty = uncurryThis$b({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$3(it), key); - }; - - var uncurryThis$a = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$3 = uncurryThis$a(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$3(++id + postfix, 36); - }; - - var global$6 = global$b; - var shared$2 = shared$3; - var hasOwn$6 = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$1 = global$6.Symbol; - var WellKnownSymbolsStore = shared$2('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1; - - var wellKnownSymbol$9 = function (name) { - if (!hasOwn$6(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$6(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$2 = functionCall; - var isObject$6 = isObject$8; - var isSymbol$1 = isSymbol$2; - var getMethod = getMethod$1; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$8 = wellKnownSymbol$9; - - var $TypeError$4 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$8('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$1 = function (input, pref) { - if (!isObject$6(input) || isSymbol$1(input)) return input; - var exoticToPrim = getMethod(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$2(exoticToPrim, input, pref); - if (!isObject$6(result) || isSymbol$1(result)) return result; - throw new $TypeError$4("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive = toPrimitive$1; - var isSymbol = isSymbol$2; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; - }; - - var global$5 = global$b; - var isObject$5 = isObject$8; - - var document$1 = global$5.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$5(document$1) && isObject$5(document$1.createElement); - - var documentCreateElement$2 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$9 = descriptors; - var fails$9 = fails$e; - var createElement = documentCreateElement$2; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$9 && !fails$9(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$8 = descriptors; - var call$1 = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$2 = createPropertyDescriptor$3; - var toIndexedObject$3 = toIndexedObject$4; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$5 = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$8 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$3(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$5(O, P)) return createPropertyDescriptor$2(!call$1(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$7 = descriptors; - var fails$8 = fails$e; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$7 && fails$8(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$4 = isObject$8; - - var $String$2 = String; - var $TypeError$3 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$4 = function (argument) { - if (isObject$4(argument)) return argument; - throw new $TypeError$3($String$2(argument) + ' is not an object'); - }; - - var DESCRIPTORS$6 = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$3 = anObject$4; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$2 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$6 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$3(O); - P = toPropertyKey(P); - anObject$3(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$3(O); - P = toPropertyKey(P); - anObject$3(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$2('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$5 = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$1 = createPropertyDescriptor$3; - - var createNonEnumerableProperty$3 = DESCRIPTORS$5 ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$1(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$2 = {exports: {}}; - - var DESCRIPTORS$4 = descriptors; - var hasOwn$4 = hasOwnProperty_1; - - var FunctionPrototype = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$4 && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$4(FunctionPrototype, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$4 || (DESCRIPTORS$4 && getDescriptor(FunctionPrototype, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$9 = functionUncurryThis; - var isCallable$6 = isCallable$c; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$9(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$6(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$4 = global$b; - var isCallable$5 = isCallable$c; - - var WeakMap$1 = global$4.WeakMap; - - var weakMapBasicDetection = isCallable$5(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$1 = shared$3; - var uid = uid$2; - - var keys = shared$1('keys'); - - var sharedKey$2 = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$3 = global$b; - var isObject$3 = isObject$8; - var createNonEnumerableProperty$2 = createNonEnumerableProperty$3; - var hasOwn$3 = hasOwnProperty_1; - var shared = sharedStoreExports; - var sharedKey$1 = sharedKey$2; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$1 = global$3.TypeError; - var WeakMap = global$3.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$3(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared.state) { - var store = shared.state || (shared.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$1('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$3(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$2(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$3(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$3(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$8 = functionUncurryThis; - var fails$7 = fails$e; - var isCallable$4 = isCallable$c; - var hasOwn$2 = hasOwnProperty_1; - var DESCRIPTORS$3 = descriptors; - var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule = internalState; - - var enforceInternalState = InternalStateModule.enforce; - var getInternalState = InternalStateModule.get; - var $String$1 = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$2 = Object.defineProperty; - var stringSlice = uncurryThis$8(''.slice); - var replace = uncurryThis$8(''.replace); - var join = uncurryThis$8([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$3 && !fails$7(function () { - return defineProperty$2(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$1 = makeBuiltIn$2.exports = function (value, name, options) { - if (stringSlice($String$1(name), 0, 7) === 'Symbol(') { - name = '[' + replace($String$1(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$2(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - if (DESCRIPTORS$3) defineProperty$2(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$2(options, 'arity') && value.length !== options.arity) { - defineProperty$2(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$2(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$3) defineProperty$2(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwn$2(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$1(function toString() { - return isCallable$4(this) && getInternalState(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$2.exports; - - var isCallable$3 = isCallable$c; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$2 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$3(value)) makeBuiltIn(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$2 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$1 = toIntegerOrInfinity$2; - - var max = Math.max; - var min$1 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$1 = function (index, length) { - var integer = toIntegerOrInfinity$1(index); - return integer < 0 ? max(integer + length, 0) : min$1(integer, length); - }; - - var toIntegerOrInfinity = toIntegerOrInfinity$2; - - var min = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$1 = function (argument) { - var len = toIntegerOrInfinity(argument); - return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength = toLength$1; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$3 = function (obj) { - return toLength(obj.length); - }; - - var toIndexedObject$2 = toIndexedObject$4; - var toAbsoluteIndex = toAbsoluteIndex$1; - var lengthOfArrayLike$2 = lengthOfArrayLike$3; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$1 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$2($this); - var length = lengthOfArrayLike$2(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$1(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$1(false) - }; - - var uncurryThis$7 = functionUncurryThis; - var hasOwn$1 = hasOwnProperty_1; - var toIndexedObject$1 = toIndexedObject$4; - var indexOf = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$1 = uncurryThis$7([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$1(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$1(hiddenKeys$2, key) && hasOwn$1(O, key) && push$1(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$1(O, key = names[i++])) { - ~indexOf(result, key) || push$1(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$2 = getBuiltIn$4; - var uncurryThis$6 = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$2 = anObject$4; - - var concat$1 = uncurryThis$6([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$2(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$1(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$1 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$6 = fails$e; - var isCallable$2 = isCallable$c; - - var replacement = /#|\.prototype\./; - - var isForced$1 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$2(detection) ? fails$6(detection) - : !!detection; - }; - - var normalize = isForced$1.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$1.data = {}; - var NATIVE = isForced$1.NATIVE = 'N'; - var POLYFILL = isForced$1.POLYFILL = 'P'; - - var isForced_1 = isForced$1; - - var global$2 = global$b; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$3; - var defineBuiltIn$1 = defineBuiltIn$2; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties = copyConstructorProperties$1; - var isForced = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$2; - } else if (STATIC) { - target = global$2[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$2[TARGET] && global$2[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty$1(sourceProperty, 'sham', true); - } - defineBuiltIn$1(target, key, sourceProperty, options); - } - }; - - var classof$5 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$2 = Array.isArray || function isArray(argument) { - return classof$5(argument) === 'Array'; - }; - - var $TypeError$1 = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$1 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError$1('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$2 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor = createPropertyDescriptor$3; - - var createProperty$1 = function (object, key, value) { - if (DESCRIPTORS$2) definePropertyModule$1.f(object, key, createPropertyDescriptor(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$7 = wellKnownSymbol$9; - - var TO_STRING_TAG$1 = wellKnownSymbol$7('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$1] = 'z'; - - var toStringTagSupport = String(test) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$1 = isCallable$c; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$6 = wellKnownSymbol$9; - - var TO_STRING_TAG = wellKnownSymbol$6('toStringTag'); - var $Object = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$4 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$1(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$5 = functionUncurryThis; - var fails$5 = fails$e; - var isCallable = isCallable$c; - var classof$3 = classof$4; - var getBuiltIn$1 = getBuiltIn$4; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$1('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec = uncurryThis$5(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable(argument)) return false; - switch (classof$3(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$1 = !construct || fails$5(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$1 = isArray$2; - var isConstructor = isConstructor$1; - var isObject$2 = isObject$8; - var wellKnownSymbol$5 = wellKnownSymbol$9; - - var SPECIES$1 = wellKnownSymbol$5('species'); - var $Array = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$1(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === $Array || isArray$1(C.prototype))) C = undefined; - else if (isObject$2(C)) { - C = C[SPECIES$1]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$2 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$4 = fails$e; - var wellKnownSymbol$4 = wellKnownSymbol$9; - var V8_VERSION$1 = engineV8Version; - - var SPECIES = wellKnownSymbol$4('species'); - - var arrayMethodHasSpeciesSupport$1 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$4(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$3 = _export; - var fails$3 = fails$e; - var isArray = isArray$2; - var isObject$1 = isObject$8; - var toObject$2 = toObject$4; - var lengthOfArrayLike$1 = lengthOfArrayLike$3; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1; - var createProperty = createProperty$1; - var arraySpeciesCreate$1 = arraySpeciesCreate$2; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$1; - var wellKnownSymbol$3 = wellKnownSymbol$9; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$3('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$3(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject$1(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$3({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$2(this); - var A = arraySpeciesCreate$1(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike$1(E); - doesNotExceedSafeInteger(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); - } else { - doesNotExceedSafeInteger(n + 1); - createProperty(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$2 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$1 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$1 = anObject$4; - var toIndexedObject = toIndexedObject$4; - var objectKeys$1 = objectKeys$2; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$1 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$1(O); - var props = toIndexedObject(Properties); - var keys = objectKeys$1(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn = getBuiltIn$4; - - var html$1 = getBuiltIn('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject = anObject$4; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement$1 = documentCreateElement$2; - var sharedKey = sharedKey$2; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO = sharedKey('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement$1('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol$2 = wellKnownSymbol$9; - var create = objectCreate; - var defineProperty$1 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol$2('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$1(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$1 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var $$2 = _export; - var $includes = arrayIncludes.includes; - var fails$2 = fails$e; - var addToUnscopables = addToUnscopables$1; - - // FF99+ bug - var BROKEN_ON_SPARSE = fails$2(function () { - // eslint-disable-next-line es/no-array-prototype-includes -- detection - return !Array(1).includes(); - }); - - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - $$2({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { - includes: function includes(el /* , fromIndex = 0 */) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables('includes'); - - var DESCRIPTORS = descriptors; - var uncurryThis$4 = functionUncurryThis; - var call = functionCall; - var fails$1 = fails$e; - var objectKeys = objectKeys$2; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject$1 = toObject$4; - var IndexedObject$1 = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty = Object.defineProperty; - var concat = uncurryThis$4([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails$1(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { - enumerable: true, - get: function () { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject$1(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject$1(arguments[index++]); - var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $$1 = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $$1({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof$2 = classof$4; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof$2(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn = defineBuiltIn$2; - var toString$2 = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn(Object.prototype, 'toString', toString$2, { unsafe: true }); - } - - var isObject = isObject$8; - var classof$1 = classofRaw$2; - var wellKnownSymbol$1 = wellKnownSymbol$9; - - var MATCH$1 = wellKnownSymbol$1('match'); - - // `IsRegExp` abstract operation - // https://tc39.es/ecma262/#sec-isregexp - var isRegexp = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH$1]) !== undefined ? !!isRegExp : classof$1(it) === 'RegExp'); - }; - - var isRegExp = isRegexp; - - var $TypeError = TypeError; - - var notARegexp = function (it) { - if (isRegExp(it)) { - throw new $TypeError("The method doesn't accept regular expressions"); - } return it; - }; - - var classof = classof$4; - - var $String = String; - - var toString$1 = function (argument) { - if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); - return $String(argument); - }; - - var wellKnownSymbol = wellKnownSymbol$9; - - var MATCH = wellKnownSymbol('match'); - - var correctIsRegexpLogic = function (METHOD_NAME) { - var regexp = /./; - try { - '/./'[METHOD_NAME](regexp); - } catch (error1) { - try { - regexp[MATCH] = false; - return '/./'[METHOD_NAME](regexp); - } catch (error2) { /* empty */ } - } return false; - }; - - var $ = _export; - var uncurryThis$3 = functionUncurryThis; - var notARegExp = notARegexp; - var requireObjectCoercible = requireObjectCoercible$3; - var toString = toString$1; - var correctIsRegExpLogic = correctIsRegexpLogic; - - var stringIndexOf = uncurryThis$3(''.indexOf); - - // `String.prototype.includes` method - // https://tc39.es/ecma262/#sec-string.prototype.includes - $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { - includes: function includes(searchString /* , position = 0 */) { - return !!~stringIndexOf( - toString(requireObjectCoercible(this)), - toString(notARegExp(searchString)), - arguments.length > 1 ? arguments[1] : undefined - ); - } - }); - - // iterable DOM collections - // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods - var domIterables = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - - // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` - var documentCreateElement = documentCreateElement$2; - - var classList = documentCreateElement('span').classList; - var DOMTokenListPrototype$1 = classList && classList.constructor && classList.constructor.prototype; - - var domTokenListPrototype = DOMTokenListPrototype$1 === Object.prototype ? undefined : DOMTokenListPrototype$1; - - var classofRaw = classofRaw$2; - var uncurryThis$2 = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$2(fn); - }; - - var uncurryThis$1 = functionUncurryThisClause; - var aCallable = aCallable$2; - var NATIVE_BIND = functionBindNative; - - var bind$1 = uncurryThis$1(uncurryThis$1.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : NATIVE_BIND ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var bind = functionBindContext; - var uncurryThis = functionUncurryThis; - var IndexedObject = indexedObject; - var toObject = toObject$4; - var lengthOfArrayLike = lengthOfArrayLike$3; - var arraySpeciesCreate = arraySpeciesCreate$2; - - var push = uncurryThis([].push); - - // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation - var createMethod = function (TYPE) { - var IS_MAP = TYPE === 1; - var IS_FILTER = TYPE === 2; - var IS_SOME = TYPE === 3; - var IS_EVERY = TYPE === 4; - var IS_FIND_INDEX = TYPE === 6; - var IS_FILTER_REJECT = TYPE === 7; - var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = IndexedObject(O); - var length = lengthOfArrayLike(self); - var boundFunction = bind(callbackfn, that); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod(7) - }; - - var fails = fails$e; - - var arrayMethodIsStrict$1 = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails(function () { - // eslint-disable-next-line no-useless-call -- required for testing - method.call(null, argument || function () { return 1; }, 1); - }); - }; - - var $forEach = arrayIteration.forEach; - var arrayMethodIsStrict = arrayMethodIsStrict$1; - - var STRICT_METHOD = arrayMethodIsStrict('forEach'); - - // `Array.prototype.forEach` method implementation - // https://tc39.es/ecma262/#sec-array.prototype.foreach - var arrayForEach = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - // eslint-disable-next-line es/no-array-prototype-foreach -- safe - } : [].forEach; - - var global$1 = global$b; - var DOMIterables = domIterables; - var DOMTokenListPrototype = domTokenListPrototype; - var forEach = arrayForEach; - var createNonEnumerableProperty = createNonEnumerableProperty$3; - - var handlePrototype = function (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } - }; - - for (var COLLECTION_NAME in DOMIterables) { - if (DOMIterables[COLLECTION_NAME]) { - handlePrototype(global$1[COLLECTION_NAME] && global$1[COLLECTION_NAME].prototype); - } - } - - handlePrototype(DOMTokenListPrototype); /** * @author: Dennis Hernández @@ -10848,7 +5037,7 @@ timeout = setTimeout(later, wait); }; }; - Object.assign($$4.fn.bootstrapTable.defaults, { + Object.assign($.fn.bootstrapTable.defaults, { mobileResponsive: false, minWidth: 562, minHeight: undefined, @@ -10857,7 +5046,7 @@ checkOnInit: true, columnsHidden: [] }); - $$4.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { + $.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { function _class() { _classCallCheck(this, _class); return _callSuper(this, _class, arguments); @@ -10880,14 +5069,14 @@ this.options.minWidth = 100; } var old = { - width: $$4(window).width(), - height: $$4(window).height() + width: $(window).width(), + height: $(window).height() }; - $$4(window).on('resize orientationchange', debounce(function () { + $(window).on('resize orientationchange', debounce(function () { // reset view if height has only changed by at least the threshold. - var width = $$4(window).width(); - var height = $$4(window).height(); - var $activeElement = $$4(document.activeElement); + var width = $(window).width(); + var height = $(window).height(); + var $activeElement = $(document.activeElement); if ($activeElement.length && ['INPUT', 'SELECT', 'TEXTAREA'].includes($activeElement.prop('nodeName'))) { return; } @@ -10900,8 +5089,8 @@ } }, 200)); if (this.options.checkOnInit) { - var width = $$4(window).width(); - var height = $$4(window).height(); + var width = $(window).width(); + var height = $(window).height(); this.changeView(width, height); old = { width: width, @@ -10958,19 +5147,124 @@ this.resetView(); } }]); - }($$4.BootstrapTable); + }($.BootstrapTable); })); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); -})(this, (function ($$7) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.find.js'), require('core-js/modules/es.array.join.js'), require('core-js/modules/es.array.map.js'), require('core-js/modules/es.array.slice.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.to-string.js'), require('core-js/modules/es.regexp.exec.js'), require('core-js/modules/es.string.replace.js'), require('core-js/modules/web.dom-collections.for-each.js'), require('jquery')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.find.js', 'core-js/modules/es.array.join.js', 'core-js/modules/es.array.map.js', 'core-js/modules/es.array.slice.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.to-string.js', 'core-js/modules/es.regexp.exec.js', 'core-js/modules/es.string.replace.js', 'core-js/modules/web.dom-collections.for-each.js', 'jquery'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(null, null, null, null, null, null, null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_find_js, es_array_join_js, es_array_map_js, es_array_slice_js, es_object_assign_js, es_object_toString_js, es_regexp_exec_js, es_string_replace_js, web_domCollections_forEach_js, $) { 'use strict'; + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e ) { + t && (r = t); + var n = 0, + F = function () {}; + return { + s: F, + n: function () { + return n >= r.length ? { + done: !0 + } : { + done: !1, + value: r[n++] + }; + }, + e: function (r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = !0, + u = !1; + return { + s: function () { + t = t.call(r); + }, + n: function () { + var r = t.next(); + return a = r.done, r; + }, + e: function (r) { + u = !0, o = r; + }, + f: function () { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } + }; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; + } + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); @@ -10979,6 +5273,20 @@ return !!t; })(); } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; @@ -10993,2475 +5301,20 @@ var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _defineProperty(obj, key, value) { - key = _toPropertyKey(key); - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function () {}; - return { - s: F, - n: function () { - if (i >= o.length) return { - done: true - }; - return { - done: false, - value: o[i++] - }; - }, - e: function (e) { - throw e; - }, - f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, - didErr = false, - err; - return { - s: function () { - it = it.call(o); - }, - n: function () { - var step = it.next(); - normalCompletion = step.done; - return step; - }, - e: function (e) { - didErr = true; - err = e; - }, - f: function () { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } - }; - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$e = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$i = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$h = fails$i; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$h(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$g = fails$i; - - var functionBindNative = !fails$g(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$3 = functionBindNative; - - var call$a = Function.prototype.call; - - var functionCall = NATIVE_BIND$3 ? call$a.bind(call$a) : function () { - return call$a.apply(call$a, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$1(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable; - - var createPropertyDescriptor$3 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$2 = functionBindNative; - - var FunctionPrototype$2 = Function.prototype; - var call$9 = FunctionPrototype$2.call; - var uncurryThisWithBind = NATIVE_BIND$2 && FunctionPrototype$2.bind.bind(call$9, call$9); - - var functionUncurryThis = NATIVE_BIND$2 ? uncurryThisWithBind : function (fn) { - return function () { - return call$9.apply(fn, arguments); - }; - }; - - var uncurryThis$j = functionUncurryThis; - - var toString$6 = uncurryThis$j({}.toString); - var stringSlice$5 = uncurryThis$j(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$5(toString$6(it), 8, -1); - }; - - var uncurryThis$i = functionUncurryThis; - var fails$f = fails$i; - var classof$6 = classofRaw$2; - - var $Object$3 = Object; - var split = uncurryThis$i(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$f(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$3('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$6(it) === 'String' ? split(it, '') : $Object$3(it); - } : $Object$3; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$3 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$2 = isNullOrUndefined$3; - - var $TypeError$7 = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$4 = function (it) { - if (isNullOrUndefined$2(it)) throw new $TypeError$7("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$3 = indexedObject; - var requireObjectCoercible$3 = requireObjectCoercible$4; - - var toIndexedObject$6 = function (it) { - return IndexedObject$3(requireObjectCoercible$3(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$e = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$d = isCallable$e; - - var isObject$8 = function (it) { - return typeof it == 'object' ? it !== null : isCallable$d(it); - }; - - var global$d = global$e; - var isCallable$c = isCallable$e; - - var aFunction = function (argument) { - return isCallable$c(argument) ? argument : undefined; - }; - - var getBuiltIn$4 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$d[namespace]) : global$d[namespace] && global$d[namespace][method]; - }; - - var uncurryThis$h = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$h({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$c = global$e; - var userAgent = engineUserAgent; - - var process = global$c.process; - var Deno = global$c.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$e = fails$i; - var global$b = global$e; - - var $String$4 = global$b.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$e(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$4(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$3 = getBuiltIn$4; - var isCallable$b = isCallable$e; - var isPrototypeOf = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$2 = Object; - - var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$3('Symbol'); - return isCallable$b($Symbol) && isPrototypeOf($Symbol.prototype, $Object$2(it)); - }; - - var $String$3 = String; - - var tryToString$1 = function (argument) { - try { - return $String$3(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$a = isCallable$e; - var tryToString = tryToString$1; - - var $TypeError$6 = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$2 = function (argument) { - if (isCallable$a(argument)) return argument; - throw new $TypeError$6(tryToString(argument) + ' is not a function'); - }; - - var aCallable$1 = aCallable$2; - var isNullOrUndefined$1 = isNullOrUndefined$3; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$2 = function (V, P) { - var func = V[P]; - return isNullOrUndefined$1(func) ? undefined : aCallable$1(func); - }; - - var call$8 = functionCall; - var isCallable$9 = isCallable$e; - var isObject$7 = isObject$8; - - var $TypeError$5 = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$9(fn = input.toString) && !isObject$7(val = call$8(fn, input))) return val; - if (isCallable$9(fn = input.valueOf) && !isObject$7(val = call$8(fn, input))) return val; - if (pref !== 'string' && isCallable$9(fn = input.toString) && !isObject$7(val = call$8(fn, input))) return val; - throw new $TypeError$5("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var global$a = global$e; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$3 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$3(global$a, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$a[key] = value; - } return value; - }; - - var globalThis$1 = global$e; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$4 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible$2 = requireObjectCoercible$4; - - var $Object$1 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$5 = function (argument) { - return $Object$1(requireObjectCoercible$2(argument)); - }; - - var uncurryThis$g = functionUncurryThis; - var toObject$4 = toObject$5; - - var hasOwnProperty = uncurryThis$g({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$4(it), key); - }; - - var uncurryThis$f = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$5 = uncurryThis$f(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$5(++id + postfix, 36); - }; - - var global$9 = global$e; - var shared$3 = shared$4; - var hasOwn$6 = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$1 = global$9.Symbol; - var WellKnownSymbolsStore = shared$3('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1; - - var wellKnownSymbol$a = function (name) { - if (!hasOwn$6(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$6(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$7 = functionCall; - var isObject$6 = isObject$8; - var isSymbol$1 = isSymbol$2; - var getMethod$1 = getMethod$2; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$9 = wellKnownSymbol$a; - - var $TypeError$4 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$9('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$1 = function (input, pref) { - if (!isObject$6(input) || isSymbol$1(input)) return input; - var exoticToPrim = getMethod$1(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$7(exoticToPrim, input, pref); - if (!isObject$6(result) || isSymbol$1(result)) return result; - throw new $TypeError$4("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive = toPrimitive$1; - var isSymbol = isSymbol$2; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; - }; - - var global$8 = global$e; - var isObject$5 = isObject$8; - - var document$1 = global$8.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$5(document$1) && isObject$5(document$1.createElement); - - var documentCreateElement$2 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$9 = descriptors; - var fails$d = fails$i; - var createElement = documentCreateElement$2; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$9 && !fails$d(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$8 = descriptors; - var call$6 = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$2 = createPropertyDescriptor$3; - var toIndexedObject$5 = toIndexedObject$6; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$5 = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$8 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$5(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$5(O, P)) return createPropertyDescriptor$2(!call$6(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$7 = descriptors; - var fails$c = fails$i; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$7 && fails$c(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$4 = isObject$8; - - var $String$2 = String; - var $TypeError$3 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$7 = function (argument) { - if (isObject$4(argument)) return argument; - throw new $TypeError$3($String$2(argument) + ' is not an object'); - }; - - var DESCRIPTORS$6 = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$6 = anObject$7; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$2 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$6 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$6(O); - P = toPropertyKey(P); - anObject$6(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$6(O); - P = toPropertyKey(P); - anObject$6(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$2('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$5 = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$1 = createPropertyDescriptor$3; - - var createNonEnumerableProperty$4 = DESCRIPTORS$5 ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$1(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$2 = {exports: {}}; - - var DESCRIPTORS$4 = descriptors; - var hasOwn$4 = hasOwnProperty_1; - - var FunctionPrototype$1 = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$4 && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$4(FunctionPrototype$1, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$4 || (DESCRIPTORS$4 && getDescriptor(FunctionPrototype$1, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$e = functionUncurryThis; - var isCallable$8 = isCallable$e; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$e(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$8(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$7 = global$e; - var isCallable$7 = isCallable$e; - - var WeakMap$1 = global$7.WeakMap; - - var weakMapBasicDetection = isCallable$7(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$2 = shared$4; - var uid = uid$2; - - var keys = shared$2('keys'); - - var sharedKey$2 = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$6 = global$e; - var isObject$3 = isObject$8; - var createNonEnumerableProperty$3 = createNonEnumerableProperty$4; - var hasOwn$3 = hasOwnProperty_1; - var shared$1 = sharedStoreExports; - var sharedKey$1 = sharedKey$2; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$1 = global$6.TypeError; - var WeakMap = global$6.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$3(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared$1.state) { - var store = shared$1.state || (shared$1.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$1('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$3(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$3(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$3(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$3(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$d = functionUncurryThis; - var fails$b = fails$i; - var isCallable$6 = isCallable$e; - var hasOwn$2 = hasOwnProperty_1; - var DESCRIPTORS$3 = descriptors; - var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule = internalState; - - var enforceInternalState = InternalStateModule.enforce; - var getInternalState$1 = InternalStateModule.get; - var $String$1 = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$2 = Object.defineProperty; - var stringSlice$4 = uncurryThis$d(''.slice); - var replace$2 = uncurryThis$d(''.replace); - var join = uncurryThis$d([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$3 && !fails$b(function () { - return defineProperty$2(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$1 = makeBuiltIn$2.exports = function (value, name, options) { - if (stringSlice$4($String$1(name), 0, 7) === 'Symbol(') { - name = '[' + replace$2($String$1(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$2(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - if (DESCRIPTORS$3) defineProperty$2(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$2(options, 'arity') && value.length !== options.arity) { - defineProperty$2(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$2(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$3) defineProperty$2(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwn$2(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$1(function toString() { - return isCallable$6(this) && getInternalState$1(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$2.exports; - - var isCallable$5 = isCallable$e; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$3 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$5(value)) makeBuiltIn(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor$1 = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor$1 : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$4 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$3 = toIntegerOrInfinity$4; - - var max$2 = Math.max; - var min$2 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$2 = function (index, length) { - var integer = toIntegerOrInfinity$3(index); - return integer < 0 ? max$2(integer + length, 0) : min$2(integer, length); - }; - - var toIntegerOrInfinity$2 = toIntegerOrInfinity$4; - - var min$1 = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$2 = function (argument) { - var len = toIntegerOrInfinity$2(argument); - return len > 0 ? min$1(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength$1 = toLength$2; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$4 = function (obj) { - return toLength$1(obj.length); - }; - - var toIndexedObject$4 = toIndexedObject$6; - var toAbsoluteIndex$1 = toAbsoluteIndex$2; - var lengthOfArrayLike$3 = lengthOfArrayLike$4; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$2 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$4($this); - var length = lengthOfArrayLike$3(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex$1(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$2(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$2(false) - }; - - var uncurryThis$c = functionUncurryThis; - var hasOwn$1 = hasOwnProperty_1; - var toIndexedObject$3 = toIndexedObject$6; - var indexOf$1 = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$2 = uncurryThis$c([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$3(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$1(hiddenKeys$2, key) && hasOwn$1(O, key) && push$2(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$1(O, key = names[i++])) { - ~indexOf$1(result, key) || push$2(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$2 = getBuiltIn$4; - var uncurryThis$b = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$5 = anObject$7; - - var concat$2 = uncurryThis$b([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$5(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$2(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$1 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$a = fails$i; - var isCallable$4 = isCallable$e; - - var replacement = /#|\.prototype\./; - - var isForced$1 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$4(detection) ? fails$a(detection) - : !!detection; - }; - - var normalize = isForced$1.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$1.data = {}; - var NATIVE = isForced$1.NATIVE = 'N'; - var POLYFILL = isForced$1.POLYFILL = 'P'; - - var isForced_1 = isForced$1; - - var global$5 = global$e; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty$2 = createNonEnumerableProperty$4; - var defineBuiltIn$2 = defineBuiltIn$3; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties = copyConstructorProperties$1; - var isForced = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$5; - } else if (STATIC) { - target = global$5[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$5[TARGET] && global$5[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty$2(sourceProperty, 'sham', true); - } - defineBuiltIn$2(target, key, sourceProperty, options); - } - }; - - var classof$5 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$3 = Array.isArray || function isArray(argument) { - return classof$5(argument) === 'Array'; - }; - - var $TypeError$1 = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$1 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError$1('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$2 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor = createPropertyDescriptor$3; - - var createProperty$2 = function (object, key, value) { - if (DESCRIPTORS$2) definePropertyModule$1.f(object, key, createPropertyDescriptor(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$8 = wellKnownSymbol$a; - - var TO_STRING_TAG$1 = wellKnownSymbol$8('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$1] = 'z'; - - var toStringTagSupport = String(test) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$3 = isCallable$e; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$7 = wellKnownSymbol$a; - - var TO_STRING_TAG = wellKnownSymbol$7('toStringTag'); - var $Object = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$4 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$3(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$a = functionUncurryThis; - var fails$9 = fails$i; - var isCallable$2 = isCallable$e; - var classof$3 = classof$4; - var getBuiltIn$1 = getBuiltIn$4; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$1('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec$1 = uncurryThis$a(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable$2(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable$2(argument)) return false; - switch (classof$3(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec$1(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$2 = !construct || fails$9(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$2 = isArray$3; - var isConstructor$1 = isConstructor$2; - var isObject$2 = isObject$8; - var wellKnownSymbol$6 = wellKnownSymbol$a; - - var SPECIES$3 = wellKnownSymbol$6('species'); - var $Array$1 = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$2(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor$1(C) && (C === $Array$1 || isArray$2(C.prototype))) C = undefined; - else if (isObject$2(C)) { - C = C[SPECIES$3]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array$1 : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$2 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$8 = fails$i; - var wellKnownSymbol$5 = wellKnownSymbol$a; - var V8_VERSION$1 = engineV8Version; - - var SPECIES$2 = wellKnownSymbol$5('species'); - - var arrayMethodHasSpeciesSupport$3 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$8(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES$2] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$6 = _export; - var fails$7 = fails$i; - var isArray$1 = isArray$3; - var isObject$1 = isObject$8; - var toObject$3 = toObject$5; - var lengthOfArrayLike$2 = lengthOfArrayLike$4; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1; - var createProperty$1 = createProperty$2; - var arraySpeciesCreate$1 = arraySpeciesCreate$2; - var arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$3; - var wellKnownSymbol$4 = wellKnownSymbol$a; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$4('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$7(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject$1(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray$1(O); - }; - - var FORCED$1 = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport$2('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$6({ target: 'Array', proto: true, arity: 1, forced: FORCED$1 }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$3(this); - var A = arraySpeciesCreate$1(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike$2(E); - doesNotExceedSafeInteger(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty$1(A, n, E[k]); - } else { - doesNotExceedSafeInteger(n + 1); - createProperty$1(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var classofRaw = classofRaw$2; - var uncurryThis$9 = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$9(fn); - }; - - var uncurryThis$8 = functionUncurryThisClause; - var aCallable = aCallable$2; - var NATIVE_BIND$1 = functionBindNative; - - var bind$1 = uncurryThis$8(uncurryThis$8.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : NATIVE_BIND$1 ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var bind = functionBindContext; - var uncurryThis$7 = functionUncurryThis; - var IndexedObject$2 = indexedObject; - var toObject$2 = toObject$5; - var lengthOfArrayLike$1 = lengthOfArrayLike$4; - var arraySpeciesCreate = arraySpeciesCreate$2; - - var push$1 = uncurryThis$7([].push); - - // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation - var createMethod$1 = function (TYPE) { - var IS_MAP = TYPE === 1; - var IS_FILTER = TYPE === 2; - var IS_SOME = TYPE === 3; - var IS_EVERY = TYPE === 4; - var IS_FIND_INDEX = TYPE === 6; - var IS_FILTER_REJECT = TYPE === 7; - var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject$2($this); - var self = IndexedObject$2(O); - var length = lengthOfArrayLike$1(self); - var boundFunction = bind(callbackfn, that); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push$1(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push$1(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod$1(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod$1(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod$1(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod$1(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod$1(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod$1(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod$1(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod$1(7) - }; - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$2 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$1 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$4 = anObject$7; - var toIndexedObject$2 = toIndexedObject$6; - var objectKeys$1 = objectKeys$2; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$1 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$4(O); - var props = toIndexedObject$2(Properties); - var keys = objectKeys$1(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn = getBuiltIn$4; - - var html$1 = getBuiltIn('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject$3 = anObject$7; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement$1 = documentCreateElement$2; - var sharedKey = sharedKey$2; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO = sharedKey('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement$1('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject$3(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol$3 = wellKnownSymbol$a; - var create$1 = objectCreate; - var defineProperty$1 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol$3('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$1(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create$1(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$1 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var $$5 = _export; - var $find = arrayIteration.find; - var addToUnscopables = addToUnscopables$1; - - var FIND = 'find'; - var SKIPS_HOLES = true; - - // Shouldn't skip holes - // eslint-disable-next-line es/no-array-prototype-find -- testing - if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); - - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - $$5({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables(FIND); - - var fails$6 = fails$i; - - var arrayMethodIsStrict$2 = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails$6(function () { - // eslint-disable-next-line no-useless-call -- required for testing - method.call(null, argument || function () { return 1; }, 1); - }); - }; - - var $$4 = _export; - var uncurryThis$6 = functionUncurryThis; - var IndexedObject$1 = indexedObject; - var toIndexedObject$1 = toIndexedObject$6; - var arrayMethodIsStrict$1 = arrayMethodIsStrict$2; - - var nativeJoin = uncurryThis$6([].join); - - var ES3_STRINGS = IndexedObject$1 !== Object; - var FORCED = ES3_STRINGS || !arrayMethodIsStrict$1('join', ','); - - // `Array.prototype.join` method - // https://tc39.es/ecma262/#sec-array.prototype.join - $$4({ target: 'Array', proto: true, forced: FORCED }, { - join: function join(separator) { - return nativeJoin(toIndexedObject$1(this), separator === undefined ? ',' : separator); - } - }); - - var $$3 = _export; - var $map = arrayIteration.map; - var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$3; - - var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('map'); - - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - // with adding support of @@species - $$3({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 }, { - map: function map(callbackfn /* , thisArg */) { - return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - var uncurryThis$5 = functionUncurryThis; - - var arraySlice = uncurryThis$5([].slice); - - var $$2 = _export; - var isArray = isArray$3; - var isConstructor = isConstructor$2; - var isObject = isObject$8; - var toAbsoluteIndex = toAbsoluteIndex$2; - var lengthOfArrayLike = lengthOfArrayLike$4; - var toIndexedObject = toIndexedObject$6; - var createProperty = createProperty$2; - var wellKnownSymbol$2 = wellKnownSymbol$a; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$3; - var nativeSlice = arraySlice; - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); - - var SPECIES$1 = wellKnownSymbol$2('species'); - var $Array = Array; - var max$1 = Math.max; - - // `Array.prototype.slice` method - // https://tc39.es/ecma262/#sec-array.prototype.slice - // fallback for not array-like ES3 strings and DOM objects - $$2({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { - slice: function slice(start, end) { - var O = toIndexedObject(this); - var length = lengthOfArrayLike(O); - var k = toAbsoluteIndex(start, length); - var fin = toAbsoluteIndex(end === undefined ? length : end, length); - // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible - var Constructor, result, n; - if (isArray(O)) { - Constructor = O.constructor; - // cross-realm fallback - if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) { - Constructor = undefined; - } else if (isObject(Constructor)) { - Constructor = Constructor[SPECIES$1]; - if (Constructor === null) Constructor = undefined; - } - if (Constructor === $Array || Constructor === undefined) { - return nativeSlice(O, k, fin); - } - } - result = new (Constructor === undefined ? $Array : Constructor)(max$1(fin - k, 0)); - for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); - result.length = n; - return result; - } - }); - - var DESCRIPTORS = descriptors; - var uncurryThis$4 = functionUncurryThis; - var call$5 = functionCall; - var fails$5 = fails$i; - var objectKeys = objectKeys$2; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject$1 = toObject$5; - var IndexedObject = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty = Object.defineProperty; - var concat$1 = uncurryThis$4([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails$5(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { - enumerable: true, - get: function () { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject$1(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat$1(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || call$5(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $$1 = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $$1({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof$2 = classof$4; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof$2(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn$1 = defineBuiltIn$3; - var toString$4 = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn$1(Object.prototype, 'toString', toString$4, { unsafe: true }); - } - - var classof$1 = classof$4; - - var $String = String; - - var toString$3 = function (argument) { - if (classof$1(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); - return $String(argument); - }; - - var anObject$2 = anObject$7; - - // `RegExp.prototype.flags` getter implementation - // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags - var regexpFlags$1 = function () { - var that = anObject$2(this); - var result = ''; - if (that.hasIndices) result += 'd'; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.unicodeSets) result += 'v'; - if (that.sticky) result += 'y'; - return result; - }; - - var fails$4 = fails$i; - var global$4 = global$e; - - // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var $RegExp$2 = global$4.RegExp; - - var UNSUPPORTED_Y$1 = fails$4(function () { - var re = $RegExp$2('a', 'y'); - re.lastIndex = 2; - return re.exec('abcd') !== null; - }); - - // UC Browser bug - // https://github.com/zloirock/core-js/issues/1008 - var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$4(function () { - return !$RegExp$2('a', 'y').sticky; - }); - - var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$4(function () { - // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = $RegExp$2('^r', 'gy'); - re.lastIndex = 2; - return re.exec('str') !== null; - }); - - var regexpStickyHelpers = { - BROKEN_CARET: BROKEN_CARET, - MISSED_STICKY: MISSED_STICKY, - UNSUPPORTED_Y: UNSUPPORTED_Y$1 - }; - - var fails$3 = fails$i; - var global$3 = global$e; - - // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError - var $RegExp$1 = global$3.RegExp; - - var regexpUnsupportedDotAll = fails$3(function () { - var re = $RegExp$1('.', 's'); - return !(re.dotAll && re.test('\n') && re.flags === 's'); - }); - - var fails$2 = fails$i; - var global$2 = global$e; - - // babel-minify and Closure Compiler transpiles RegExp('(?
b)', 'g') -> /(?b)/g and it causes SyntaxError - var $RegExp = global$2.RegExp; - - var regexpUnsupportedNcg = fails$2(function () { - var re = $RegExp('(?b)', 'g'); - return re.exec('b').groups.a !== 'b' || - 'b'.replace(re, '$c') !== 'bc'; - }); - - /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ - /* eslint-disable regexp/no-useless-quantifier -- testing */ - var call$4 = functionCall; - var uncurryThis$3 = functionUncurryThis; - var toString$2 = toString$3; - var regexpFlags = regexpFlags$1; - var stickyHelpers = regexpStickyHelpers; - var shared = shared$4; - var create = objectCreate; - var getInternalState = internalState.get; - var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll; - var UNSUPPORTED_NCG = regexpUnsupportedNcg; - - var nativeReplace = shared('native-string-replace', String.prototype.replace); - var nativeExec = RegExp.prototype.exec; - var patchedExec = nativeExec; - var charAt$3 = uncurryThis$3(''.charAt); - var indexOf = uncurryThis$3(''.indexOf); - var replace$1 = uncurryThis$3(''.replace); - var stringSlice$3 = uncurryThis$3(''.slice); - - var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - call$4(nativeExec, re1, 'a'); - call$4(nativeExec, re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - })(); - - var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; - - // nonparticipating capturing group, copied from es5-shim's String#split patch. - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; - - if (PATCH) { - patchedExec = function exec(string) { - var re = this; - var state = getInternalState(re); - var str = toString$2(string); - var raw = state.raw; - var result, reCopy, lastIndex, match, i, object, group; - - if (raw) { - raw.lastIndex = re.lastIndex; - result = call$4(patchedExec, raw, str); - re.lastIndex = raw.lastIndex; - return result; - } - - var groups = state.groups; - var sticky = UNSUPPORTED_Y && re.sticky; - var flags = call$4(regexpFlags, re); - var source = re.source; - var charsAdded = 0; - var strCopy = str; - - if (sticky) { - flags = replace$1(flags, 'y', ''); - if (indexOf(flags, 'g') === -1) { - flags += 'g'; - } - - strCopy = stringSlice$3(str, re.lastIndex); - // Support anchored sticky behavior. - if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt$3(str, re.lastIndex - 1) !== '\n')) { - source = '(?: ' + source + ')'; - strCopy = ' ' + strCopy; - charsAdded++; - } - // ^(? + rx + ) is needed, in combination with some str slicing, to - // simulate the 'y' flag. - reCopy = new RegExp('^(?:' + source + ')', flags); - } - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + source + '$(?!\\s)', flags); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = call$4(nativeExec, sticky ? reCopy : re, strCopy); - - if (sticky) { - if (match) { - match.input = stringSlice$3(match.input, charsAdded); - match[0] = stringSlice$3(match[0], charsAdded); - match.index = re.lastIndex; - re.lastIndex += match[0].length; - } else re.lastIndex = 0; - } else if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ - call$4(nativeReplace, match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - if (match && groups) { - match.groups = object = create(null); - for (i = 0; i < groups.length; i++) { - group = groups[i]; - object[group[0]] = match[group[1]]; - } - } - - return match; - }; - } - - var regexpExec$2 = patchedExec; - - var $ = _export; - var exec = regexpExec$2; - - // `RegExp.prototype.exec` method - // https://tc39.es/ecma262/#sec-regexp.prototype.exec - $({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { - exec: exec - }); - - var NATIVE_BIND = functionBindNative; - - var FunctionPrototype = Function.prototype; - var apply$1 = FunctionPrototype.apply; - var call$3 = FunctionPrototype.call; - - // eslint-disable-next-line es/no-reflect -- safe - var functionApply = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call$3.bind(apply$1) : function () { - return call$3.apply(apply$1, arguments); - }); - - // TODO: Remove from `core-js@4` since it's moved to entry points - - var call$2 = functionCall; - var defineBuiltIn = defineBuiltIn$3; - var regexpExec$1 = regexpExec$2; - var fails$1 = fails$i; - var wellKnownSymbol$1 = wellKnownSymbol$a; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$4; - - var SPECIES = wellKnownSymbol$1('species'); - var RegExpPrototype = RegExp.prototype; - - var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) { - var SYMBOL = wellKnownSymbol$1(KEY); - - var DELEGATES_TO_SYMBOL = !fails$1(function () { - // String methods call symbol-named RegExp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) !== 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - - if (KEY === 'split') { - // We can't use real regex here since it causes deoptimization - // and serious performance degradation in V8 - // https://github.com/zloirock/core-js/issues/306 - re = {}; - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - re.flags = ''; - re[SYMBOL] = /./[SYMBOL]; - } - - re.exec = function () { - execCalled = true; - return null; - }; - - re[SYMBOL](''); - return !execCalled; - }); - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - FORCED - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - var $exec = regexp.exec; - if ($exec === regexpExec$1 || $exec === RegExpPrototype.exec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: call$2(nativeRegExpMethod, regexp, str, arg2) }; - } - return { done: true, value: call$2(nativeMethod, str, regexp, arg2) }; - } - return { done: false }; - }); - - defineBuiltIn(String.prototype, KEY, methods[0]); - defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); - } - - if (SHAM) createNonEnumerableProperty$1(RegExpPrototype[SYMBOL], 'sham', true); - }; - - var uncurryThis$2 = functionUncurryThis; - var toIntegerOrInfinity$1 = toIntegerOrInfinity$4; - var toString$1 = toString$3; - var requireObjectCoercible$1 = requireObjectCoercible$4; - - var charAt$2 = uncurryThis$2(''.charAt); - var charCodeAt = uncurryThis$2(''.charCodeAt); - var stringSlice$2 = uncurryThis$2(''.slice); - - var createMethod = function (CONVERT_TO_STRING) { - return function ($this, pos) { - var S = toString$1(requireObjectCoercible$1($this)); - var position = toIntegerOrInfinity$1(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = charCodeAt(S, position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size - || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF - ? CONVERT_TO_STRING - ? charAt$2(S, position) - : first - : CONVERT_TO_STRING - ? stringSlice$2(S, position, position + 2) - : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; - }; - - var stringMultibyte = { - // `String.prototype.codePointAt` method - // https://tc39.es/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod(false), - // `String.prototype.at` method - // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod(true) - }; - - var charAt$1 = stringMultibyte.charAt; - - // `AdvanceStringIndex` abstract operation - // https://tc39.es/ecma262/#sec-advancestringindex - var advanceStringIndex$1 = function (S, index, unicode) { - return index + (unicode ? charAt$1(S, index).length : 1); - }; - - var uncurryThis$1 = functionUncurryThis; - var toObject = toObject$5; - - var floor = Math.floor; - var charAt = uncurryThis$1(''.charAt); - var replace = uncurryThis$1(''.replace); - var stringSlice$1 = uncurryThis$1(''.slice); - // eslint-disable-next-line redos/no-vulnerable -- safe - var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; - var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; - - // `GetSubstitution` abstract operation - // https://tc39.es/ecma262/#sec-getsubstitution - var getSubstitution$1 = function (matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - return replace(replacement, symbols, function (match, ch) { - var capture; - switch (charAt(ch, 0)) { - case '$': return '$'; - case '&': return matched; - case '`': return stringSlice$1(str, 0, position); - case "'": return stringSlice$1(str, tailPos); - case '<': - capture = namedCaptures[stringSlice$1(ch, 1, -1)]; - break; - default: // \d\d? - var n = +ch; - if (n === 0) return match; - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); - return match; - } - capture = captures[n - 1]; - } - return capture === undefined ? '' : capture; - }); - }; - - var call$1 = functionCall; - var anObject$1 = anObject$7; - var isCallable$1 = isCallable$e; - var classof = classofRaw$2; - var regexpExec = regexpExec$2; - - var $TypeError = TypeError; - - // `RegExpExec` abstract operation - // https://tc39.es/ecma262/#sec-regexpexec - var regexpExecAbstract = function (R, S) { - var exec = R.exec; - if (isCallable$1(exec)) { - var result = call$1(exec, R, S); - if (result !== null) anObject$1(result); - return result; - } - if (classof(R) === 'RegExp') return call$1(regexpExec, R, S); - throw new $TypeError('RegExp#exec called on incompatible receiver'); - }; - - var apply = functionApply; - var call = functionCall; - var uncurryThis = functionUncurryThis; - var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic; - var fails = fails$i; - var anObject = anObject$7; - var isCallable = isCallable$e; - var isNullOrUndefined = isNullOrUndefined$3; - var toIntegerOrInfinity = toIntegerOrInfinity$4; - var toLength = toLength$2; - var toString = toString$3; - var requireObjectCoercible = requireObjectCoercible$4; - var advanceStringIndex = advanceStringIndex$1; - var getMethod = getMethod$2; - var getSubstitution = getSubstitution$1; - var regExpExec = regexpExecAbstract; - var wellKnownSymbol = wellKnownSymbol$a; - - var REPLACE = wellKnownSymbol('replace'); - var max = Math.max; - var min = Math.min; - var concat = uncurryThis([].concat); - var push = uncurryThis([].push); - var stringIndexOf = uncurryThis(''.indexOf); - var stringSlice = uncurryThis(''.slice); - - var maybeToString = function (it) { - return it === undefined ? it : String(it); - }; - - // IE <= 11 replaces $0 with the whole match, as if it was $& - // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 - var REPLACE_KEEPS_$0 = (function () { - // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing - return 'a'.replace(/./, '$0') === '$0'; - })(); - - // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { - if (/./[REPLACE]) { - return /./[REPLACE]('a', '$0') === ''; - } - return false; - })(); - - var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - var re = /./; - re.exec = function () { - var result = []; - result.groups = { a: '7' }; - return result; - }; - // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive - return ''.replace(re, '$') !== '7'; - }); - - // @@replace logic - fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) { - var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; - - return [ - // `String.prototype.replace` method - // https://tc39.es/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = requireObjectCoercible(this); - var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE); - return replacer - ? call(replacer, searchValue, O, replaceValue) - : call(nativeReplace, toString(O), searchValue, replaceValue); - }, - // `RegExp.prototype[@@replace]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace - function (string, replaceValue) { - var rx = anObject(this); - var S = toString(string); - - if ( - typeof replaceValue == 'string' && - stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && - stringIndexOf(replaceValue, '$<') === -1 - ) { - var res = maybeCallNative(nativeReplace, rx, S, replaceValue); - if (res.done) return res.value; - } - - var functionalReplace = isCallable(replaceValue); - if (!functionalReplace) replaceValue = toString(replaceValue); - - var global = rx.global; - var fullUnicode; - if (global) { - fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - - var results = []; - var result; - while (true) { - result = regExpExec(rx, S); - if (result === null) break; - - push(results, result); - if (!global) break; - - var matchStr = toString(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - - var accumulatedResult = ''; - var nextSourcePosition = 0; - for (var i = 0; i < results.length; i++) { - result = results[i]; - - var matched = toString(result[0]); - var position = max(min(toIntegerOrInfinity(result.index), S.length), 0); - var captures = []; - var replacement; - // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j])); - var namedCaptures = result.groups; - if (functionalReplace) { - var replacerArgs = concat([matched], captures, position, S); - if (namedCaptures !== undefined) push(replacerArgs, namedCaptures); - replacement = toString(apply(replaceValue, undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - if (position >= nextSourcePosition) { - accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - - return accumulatedResult + stringSlice(S, nextSourcePosition); - } - ]; - }, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); - - // iterable DOM collections - // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods - var domIterables = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - - // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` - var documentCreateElement = documentCreateElement$2; - - var classList = documentCreateElement('span').classList; - var DOMTokenListPrototype$1 = classList && classList.constructor && classList.constructor.prototype; - - var domTokenListPrototype = DOMTokenListPrototype$1 === Object.prototype ? undefined : DOMTokenListPrototype$1; - - var $forEach = arrayIteration.forEach; - var arrayMethodIsStrict = arrayMethodIsStrict$2; - - var STRICT_METHOD = arrayMethodIsStrict('forEach'); - - // `Array.prototype.forEach` method implementation - // https://tc39.es/ecma262/#sec-array.prototype.foreach - var arrayForEach = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - // eslint-disable-next-line es/no-array-prototype-foreach -- safe - } : [].forEach; - - var global$1 = global$e; - var DOMIterables = domIterables; - var DOMTokenListPrototype = domTokenListPrototype; - var forEach = arrayForEach; - var createNonEnumerableProperty = createNonEnumerableProperty$4; - - var handlePrototype = function (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } - }; - - for (var COLLECTION_NAME in DOMIterables) { - if (DOMIterables[COLLECTION_NAME]) { - handlePrototype(global$1[COLLECTION_NAME] && global$1[COLLECTION_NAME].prototype); - } - } - - handlePrototype(DOMTokenListPrototype); /** * @author zhixin wen * extensions: https://github.com/hhurz/tableExport.jquery.plugin */ - var Utils = $$7.fn.bootstrapTable.utils; + var Utils = $.fn.bootstrapTable.utils; var TYPE_NAME = { json: 'JSON', xml: 'XML', @@ -13475,7 +5328,7 @@ powerpoint: 'MS-Powerpoint', pdf: 'PDF' }; - Object.assign($$7.fn.bootstrapTable.defaults, { + Object.assign($.fn.bootstrapTable.defaults, { showExport: false, exportDataType: 'basic', // basic, all, selected @@ -13483,26 +5336,26 @@ exportOptions: {}, exportFooter: false }); - Object.assign($$7.fn.bootstrapTable.columnDefaults, { + Object.assign($.fn.bootstrapTable.columnDefaults, { forceExport: false, forceHide: false }); - Object.assign($$7.fn.bootstrapTable.defaults.icons, { + Object.assign($.fn.bootstrapTable.defaults.icons, { export: { bootstrap3: 'glyphicon-export icon-share', bootstrap5: 'bi-download', materialize: 'file_download', 'bootstrap-table': 'icon-download' - }[$$7.fn.bootstrapTable.theme] || 'fa-download' + }[$.fn.bootstrapTable.theme] || 'fa-download' }); - Object.assign($$7.fn.bootstrapTable.locales, { + Object.assign($.fn.bootstrapTable.locales, { formatExport: function formatExport() { return 'Export data'; } }); - Object.assign($$7.fn.bootstrapTable.defaults, $$7.fn.bootstrapTable.locales); - $$7.fn.bootstrapTable.methods.push('exportTable'); - Object.assign($$7.fn.bootstrapTable.defaults, { + Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales); + $.fn.bootstrapTable.methods.push('exportTable'); + Object.assign($.fn.bootstrapTable.defaults, { // eslint-disable-next-line no-unused-vars onExportSaved: function onExportSaved(exportedRows) { return false; @@ -13511,11 +5364,11 @@ return false; } }); - Object.assign($$7.fn.bootstrapTable.events, { + Object.assign($.fn.bootstrapTable.events, { 'export-saved.bs.table': 'onExportSaved', 'export-started.bs.table': 'onExportStarted' }); - $$7.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { + $.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { function _class() { _classCallCheck(this, _class); return _callSuper(this, _class, arguments); @@ -13558,7 +5411,7 @@ for (_iterator.s(); !(_step = _iterator.n()).done;) { var type = _step.value; if (TYPE_NAME.hasOwnProperty(type)) { - var $item = $$7(Utils.sprintf(_this.constants.html.pageDropdownItem, '', TYPE_NAME[type])); + var $item = $(Utils.sprintf(_this.constants.html.pageDropdownItem, '', TYPE_NAME[type])); $item.attr('data-type', type); html.push($item.prop('outerHTML')); } @@ -13591,7 +5444,7 @@ e.preventDefault(); _this.trigger('export-started'); _this.exportTable({ - type: $$7(e.currentTarget).data('type') + type: $(e.currentTarget).data('type') }); }); this.handleToolbar(); @@ -13634,8 +5487,8 @@ var $footerRow = _this2.$tableFooter.find('tr').first(); var footerData = {}; var footerHtml = []; - $$7.each($footerRow.children(), function (index, footerCell) { - var footerCellHtml = $$7(footerCell).children('.th-inner').first().html(); + $.each($footerRow.children(), function (index, footerCell) { + var footerCellHtml = $(footerCell).children('.th-inner').first().html(); footerData[_this2.columns[index].field] = footerCellHtml === ' ' ? null : footerCellHtml; // grab footer cell text into cell index-based array @@ -13643,8 +5496,8 @@ }); _this2.$body.append(_this2.$body.children().last()[0].outerHTML); var $lastTableRow = _this2.$body.children().last(); - $$7.each($lastTableRow.children(), function (index, lastTableRowCell) { - $$7(lastTableRowCell).html(footerHtml[index]); + $.each($lastTableRow.children(), function (index, lastTableRowCell) { + $(lastTableRowCell).html(footerHtml[index]); }); } var hiddenColumns = _this2.getHiddenColumns(); @@ -13741,19 +5594,119 @@ } } }]); - }($$7.BootstrapTable); + }($.BootstrapTable); })); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); -})(this, (function ($$c) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.filter.js'), require('core-js/modules/es.array.find.js'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.array.join.js'), require('core-js/modules/es.array.map.js'), require('core-js/modules/es.date.to-json.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.entries.js'), require('core-js/modules/es.object.keys.js'), require('core-js/modules/es.object.to-string.js'), require('core-js/modules/es.regexp.exec.js'), require('core-js/modules/es.regexp.to-string.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/es.string.replace.js'), require('core-js/modules/es.string.search.js'), require('core-js/modules/web.dom-collections.for-each.js'), require('jquery')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.filter.js', 'core-js/modules/es.array.find.js', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.array.join.js', 'core-js/modules/es.array.map.js', 'core-js/modules/es.date.to-json.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.entries.js', 'core-js/modules/es.object.keys.js', 'core-js/modules/es.object.to-string.js', 'core-js/modules/es.regexp.exec.js', 'core-js/modules/es.regexp.to-string.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/es.string.replace.js', 'core-js/modules/es.string.search.js', 'core-js/modules/web.dom-collections.for-each.js', 'jquery'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_filter_js, es_array_find_js, es_array_includes_js, es_array_join_js, es_array_map_js, es_date_toJson_js, es_object_assign_js, es_object_entries_js, es_object_keys_js, es_object_toString_js, es_regexp_exec_js, es_regexp_toString_js, es_string_includes_js, es_string_replace_js, es_string_search_js, web_domCollections_forEach_js, $) { 'use strict'; + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e ) { + t && (r = t); + var n = 0, + F = function () {}; + return { + s: F, + n: function () { + return n >= r.length ? { + done: !0 + } : { + done: !1, + value: r[n++] + }; + }, + e: function (r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = !0, + u = !1; + return { + s: function () { + t = t.call(r); + }, + n: function () { + var r = t.next(); + return a = r.done, r; + }, + e: function (r) { + u = !0, o = r; + }, + f: function () { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } + }; + } + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); @@ -13773,10 +5726,7 @@ f = !0, o = !1; try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { @@ -13789,2739 +5739,53 @@ return a; } } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { - var i = e.call(t, r || "default"); + var i = e.call(t, r ); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return (String )(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function () {}; - return { - s: F, - n: function () { - if (i >= o.length) return { - done: true - }; - return { - done: false, - value: o[i++] - }; - }, - e: function (e) { - throw e; - }, - f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, - didErr = false, - err; - return { - s: function () { - it = it.call(o); - }, - n: function () { - var step = it.next(); - normalCompletion = step.done; - return step; - }, - e: function (e) { - didErr = true; - err = e; - }, - f: function () { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } - }; - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$e = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$o = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$n = fails$o; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$n(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$m = fails$o; - - var functionBindNative = !fails$m(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$3 = functionBindNative; - - var call$c = Function.prototype.call; - - var functionCall = NATIVE_BIND$3 ? call$c.bind(call$c) : function () { - return call$c.apply(call$c, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable$1.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$1(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable$1; - - var createPropertyDescriptor$3 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$2 = functionBindNative; - - var FunctionPrototype$2 = Function.prototype; - var call$b = FunctionPrototype$2.call; - var uncurryThisWithBind = NATIVE_BIND$2 && FunctionPrototype$2.bind.bind(call$b, call$b); - - var functionUncurryThis = NATIVE_BIND$2 ? uncurryThisWithBind : function (fn) { - return function () { - return call$b.apply(fn, arguments); - }; - }; - - var uncurryThis$k = functionUncurryThis; - - var toString$8 = uncurryThis$k({}.toString); - var stringSlice$5 = uncurryThis$k(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$5(toString$8(it), 8, -1); - }; - - var uncurryThis$j = functionUncurryThis; - var fails$l = fails$o; - var classof$7 = classofRaw$2; - - var $Object$4 = Object; - var split = uncurryThis$j(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$l(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$4('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$7(it) === 'String' ? split(it, '') : $Object$4(it); - } : $Object$4; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$4 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$3 = isNullOrUndefined$4; - - var $TypeError$8 = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$6 = function (it) { - if (isNullOrUndefined$3(it)) throw new $TypeError$8("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$3 = indexedObject; - var requireObjectCoercible$5 = requireObjectCoercible$6; - - var toIndexedObject$6 = function (it) { - return IndexedObject$3(requireObjectCoercible$5(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$f = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$e = isCallable$f; - - var isObject$8 = function (it) { - return typeof it == 'object' ? it !== null : isCallable$e(it); - }; - - var global$d = global$e; - var isCallable$d = isCallable$f; - - var aFunction = function (argument) { - return isCallable$d(argument) ? argument : undefined; - }; - - var getBuiltIn$4 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$d[namespace]) : global$d[namespace] && global$d[namespace][method]; - }; - - var uncurryThis$i = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$i({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$c = global$e; - var userAgent = engineUserAgent; - - var process = global$c.process; - var Deno = global$c.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$k = fails$o; - var global$b = global$e; - - var $String$4 = global$b.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$k(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$4(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$3 = getBuiltIn$4; - var isCallable$c = isCallable$f; - var isPrototypeOf$1 = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$3 = Object; - - var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$3('Symbol'); - return isCallable$c($Symbol) && isPrototypeOf$1($Symbol.prototype, $Object$3(it)); - }; - - var $String$3 = String; - - var tryToString$1 = function (argument) { - try { - return $String$3(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$b = isCallable$f; - var tryToString = tryToString$1; - - var $TypeError$7 = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$2 = function (argument) { - if (isCallable$b(argument)) return argument; - throw new $TypeError$7(tryToString(argument) + ' is not a function'); - }; - - var aCallable$1 = aCallable$2; - var isNullOrUndefined$2 = isNullOrUndefined$4; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$3 = function (V, P) { - var func = V[P]; - return isNullOrUndefined$2(func) ? undefined : aCallable$1(func); - }; - - var call$a = functionCall; - var isCallable$a = isCallable$f; - var isObject$7 = isObject$8; - - var $TypeError$6 = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$a(fn = input.toString) && !isObject$7(val = call$a(fn, input))) return val; - if (isCallable$a(fn = input.valueOf) && !isObject$7(val = call$a(fn, input))) return val; - if (pref !== 'string' && isCallable$a(fn = input.toString) && !isObject$7(val = call$a(fn, input))) return val; - throw new $TypeError$6("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var global$a = global$e; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$3 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$3(global$a, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$a[key] = value; - } return value; - }; - - var globalThis$1 = global$e; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$4 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible$4 = requireObjectCoercible$6; - - var $Object$2 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$8 = function (argument) { - return $Object$2(requireObjectCoercible$4(argument)); - }; - - var uncurryThis$h = functionUncurryThis; - var toObject$7 = toObject$8; - - var hasOwnProperty = uncurryThis$h({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$7(it), key); - }; - - var uncurryThis$g = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$7 = uncurryThis$g(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$7(++id + postfix, 36); - }; - - var global$9 = global$e; - var shared$3 = shared$4; - var hasOwn$8 = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$1 = global$9.Symbol; - var WellKnownSymbolsStore = shared$3('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1; - - var wellKnownSymbol$b = function (name) { - if (!hasOwn$8(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$8(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$9 = functionCall; - var isObject$6 = isObject$8; - var isSymbol$1 = isSymbol$2; - var getMethod$2 = getMethod$3; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$a = wellKnownSymbol$b; - - var $TypeError$5 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$a('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$2 = function (input, pref) { - if (!isObject$6(input) || isSymbol$1(input)) return input; - var exoticToPrim = getMethod$2(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$9(exoticToPrim, input, pref); - if (!isObject$6(result) || isSymbol$1(result)) return result; - throw new $TypeError$5("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive$1 = toPrimitive$2; - var isSymbol = isSymbol$2; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive$1(argument, 'string'); - return isSymbol(key) ? key : key + ''; - }; - - var global$8 = global$e; - var isObject$5 = isObject$8; - - var document$1 = global$8.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$5(document$1) && isObject$5(document$1.createElement); - - var documentCreateElement$2 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$a = descriptors; - var fails$j = fails$o; - var createElement = documentCreateElement$2; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$a && !fails$j(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$9 = descriptors; - var call$8 = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$2 = createPropertyDescriptor$3; - var toIndexedObject$5 = toIndexedObject$6; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$7 = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$9 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$5(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$7(O, P)) return createPropertyDescriptor$2(!call$8(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$8 = descriptors; - var fails$i = fails$o; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$8 && fails$i(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$4 = isObject$8; - - var $String$2 = String; - var $TypeError$4 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$9 = function (argument) { - if (isObject$4(argument)) return argument; - throw new $TypeError$4($String$2(argument) + ' is not an object'); - }; - - var DESCRIPTORS$7 = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$8 = anObject$9; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$3 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$7 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$8(O); - P = toPropertyKey(P); - anObject$8(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$8(O); - P = toPropertyKey(P); - anObject$8(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$3('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$6 = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$1 = createPropertyDescriptor$3; - - var createNonEnumerableProperty$4 = DESCRIPTORS$6 ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$1(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$2 = {exports: {}}; - - var DESCRIPTORS$5 = descriptors; - var hasOwn$6 = hasOwnProperty_1; - - var FunctionPrototype$1 = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$5 && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$6(FunctionPrototype$1, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$5 || (DESCRIPTORS$5 && getDescriptor(FunctionPrototype$1, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$f = functionUncurryThis; - var isCallable$9 = isCallable$f; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$f(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$9(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$7 = global$e; - var isCallable$8 = isCallable$f; - - var WeakMap$1 = global$7.WeakMap; - - var weakMapBasicDetection = isCallable$8(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$2 = shared$4; - var uid = uid$2; - - var keys = shared$2('keys'); - - var sharedKey$3 = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$6 = global$e; - var isObject$3 = isObject$8; - var createNonEnumerableProperty$3 = createNonEnumerableProperty$4; - var hasOwn$5 = hasOwnProperty_1; - var shared$1 = sharedStoreExports; - var sharedKey$2 = sharedKey$3; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$1 = global$6.TypeError; - var WeakMap = global$6.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$3(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared$1.state) { - var store = shared$1.state || (shared$1.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$2('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$5(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$3(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$5(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$5(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$e = functionUncurryThis; - var fails$h = fails$o; - var isCallable$7 = isCallable$f; - var hasOwn$4 = hasOwnProperty_1; - var DESCRIPTORS$4 = descriptors; - var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule = internalState; - - var enforceInternalState = InternalStateModule.enforce; - var getInternalState$1 = InternalStateModule.get; - var $String$1 = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$2 = Object.defineProperty; - var stringSlice$4 = uncurryThis$e(''.slice); - var replace$2 = uncurryThis$e(''.replace); - var join = uncurryThis$e([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$4 && !fails$h(function () { - return defineProperty$2(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$1 = makeBuiltIn$2.exports = function (value, name, options) { - if (stringSlice$4($String$1(name), 0, 7) === 'Symbol(') { - name = '[' + replace$2($String$1(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$4(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - if (DESCRIPTORS$4) defineProperty$2(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$4(options, 'arity') && value.length !== options.arity) { - defineProperty$2(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$4(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$4) defineProperty$2(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwn$4(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$1(function toString() { - return isCallable$7(this) && getInternalState$1(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$2.exports; - - var isCallable$6 = isCallable$f; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$4 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$6(value)) makeBuiltIn(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor$1 = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor$1 : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$4 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$3 = toIntegerOrInfinity$4; - - var max$1 = Math.max; - var min$2 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$1 = function (index, length) { - var integer = toIntegerOrInfinity$3(index); - return integer < 0 ? max$1(integer + length, 0) : min$2(integer, length); - }; - - var toIntegerOrInfinity$2 = toIntegerOrInfinity$4; - - var min$1 = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$2 = function (argument) { - var len = toIntegerOrInfinity$2(argument); - return len > 0 ? min$1(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength$1 = toLength$2; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$3 = function (obj) { - return toLength$1(obj.length); - }; - - var toIndexedObject$4 = toIndexedObject$6; - var toAbsoluteIndex = toAbsoluteIndex$1; - var lengthOfArrayLike$2 = lengthOfArrayLike$3; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$3 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$4($this); - var length = lengthOfArrayLike$2(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$3(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$3(false) - }; - - var uncurryThis$d = functionUncurryThis; - var hasOwn$3 = hasOwnProperty_1; - var toIndexedObject$3 = toIndexedObject$6; - var indexOf$1 = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$3 = uncurryThis$d([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$3(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$3(hiddenKeys$2, key) && hasOwn$3(O, key) && push$3(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$3(O, key = names[i++])) { - ~indexOf$1(result, key) || push$3(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$2 = getBuiltIn$4; - var uncurryThis$c = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$7 = anObject$9; - - var concat$2 = uncurryThis$c([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$7(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$2(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn$2 = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$1 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn$2(target, key) && !(exceptions && hasOwn$2(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$g = fails$o; - var isCallable$5 = isCallable$f; - - var replacement = /#|\.prototype\./; - - var isForced$1 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$5(detection) ? fails$g(detection) - : !!detection; - }; - - var normalize = isForced$1.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$1.data = {}; - var NATIVE = isForced$1.NATIVE = 'N'; - var POLYFILL = isForced$1.POLYFILL = 'P'; - - var isForced_1 = isForced$1; - - var global$5 = global$e; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty$2 = createNonEnumerableProperty$4; - var defineBuiltIn$3 = defineBuiltIn$4; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties = copyConstructorProperties$1; - var isForced = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$5; - } else if (STATIC) { - target = global$5[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$5[TARGET] && global$5[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty$2(sourceProperty, 'sham', true); - } - defineBuiltIn$3(target, key, sourceProperty, options); - } - }; - - var classof$6 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$2 = Array.isArray || function isArray(argument) { - return classof$6(argument) === 'Array'; - }; - - var $TypeError$2 = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$1 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError$2('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$3 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor = createPropertyDescriptor$3; - - var createProperty$1 = function (object, key, value) { - if (DESCRIPTORS$3) definePropertyModule$1.f(object, key, createPropertyDescriptor(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$9 = wellKnownSymbol$b; - - var TO_STRING_TAG$1 = wellKnownSymbol$9('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$1] = 'z'; - - var toStringTagSupport = String(test) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$4 = isCallable$f; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$8 = wellKnownSymbol$b; - - var TO_STRING_TAG = wellKnownSymbol$8('toStringTag'); - var $Object$1 = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$5 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object$1(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$4(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$b = functionUncurryThis; - var fails$f = fails$o; - var isCallable$3 = isCallable$f; - var classof$4 = classof$5; - var getBuiltIn$1 = getBuiltIn$4; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$1('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec$1 = uncurryThis$b(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable$3(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable$3(argument)) return false; - switch (classof$4(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec$1(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$1 = !construct || fails$f(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$1 = isArray$2; - var isConstructor = isConstructor$1; - var isObject$2 = isObject$8; - var wellKnownSymbol$7 = wellKnownSymbol$b; - - var SPECIES$2 = wellKnownSymbol$7('species'); - var $Array = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$1(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === $Array || isArray$1(C.prototype))) C = undefined; - else if (isObject$2(C)) { - C = C[SPECIES$2]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$2 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$e = fails$o; - var wellKnownSymbol$6 = wellKnownSymbol$b; - var V8_VERSION$1 = engineV8Version; - - var SPECIES$1 = wellKnownSymbol$6('species'); - - var arrayMethodHasSpeciesSupport$3 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$e(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES$1] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$b = _export; - var fails$d = fails$o; - var isArray = isArray$2; - var isObject$1 = isObject$8; - var toObject$6 = toObject$8; - var lengthOfArrayLike$1 = lengthOfArrayLike$3; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1; - var createProperty = createProperty$1; - var arraySpeciesCreate$1 = arraySpeciesCreate$2; - var arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$3; - var wellKnownSymbol$5 = wellKnownSymbol$b; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$5('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$d(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject$1(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED$2 = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport$2('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$b({ target: 'Array', proto: true, arity: 1, forced: FORCED$2 }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$6(this); - var A = arraySpeciesCreate$1(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike$1(E); - doesNotExceedSafeInteger(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); - } else { - doesNotExceedSafeInteger(n + 1); - createProperty(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var classofRaw = classofRaw$2; - var uncurryThis$a = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$a(fn); - }; - - var uncurryThis$9 = functionUncurryThisClause; - var aCallable = aCallable$2; - var NATIVE_BIND$1 = functionBindNative; - - var bind$1 = uncurryThis$9(uncurryThis$9.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : NATIVE_BIND$1 ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var bind = functionBindContext; - var uncurryThis$8 = functionUncurryThis; - var IndexedObject$2 = indexedObject; - var toObject$5 = toObject$8; - var lengthOfArrayLike = lengthOfArrayLike$3; - var arraySpeciesCreate = arraySpeciesCreate$2; - - var push$2 = uncurryThis$8([].push); - - // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation - var createMethod$2 = function (TYPE) { - var IS_MAP = TYPE === 1; - var IS_FILTER = TYPE === 2; - var IS_SOME = TYPE === 3; - var IS_EVERY = TYPE === 4; - var IS_FIND_INDEX = TYPE === 6; - var IS_FILTER_REJECT = TYPE === 7; - var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject$5($this); - var self = IndexedObject$2(O); - var length = lengthOfArrayLike(self); - var boundFunction = bind(callbackfn, that); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push$2(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push$2(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod$2(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod$2(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod$2(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod$2(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod$2(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod$2(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod$2(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod$2(7) - }; - - var $$a = _export; - var $filter = arrayIteration.filter; - var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$3; - - var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$1('filter'); - - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - // with adding support of @@species - $$a({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 }, { - filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$3 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$2 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$6 = anObject$9; - var toIndexedObject$2 = toIndexedObject$6; - var objectKeys$2 = objectKeys$3; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$2 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$6(O); - var props = toIndexedObject$2(Properties); - var keys = objectKeys$2(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn = getBuiltIn$4; - - var html$1 = getBuiltIn('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject$5 = anObject$9; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement$1 = documentCreateElement$2; - var sharedKey$1 = sharedKey$3; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO$1 = sharedKey$1('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement$1('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO$1] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject$5(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO$1] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol$4 = wellKnownSymbol$b; - var create$1 = objectCreate; - var defineProperty$1 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol$4('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$1(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create$1(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$2 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var $$9 = _export; - var $find = arrayIteration.find; - var addToUnscopables$1 = addToUnscopables$2; - - var FIND = 'find'; - var SKIPS_HOLES = true; - - // Shouldn't skip holes - // eslint-disable-next-line es/no-array-prototype-find -- testing - if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); - - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - $$9({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables$1(FIND); - - var $$8 = _export; - var $includes = arrayIncludes.includes; - var fails$c = fails$o; - var addToUnscopables = addToUnscopables$2; - - // FF99+ bug - var BROKEN_ON_SPARSE = fails$c(function () { - // eslint-disable-next-line es/no-array-prototype-includes -- detection - return !Array(1).includes(); - }); - - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - $$8({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { - includes: function includes(el /* , fromIndex = 0 */) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables('includes'); - - var fails$b = fails$o; - - var arrayMethodIsStrict$2 = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails$b(function () { - // eslint-disable-next-line no-useless-call -- required for testing - method.call(null, argument || function () { return 1; }, 1); - }); - }; - - var $$7 = _export; - var uncurryThis$7 = functionUncurryThis; - var IndexedObject$1 = indexedObject; - var toIndexedObject$1 = toIndexedObject$6; - var arrayMethodIsStrict$1 = arrayMethodIsStrict$2; - - var nativeJoin = uncurryThis$7([].join); - - var ES3_STRINGS = IndexedObject$1 !== Object; - var FORCED$1 = ES3_STRINGS || !arrayMethodIsStrict$1('join', ','); - - // `Array.prototype.join` method - // https://tc39.es/ecma262/#sec-array.prototype.join - $$7({ target: 'Array', proto: true, forced: FORCED$1 }, { - join: function join(separator) { - return nativeJoin(toIndexedObject$1(this), separator === undefined ? ',' : separator); - } - }); - - var $$6 = _export; - var $map = arrayIteration.map; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$3; - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); - - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - // with adding support of @@species - $$6({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { - map: function map(callbackfn /* , thisArg */) { - return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - var $$5 = _export; - var fails$a = fails$o; - var toObject$4 = toObject$8; - var toPrimitive = toPrimitive$2; - - var FORCED = fails$a(function () { - return new Date(NaN).toJSON() !== null - || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; - }); - - // `Date.prototype.toJSON` method - // https://tc39.es/ecma262/#sec-date.prototype.tojson - $$5({ target: 'Date', proto: true, arity: 1, forced: FORCED }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - toJSON: function toJSON(key) { - var O = toObject$4(this); - var pv = toPrimitive(O, 'number'); - return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); - } - }); - - var DESCRIPTORS$1 = descriptors; - var uncurryThis$6 = functionUncurryThis; - var call$7 = functionCall; - var fails$9 = fails$o; - var objectKeys$1 = objectKeys$3; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject$3 = toObject$8; - var IndexedObject = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty = Object.defineProperty; - var concat$1 = uncurryThis$6([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails$9(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS$1 && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { - enumerable: true, - get: function () { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys$1($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject$3(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat$1(objectKeys$1(S), getOwnPropertySymbols(S)) : objectKeys$1(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS$1 || call$7(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $$4 = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $$4({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var fails$8 = fails$o; - - var correctPrototypeGetter = !fails$8(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - // eslint-disable-next-line es/no-object-getprototypeof -- required for testing - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - - var hasOwn$1 = hasOwnProperty_1; - var isCallable$2 = isCallable$f; - var toObject$2 = toObject$8; - var sharedKey = sharedKey$3; - var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; - - var IE_PROTO = sharedKey('IE_PROTO'); - var $Object = Object; - var ObjectPrototype = $Object.prototype; - - // `Object.getPrototypeOf` method - // https://tc39.es/ecma262/#sec-object.getprototypeof - // eslint-disable-next-line es/no-object-getprototypeof -- safe - var objectGetPrototypeOf$1 = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { - var object = toObject$2(O); - if (hasOwn$1(object, IE_PROTO)) return object[IE_PROTO]; - var constructor = object.constructor; - if (isCallable$2(constructor) && object instanceof constructor) { - return constructor.prototype; - } return object instanceof $Object ? ObjectPrototype : null; - }; - - var DESCRIPTORS = descriptors; - var fails$7 = fails$o; - var uncurryThis$5 = functionUncurryThis; - var objectGetPrototypeOf = objectGetPrototypeOf$1; - var objectKeys = objectKeys$3; - var toIndexedObject = toIndexedObject$6; - var $propertyIsEnumerable = objectPropertyIsEnumerable.f; - - var propertyIsEnumerable = uncurryThis$5($propertyIsEnumerable); - var push$1 = uncurryThis$5([].push); - - // in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys - // of `null` prototype objects - var IE_BUG = DESCRIPTORS && fails$7(function () { - // eslint-disable-next-line es/no-object-create -- safe - var O = Object.create(null); - O[2] = 2; - return !propertyIsEnumerable(O, 2); - }); - - // `Object.{ entries, values }` methods implementation - var createMethod$1 = function (TO_ENTRIES) { - return function (it) { - var O = toIndexedObject(it); - var keys = objectKeys(O); - var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) { - key = keys[i++]; - if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { - push$1(result, TO_ENTRIES ? [key, O[key]] : O[key]); - } - } - return result; - }; - }; - - var objectToArray = { - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - entries: createMethod$1(true), - // `Object.values` method - // https://tc39.es/ecma262/#sec-object.values - values: createMethod$1(false) - }; - - var $$3 = _export; - var $entries = objectToArray.entries; - - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - $$3({ target: 'Object', stat: true }, { - entries: function entries(O) { - return $entries(O); - } - }); - - var $$2 = _export; - var toObject$1 = toObject$8; - var nativeKeys = objectKeys$3; - var fails$6 = fails$o; - - var FAILS_ON_PRIMITIVES = fails$6(function () { nativeKeys(1); }); - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - $$2({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { - keys: function keys(it) { - return nativeKeys(toObject$1(it)); - } - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof$3 = classof$5; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof$3(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn$2 = defineBuiltIn$4; - var toString$6 = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn$2(Object.prototype, 'toString', toString$6, { unsafe: true }); - } - - var classof$2 = classof$5; - - var $String = String; - - var toString$5 = function (argument) { - if (classof$2(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); - return $String(argument); - }; - - var anObject$4 = anObject$9; - - // `RegExp.prototype.flags` getter implementation - // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags - var regexpFlags$1 = function () { - var that = anObject$4(this); - var result = ''; - if (that.hasIndices) result += 'd'; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.unicodeSets) result += 'v'; - if (that.sticky) result += 'y'; - return result; - }; - - var fails$5 = fails$o; - var global$4 = global$e; - - // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var $RegExp$2 = global$4.RegExp; - - var UNSUPPORTED_Y$1 = fails$5(function () { - var re = $RegExp$2('a', 'y'); - re.lastIndex = 2; - return re.exec('abcd') !== null; - }); - - // UC Browser bug - // https://github.com/zloirock/core-js/issues/1008 - var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$5(function () { - return !$RegExp$2('a', 'y').sticky; - }); - - var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$5(function () { - // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = $RegExp$2('^r', 'gy'); - re.lastIndex = 2; - return re.exec('str') !== null; - }); - - var regexpStickyHelpers = { - BROKEN_CARET: BROKEN_CARET, - MISSED_STICKY: MISSED_STICKY, - UNSUPPORTED_Y: UNSUPPORTED_Y$1 - }; - - var fails$4 = fails$o; - var global$3 = global$e; - - // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError - var $RegExp$1 = global$3.RegExp; - - var regexpUnsupportedDotAll = fails$4(function () { - var re = $RegExp$1('.', 's'); - return !(re.dotAll && re.test('\n') && re.flags === 's'); - }); - - var fails$3 = fails$o; - var global$2 = global$e; - - // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError - var $RegExp = global$2.RegExp; - - var regexpUnsupportedNcg = fails$3(function () { - var re = $RegExp('(?b)', 'g'); - return re.exec('b').groups.a !== 'b' || - 'b'.replace(re, '$c') !== 'bc'; - }); - - /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ - /* eslint-disable regexp/no-useless-quantifier -- testing */ - var call$6 = functionCall; - var uncurryThis$4 = functionUncurryThis; - var toString$4 = toString$5; - var regexpFlags = regexpFlags$1; - var stickyHelpers = regexpStickyHelpers; - var shared = shared$4; - var create = objectCreate; - var getInternalState = internalState.get; - var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll; - var UNSUPPORTED_NCG = regexpUnsupportedNcg; - - var nativeReplace = shared('native-string-replace', String.prototype.replace); - var nativeExec = RegExp.prototype.exec; - var patchedExec = nativeExec; - var charAt$3 = uncurryThis$4(''.charAt); - var indexOf = uncurryThis$4(''.indexOf); - var replace$1 = uncurryThis$4(''.replace); - var stringSlice$3 = uncurryThis$4(''.slice); - - var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - call$6(nativeExec, re1, 'a'); - call$6(nativeExec, re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - })(); - - var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; - - // nonparticipating capturing group, copied from es5-shim's String#split patch. - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; - - if (PATCH) { - patchedExec = function exec(string) { - var re = this; - var state = getInternalState(re); - var str = toString$4(string); - var raw = state.raw; - var result, reCopy, lastIndex, match, i, object, group; - - if (raw) { - raw.lastIndex = re.lastIndex; - result = call$6(patchedExec, raw, str); - re.lastIndex = raw.lastIndex; - return result; - } - - var groups = state.groups; - var sticky = UNSUPPORTED_Y && re.sticky; - var flags = call$6(regexpFlags, re); - var source = re.source; - var charsAdded = 0; - var strCopy = str; - - if (sticky) { - flags = replace$1(flags, 'y', ''); - if (indexOf(flags, 'g') === -1) { - flags += 'g'; - } - - strCopy = stringSlice$3(str, re.lastIndex); - // Support anchored sticky behavior. - if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt$3(str, re.lastIndex - 1) !== '\n')) { - source = '(?: ' + source + ')'; - strCopy = ' ' + strCopy; - charsAdded++; - } - // ^(? + rx + ) is needed, in combination with some str slicing, to - // simulate the 'y' flag. - reCopy = new RegExp('^(?:' + source + ')', flags); - } - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + source + '$(?!\\s)', flags); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = call$6(nativeExec, sticky ? reCopy : re, strCopy); - - if (sticky) { - if (match) { - match.input = stringSlice$3(match.input, charsAdded); - match[0] = stringSlice$3(match[0], charsAdded); - match.index = re.lastIndex; - re.lastIndex += match[0].length; - } else re.lastIndex = 0; - } else if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ - call$6(nativeReplace, match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - if (match && groups) { - match.groups = object = create(null); - for (i = 0; i < groups.length; i++) { - group = groups[i]; - object[group[0]] = match[group[1]]; - } - } - - return match; - }; - } - - var regexpExec$2 = patchedExec; - - var $$1 = _export; - var exec = regexpExec$2; - - // `RegExp.prototype.exec` method - // https://tc39.es/ecma262/#sec-regexp.prototype.exec - $$1({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { - exec: exec - }); - - var call$5 = functionCall; - var hasOwn = hasOwnProperty_1; - var isPrototypeOf = objectIsPrototypeOf; - var regExpFlags = regexpFlags$1; - - var RegExpPrototype$2 = RegExp.prototype; - - var regexpGetFlags = function (R) { - var flags = R.flags; - return flags === undefined && !('flags' in RegExpPrototype$2) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype$2, R) - ? call$5(regExpFlags, R) : flags; - }; - - var PROPER_FUNCTION_NAME = functionName.PROPER; - var defineBuiltIn$1 = defineBuiltIn$4; - var anObject$3 = anObject$9; - var $toString = toString$5; - var fails$2 = fails$o; - var getRegExpFlags = regexpGetFlags; - - var TO_STRING = 'toString'; - var RegExpPrototype$1 = RegExp.prototype; - var nativeToString = RegExpPrototype$1[TO_STRING]; - - var NOT_GENERIC = fails$2(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; }); - // FF44- RegExp#toString has a wrong name - var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING; - - // `RegExp.prototype.toString` method - // https://tc39.es/ecma262/#sec-regexp.prototype.tostring - if (NOT_GENERIC || INCORRECT_NAME) { - defineBuiltIn$1(RegExpPrototype$1, TO_STRING, function toString() { - var R = anObject$3(this); - var pattern = $toString(R.source); - var flags = $toString(getRegExpFlags(R)); - return '/' + pattern + '/' + flags; - }, { unsafe: true }); - } - - var isObject = isObject$8; - var classof$1 = classofRaw$2; - var wellKnownSymbol$3 = wellKnownSymbol$b; - - var MATCH$1 = wellKnownSymbol$3('match'); - - // `IsRegExp` abstract operation - // https://tc39.es/ecma262/#sec-isregexp - var isRegexp = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH$1]) !== undefined ? !!isRegExp : classof$1(it) === 'RegExp'); - }; - - var isRegExp = isRegexp; - - var $TypeError$1 = TypeError; - - var notARegexp = function (it) { - if (isRegExp(it)) { - throw new $TypeError$1("The method doesn't accept regular expressions"); - } return it; - }; - - var wellKnownSymbol$2 = wellKnownSymbol$b; - - var MATCH = wellKnownSymbol$2('match'); - - var correctIsRegexpLogic = function (METHOD_NAME) { - var regexp = /./; - try { - '/./'[METHOD_NAME](regexp); - } catch (error1) { - try { - regexp[MATCH] = false; - return '/./'[METHOD_NAME](regexp); - } catch (error2) { /* empty */ } - } return false; - }; - - var $ = _export; - var uncurryThis$3 = functionUncurryThis; - var notARegExp = notARegexp; - var requireObjectCoercible$3 = requireObjectCoercible$6; - var toString$3 = toString$5; - var correctIsRegExpLogic = correctIsRegexpLogic; - - var stringIndexOf$1 = uncurryThis$3(''.indexOf); - - // `String.prototype.includes` method - // https://tc39.es/ecma262/#sec-string.prototype.includes - $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { - includes: function includes(searchString /* , position = 0 */) { - return !!~stringIndexOf$1( - toString$3(requireObjectCoercible$3(this)), - toString$3(notARegExp(searchString)), - arguments.length > 1 ? arguments[1] : undefined - ); - } - }); - - var NATIVE_BIND = functionBindNative; - - var FunctionPrototype = Function.prototype; - var apply$1 = FunctionPrototype.apply; - var call$4 = FunctionPrototype.call; - - // eslint-disable-next-line es/no-reflect -- safe - var functionApply = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call$4.bind(apply$1) : function () { - return call$4.apply(apply$1, arguments); - }); - - // TODO: Remove from `core-js@4` since it's moved to entry points - - var call$3 = functionCall; - var defineBuiltIn = defineBuiltIn$4; - var regexpExec$1 = regexpExec$2; - var fails$1 = fails$o; - var wellKnownSymbol$1 = wellKnownSymbol$b; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$4; - - var SPECIES = wellKnownSymbol$1('species'); - var RegExpPrototype = RegExp.prototype; - - var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) { - var SYMBOL = wellKnownSymbol$1(KEY); - - var DELEGATES_TO_SYMBOL = !fails$1(function () { - // String methods call symbol-named RegExp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) !== 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - - if (KEY === 'split') { - // We can't use real regex here since it causes deoptimization - // and serious performance degradation in V8 - // https://github.com/zloirock/core-js/issues/306 - re = {}; - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - re.flags = ''; - re[SYMBOL] = /./[SYMBOL]; - } - - re.exec = function () { - execCalled = true; - return null; - }; - - re[SYMBOL](''); - return !execCalled; - }); - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - FORCED - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - var $exec = regexp.exec; - if ($exec === regexpExec$1 || $exec === RegExpPrototype.exec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: call$3(nativeRegExpMethod, regexp, str, arg2) }; - } - return { done: true, value: call$3(nativeMethod, str, regexp, arg2) }; - } - return { done: false }; - }); - - defineBuiltIn(String.prototype, KEY, methods[0]); - defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); - } - - if (SHAM) createNonEnumerableProperty$1(RegExpPrototype[SYMBOL], 'sham', true); - }; - - var uncurryThis$2 = functionUncurryThis; - var toIntegerOrInfinity$1 = toIntegerOrInfinity$4; - var toString$2 = toString$5; - var requireObjectCoercible$2 = requireObjectCoercible$6; - - var charAt$2 = uncurryThis$2(''.charAt); - var charCodeAt = uncurryThis$2(''.charCodeAt); - var stringSlice$2 = uncurryThis$2(''.slice); - - var createMethod = function (CONVERT_TO_STRING) { - return function ($this, pos) { - var S = toString$2(requireObjectCoercible$2($this)); - var position = toIntegerOrInfinity$1(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = charCodeAt(S, position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size - || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF - ? CONVERT_TO_STRING - ? charAt$2(S, position) - : first - : CONVERT_TO_STRING - ? stringSlice$2(S, position, position + 2) - : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; - }; - - var stringMultibyte = { - // `String.prototype.codePointAt` method - // https://tc39.es/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod(false), - // `String.prototype.at` method - // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod(true) - }; - - var charAt$1 = stringMultibyte.charAt; - - // `AdvanceStringIndex` abstract operation - // https://tc39.es/ecma262/#sec-advancestringindex - var advanceStringIndex$1 = function (S, index, unicode) { - return index + (unicode ? charAt$1(S, index).length : 1); - }; - - var uncurryThis$1 = functionUncurryThis; - var toObject = toObject$8; - - var floor = Math.floor; - var charAt = uncurryThis$1(''.charAt); - var replace = uncurryThis$1(''.replace); - var stringSlice$1 = uncurryThis$1(''.slice); - // eslint-disable-next-line redos/no-vulnerable -- safe - var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; - var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; - - // `GetSubstitution` abstract operation - // https://tc39.es/ecma262/#sec-getsubstitution - var getSubstitution$1 = function (matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - return replace(replacement, symbols, function (match, ch) { - var capture; - switch (charAt(ch, 0)) { - case '$': return '$'; - case '&': return matched; - case '`': return stringSlice$1(str, 0, position); - case "'": return stringSlice$1(str, tailPos); - case '<': - capture = namedCaptures[stringSlice$1(ch, 1, -1)]; - break; - default: // \d\d? - var n = +ch; - if (n === 0) return match; - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); - return match; - } - capture = captures[n - 1]; - } - return capture === undefined ? '' : capture; - }); - }; - - var call$2 = functionCall; - var anObject$2 = anObject$9; - var isCallable$1 = isCallable$f; - var classof = classofRaw$2; - var regexpExec = regexpExec$2; - - var $TypeError = TypeError; - - // `RegExpExec` abstract operation - // https://tc39.es/ecma262/#sec-regexpexec - var regexpExecAbstract = function (R, S) { - var exec = R.exec; - if (isCallable$1(exec)) { - var result = call$2(exec, R, S); - if (result !== null) anObject$2(result); - return result; - } - if (classof(R) === 'RegExp') return call$2(regexpExec, R, S); - throw new $TypeError('RegExp#exec called on incompatible receiver'); - }; - - var apply = functionApply; - var call$1 = functionCall; - var uncurryThis = functionUncurryThis; - var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic; - var fails = fails$o; - var anObject$1 = anObject$9; - var isCallable = isCallable$f; - var isNullOrUndefined$1 = isNullOrUndefined$4; - var toIntegerOrInfinity = toIntegerOrInfinity$4; - var toLength = toLength$2; - var toString$1 = toString$5; - var requireObjectCoercible$1 = requireObjectCoercible$6; - var advanceStringIndex = advanceStringIndex$1; - var getMethod$1 = getMethod$3; - var getSubstitution = getSubstitution$1; - var regExpExec$1 = regexpExecAbstract; - var wellKnownSymbol = wellKnownSymbol$b; - - var REPLACE = wellKnownSymbol('replace'); - var max = Math.max; - var min = Math.min; - var concat = uncurryThis([].concat); - var push = uncurryThis([].push); - var stringIndexOf = uncurryThis(''.indexOf); - var stringSlice = uncurryThis(''.slice); - - var maybeToString = function (it) { - return it === undefined ? it : String(it); - }; - - // IE <= 11 replaces $0 with the whole match, as if it was $& - // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 - var REPLACE_KEEPS_$0 = (function () { - // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing - return 'a'.replace(/./, '$0') === '$0'; - })(); - - // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { - if (/./[REPLACE]) { - return /./[REPLACE]('a', '$0') === ''; - } - return false; - })(); - - var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - var re = /./; - re.exec = function () { - var result = []; - result.groups = { a: '7' }; - return result; - }; - // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive - return ''.replace(re, '$') !== '7'; - }); - - // @@replace logic - fixRegExpWellKnownSymbolLogic$1('replace', function (_, nativeReplace, maybeCallNative) { - var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; - - return [ - // `String.prototype.replace` method - // https://tc39.es/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = requireObjectCoercible$1(this); - var replacer = isNullOrUndefined$1(searchValue) ? undefined : getMethod$1(searchValue, REPLACE); - return replacer - ? call$1(replacer, searchValue, O, replaceValue) - : call$1(nativeReplace, toString$1(O), searchValue, replaceValue); - }, - // `RegExp.prototype[@@replace]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace - function (string, replaceValue) { - var rx = anObject$1(this); - var S = toString$1(string); - - if ( - typeof replaceValue == 'string' && - stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && - stringIndexOf(replaceValue, '$<') === -1 - ) { - var res = maybeCallNative(nativeReplace, rx, S, replaceValue); - if (res.done) return res.value; - } - - var functionalReplace = isCallable(replaceValue); - if (!functionalReplace) replaceValue = toString$1(replaceValue); - - var global = rx.global; - var fullUnicode; - if (global) { - fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - - var results = []; - var result; - while (true) { - result = regExpExec$1(rx, S); - if (result === null) break; - - push(results, result); - if (!global) break; - - var matchStr = toString$1(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - - var accumulatedResult = ''; - var nextSourcePosition = 0; - for (var i = 0; i < results.length; i++) { - result = results[i]; - - var matched = toString$1(result[0]); - var position = max(min(toIntegerOrInfinity(result.index), S.length), 0); - var captures = []; - var replacement; - // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j])); - var namedCaptures = result.groups; - if (functionalReplace) { - var replacerArgs = concat([matched], captures, position, S); - if (namedCaptures !== undefined) push(replacerArgs, namedCaptures); - replacement = toString$1(apply(replaceValue, undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - if (position >= nextSourcePosition) { - accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - - return accumulatedResult + stringSlice(S, nextSourcePosition); - } - ]; - }, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); - - // `SameValue` abstract operation - // https://tc39.es/ecma262/#sec-samevalue - // eslint-disable-next-line es/no-object-is -- safe - var sameValue$1 = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare -- NaN check - return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y; - }; - - var call = functionCall; - var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic; - var anObject = anObject$9; - var isNullOrUndefined = isNullOrUndefined$4; - var requireObjectCoercible = requireObjectCoercible$6; - var sameValue = sameValue$1; - var toString = toString$5; - var getMethod = getMethod$3; - var regExpExec = regexpExecAbstract; - - // @@search logic - fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) { - return [ - // `String.prototype.search` method - // https://tc39.es/ecma262/#sec-string.prototype.search - function search(regexp) { - var O = requireObjectCoercible(this); - var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH); - return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O)); - }, - // `RegExp.prototype[@@search]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@search - function (string) { - var rx = anObject(this); - var S = toString(string); - var res = maybeCallNative(nativeSearch, rx, S); - - if (res.done) return res.value; - - var previousLastIndex = rx.lastIndex; - if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; - var result = regExpExec(rx, S); - if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; - return result === null ? -1 : result.index; - } - ]; - }); - - // iterable DOM collections - // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods - var domIterables = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - - // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` - var documentCreateElement = documentCreateElement$2; - - var classList = documentCreateElement('span').classList; - var DOMTokenListPrototype$1 = classList && classList.constructor && classList.constructor.prototype; - - var domTokenListPrototype = DOMTokenListPrototype$1 === Object.prototype ? undefined : DOMTokenListPrototype$1; - - var $forEach = arrayIteration.forEach; - var arrayMethodIsStrict = arrayMethodIsStrict$2; - - var STRICT_METHOD = arrayMethodIsStrict('forEach'); - - // `Array.prototype.forEach` method implementation - // https://tc39.es/ecma262/#sec-array.prototype.foreach - var arrayForEach = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - // eslint-disable-next-line es/no-array-prototype-foreach -- safe - } : [].forEach; - - var global$1 = global$e; - var DOMIterables = domIterables; - var DOMTokenListPrototype = domTokenListPrototype; - var forEach = arrayForEach; - var createNonEnumerableProperty = createNonEnumerableProperty$4; - - var handlePrototype = function (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } - }; - - for (var COLLECTION_NAME in DOMIterables) { - if (DOMIterables[COLLECTION_NAME]) { - handlePrototype(global$1[COLLECTION_NAME] && global$1[COLLECTION_NAME].prototype); - } - } - - handlePrototype(DOMTokenListPrototype); /** * @author: Dennis Hernández * @update zhixin wen */ - var Utils = $$c.fn.bootstrapTable.utils; + var Utils = $.fn.bootstrapTable.utils; var UtilsCookie = { cookieIds: { sortOrder: 'bs.table.sortOrder', @@ -16649,10 +5913,10 @@ }; var filterContainer = header; if (that.options.filterControlContainer) { - filterContainer = $$c("".concat(that.options.filterControlContainer)); + filterContainer = $("".concat(that.options.filterControlContainer)); } filterContainer.find(searchControls).each(function () { - var field = $$c(this).closest('[data-field]').data('field'); + var field = $(this).closest('[data-field]').data('field'); var filteredCookies = parsedCookieFilters.filter(function (cookie) { return cookie.field === field; }); @@ -16665,7 +5929,7 @@ }, 250); } }; - Object.assign($$c.fn.bootstrapTable.defaults, { + Object.assign($.fn.bootstrapTable.defaults, { cookie: false, cookieExpire: '2h', cookiePath: null, @@ -16688,13 +5952,13 @@ removeItem: undefined } }); - $$c.fn.bootstrapTable.methods.push('getCookies'); - $$c.fn.bootstrapTable.methods.push('deleteCookie'); - Object.assign($$c.fn.bootstrapTable.utils, { + $.fn.bootstrapTable.methods.push('getCookies'); + $.fn.bootstrapTable.methods.push('deleteCookie'); + Object.assign($.fn.bootstrapTable.utils, { setCookie: UtilsCookie.setCookie, getCookie: UtilsCookie.getCookie }); - $$c.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { + $.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { function _class() { _classCallCheck(this, _class); return _callSuper(this, _class, arguments); @@ -16840,7 +6104,7 @@ if (!this.options.cookie) { return; } - UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageList, this.options.pageSize); + UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageList, this.options.pageSize === this.options.formatAllRows() ? 'all' : this.options.pageSize); UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber); } }, { @@ -17013,7 +6277,7 @@ // pageNumber this.options.pageNumber = pageNumberCookie ? +pageNumberCookie : this.options.pageNumber; // pageSize - this.options.pageSize = pageListCookie ? pageListCookie === this.options.formatAllRows() ? pageListCookie : +pageListCookie : this.options.pageSize; + this.options.pageSize = pageListCookie ? pageListCookie === 'all' ? this.options.formatAllRows() : +pageListCookie : this.options.pageSize; // searchText if (UtilsCookie.isCookieEnabled(this, UtilsCookie.cookieIds.searchText) && this.options.searchText === '') { this.options.searchText = searchTextCookie ? searchTextCookie : ''; @@ -17060,7 +6324,7 @@ }, { key: "deleteCookie", value: function deleteCookie(cookieName) { - if (!cookieName) { + if (!cookieName || !this.options.cookie) { return; } UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds[cookieName]); @@ -17125,19 +6389,63 @@ } } }]); - }($$c.BootstrapTable); + }($.BootstrapTable); })); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); -})(this, (function ($$3) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.find.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.to-string.js'), require('jquery')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.find.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.to-string.js', 'jquery'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_find_js, es_object_assign_js, es_object_toString_js, $) { 'use strict'; + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); @@ -17146,1680 +6454,34 @@ return !!t; })(); } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { - var i = e.call(t, r || "default"); + var i = e.call(t, r ); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return (String )(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$a = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$c = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$b = fails$c; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$b(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$a = fails$c; - - var functionBindNative = !fails$a(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$2 = functionBindNative; - - var call$5 = Function.prototype.call; - - var functionCall = NATIVE_BIND$2 ? call$5.bind(call$5) : function () { - return call$5.apply(call$5, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$1(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable; - - var createPropertyDescriptor$3 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$1 = functionBindNative; - - var FunctionPrototype$1 = Function.prototype; - var call$4 = FunctionPrototype$1.call; - var uncurryThisWithBind = NATIVE_BIND$1 && FunctionPrototype$1.bind.bind(call$4, call$4); - - var functionUncurryThis = NATIVE_BIND$1 ? uncurryThisWithBind : function (fn) { - return function () { - return call$4.apply(fn, arguments); - }; - }; - - var uncurryThis$d = functionUncurryThis; - - var toString$2 = uncurryThis$d({}.toString); - var stringSlice$1 = uncurryThis$d(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$1(toString$2(it), 8, -1); - }; - - var uncurryThis$c = functionUncurryThis; - var fails$9 = fails$c; - var classof$4 = classofRaw$2; - - var $Object$3 = Object; - var split = uncurryThis$c(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$9(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$3('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$4(it) === 'String' ? split(it, '') : $Object$3(it); - } : $Object$3; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$2 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$1 = isNullOrUndefined$2; - - var $TypeError$6 = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$2 = function (it) { - if (isNullOrUndefined$1(it)) throw new $TypeError$6("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$2 = indexedObject; - var requireObjectCoercible$1 = requireObjectCoercible$2; - - var toIndexedObject$4 = function (it) { - return IndexedObject$2(requireObjectCoercible$1(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$c = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$b = isCallable$c; - - var isObject$7 = function (it) { - return typeof it == 'object' ? it !== null : isCallable$b(it); - }; - - var global$9 = global$a; - var isCallable$a = isCallable$c; - - var aFunction = function (argument) { - return isCallable$a(argument) ? argument : undefined; - }; - - var getBuiltIn$4 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$9[namespace]) : global$9[namespace] && global$9[namespace][method]; - }; - - var uncurryThis$b = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$b({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$8 = global$a; - var userAgent = engineUserAgent; - - var process = global$8.process; - var Deno = global$8.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$8 = fails$c; - var global$7 = global$a; - - var $String$3 = global$7.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$8(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$3(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$3 = getBuiltIn$4; - var isCallable$9 = isCallable$c; - var isPrototypeOf = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$2 = Object; - - var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$3('Symbol'); - return isCallable$9($Symbol) && isPrototypeOf($Symbol.prototype, $Object$2(it)); - }; - - var $String$2 = String; - - var tryToString$1 = function (argument) { - try { - return $String$2(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$8 = isCallable$c; - var tryToString = tryToString$1; - - var $TypeError$5 = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$2 = function (argument) { - if (isCallable$8(argument)) return argument; - throw new $TypeError$5(tryToString(argument) + ' is not a function'); - }; - - var aCallable$1 = aCallable$2; - var isNullOrUndefined = isNullOrUndefined$2; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$1 = function (V, P) { - var func = V[P]; - return isNullOrUndefined(func) ? undefined : aCallable$1(func); - }; - - var call$3 = functionCall; - var isCallable$7 = isCallable$c; - var isObject$6 = isObject$7; - - var $TypeError$4 = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$7(fn = input.toString) && !isObject$6(val = call$3(fn, input))) return val; - if (isCallable$7(fn = input.valueOf) && !isObject$6(val = call$3(fn, input))) return val; - if (pref !== 'string' && isCallable$7(fn = input.toString) && !isObject$6(val = call$3(fn, input))) return val; - throw new $TypeError$4("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var global$6 = global$a; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$3 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$3(global$6, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$6[key] = value; - } return value; - }; - - var globalThis$1 = global$a; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$3 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible = requireObjectCoercible$2; - - var $Object$1 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$4 = function (argument) { - return $Object$1(requireObjectCoercible(argument)); - }; - - var uncurryThis$a = functionUncurryThis; - var toObject$3 = toObject$4; - - var hasOwnProperty = uncurryThis$a({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$3(it), key); - }; - - var uncurryThis$9 = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$1 = uncurryThis$9(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$1(++id + postfix, 36); - }; - - var global$5 = global$a; - var shared$2 = shared$3; - var hasOwn$6 = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$1 = global$5.Symbol; - var WellKnownSymbolsStore = shared$2('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1; - - var wellKnownSymbol$7 = function (name) { - if (!hasOwn$6(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$6(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$2 = functionCall; - var isObject$5 = isObject$7; - var isSymbol$1 = isSymbol$2; - var getMethod = getMethod$1; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$6 = wellKnownSymbol$7; - - var $TypeError$3 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$6('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$1 = function (input, pref) { - if (!isObject$5(input) || isSymbol$1(input)) return input; - var exoticToPrim = getMethod(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$2(exoticToPrim, input, pref); - if (!isObject$5(result) || isSymbol$1(result)) return result; - throw new $TypeError$3("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive = toPrimitive$1; - var isSymbol = isSymbol$2; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; - }; - - var global$4 = global$a; - var isObject$4 = isObject$7; - - var document$1 = global$4.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$4(document$1) && isObject$4(document$1.createElement); - - var documentCreateElement$1 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$9 = descriptors; - var fails$7 = fails$c; - var createElement = documentCreateElement$1; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$9 && !fails$7(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$8 = descriptors; - var call$1 = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$2 = createPropertyDescriptor$3; - var toIndexedObject$3 = toIndexedObject$4; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$5 = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$8 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$3(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$5(O, P)) return createPropertyDescriptor$2(!call$1(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$7 = descriptors; - var fails$6 = fails$c; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$7 && fails$6(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$3 = isObject$7; - - var $String$1 = String; - var $TypeError$2 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$4 = function (argument) { - if (isObject$3(argument)) return argument; - throw new $TypeError$2($String$1(argument) + ' is not an object'); - }; - - var DESCRIPTORS$6 = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$3 = anObject$4; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$1 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$6 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$3(O); - P = toPropertyKey(P); - anObject$3(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$3(O); - P = toPropertyKey(P); - anObject$3(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$1('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$5 = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$1 = createPropertyDescriptor$3; - - var createNonEnumerableProperty$2 = DESCRIPTORS$5 ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$1(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$2 = {exports: {}}; - - var DESCRIPTORS$4 = descriptors; - var hasOwn$4 = hasOwnProperty_1; - - var FunctionPrototype = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$4 && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$4(FunctionPrototype, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$4 || (DESCRIPTORS$4 && getDescriptor(FunctionPrototype, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$8 = functionUncurryThis; - var isCallable$6 = isCallable$c; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$8(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$6(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$3 = global$a; - var isCallable$5 = isCallable$c; - - var WeakMap$1 = global$3.WeakMap; - - var weakMapBasicDetection = isCallable$5(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$1 = shared$3; - var uid = uid$2; - - var keys = shared$1('keys'); - - var sharedKey$2 = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$2 = global$a; - var isObject$2 = isObject$7; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$2; - var hasOwn$3 = hasOwnProperty_1; - var shared = sharedStoreExports; - var sharedKey$1 = sharedKey$2; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$1 = global$2.TypeError; - var WeakMap = global$2.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$2(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared.state) { - var store = shared.state || (shared.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$1('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$3(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$1(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$3(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$3(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$7 = functionUncurryThis; - var fails$5 = fails$c; - var isCallable$4 = isCallable$c; - var hasOwn$2 = hasOwnProperty_1; - var DESCRIPTORS$3 = descriptors; - var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule = internalState; - - var enforceInternalState = InternalStateModule.enforce; - var getInternalState = InternalStateModule.get; - var $String = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$2 = Object.defineProperty; - var stringSlice = uncurryThis$7(''.slice); - var replace = uncurryThis$7(''.replace); - var join = uncurryThis$7([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$3 && !fails$5(function () { - return defineProperty$2(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$1 = makeBuiltIn$2.exports = function (value, name, options) { - if (stringSlice($String(name), 0, 7) === 'Symbol(') { - name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$2(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - if (DESCRIPTORS$3) defineProperty$2(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$2(options, 'arity') && value.length !== options.arity) { - defineProperty$2(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$2(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$3) defineProperty$2(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwn$2(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$1(function toString() { - return isCallable$4(this) && getInternalState(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$2.exports; - - var isCallable$3 = isCallable$c; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$2 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$3(value)) makeBuiltIn(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$2 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$1 = toIntegerOrInfinity$2; - - var max = Math.max; - var min$1 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$1 = function (index, length) { - var integer = toIntegerOrInfinity$1(index); - return integer < 0 ? max(integer + length, 0) : min$1(integer, length); - }; - - var toIntegerOrInfinity = toIntegerOrInfinity$2; - - var min = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$1 = function (argument) { - var len = toIntegerOrInfinity(argument); - return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength = toLength$1; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$3 = function (obj) { - return toLength(obj.length); - }; - - var toIndexedObject$2 = toIndexedObject$4; - var toAbsoluteIndex = toAbsoluteIndex$1; - var lengthOfArrayLike$2 = lengthOfArrayLike$3; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$1 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$2($this); - var length = lengthOfArrayLike$2(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$1(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$1(false) - }; - - var uncurryThis$6 = functionUncurryThis; - var hasOwn$1 = hasOwnProperty_1; - var toIndexedObject$1 = toIndexedObject$4; - var indexOf = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$1 = uncurryThis$6([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$1(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$1(hiddenKeys$2, key) && hasOwn$1(O, key) && push$1(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$1(O, key = names[i++])) { - ~indexOf(result, key) || push$1(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$2 = getBuiltIn$4; - var uncurryThis$5 = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$2 = anObject$4; - - var concat$1 = uncurryThis$5([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$2(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$1(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$1 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$4 = fails$c; - var isCallable$2 = isCallable$c; - - var replacement = /#|\.prototype\./; - - var isForced$1 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$2(detection) ? fails$4(detection) - : !!detection; - }; - - var normalize = isForced$1.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$1.data = {}; - var NATIVE = isForced$1.NATIVE = 'N'; - var POLYFILL = isForced$1.POLYFILL = 'P'; - - var isForced_1 = isForced$1; - - var global$1 = global$a; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty = createNonEnumerableProperty$2; - var defineBuiltIn$1 = defineBuiltIn$2; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties = copyConstructorProperties$1; - var isForced = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$1; - } else if (STATIC) { - target = global$1[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$1[TARGET] && global$1[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } - defineBuiltIn$1(target, key, sourceProperty, options); - } - }; - - var classof$3 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$2 = Array.isArray || function isArray(argument) { - return classof$3(argument) === 'Array'; - }; - - var $TypeError = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$1 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$2 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor = createPropertyDescriptor$3; - - var createProperty$1 = function (object, key, value) { - if (DESCRIPTORS$2) definePropertyModule$1.f(object, key, createPropertyDescriptor(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$5 = wellKnownSymbol$7; - - var TO_STRING_TAG$1 = wellKnownSymbol$5('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$1] = 'z'; - - var toStringTagSupport = String(test) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$1 = isCallable$c; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$4 = wellKnownSymbol$7; - - var TO_STRING_TAG = wellKnownSymbol$4('toStringTag'); - var $Object = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$2 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$1(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$4 = functionUncurryThis; - var fails$3 = fails$c; - var isCallable = isCallable$c; - var classof$1 = classof$2; - var getBuiltIn$1 = getBuiltIn$4; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$1('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec = uncurryThis$4(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable(argument)) return false; - switch (classof$1(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$1 = !construct || fails$3(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$1 = isArray$2; - var isConstructor = isConstructor$1; - var isObject$1 = isObject$7; - var wellKnownSymbol$3 = wellKnownSymbol$7; - - var SPECIES$1 = wellKnownSymbol$3('species'); - var $Array = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$1(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === $Array || isArray$1(C.prototype))) C = undefined; - else if (isObject$1(C)) { - C = C[SPECIES$1]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$2 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$2 = fails$c; - var wellKnownSymbol$2 = wellKnownSymbol$7; - var V8_VERSION$1 = engineV8Version; - - var SPECIES = wellKnownSymbol$2('species'); - - var arrayMethodHasSpeciesSupport$1 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$2(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$2 = _export; - var fails$1 = fails$c; - var isArray = isArray$2; - var isObject = isObject$7; - var toObject$2 = toObject$4; - var lengthOfArrayLike$1 = lengthOfArrayLike$3; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1; - var createProperty = createProperty$1; - var arraySpeciesCreate$1 = arraySpeciesCreate$2; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$1; - var wellKnownSymbol$1 = wellKnownSymbol$7; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$1('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$1(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$2({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$2(this); - var A = arraySpeciesCreate$1(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike$1(E); - doesNotExceedSafeInteger(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); - } else { - doesNotExceedSafeInteger(n + 1); - createProperty(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var classofRaw = classofRaw$2; - var uncurryThis$3 = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$3(fn); - }; - - var uncurryThis$2 = functionUncurryThisClause; - var aCallable = aCallable$2; - var NATIVE_BIND = functionBindNative; - - var bind$1 = uncurryThis$2(uncurryThis$2.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : NATIVE_BIND ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var bind = functionBindContext; - var uncurryThis$1 = functionUncurryThis; - var IndexedObject$1 = indexedObject; - var toObject$1 = toObject$4; - var lengthOfArrayLike = lengthOfArrayLike$3; - var arraySpeciesCreate = arraySpeciesCreate$2; - - var push = uncurryThis$1([].push); - - // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation - var createMethod = function (TYPE) { - var IS_MAP = TYPE === 1; - var IS_FILTER = TYPE === 2; - var IS_SOME = TYPE === 3; - var IS_EVERY = TYPE === 4; - var IS_FIND_INDEX = TYPE === 6; - var IS_FILTER_REJECT = TYPE === 7; - var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject$1($this); - var self = IndexedObject$1(O); - var length = lengthOfArrayLike(self); - var boundFunction = bind(callbackfn, that); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod(7) - }; - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$2 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$1 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$1 = anObject$4; - var toIndexedObject = toIndexedObject$4; - var objectKeys$1 = objectKeys$2; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$1 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$1(O); - var props = toIndexedObject(Properties); - var keys = objectKeys$1(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn = getBuiltIn$4; - - var html$1 = getBuiltIn('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject = anObject$4; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement = documentCreateElement$1; - var sharedKey = sharedKey$2; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO = sharedKey('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol = wellKnownSymbol$7; - var create = objectCreate; - var defineProperty$1 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$1(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$1 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var $$1 = _export; - var $find = arrayIteration.find; - var addToUnscopables = addToUnscopables$1; - - var FIND = 'find'; - var SKIPS_HOLES = true; - - // Shouldn't skip holes - // eslint-disable-next-line es/no-array-prototype-find -- testing - if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); - - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - $$1({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables(FIND); - - var DESCRIPTORS = descriptors; - var uncurryThis = functionUncurryThis; - var call = functionCall; - var fails = fails$c; - var objectKeys = objectKeys$2; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject = toObject$4; - var IndexedObject = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty = Object.defineProperty; - var concat = uncurryThis([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { - enumerable: true, - get: function () { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $ = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof = classof$2; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn = defineBuiltIn$2; - var toString = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); - } /** * @author vincent loh @@ -18827,14 +6489,14 @@ * @update zhixin wen */ - var Utils = $$3.fn.bootstrapTable.utils; - Object.assign($$3.fn.bootstrapTable.defaults, { + var Utils = $.fn.bootstrapTable.utils; + Object.assign($.fn.bootstrapTable.defaults, { stickyHeader: false, stickyHeaderOffsetY: 0, stickyHeaderOffsetLeft: 0, stickyHeaderOffsetRight: 0 }); - $$3.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { + $.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { function _class() { _classCallCheck(this, _class); return _callSuper(this, _class, arguments); @@ -18868,10 +6530,10 @@ // render sticky on window scroll or resize var resizeEvent = Utils.getEventName('resize.sticky-header-table', this.$el.attr('id')); var scrollEvent = Utils.getEventName('scroll.sticky-header-table', this.$el.attr('id')); - $$3(window).off(resizeEvent).on(resizeEvent, function () { + $(window).off(resizeEvent).on(resizeEvent, function () { return _this.renderStickyHeader(); }); - $$3(window).off(scrollEvent).on(scrollEvent, function () { + $(window).off(scrollEvent).on(scrollEvent, function () { return _this.renderStickyHeader(); }); this.$tableBody.off('scroll').on('scroll', function () { @@ -18898,7 +6560,7 @@ args[_key2] = arguments[_key2]; } (_get3 = _get(_getPrototypeOf(_class.prototype), "resetView", this)).call.apply(_get3, [this].concat(args)); - $$3('.bootstrap-table.fullscreen').off('scroll').on('scroll', function () { + $('.bootstrap-table.fullscreen').off('scroll').on('scroll', function () { return _this2.renderStickyHeader(); }); } @@ -18913,7 +6575,7 @@ if (this.$stickyHeader) { var $ths = this.$stickyHeader.find('th'); this.$header.find('th').each(function (i, th) { - $ths.eq(i).find('.sortable').attr('class', $$3(th).find('.sortable').attr('class')); + $ths.eq(i).find('.sortable').attr('class', $(th).find('.sortable').attr('class')); }); } } @@ -18933,8 +6595,8 @@ var that = this; this.$stickyHeader = this.$header.clone(true, true); if (this.options.filterControl) { - $$3(this.$stickyHeader).off('keyup change mouseup').on('keyup change mouse', function (e) { - var $target = $$3(e.target); + $(this.$stickyHeader).off('keyup change mouseup').on('keyup change mouse', function (e) { + var $target = $(e.target); var value = $target.val(); var field = $target.parents('th').data('field'); var $coreTh = that.$header.find("th[data-field=\"".concat(field, "\"]")); @@ -18948,7 +6610,7 @@ that.triggerSearch(); }); } - var top = $$3(window).scrollTop(); + var top = $(window).scrollTop(); // top anchor scroll position, minus header height var start = this.$stickyBegin.offset().top - this.options.stickyHeaderOffsetY; // bottom anchor scroll position, minus header height, minus sticky height @@ -18958,8 +6620,8 @@ if (top > start && top <= end) { // ensure clone and source column widths are the same this.$stickyHeader.find('tr').each(function (indexRows, rows) { - $$3(rows).find('th').each(function (index, el) { - $$3(el).css('min-width', _this4.$header.find("tr:eq(".concat(indexRows, ")")).find("th:eq(".concat(index, ")")).css('width')); + $(rows).find('th').each(function (index, el) { + $(el).css('min-width', _this4.$header.find("tr:eq(".concat(indexRows, ")")).find("th:eq(".concat(index, ")")).css('width')); }); }); // match bootstrap table style @@ -18985,7 +6647,7 @@ this.$stickyContainer.css('right', "".concat(stickyHeaderOffsetRight, "px")); this.$stickyContainer.css('width', "".concat(width)); // create scrollable container for header - this.$stickyTable = $$3(''); + this.$stickyTable = $('
'); this.$stickyTable.addClass(this.options.classes); // append cloned header to dom this.$stickyContainer.html(this.$stickyTable.append(this.$stickyHeader)); @@ -19001,19 +6663,71 @@ this.$stickyContainer.scrollLeft(this.$tableBody.scrollLeft()); } }]); - }($$3.BootstrapTable); + }($.BootstrapTable); })); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); -})(this, (function ($$6) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.iterator.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.entries.js'), require('core-js/modules/es.object.to-string.js'), require('core-js/modules/es.regexp.exec.js'), require('core-js/modules/es.regexp.to-string.js'), require('core-js/modules/es.string.iterator.js'), require('core-js/modules/es.string.search.js'), require('core-js/modules/web.dom-collections.iterator.js'), require('core-js/modules/web.url-search-params.js'), require('jquery')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.iterator.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.entries.js', 'core-js/modules/es.object.to-string.js', 'core-js/modules/es.regexp.exec.js', 'core-js/modules/es.regexp.to-string.js', 'core-js/modules/es.string.iterator.js', 'core-js/modules/es.string.search.js', 'core-js/modules/web.dom-collections.iterator.js', 'core-js/modules/web.url-search-params.js', 'jquery'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(null, null, null, null, null, null, null, null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_iterator_js, es_object_assign_js, es_object_entries_js, es_object_toString_js, es_regexp_exec_js, es_regexp_toString_js, es_string_iterator_js, es_string_search_js, web_domCollections_iterator_js, web_urlSearchParams_js, $) { 'use strict'; + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); @@ -19033,10 +6747,7 @@ f = !0, o = !1; try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { @@ -19049,3106 +6760,45 @@ return a; } } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { - var i = e.call(t, r || "default"); + var i = e.call(t, r ); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return (String )(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$g = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$l = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$k = fails$l; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$k(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$j = fails$l; - - var functionBindNative = !fails$j(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$2 = functionBindNative; - - var call$d = Function.prototype.call; - - var functionCall = NATIVE_BIND$2 ? call$d.bind(call$d) : function () { - return call$d.apply(call$d, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$2 && !$propertyIsEnumerable$1.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$2(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable$1; - - var createPropertyDescriptor$5 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$1 = functionBindNative; - - var FunctionPrototype$1 = Function.prototype; - var call$c = FunctionPrototype$1.call; - var uncurryThisWithBind = NATIVE_BIND$1 && FunctionPrototype$1.bind.bind(call$c, call$c); - - var functionUncurryThis = NATIVE_BIND$1 ? uncurryThisWithBind : function (fn) { - return function () { - return call$c.apply(fn, arguments); - }; - }; - - var uncurryThis$i = functionUncurryThis; - - var toString$7 = uncurryThis$i({}.toString); - var stringSlice$4 = uncurryThis$i(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$4(toString$7(it), 8, -1); - }; - - var uncurryThis$h = functionUncurryThis; - var fails$i = fails$l; - var classof$8 = classofRaw$2; - - var $Object$4 = Object; - var split$1 = uncurryThis$h(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$i(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$4('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$8(it) === 'String' ? split$1(it, '') : $Object$4(it); - } : $Object$4; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$4 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$3 = isNullOrUndefined$4; - - var $TypeError$b = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$5 = function (it) { - if (isNullOrUndefined$3(it)) throw new $TypeError$b("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$1 = indexedObject; - var requireObjectCoercible$4 = requireObjectCoercible$5; - - var toIndexedObject$6 = function (it) { - return IndexedObject$1(requireObjectCoercible$4(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$h = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$g = isCallable$h; - - var isObject$b = function (it) { - return typeof it == 'object' ? it !== null : isCallable$g(it); - }; - - var global$f = global$g; - var isCallable$f = isCallable$h; - - var aFunction = function (argument) { - return isCallable$f(argument) ? argument : undefined; - }; - - var getBuiltIn$4 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$f[namespace]) : global$f[namespace] && global$f[namespace][method]; - }; - - var uncurryThis$g = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$g({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$e = global$g; - var userAgent = engineUserAgent; - - var process = global$e.process; - var Deno = global$e.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$h = fails$l; - var global$d = global$g; - - var $String$5 = global$d.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$h(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$5(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$3 = getBuiltIn$4; - var isCallable$e = isCallable$h; - var isPrototypeOf$2 = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$3 = Object; - - var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$3('Symbol'); - return isCallable$e($Symbol) && isPrototypeOf$2($Symbol.prototype, $Object$3(it)); - }; - - var $String$4 = String; - - var tryToString$2 = function (argument) { - try { - return $String$4(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$d = isCallable$h; - var tryToString$1 = tryToString$2; - - var $TypeError$a = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$4 = function (argument) { - if (isCallable$d(argument)) return argument; - throw new $TypeError$a(tryToString$1(argument) + ' is not a function'); - }; - - var aCallable$3 = aCallable$4; - var isNullOrUndefined$2 = isNullOrUndefined$4; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$3 = function (V, P) { - var func = V[P]; - return isNullOrUndefined$2(func) ? undefined : aCallable$3(func); - }; - - var call$b = functionCall; - var isCallable$c = isCallable$h; - var isObject$a = isObject$b; - - var $TypeError$9 = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$c(fn = input.toString) && !isObject$a(val = call$b(fn, input))) return val; - if (isCallable$c(fn = input.valueOf) && !isObject$a(val = call$b(fn, input))) return val; - if (pref !== 'string' && isCallable$c(fn = input.toString) && !isObject$a(val = call$b(fn, input))) return val; - throw new $TypeError$9("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var isPure = false; - - var global$c = global$g; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$6 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$6(global$c, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$c[key] = value; - } return value; - }; - - var globalThis$1 = global$g; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$4 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible$3 = requireObjectCoercible$5; - - var $Object$2 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$4 = function (argument) { - return $Object$2(requireObjectCoercible$3(argument)); - }; - - var uncurryThis$f = functionUncurryThis; - var toObject$3 = toObject$4; - - var hasOwnProperty = uncurryThis$f({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$3(it), key); - }; - - var uncurryThis$e = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$6 = uncurryThis$e(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$6(++id + postfix, 36); - }; - - var global$b = global$g; - var shared$3 = shared$4; - var hasOwn$a = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$1 = global$b.Symbol; - var WellKnownSymbolsStore = shared$3('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1; - - var wellKnownSymbol$f = function (name) { - if (!hasOwn$a(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$a(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$a = functionCall; - var isObject$9 = isObject$b; - var isSymbol$1 = isSymbol$2; - var getMethod$2 = getMethod$3; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$e = wellKnownSymbol$f; - - var $TypeError$8 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$e('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$1 = function (input, pref) { - if (!isObject$9(input) || isSymbol$1(input)) return input; - var exoticToPrim = getMethod$2(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$a(exoticToPrim, input, pref); - if (!isObject$9(result) || isSymbol$1(result)) return result; - throw new $TypeError$8("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive = toPrimitive$1; - var isSymbol = isSymbol$2; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; - }; - - var global$a = global$g; - var isObject$8 = isObject$b; - - var document$1 = global$a.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$8(document$1) && isObject$8(document$1.createElement); - - var documentCreateElement$2 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$e = descriptors; - var fails$g = fails$l; - var createElement = documentCreateElement$2; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$e && !fails$g(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$d = descriptors; - var call$9 = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$4 = createPropertyDescriptor$5; - var toIndexedObject$5 = toIndexedObject$6; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$9 = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$d ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$5(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$9(O, P)) return createPropertyDescriptor$4(!call$9(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$c = descriptors; - var fails$f = fails$l; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$c && fails$f(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$7 = isObject$b; - - var $String$3 = String; - var $TypeError$7 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$a = function (argument) { - if (isObject$7(argument)) return argument; - throw new $TypeError$7($String$3(argument) + ' is not an object'); - }; - - var DESCRIPTORS$b = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$9 = anObject$a; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$6 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$b ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$9(O); - P = toPropertyKey(P); - anObject$9(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$9(O); - P = toPropertyKey(P); - anObject$9(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$6('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$a = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$3 = createPropertyDescriptor$5; - - var createNonEnumerableProperty$5 = DESCRIPTORS$a ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$3(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$3 = {exports: {}}; - - var DESCRIPTORS$9 = descriptors; - var hasOwn$8 = hasOwnProperty_1; - - var FunctionPrototype = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$9 && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$8(FunctionPrototype, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$9 || (DESCRIPTORS$9 && getDescriptor(FunctionPrototype, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$d = functionUncurryThis; - var isCallable$b = isCallable$h; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$d(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$b(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$9 = global$g; - var isCallable$a = isCallable$h; - - var WeakMap$1 = global$9.WeakMap; - - var weakMapBasicDetection = isCallable$a(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$2 = shared$4; - var uid = uid$2; - - var keys = shared$2('keys'); - - var sharedKey$3 = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$8 = global$g; - var isObject$6 = isObject$b; - var createNonEnumerableProperty$4 = createNonEnumerableProperty$5; - var hasOwn$7 = hasOwnProperty_1; - var shared$1 = sharedStoreExports; - var sharedKey$2 = sharedKey$3; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$2 = global$8.TypeError; - var WeakMap = global$8.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$6(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$2('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared$1.state) { - var store = shared$1.state || (shared$1.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$2('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$7(it, STATE)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$4(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$7(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$7(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$c = functionUncurryThis; - var fails$e = fails$l; - var isCallable$9 = isCallable$h; - var hasOwn$6 = hasOwnProperty_1; - var DESCRIPTORS$8 = descriptors; - var CONFIGURABLE_FUNCTION_NAME$1 = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule$3 = internalState; - - var enforceInternalState = InternalStateModule$3.enforce; - var getInternalState$3 = InternalStateModule$3.get; - var $String$2 = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$5 = Object.defineProperty; - var stringSlice$3 = uncurryThis$c(''.slice); - var replace$2 = uncurryThis$c(''.replace); - var join$1 = uncurryThis$c([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$8 && !fails$e(function () { - return defineProperty$5(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$2 = makeBuiltIn$3.exports = function (value, name, options) { - if (stringSlice$3($String$2(name), 0, 7) === 'Symbol(') { - name = '[' + replace$2($String$2(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$6(value, 'name') || (CONFIGURABLE_FUNCTION_NAME$1 && value.name !== name)) { - if (DESCRIPTORS$8) defineProperty$5(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$6(options, 'arity') && value.length !== options.arity) { - defineProperty$5(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$6(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$8) defineProperty$5(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwn$6(state, 'source')) { - state.source = join$1(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$2(function toString() { - return isCallable$9(this) && getInternalState$3(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$3.exports; - - var isCallable$8 = isCallable$h; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn$1 = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$8 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$8(value)) makeBuiltIn$1(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor$1 = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor$1 : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$3 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$2 = toIntegerOrInfinity$3; - - var max = Math.max; - var min$1 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$1 = function (index, length) { - var integer = toIntegerOrInfinity$2(index); - return integer < 0 ? max(integer + length, 0) : min$1(integer, length); - }; - - var toIntegerOrInfinity$1 = toIntegerOrInfinity$3; - - var min = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$1 = function (argument) { - var len = toIntegerOrInfinity$1(argument); - return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength = toLength$1; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$2 = function (obj) { - return toLength(obj.length); - }; - - var toIndexedObject$4 = toIndexedObject$6; - var toAbsoluteIndex = toAbsoluteIndex$1; - var lengthOfArrayLike$1 = lengthOfArrayLike$2; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$2 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$4($this); - var length = lengthOfArrayLike$1(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$2(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$2(false) - }; - - var uncurryThis$b = functionUncurryThis; - var hasOwn$5 = hasOwnProperty_1; - var toIndexedObject$3 = toIndexedObject$6; - var indexOf$1 = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$2 = uncurryThis$b([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$3(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$5(hiddenKeys$2, key) && hasOwn$5(O, key) && push$2(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$5(O, key = names[i++])) { - ~indexOf$1(result, key) || push$2(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$2 = getBuiltIn$4; - var uncurryThis$a = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$8 = anObject$a; - - var concat$1 = uncurryThis$a([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$8(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$1(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn$4 = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$1 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn$4(target, key) && !(exceptions && hasOwn$4(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$d = fails$l; - var isCallable$7 = isCallable$h; - - var replacement = /#|\.prototype\./; - - var isForced$1 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$7(detection) ? fails$d(detection) - : !!detection; - }; - - var normalize = isForced$1.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$1.data = {}; - var NATIVE = isForced$1.NATIVE = 'N'; - var POLYFILL = isForced$1.POLYFILL = 'P'; - - var isForced_1 = isForced$1; - - var global$7 = global$g; - var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty$3 = createNonEnumerableProperty$5; - var defineBuiltIn$7 = defineBuiltIn$8; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties = copyConstructorProperties$1; - var isForced = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$7; - } else if (STATIC) { - target = global$7[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$7[TARGET] && global$7[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor$1(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty$3(sourceProperty, 'sham', true); - } - defineBuiltIn$7(target, key, sourceProperty, options); - } - }; - - var classof$7 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$2 = Array.isArray || function isArray(argument) { - return classof$7(argument) === 'Array'; - }; - - var $TypeError$5 = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$1 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError$5('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$7 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor$2 = createPropertyDescriptor$5; - - var createProperty$1 = function (object, key, value) { - if (DESCRIPTORS$7) definePropertyModule$1.f(object, key, createPropertyDescriptor$2(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$d = wellKnownSymbol$f; - - var TO_STRING_TAG$2 = wellKnownSymbol$d('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$2] = 'z'; - - var toStringTagSupport = String(test) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$6 = isCallable$h; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$c = wellKnownSymbol$f; - - var TO_STRING_TAG$1 = wellKnownSymbol$c('toStringTag'); - var $Object$1 = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$6 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object$1(it), TO_STRING_TAG$1)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$6(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$9 = functionUncurryThis; - var fails$c = fails$l; - var isCallable$5 = isCallable$h; - var classof$5 = classof$6; - var getBuiltIn$1 = getBuiltIn$4; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$1('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec$1 = uncurryThis$9(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable$5(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable$5(argument)) return false; - switch (classof$5(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec$1(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$1 = !construct || fails$c(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$1 = isArray$2; - var isConstructor = isConstructor$1; - var isObject$5 = isObject$b; - var wellKnownSymbol$b = wellKnownSymbol$f; - - var SPECIES$2 = wellKnownSymbol$b('species'); - var $Array = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$1(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === $Array || isArray$1(C.prototype))) C = undefined; - else if (isObject$5(C)) { - C = C[SPECIES$2]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$1 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$b = fails$l; - var wellKnownSymbol$a = wellKnownSymbol$f; - var V8_VERSION$1 = engineV8Version; - - var SPECIES$1 = wellKnownSymbol$a('species'); - - var arrayMethodHasSpeciesSupport$1 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$b(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES$1] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$5 = _export; - var fails$a = fails$l; - var isArray = isArray$2; - var isObject$4 = isObject$b; - var toObject$2 = toObject$4; - var lengthOfArrayLike = lengthOfArrayLike$2; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1; - var createProperty = createProperty$1; - var arraySpeciesCreate = arraySpeciesCreate$1; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$1; - var wellKnownSymbol$9 = wellKnownSymbol$f; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$9('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$a(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject$4(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$5({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$2(this); - var A = arraySpeciesCreate(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike(E); - doesNotExceedSafeInteger(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); - } else { - doesNotExceedSafeInteger(n + 1); - createProperty(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$3 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$6 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$7 = anObject$a; - var toIndexedObject$2 = toIndexedObject$6; - var objectKeys$2 = objectKeys$3; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$6 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$7(O); - var props = toIndexedObject$2(Properties); - var keys = objectKeys$2(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn = getBuiltIn$4; - - var html$1 = getBuiltIn('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject$6 = anObject$a; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement$1 = documentCreateElement$2; - var sharedKey$1 = sharedKey$3; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO$1 = sharedKey$1('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement$1('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO$1] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject$6(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO$1] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol$8 = wellKnownSymbol$f; - var create$3 = objectCreate; - var defineProperty$4 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol$8('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$4(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create$3(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$1 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var iterators = {}; - - var fails$9 = fails$l; - - var correctPrototypeGetter = !fails$9(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - // eslint-disable-next-line es/no-object-getprototypeof -- required for testing - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - - var hasOwn$3 = hasOwnProperty_1; - var isCallable$4 = isCallable$h; - var toObject$1 = toObject$4; - var sharedKey = sharedKey$3; - var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; - - var IE_PROTO = sharedKey('IE_PROTO'); - var $Object = Object; - var ObjectPrototype = $Object.prototype; - - // `Object.getPrototypeOf` method - // https://tc39.es/ecma262/#sec-object.getprototypeof - // eslint-disable-next-line es/no-object-getprototypeof -- safe - var objectGetPrototypeOf$1 = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { - var object = toObject$1(O); - if (hasOwn$3(object, IE_PROTO)) return object[IE_PROTO]; - var constructor = object.constructor; - if (isCallable$4(constructor) && object instanceof constructor) { - return constructor.prototype; - } return object instanceof $Object ? ObjectPrototype : null; - }; - - var fails$8 = fails$l; - var isCallable$3 = isCallable$h; - var isObject$3 = isObject$b; - var getPrototypeOf$1 = objectGetPrototypeOf$1; - var defineBuiltIn$6 = defineBuiltIn$8; - var wellKnownSymbol$7 = wellKnownSymbol$f; - - var ITERATOR$5 = wellKnownSymbol$7('iterator'); - var BUGGY_SAFARI_ITERATORS$1 = false; - - // `%IteratorPrototype%` object - // https://tc39.es/ecma262/#sec-%iteratorprototype%-object - var IteratorPrototype$2, PrototypeOfArrayIteratorPrototype, arrayIterator; - - /* eslint-disable es/no-array-prototype-keys -- safe */ - if ([].keys) { - arrayIterator = [].keys(); - // Safari 8 has buggy iterators w/o `next` - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS$1 = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf$1(getPrototypeOf$1(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype$2 = PrototypeOfArrayIteratorPrototype; - } - } - - var NEW_ITERATOR_PROTOTYPE = !isObject$3(IteratorPrototype$2) || fails$8(function () { - var test = {}; - // FF44- legacy iterators case - return IteratorPrototype$2[ITERATOR$5].call(test) !== test; - }); - - if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$2 = {}; - - // `%IteratorPrototype%[@@iterator]()` method - // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator - if (!isCallable$3(IteratorPrototype$2[ITERATOR$5])) { - defineBuiltIn$6(IteratorPrototype$2, ITERATOR$5, function () { - return this; - }); - } - - var iteratorsCore = { - IteratorPrototype: IteratorPrototype$2, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1 - }; - - var defineProperty$3 = objectDefineProperty.f; - var hasOwn$2 = hasOwnProperty_1; - var wellKnownSymbol$6 = wellKnownSymbol$f; - - var TO_STRING_TAG = wellKnownSymbol$6('toStringTag'); - - var setToStringTag$4 = function (target, TAG, STATIC) { - if (target && !STATIC) target = target.prototype; - if (target && !hasOwn$2(target, TO_STRING_TAG)) { - defineProperty$3(target, TO_STRING_TAG, { configurable: true, value: TAG }); - } - }; - - var IteratorPrototype$1 = iteratorsCore.IteratorPrototype; - var create$2 = objectCreate; - var createPropertyDescriptor$1 = createPropertyDescriptor$5; - var setToStringTag$3 = setToStringTag$4; - var Iterators$3 = iterators; - - var returnThis$1 = function () { return this; }; - - var iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create$2(IteratorPrototype$1, { next: createPropertyDescriptor$1(+!ENUMERABLE_NEXT, next) }); - setToStringTag$3(IteratorConstructor, TO_STRING_TAG, false); - Iterators$3[TO_STRING_TAG] = returnThis$1; - return IteratorConstructor; - }; - - var uncurryThis$8 = functionUncurryThis; - var aCallable$2 = aCallable$4; - - var functionUncurryThisAccessor = function (object, key, method) { - try { - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - return uncurryThis$8(aCallable$2(Object.getOwnPropertyDescriptor(object, key)[method])); - } catch (error) { /* empty */ } - }; - - var isObject$2 = isObject$b; - - var isPossiblePrototype$1 = function (argument) { - return isObject$2(argument) || argument === null; - }; - - var isPossiblePrototype = isPossiblePrototype$1; - - var $String$1 = String; - var $TypeError$4 = TypeError; - - var aPossiblePrototype$1 = function (argument) { - if (isPossiblePrototype(argument)) return argument; - throw new $TypeError$4("Can't set " + $String$1(argument) + ' as a prototype'); - }; - - /* eslint-disable no-proto -- safe */ - var uncurryThisAccessor = functionUncurryThisAccessor; - var isObject$1 = isObject$b; - var requireObjectCoercible$2 = requireObjectCoercible$5; - var aPossiblePrototype = aPossiblePrototype$1; - - // `Object.setPrototypeOf` method - // https://tc39.es/ecma262/#sec-object.setprototypeof - // Works with __proto__ only. Old v8 can't work with null proto objects. - // eslint-disable-next-line es/no-object-setprototypeof -- safe - var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - try { - setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); - setter(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { /* empty */ } - return function setPrototypeOf(O, proto) { - requireObjectCoercible$2(O); - aPossiblePrototype(proto); - if (!isObject$1(O)) return O; - if (CORRECT_SETTER) setter(O, proto); - else O.__proto__ = proto; - return O; - }; - }() : undefined); - - var $$4 = _export; - var call$8 = functionCall; - var FunctionName = functionName; - var isCallable$2 = isCallable$h; - var createIteratorConstructor$1 = iteratorCreateConstructor; - var getPrototypeOf = objectGetPrototypeOf$1; - var setPrototypeOf = objectSetPrototypeOf; - var setToStringTag$2 = setToStringTag$4; - var createNonEnumerableProperty$2 = createNonEnumerableProperty$5; - var defineBuiltIn$5 = defineBuiltIn$8; - var wellKnownSymbol$5 = wellKnownSymbol$f; - var Iterators$2 = iterators; - var IteratorsCore = iteratorsCore; - - var PROPER_FUNCTION_NAME$1 = FunctionName.PROPER; - var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR$4 = wellKnownSymbol$5('iterator'); - var KEYS = 'keys'; - var VALUES = 'values'; - var ENTRIES = 'entries'; - - var returnThis = function () { return this; }; - - var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor$1(IteratorConstructor, NAME, next); - - var getIterationMethod = function (KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND]; - - switch (KIND) { - case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; - case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; - case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; - } - - return function () { return new IteratorConstructor(this); }; - }; - - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR$4] - || IterablePrototype['@@iterator'] - || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - - // fix native - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (!isCallable$2(CurrentIteratorPrototype[ITERATOR$4])) { - defineBuiltIn$5(CurrentIteratorPrototype, ITERATOR$4, returnThis); - } - } - // Set @@toStringTag to native iterators - setToStringTag$2(CurrentIteratorPrototype, TO_STRING_TAG, true); - } - } - - // fix Array.prototype.{ values, @@iterator }.name in V8 / FF - if (PROPER_FUNCTION_NAME$1 && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) { - if (CONFIGURABLE_FUNCTION_NAME) { - createNonEnumerableProperty$2(IterablePrototype, 'name', VALUES); - } else { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { return call$8(nativeIterator, this); }; - } - } - - // export additional methods - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - defineBuiltIn$5(IterablePrototype, KEY, methods[KEY]); - } - } else $$4({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); - } - - // define iterator - if (IterablePrototype[ITERATOR$4] !== defaultIterator) { - defineBuiltIn$5(IterablePrototype, ITERATOR$4, defaultIterator, { name: DEFAULT }); - } - Iterators$2[NAME] = defaultIterator; - - return methods; - }; - - // `CreateIterResultObject` abstract operation - // https://tc39.es/ecma262/#sec-createiterresultobject - var createIterResultObject$3 = function (value, done) { - return { value: value, done: done }; - }; - - var toIndexedObject$1 = toIndexedObject$6; - var addToUnscopables = addToUnscopables$1; - var Iterators$1 = iterators; - var InternalStateModule$2 = internalState; - var defineProperty$2 = objectDefineProperty.f; - var defineIterator$1 = iteratorDefine; - var createIterResultObject$2 = createIterResultObject$3; - var DESCRIPTORS$5 = descriptors; - - var ARRAY_ITERATOR = 'Array Iterator'; - var setInternalState$2 = InternalStateModule$2.set; - var getInternalState$2 = InternalStateModule$2.getterFor(ARRAY_ITERATOR); - - // `Array.prototype.entries` method - // https://tc39.es/ecma262/#sec-array.prototype.entries - // `Array.prototype.keys` method - // https://tc39.es/ecma262/#sec-array.prototype.keys - // `Array.prototype.values` method - // https://tc39.es/ecma262/#sec-array.prototype.values - // `Array.prototype[@@iterator]` method - // https://tc39.es/ecma262/#sec-array.prototype-@@iterator - // `CreateArrayIterator` internal method - // https://tc39.es/ecma262/#sec-createarrayiterator - var es_array_iterator = defineIterator$1(Array, 'Array', function (iterated, kind) { - setInternalState$2(this, { - type: ARRAY_ITERATOR, - target: toIndexedObject$1(iterated), // target - index: 0, // next index - kind: kind // kind - }); - // `%ArrayIteratorPrototype%.next` method - // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next - }, function () { - var state = getInternalState$2(this); - var target = state.target; - var index = state.index++; - if (!target || index >= target.length) { - state.target = undefined; - return createIterResultObject$2(undefined, true); - } - switch (state.kind) { - case 'keys': return createIterResultObject$2(index, false); - case 'values': return createIterResultObject$2(target[index], false); - } return createIterResultObject$2([index, target[index]], false); - }, 'values'); - - // argumentsList[@@iterator] is %ArrayProto_values% - // https://tc39.es/ecma262/#sec-createunmappedargumentsobject - // https://tc39.es/ecma262/#sec-createmappedargumentsobject - var values = Iterators$1.Arguments = Iterators$1.Array; - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables('keys'); - addToUnscopables('values'); - addToUnscopables('entries'); - - // V8 ~ Chrome 45- bug - if (DESCRIPTORS$5 && values.name !== 'values') try { - defineProperty$2(values, 'name', { value: 'values' }); - } catch (error) { /* empty */ } - - var DESCRIPTORS$4 = descriptors; - var uncurryThis$7 = functionUncurryThis; - var call$7 = functionCall; - var fails$7 = fails$l; - var objectKeys$1 = objectKeys$3; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject = toObject$4; - var IndexedObject = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty$1 = Object.defineProperty; - var concat = uncurryThis$7([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails$7(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS$4 && $assign({ b: 1 }, $assign(defineProperty$1({}, 'a', { - enumerable: true, - get: function () { - defineProperty$1(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys$1($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat(objectKeys$1(S), getOwnPropertySymbols(S)) : objectKeys$1(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS$4 || call$7(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $$3 = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $$3({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var DESCRIPTORS$3 = descriptors; - var fails$6 = fails$l; - var uncurryThis$6 = functionUncurryThis; - var objectGetPrototypeOf = objectGetPrototypeOf$1; - var objectKeys = objectKeys$3; - var toIndexedObject = toIndexedObject$6; - var $propertyIsEnumerable = objectPropertyIsEnumerable.f; - - var propertyIsEnumerable = uncurryThis$6($propertyIsEnumerable); - var push$1 = uncurryThis$6([].push); - - // in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys - // of `null` prototype objects - var IE_BUG = DESCRIPTORS$3 && fails$6(function () { - // eslint-disable-next-line es/no-object-create -- safe - var O = Object.create(null); - O[2] = 2; - return !propertyIsEnumerable(O, 2); - }); - - // `Object.{ entries, values }` methods implementation - var createMethod$1 = function (TO_ENTRIES) { - return function (it) { - var O = toIndexedObject(it); - var keys = objectKeys(O); - var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) { - key = keys[i++]; - if (!DESCRIPTORS$3 || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { - push$1(result, TO_ENTRIES ? [key, O[key]] : O[key]); - } - } - return result; - }; - }; - - var objectToArray = { - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - entries: createMethod$1(true), - // `Object.values` method - // https://tc39.es/ecma262/#sec-object.values - values: createMethod$1(false) - }; - - var $$2 = _export; - var $entries = objectToArray.entries; - - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - $$2({ target: 'Object', stat: true }, { - entries: function entries(O) { - return $entries(O); - } - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof$4 = classof$6; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof$4(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn$4 = defineBuiltIn$8; - var toString$5 = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn$4(Object.prototype, 'toString', toString$5, { unsafe: true }); - } - - var classof$3 = classof$6; - - var $String = String; - - var toString$4 = function (argument) { - if (classof$3(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); - return $String(argument); - }; - - var anObject$5 = anObject$a; - - // `RegExp.prototype.flags` getter implementation - // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags - var regexpFlags$1 = function () { - var that = anObject$5(this); - var result = ''; - if (that.hasIndices) result += 'd'; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.unicodeSets) result += 'v'; - if (that.sticky) result += 'y'; - return result; - }; - - var fails$5 = fails$l; - var global$6 = global$g; - - // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var $RegExp$2 = global$6.RegExp; - - var UNSUPPORTED_Y$1 = fails$5(function () { - var re = $RegExp$2('a', 'y'); - re.lastIndex = 2; - return re.exec('abcd') !== null; - }); - - // UC Browser bug - // https://github.com/zloirock/core-js/issues/1008 - var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$5(function () { - return !$RegExp$2('a', 'y').sticky; - }); - - var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$5(function () { - // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = $RegExp$2('^r', 'gy'); - re.lastIndex = 2; - return re.exec('str') !== null; - }); - - var regexpStickyHelpers = { - BROKEN_CARET: BROKEN_CARET, - MISSED_STICKY: MISSED_STICKY, - UNSUPPORTED_Y: UNSUPPORTED_Y$1 - }; - - var fails$4 = fails$l; - var global$5 = global$g; - - // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError - var $RegExp$1 = global$5.RegExp; - - var regexpUnsupportedDotAll = fails$4(function () { - var re = $RegExp$1('.', 's'); - return !(re.dotAll && re.test('\n') && re.flags === 's'); - }); - - var fails$3 = fails$l; - var global$4 = global$g; - - // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError - var $RegExp = global$4.RegExp; - - var regexpUnsupportedNcg = fails$3(function () { - var re = $RegExp('(?b)', 'g'); - return re.exec('b').groups.a !== 'b' || - 'b'.replace(re, '$c') !== 'bc'; - }); - - /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ - /* eslint-disable regexp/no-useless-quantifier -- testing */ - var call$6 = functionCall; - var uncurryThis$5 = functionUncurryThis; - var toString$3 = toString$4; - var regexpFlags = regexpFlags$1; - var stickyHelpers = regexpStickyHelpers; - var shared = shared$4; - var create$1 = objectCreate; - var getInternalState$1 = internalState.get; - var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll; - var UNSUPPORTED_NCG = regexpUnsupportedNcg; - - var nativeReplace = shared('native-string-replace', String.prototype.replace); - var nativeExec = RegExp.prototype.exec; - var patchedExec = nativeExec; - var charAt$3 = uncurryThis$5(''.charAt); - var indexOf = uncurryThis$5(''.indexOf); - var replace$1 = uncurryThis$5(''.replace); - var stringSlice$2 = uncurryThis$5(''.slice); - - var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - call$6(nativeExec, re1, 'a'); - call$6(nativeExec, re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - })(); - - var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; - - // nonparticipating capturing group, copied from es5-shim's String#split patch. - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; - - if (PATCH) { - patchedExec = function exec(string) { - var re = this; - var state = getInternalState$1(re); - var str = toString$3(string); - var raw = state.raw; - var result, reCopy, lastIndex, match, i, object, group; - - if (raw) { - raw.lastIndex = re.lastIndex; - result = call$6(patchedExec, raw, str); - re.lastIndex = raw.lastIndex; - return result; - } - - var groups = state.groups; - var sticky = UNSUPPORTED_Y && re.sticky; - var flags = call$6(regexpFlags, re); - var source = re.source; - var charsAdded = 0; - var strCopy = str; - - if (sticky) { - flags = replace$1(flags, 'y', ''); - if (indexOf(flags, 'g') === -1) { - flags += 'g'; - } - - strCopy = stringSlice$2(str, re.lastIndex); - // Support anchored sticky behavior. - if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt$3(str, re.lastIndex - 1) !== '\n')) { - source = '(?: ' + source + ')'; - strCopy = ' ' + strCopy; - charsAdded++; - } - // ^(? + rx + ) is needed, in combination with some str slicing, to - // simulate the 'y' flag. - reCopy = new RegExp('^(?:' + source + ')', flags); - } - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + source + '$(?!\\s)', flags); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = call$6(nativeExec, sticky ? reCopy : re, strCopy); - - if (sticky) { - if (match) { - match.input = stringSlice$2(match.input, charsAdded); - match[0] = stringSlice$2(match[0], charsAdded); - match.index = re.lastIndex; - re.lastIndex += match[0].length; - } else re.lastIndex = 0; - } else if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ - call$6(nativeReplace, match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - if (match && groups) { - match.groups = object = create$1(null); - for (i = 0; i < groups.length; i++) { - group = groups[i]; - object[group[0]] = match[group[1]]; - } - } - - return match; - }; - } - - var regexpExec$2 = patchedExec; - - var $$1 = _export; - var exec = regexpExec$2; - - // `RegExp.prototype.exec` method - // https://tc39.es/ecma262/#sec-regexp.prototype.exec - $$1({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { - exec: exec - }); - - var call$5 = functionCall; - var hasOwn$1 = hasOwnProperty_1; - var isPrototypeOf$1 = objectIsPrototypeOf; - var regExpFlags = regexpFlags$1; - - var RegExpPrototype$2 = RegExp.prototype; - - var regexpGetFlags = function (R) { - var flags = R.flags; - return flags === undefined && !('flags' in RegExpPrototype$2) && !hasOwn$1(R, 'flags') && isPrototypeOf$1(RegExpPrototype$2, R) - ? call$5(regExpFlags, R) : flags; - }; - - var PROPER_FUNCTION_NAME = functionName.PROPER; - var defineBuiltIn$3 = defineBuiltIn$8; - var anObject$4 = anObject$a; - var $toString$1 = toString$4; - var fails$2 = fails$l; - var getRegExpFlags = regexpGetFlags; - - var TO_STRING = 'toString'; - var RegExpPrototype$1 = RegExp.prototype; - var nativeToString = RegExpPrototype$1[TO_STRING]; - - var NOT_GENERIC = fails$2(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; }); - // FF44- RegExp#toString has a wrong name - var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING; - - // `RegExp.prototype.toString` method - // https://tc39.es/ecma262/#sec-regexp.prototype.tostring - if (NOT_GENERIC || INCORRECT_NAME) { - defineBuiltIn$3(RegExpPrototype$1, TO_STRING, function toString() { - var R = anObject$4(this); - var pattern = $toString$1(R.source); - var flags = $toString$1(getRegExpFlags(R)); - return '/' + pattern + '/' + flags; - }, { unsafe: true }); - } - - var uncurryThis$4 = functionUncurryThis; - var toIntegerOrInfinity = toIntegerOrInfinity$3; - var toString$2 = toString$4; - var requireObjectCoercible$1 = requireObjectCoercible$5; - - var charAt$2 = uncurryThis$4(''.charAt); - var charCodeAt = uncurryThis$4(''.charCodeAt); - var stringSlice$1 = uncurryThis$4(''.slice); - - var createMethod = function (CONVERT_TO_STRING) { - return function ($this, pos) { - var S = toString$2(requireObjectCoercible$1($this)); - var position = toIntegerOrInfinity(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = charCodeAt(S, position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size - || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF - ? CONVERT_TO_STRING - ? charAt$2(S, position) - : first - : CONVERT_TO_STRING - ? stringSlice$1(S, position, position + 2) - : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; - }; - - var stringMultibyte = { - // `String.prototype.codePointAt` method - // https://tc39.es/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod(false), - // `String.prototype.at` method - // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod(true) - }; - - var charAt$1 = stringMultibyte.charAt; - var toString$1 = toString$4; - var InternalStateModule$1 = internalState; - var defineIterator = iteratorDefine; - var createIterResultObject$1 = createIterResultObject$3; - - var STRING_ITERATOR = 'String Iterator'; - var setInternalState$1 = InternalStateModule$1.set; - var getInternalState = InternalStateModule$1.getterFor(STRING_ITERATOR); - - // `String.prototype[@@iterator]` method - // https://tc39.es/ecma262/#sec-string.prototype-@@iterator - defineIterator(String, 'String', function (iterated) { - setInternalState$1(this, { - type: STRING_ITERATOR, - string: toString$1(iterated), - index: 0 - }); - // `%StringIteratorPrototype%.next` method - // https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next - }, function next() { - var state = getInternalState(this); - var string = state.string; - var index = state.index; - var point; - if (index >= string.length) return createIterResultObject$1(undefined, true); - point = charAt$1(string, index); - state.index += point.length; - return createIterResultObject$1(point, false); - }); - - // TODO: Remove from `core-js@4` since it's moved to entry points - - var call$4 = functionCall; - var defineBuiltIn$2 = defineBuiltIn$8; - var regexpExec$1 = regexpExec$2; - var fails$1 = fails$l; - var wellKnownSymbol$4 = wellKnownSymbol$f; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$5; - - var SPECIES = wellKnownSymbol$4('species'); - var RegExpPrototype = RegExp.prototype; - - var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) { - var SYMBOL = wellKnownSymbol$4(KEY); - - var DELEGATES_TO_SYMBOL = !fails$1(function () { - // String methods call symbol-named RegExp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) !== 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - - if (KEY === 'split') { - // We can't use real regex here since it causes deoptimization - // and serious performance degradation in V8 - // https://github.com/zloirock/core-js/issues/306 - re = {}; - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - re.flags = ''; - re[SYMBOL] = /./[SYMBOL]; - } - - re.exec = function () { - execCalled = true; - return null; - }; - - re[SYMBOL](''); - return !execCalled; - }); - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - FORCED - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - var $exec = regexp.exec; - if ($exec === regexpExec$1 || $exec === RegExpPrototype.exec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: call$4(nativeRegExpMethod, regexp, str, arg2) }; - } - return { done: true, value: call$4(nativeMethod, str, regexp, arg2) }; - } - return { done: false }; - }); - - defineBuiltIn$2(String.prototype, KEY, methods[0]); - defineBuiltIn$2(RegExpPrototype, SYMBOL, methods[1]); - } - - if (SHAM) createNonEnumerableProperty$1(RegExpPrototype[SYMBOL], 'sham', true); - }; - - // `SameValue` abstract operation - // https://tc39.es/ecma262/#sec-samevalue - // eslint-disable-next-line es/no-object-is -- safe - var sameValue$1 = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare -- NaN check - return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y; - }; - - var call$3 = functionCall; - var anObject$3 = anObject$a; - var isCallable$1 = isCallable$h; - var classof$2 = classofRaw$2; - var regexpExec = regexpExec$2; - - var $TypeError$3 = TypeError; - - // `RegExpExec` abstract operation - // https://tc39.es/ecma262/#sec-regexpexec - var regexpExecAbstract = function (R, S) { - var exec = R.exec; - if (isCallable$1(exec)) { - var result = call$3(exec, R, S); - if (result !== null) anObject$3(result); - return result; - } - if (classof$2(R) === 'RegExp') return call$3(regexpExec, R, S); - throw new $TypeError$3('RegExp#exec called on incompatible receiver'); - }; - - var call$2 = functionCall; - var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic; - var anObject$2 = anObject$a; - var isNullOrUndefined$1 = isNullOrUndefined$4; - var requireObjectCoercible = requireObjectCoercible$5; - var sameValue = sameValue$1; - var toString = toString$4; - var getMethod$1 = getMethod$3; - var regExpExec = regexpExecAbstract; - - // @@search logic - fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) { - return [ - // `String.prototype.search` method - // https://tc39.es/ecma262/#sec-string.prototype.search - function search(regexp) { - var O = requireObjectCoercible(this); - var searcher = isNullOrUndefined$1(regexp) ? undefined : getMethod$1(regexp, SEARCH); - return searcher ? call$2(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O)); - }, - // `RegExp.prototype[@@search]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@search - function (string) { - var rx = anObject$2(this); - var S = toString(string); - var res = maybeCallNative(nativeSearch, rx, S); - - if (res.done) return res.value; - - var previousLastIndex = rx.lastIndex; - if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; - var result = regExpExec(rx, S); - if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; - return result === null ? -1 : result.index; - } - ]; - }); - - // iterable DOM collections - // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods - var domIterables = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - - // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` - var documentCreateElement = documentCreateElement$2; - - var classList = documentCreateElement('span').classList; - var DOMTokenListPrototype$1 = classList && classList.constructor && classList.constructor.prototype; - - var domTokenListPrototype = DOMTokenListPrototype$1 === Object.prototype ? undefined : DOMTokenListPrototype$1; - - var global$3 = global$g; - var DOMIterables = domIterables; - var DOMTokenListPrototype = domTokenListPrototype; - var ArrayIteratorMethods = es_array_iterator; - var createNonEnumerableProperty = createNonEnumerableProperty$5; - var setToStringTag$1 = setToStringTag$4; - var wellKnownSymbol$3 = wellKnownSymbol$f; - - var ITERATOR$3 = wellKnownSymbol$3('iterator'); - var ArrayValues = ArrayIteratorMethods.values; - - var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { - if (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[ITERATOR$3] !== ArrayValues) try { - createNonEnumerableProperty(CollectionPrototype, ITERATOR$3, ArrayValues); - } catch (error) { - CollectionPrototype[ITERATOR$3] = ArrayValues; - } - setToStringTag$1(CollectionPrototype, COLLECTION_NAME, true); - if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { - createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); - } catch (error) { - CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; - } - } - } - }; - - for (var COLLECTION_NAME in DOMIterables) { - handlePrototype(global$3[COLLECTION_NAME] && global$3[COLLECTION_NAME].prototype, COLLECTION_NAME); - } - - handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); - - var global$2 = global$g; - var DESCRIPTORS$2 = descriptors; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - - // Avoid NodeJS experimental warning - var safeGetBuiltIn$1 = function (name) { - if (!DESCRIPTORS$2) return global$2[name]; - var descriptor = getOwnPropertyDescriptor(global$2, name); - return descriptor && descriptor.value; - }; - - var fails = fails$l; - var wellKnownSymbol$2 = wellKnownSymbol$f; - var DESCRIPTORS$1 = descriptors; - var IS_PURE = isPure; - - var ITERATOR$2 = wellKnownSymbol$2('iterator'); - - var urlConstructorDetection = !fails(function () { - // eslint-disable-next-line unicorn/relative-url-style -- required for testing - var url = new URL('b?a=1&b=2&c=3', 'http://a'); - var params = url.searchParams; - var params2 = new URLSearchParams('a=1&a=2&b=3'); - var result = ''; - url.pathname = 'c%20d'; - params.forEach(function (value, key) { - params['delete']('b'); - result += key + value; - }); - params2['delete']('a', 2); - // `undefined` case is a Chromium 117 bug - // https://bugs.chromium.org/p/v8/issues/detail?id=14222 - params2['delete']('b', undefined); - return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b'))) - || (!params.size && (IS_PURE || !DESCRIPTORS$1)) - || !params.sort - || url.href !== 'http://a/c%20d?a=1&c=3' - || params.get('c') !== '3' - || String(new URLSearchParams('?a=1')) !== 'a=1' - || !params[ITERATOR$2] - // throws in Edge - || new URL('https://a@b').username !== 'a' - || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' - // not punycoded in Edge - || new URL('http://тест').host !== 'xn--e1aybc' - // not escaped in Chrome 62- - || new URL('http://a#б').hash !== '#%D0%B1' - // fails in Chrome 66- - || result !== 'a1c3' - // throws in Safari - || new URL('http://x', undefined).host !== 'x'; - }); - - var makeBuiltIn = makeBuiltInExports; - var defineProperty = objectDefineProperty; - - var defineBuiltInAccessor$1 = function (target, name, descriptor) { - if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); - if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); - return defineProperty.f(target, name, descriptor); - }; - - var defineBuiltIn$1 = defineBuiltIn$8; - - var defineBuiltIns$1 = function (target, src, options) { - for (var key in src) defineBuiltIn$1(target, key, src[key], options); - return target; - }; - - var isPrototypeOf = objectIsPrototypeOf; - - var $TypeError$2 = TypeError; - - var anInstance$1 = function (it, Prototype) { - if (isPrototypeOf(Prototype, it)) return it; - throw new $TypeError$2('Incorrect invocation'); - }; - - var classofRaw = classofRaw$2; - var uncurryThis$3 = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$3(fn); - }; - - var uncurryThis$2 = functionUncurryThisClause; - var aCallable$1 = aCallable$4; - var NATIVE_BIND = functionBindNative; - - var bind$1 = uncurryThis$2(uncurryThis$2.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable$1(fn); - return that === undefined ? fn : NATIVE_BIND ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var classof$1 = classof$6; - var getMethod = getMethod$3; - var isNullOrUndefined = isNullOrUndefined$4; - var Iterators = iterators; - var wellKnownSymbol$1 = wellKnownSymbol$f; - - var ITERATOR$1 = wellKnownSymbol$1('iterator'); - - var getIteratorMethod$2 = function (it) { - if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR$1) - || getMethod(it, '@@iterator') - || Iterators[classof$1(it)]; - }; - - var call$1 = functionCall; - var aCallable = aCallable$4; - var anObject$1 = anObject$a; - var tryToString = tryToString$2; - var getIteratorMethod$1 = getIteratorMethod$2; - - var $TypeError$1 = TypeError; - - var getIterator$1 = function (argument, usingIterator) { - var iteratorMethod = arguments.length < 2 ? getIteratorMethod$1(argument) : usingIterator; - if (aCallable(iteratorMethod)) return anObject$1(call$1(iteratorMethod, argument)); - throw new $TypeError$1(tryToString(argument) + ' is not iterable'); - }; - - var $TypeError = TypeError; - - var validateArgumentsLength$1 = function (passed, required) { - if (passed < required) throw new $TypeError('Not enough arguments'); - return passed; - }; - - var uncurryThis$1 = functionUncurryThis; - - var arraySlice$1 = uncurryThis$1([].slice); - - var arraySlice = arraySlice$1; - - var floor = Math.floor; - - var sort = function (array, comparefn) { - var length = array.length; - - if (length < 8) { - // insertion sort - var i = 1; - var element, j; - - while (i < length) { - j = i; - element = array[i]; - while (j && comparefn(array[j - 1], element) > 0) { - array[j] = array[--j]; - } - if (j !== i++) array[j] = element; - } - } else { - // merge sort - var middle = floor(length / 2); - var left = sort(arraySlice(array, 0, middle), comparefn); - var right = sort(arraySlice(array, middle), comparefn); - var llength = left.length; - var rlength = right.length; - var lindex = 0; - var rindex = 0; - - while (lindex < llength || rindex < rlength) { - array[lindex + rindex] = (lindex < llength && rindex < rlength) - ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++] - : lindex < llength ? left[lindex++] : right[rindex++]; - } - } - - return array; - }; - - var arraySort$1 = sort; - - // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` - - var $ = _export; - var global$1 = global$g; - var safeGetBuiltIn = safeGetBuiltIn$1; - var call = functionCall; - var uncurryThis = functionUncurryThis; - var DESCRIPTORS = descriptors; - var USE_NATIVE_URL = urlConstructorDetection; - var defineBuiltIn = defineBuiltIn$8; - var defineBuiltInAccessor = defineBuiltInAccessor$1; - var defineBuiltIns = defineBuiltIns$1; - var setToStringTag = setToStringTag$4; - var createIteratorConstructor = iteratorCreateConstructor; - var InternalStateModule = internalState; - var anInstance = anInstance$1; - var isCallable = isCallable$h; - var hasOwn = hasOwnProperty_1; - var bind = functionBindContext; - var classof = classof$6; - var anObject = anObject$a; - var isObject = isObject$b; - var $toString = toString$4; - var create = objectCreate; - var createPropertyDescriptor = createPropertyDescriptor$5; - var getIterator = getIterator$1; - var getIteratorMethod = getIteratorMethod$2; - var createIterResultObject = createIterResultObject$3; - var validateArgumentsLength = validateArgumentsLength$1; - var wellKnownSymbol = wellKnownSymbol$f; - var arraySort = arraySort$1; - - var ITERATOR = wellKnownSymbol('iterator'); - var URL_SEARCH_PARAMS = 'URLSearchParams'; - var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); - var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); - - var nativeFetch = safeGetBuiltIn('fetch'); - var NativeRequest = safeGetBuiltIn('Request'); - var Headers = safeGetBuiltIn('Headers'); - var RequestPrototype = NativeRequest && NativeRequest.prototype; - var HeadersPrototype = Headers && Headers.prototype; - var RegExp$1 = global$1.RegExp; - var TypeError$1 = global$1.TypeError; - var decodeURIComponent = global$1.decodeURIComponent; - var encodeURIComponent = global$1.encodeURIComponent; - var charAt = uncurryThis(''.charAt); - var join = uncurryThis([].join); - var push = uncurryThis([].push); - var replace = uncurryThis(''.replace); - var shift = uncurryThis([].shift); - var splice = uncurryThis([].splice); - var split = uncurryThis(''.split); - var stringSlice = uncurryThis(''.slice); - - var plus = /\+/g; - var sequences = Array(4); - - var percentSequence = function (bytes) { - return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp$1('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); - }; - - var percentDecode = function (sequence) { - try { - return decodeURIComponent(sequence); - } catch (error) { - return sequence; - } - }; - - var deserialize = function (it) { - var result = replace(it, plus, ' '); - var bytes = 4; - try { - return decodeURIComponent(result); - } catch (error) { - while (bytes) { - result = replace(result, percentSequence(bytes--), percentDecode); - } - return result; - } - }; - - var find = /[!'()~]|%20/g; - - var replacements = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+' - }; - - var replacer = function (match) { - return replacements[match]; - }; - - var serialize = function (it) { - return replace(encodeURIComponent(it), find, replacer); - }; - - var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { - setInternalState(this, { - type: URL_SEARCH_PARAMS_ITERATOR, - target: getInternalParamsState(params).entries, - index: 0, - kind: kind - }); - }, URL_SEARCH_PARAMS, function next() { - var state = getInternalIteratorState(this); - var target = state.target; - var index = state.index++; - if (!target || index >= target.length) { - state.target = undefined; - return createIterResultObject(undefined, true); - } - var entry = target[index]; - switch (state.kind) { - case 'keys': return createIterResultObject(entry.key, false); - case 'values': return createIterResultObject(entry.value, false); - } return createIterResultObject([entry.key, entry.value], false); - }, true); - - var URLSearchParamsState = function (init) { - this.entries = []; - this.url = null; - - if (init !== undefined) { - if (isObject(init)) this.parseObject(init); - else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init)); - } - }; - - URLSearchParamsState.prototype = { - type: URL_SEARCH_PARAMS, - bindURL: function (url) { - this.url = url; - this.update(); - }, - parseObject: function (object) { - var entries = this.entries; - var iteratorMethod = getIteratorMethod(object); - var iterator, next, step, entryIterator, entryNext, first, second; - - if (iteratorMethod) { - iterator = getIterator(object, iteratorMethod); - next = iterator.next; - while (!(step = call(next, iterator)).done) { - entryIterator = getIterator(anObject(step.value)); - entryNext = entryIterator.next; - if ( - (first = call(entryNext, entryIterator)).done || - (second = call(entryNext, entryIterator)).done || - !call(entryNext, entryIterator).done - ) throw new TypeError$1('Expected sequence with length 2'); - push(entries, { key: $toString(first.value), value: $toString(second.value) }); - } - } else for (var key in object) if (hasOwn(object, key)) { - push(entries, { key: key, value: $toString(object[key]) }); - } - }, - parseQuery: function (query) { - if (query) { - var entries = this.entries; - var attributes = split(query, '&'); - var index = 0; - var attribute, entry; - while (index < attributes.length) { - attribute = attributes[index++]; - if (attribute.length) { - entry = split(attribute, '='); - push(entries, { - key: deserialize(shift(entry)), - value: deserialize(join(entry, '=')) - }); - } - } - } - }, - serialize: function () { - var entries = this.entries; - var result = []; - var index = 0; - var entry; - while (index < entries.length) { - entry = entries[index++]; - push(result, serialize(entry.key) + '=' + serialize(entry.value)); - } return join(result, '&'); - }, - update: function () { - this.entries.length = 0; - this.parseQuery(this.url.query); - }, - updateURL: function () { - if (this.url) this.url.update(); - } - }; - - // `URLSearchParams` constructor - // https://url.spec.whatwg.org/#interface-urlsearchparams - var URLSearchParamsConstructor = function URLSearchParams(/* init */) { - anInstance(this, URLSearchParamsPrototype); - var init = arguments.length > 0 ? arguments[0] : undefined; - var state = setInternalState(this, new URLSearchParamsState(init)); - if (!DESCRIPTORS) this.size = state.entries.length; - }; - - var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; - - defineBuiltIns(URLSearchParamsPrototype, { - // `URLSearchParams.prototype.append` method - // https://url.spec.whatwg.org/#dom-urlsearchparams-append - append: function append(name, value) { - var state = getInternalParamsState(this); - validateArgumentsLength(arguments.length, 2); - push(state.entries, { key: $toString(name), value: $toString(value) }); - if (!DESCRIPTORS) this.length++; - state.updateURL(); - }, - // `URLSearchParams.prototype.delete` method - // https://url.spec.whatwg.org/#dom-urlsearchparams-delete - 'delete': function (name /* , value */) { - var state = getInternalParamsState(this); - var length = validateArgumentsLength(arguments.length, 1); - var entries = state.entries; - var key = $toString(name); - var $value = length < 2 ? undefined : arguments[1]; - var value = $value === undefined ? $value : $toString($value); - var index = 0; - while (index < entries.length) { - var entry = entries[index]; - if (entry.key === key && (value === undefined || entry.value === value)) { - splice(entries, index, 1); - if (value !== undefined) break; - } else index++; - } - if (!DESCRIPTORS) this.size = entries.length; - state.updateURL(); - }, - // `URLSearchParams.prototype.get` method - // https://url.spec.whatwg.org/#dom-urlsearchparams-get - get: function get(name) { - var entries = getInternalParamsState(this).entries; - validateArgumentsLength(arguments.length, 1); - var key = $toString(name); - var index = 0; - for (; index < entries.length; index++) { - if (entries[index].key === key) return entries[index].value; - } - return null; - }, - // `URLSearchParams.prototype.getAll` method - // https://url.spec.whatwg.org/#dom-urlsearchparams-getall - getAll: function getAll(name) { - var entries = getInternalParamsState(this).entries; - validateArgumentsLength(arguments.length, 1); - var key = $toString(name); - var result = []; - var index = 0; - for (; index < entries.length; index++) { - if (entries[index].key === key) push(result, entries[index].value); - } - return result; - }, - // `URLSearchParams.prototype.has` method - // https://url.spec.whatwg.org/#dom-urlsearchparams-has - has: function has(name /* , value */) { - var entries = getInternalParamsState(this).entries; - var length = validateArgumentsLength(arguments.length, 1); - var key = $toString(name); - var $value = length < 2 ? undefined : arguments[1]; - var value = $value === undefined ? $value : $toString($value); - var index = 0; - while (index < entries.length) { - var entry = entries[index++]; - if (entry.key === key && (value === undefined || entry.value === value)) return true; - } - return false; - }, - // `URLSearchParams.prototype.set` method - // https://url.spec.whatwg.org/#dom-urlsearchparams-set - set: function set(name, value) { - var state = getInternalParamsState(this); - validateArgumentsLength(arguments.length, 1); - var entries = state.entries; - var found = false; - var key = $toString(name); - var val = $toString(value); - var index = 0; - var entry; - for (; index < entries.length; index++) { - entry = entries[index]; - if (entry.key === key) { - if (found) splice(entries, index--, 1); - else { - found = true; - entry.value = val; - } - } - } - if (!found) push(entries, { key: key, value: val }); - if (!DESCRIPTORS) this.size = entries.length; - state.updateURL(); - }, - // `URLSearchParams.prototype.sort` method - // https://url.spec.whatwg.org/#dom-urlsearchparams-sort - sort: function sort() { - var state = getInternalParamsState(this); - arraySort(state.entries, function (a, b) { - return a.key > b.key ? 1 : -1; - }); - state.updateURL(); - }, - // `URLSearchParams.prototype.forEach` method - forEach: function forEach(callback /* , thisArg */) { - var entries = getInternalParamsState(this).entries; - var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined); - var index = 0; - var entry; - while (index < entries.length) { - entry = entries[index++]; - boundFunction(entry.value, entry.key, this); - } - }, - // `URLSearchParams.prototype.keys` method - keys: function keys() { - return new URLSearchParamsIterator(this, 'keys'); - }, - // `URLSearchParams.prototype.values` method - values: function values() { - return new URLSearchParamsIterator(this, 'values'); - }, - // `URLSearchParams.prototype.entries` method - entries: function entries() { - return new URLSearchParamsIterator(this, 'entries'); - } - }, { enumerable: true }); - - // `URLSearchParams.prototype[@@iterator]` method - defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' }); - - // `URLSearchParams.prototype.toString` method - // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior - defineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() { - return getInternalParamsState(this).serialize(); - }, { enumerable: true }); - - // `URLSearchParams.prototype.size` getter - // https://github.com/whatwg/url/pull/734 - if (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', { - get: function size() { - return getInternalParamsState(this).entries.length; - }, - configurable: true, - enumerable: true - }); - - setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); - - $({ global: true, constructor: true, forced: !USE_NATIVE_URL }, { - URLSearchParams: URLSearchParamsConstructor - }); - - // Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams` - if (!USE_NATIVE_URL && isCallable(Headers)) { - var headersHas = uncurryThis(HeadersPrototype.has); - var headersSet = uncurryThis(HeadersPrototype.set); - - var wrapRequestOptions = function (init) { - if (isObject(init)) { - var body = init.body; - var headers; - if (classof(body) === URL_SEARCH_PARAMS) { - headers = init.headers ? new Headers(init.headers) : new Headers(); - if (!headersHas(headers, 'content-type')) { - headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); - } - return create(init, { - body: createPropertyDescriptor(0, $toString(body)), - headers: createPropertyDescriptor(0, headers) - }); - } - } return init; - }; - - if (isCallable(nativeFetch)) { - $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, { - fetch: function fetch(input /* , init */) { - return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); - } - }); - } - - if (isCallable(NativeRequest)) { - var RequestConstructor = function Request(input /* , init */) { - anInstance(this, RequestPrototype); - return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); - }; - - RequestPrototype.constructor = RequestConstructor; - RequestConstructor.prototype = RequestPrototype; - - $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, { - Request: RequestConstructor - }); + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } @@ -22160,11 +6810,13 @@ * @update: zhixin wen */ - Object.assign($$6.fn.bootstrapTable.defaults, { + var Utils = $.fn.bootstrapTable.utils; + Object.assign($.fn.bootstrapTable.defaults, { addrbar: false, - addrPrefix: '' + addrPrefix: '', + addrCustomParams: {} }); - $$6.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { + $.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { function _class() { _classCallCheck(this, _class); return _callSuper(this, _class, arguments); @@ -22192,10 +6844,10 @@ }, { key: "getDefaultOptionValue", value: function getDefaultOptionValue(optionName, prefixName) { - if (this.options[optionName] !== $$6.BootstrapTable.DEFAULTS[optionName]) { + if (this.options[optionName] !== $.BootstrapTable.DEFAULTS[optionName]) { return this.options[optionName]; } - return this.searchParams.get("".concat(this.options.addrPrefix || '').concat(prefixName)) || $$6.BootstrapTable.DEFAULTS[optionName]; + return this.searchParams.get("".concat(this.options.addrPrefix || '').concat(prefixName)) || $.BootstrapTable.DEFAULTS[optionName]; } }, { key: "initAddrbar", @@ -22248,6 +6900,13 @@ this.searchParams.set(key, value); } } + var customParams = Utils.calculateObjectValue(this.options, this.options.addrCustomParams, [], {}); + for (var _i2 = 0, _Object$entries2 = Object.entries(customParams); _i2 < _Object$entries2.length; _i2++) { + var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2), + _key2 = _Object$entries2$_i[0], + _value = _Object$entries2$_i[1]; + this.searchParams.set(_key2, _value); + } var url = "?".concat(this.searchParams.toString()); if (location.hash) { url += location.hash; @@ -22261,7 +6920,7 @@ this.options.searchText = text || ''; } }]); - }($$6.BootstrapTable); + }($.BootstrapTable); })); @@ -23002,14 +7661,58 @@ T=Gr(p[0],false);k=p.index+p[0].length}break;case"s":break;case"database-range": if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Error("Unsupported ZIP file")}var a=Nr(e);var n=Kn(Or(e,"[Content_Types].xml"));var i=false;var s,f;if(n.workbooks.length===0){f="xl/workbook.xml";if(Rr(e,f,true))n.workbooks.push(f)}if(n.workbooks.length===0){f="xl/workbook.bin";if(!Rr(e,f,true))throw new Error("Could not find workbook");n.workbooks.push(f);i=true}if(n.workbooks[0].slice(-3)=="bin")i=true;var o={};var c={};if(!r.bookSheets&&!r.bookProps){Cd=[];if(n.sst)try{Cd=Tm(Rr(e,jg(n.sst)),n.sst,r)}catch(l){if(r.WTF)throw l}if(r.cellStyles&&n.themes.length)o=km(Or(e,n.themes[0].replace(/^\//,""),true)||"",n.themes[0],r);if(n.style)c=wm(Rr(e,jg(n.style)),n.style,o,r)}n.links.map(function(t){try{var a=Qn(Or(e,Zn(jg(t))),t);return Sm(Rr(e,jg(t)),a,t,r)}catch(n){}});var u=vm(Rr(e,jg(n.workbooks[0])),n.workbooks[0],r);var h={},d="";if(n.coreprops.length){d=Rr(e,jg(n.coreprops[0]),true);if(d)h=ui(d);if(n.extprops.length!==0){d=Rr(e,jg(n.extprops[0]),true);if(d)bi(d,h,r)}}var v={};if(!r.bookSheets||r.bookProps){if(n.custprops.length!==0){d=Or(e,jg(n.custprops[0]),true);if(d)v=ki(d,r)}}var p={};if(r.bookSheets||r.bookProps){if(u.Sheets)s=u.Sheets.map(function I(e){return e.name});else if(h.Worksheets&&h.SheetNames.length>0)s=h.SheetNames;if(r.bookProps){p.Props=h;p.Custprops=v}if(r.bookSheets&&typeof s!=="undefined")p.SheetNames=s;if(r.bookSheets?p.SheetNames:r.bookProps)return p}s={};var m={};if(r.bookDeps&&n.calcchain)m=ym(Rr(e,jg(n.calcchain)),n.calcchain,r);var b=0;var g={};var w,k;{var T=u.Sheets;h.Worksheets=T.length;h.SheetNames=[];for(var E=0;E!=T.length;++E){h.SheetNames[E]=T[E].name}}var y=i?"bin":"xml";var S=n.workbooks[0].lastIndexOf("/");var _=(n.workbooks[0].slice(0,S+1)+"_rels/"+n.workbooks[0].slice(S+1)+".rels").replace(/^\//,"");if(!xr(e,_))_="xl/_rels/workbook."+y+".rels";var A=Qn(Or(e,_,true),_.replace(/_rels.*/,"s5s"));if((n.metadata||[]).length>=1){r.xlmeta=_m(Rr(e,jg(n.metadata[0])),n.metadata[0],r)}if((n.people||[]).length>=1){r.people=lu(Rr(e,jg(n.people[0])),r)}if(A)A=Vg(A,u.Sheets);var x=Rr(e,"xl/worksheets/sheet.xml",true)?1:0;e:for(b=0;b!=h.Worksheets;++b){var C="sheet";if(A&&A[b]){w="xl/"+A[b][1].replace(/[\/]?xl\//,"");if(!xr(e,w))w=A[b][1];if(!xr(e,w))w=_.replace(/_rels\/.*$/,"")+A[b][1];C=A[b][2]}else{w="xl/worksheets/sheet"+(b+1-x)+"."+y;w=w.replace(/sheet0\./,"sheet.")}k=w.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels");if(r&&r.sheets!=null)switch(typeof r.sheets){case"number":if(b!=r.sheets)continue e;break;case"string":if(h.SheetNames[b].toLowerCase()!=r.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(r.sheets)){var R=false;for(var O=0;O!=r.sheets.length;++O){if(typeof r.sheets[O]=="number"&&r.sheets[O]==b)R=1;if(typeof r.sheets[O]=="string"&&r.sheets[O].toLowerCase()==h.SheetNames[b].toLowerCase())R=1}if(!R)continue e};}Gg(e,w,k,h.SheetNames[b],b,g,s,C,r,u,o,c)}p={Directory:n,Workbook:u,Props:h,Custprops:v,Deps:m,Sheets:s,SheetNames:h.SheetNames,Strings:Cd,Styles:c,Themes:o,SSF:gr(X)};if(r&&r.bookFiles){if(e.files){p.keys=a;p.files=e.files}else{p.keys=[];p.files={};e.FullPaths.forEach(function(r,t){r=r.replace(/^Root Entry[\/]/,"");p.keys.push(r);p.files[r]=e.FileIndex[t]})}}if(r&&r.bookVBA){if(n.vba.length>0)p.vbaraw=Rr(e,jg(n.vba[0]),true);else if(n.defaults&&n.defaults.bin===gu)p.vbaraw=Rr(e,"xl/vbaProject.bin",true)}return p}function $g(e,r){var t=r||{};var a="Workbook",n=Ke.find(e,a);try{a="/!DataSpaces/Version";n=Ke.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);Ko(n.content);a="/!DataSpaces/DataSpaceMap";n=Ke.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var i=qo(n.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace";n=Ke.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var s=Zo(n.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+a);a="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary";n=Ke.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);ec(n.content)}catch(f){}a="/EncryptionInfo";n=Ke.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var o=ac(n.content);a="/EncryptedPackage";n=Ke.find(e,a);if(!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);if(o[0]==4&&typeof decrypt_agile!=="undefined")return decrypt_agile(o[1],n.content,t.password||"",t);if(o[0]==2&&typeof decrypt_std76!=="undefined")return decrypt_std76(o[1],n.content,t.password||"",t);throw new Error("File is password-protected")}function Yg(e,r){if(r.bookType=="ods")return tg(e,r);if(r.bookType=="numbers")return Ug(e,r);if(r.bookType=="xlsb")return Kg(e,r);return Jg(e,r)}function Kg(e,r){au=1024;if(e&&!e.SSF){e.SSF=gr(X)}if(e&&e.SSF){ze();He(e.SSF);r.revssf=nr(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(Od)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t=r.bookType=="xlsb"?"bin":"xml";var a=Tu.indexOf(r.bookType)>-1;var n=Yn();Hg(r=r||{});var i=Dr();var s="",f=0;r.cellXfs=[];Dd(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";Fr(i,s,di(e.Props,r));n.coreprops.push(s);ri(r.rels,2,s,qn.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var o=[];for(var c=0;c0){s="docProps/custom.xml";Fr(i,s,Ti(e.Custprops,r));n.custprops.push(s);ri(r.rels,4,s,qn.CUST_PROPS)}for(f=1;f<=e.SheetNames.length;++f){var l={"!id":{}};var u=e.Sheets[e.SheetNames[f-1]];var h=(u||{})["!type"]||"sheet";switch(h){case"chart":;default:s="xl/worksheets/sheet"+f+"."+t;Fr(i,s,xm(f-1,s,r,e,l));n.sheets.push(s);ri(r.wbrels,-1,"worksheets/sheet"+f+"."+t,qn.WS[0]);}if(u){var d=u["!comments"];var v=false;var p="";if(d&&d.length>0){p="xl/comments"+f+"."+t;Fr(i,p,Im(d,p,r));n.comments.push(p);ri(l,-1,"../comments"+f+"."+t,qn.CMNT);v=true}if(u["!legacy"]){if(v)Fr(i,"xl/drawings/vmlDrawing"+f+".vml",nu(f,u["!comments"]))}delete u["!comments"];delete u["!legacy"]}if(l["!id"].rId1)Fr(i,Zn(s),ei(l))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;Fr(i,s,Om(r.Strings,s,r));n.strs.push(s);ri(r.wbrels,-1,"sharedStrings."+t,qn.SST)}s="xl/workbook."+t;Fr(i,s,Am(e,s,r));n.workbooks.push(s);ri(r.rels,1,s,qn.WB);s="xl/theme/theme1.xml";Fr(i,s,Il(e.Themes,r));n.themes.push(s);ri(r.wbrels,-1,"theme/theme1.xml",qn.THEME);s="xl/styles."+t;Fr(i,s,Rm(e,s,r));n.styles.push(s);ri(r.wbrels,-1,"styles."+t,qn.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";Fr(i,s,e.vbaraw);n.vba.push(s);ri(r.wbrels,-1,"vbaProject.bin",qn.VBA)}s="xl/metadata."+t;Fr(i,s,Nm(s));n.metadata.push(s);ri(r.wbrels,-1,"metadata."+t,qn.XLMETA);Fr(i,"[Content_Types].xml",Jn(n,r));Fr(i,"_rels/.rels",ei(r.rels));Fr(i,"xl/_rels/workbook."+t+".rels",ei(r.wbrels));delete r.revssf;delete r.ssf;return i}function Jg(e,r){au=1024;if(e&&!e.SSF){e.SSF=gr(X)}if(e&&e.SSF){ze();He(e.SSF);r.revssf=nr(e.SSF);r.revssf[e.SSF[65535]]=0;r.ssf=e.SSF}r.rels={};r.wbrels={};r.Strings=[];r.Strings.Count=0;r.Strings.Unique=0;if(Od)r.revStrings=new Map;else{r.revStrings={};r.revStrings.foo=[];delete r.revStrings.foo}var t="xml";var a=Tu.indexOf(r.bookType)>-1;var n=Yn();Hg(r=r||{});var i=Dr();var s="",f=0;r.cellXfs=[];Dd(r.cellXfs,{},{revssf:{General:0}});if(!e.Props)e.Props={};s="docProps/core.xml";Fr(i,s,di(e.Props,r));n.coreprops.push(s);ri(r.rels,2,s,qn.CORE_PROPS);s="docProps/app.xml";if(e.Props&&e.Props.SheetNames){}else if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{var o=[];for(var c=0;c0){s="docProps/custom.xml";Fr(i,s,Ti(e.Custprops,r));n.custprops.push(s);ri(r.rels,4,s,qn.CUST_PROPS)}var l=["SheetJ5"];r.tcid=0;for(f=1;f<=e.SheetNames.length;++f){var u={"!id":{}};var h=e.Sheets[e.SheetNames[f-1]];var d=(h||{})["!type"]||"sheet";switch(d){case"chart":;default:s="xl/worksheets/sheet"+f+"."+t;Fr(i,s,pv(f-1,r,e,u));n.sheets.push(s);ri(r.wbrels,-1,"worksheets/sheet"+f+"."+t,qn.WS[0]);}if(h){var v=h["!comments"];var p=false;var m="";if(v&&v.length>0){var b=false;v.forEach(function(e){e[1].forEach(function(e){if(e.T==true)b=true})});if(b){m="xl/threadedComments/threadedComment"+f+"."+t;Fr(i,m,cu(v,l,r));n.threadedcomments.push(m);ri(u,-1,"../threadedComments/threadedComment"+f+"."+t,qn.TCMNT)}m="xl/comments"+f+"."+t;Fr(i,m,fu(v,r));n.comments.push(m);ri(u,-1,"../comments"+f+"."+t,qn.CMNT);p=true}if(h["!legacy"]){if(p)Fr(i,"xl/drawings/vmlDrawing"+f+".vml",nu(f,h["!comments"]))}delete h["!comments"];delete h["!legacy"]}if(u["!id"].rId1)Fr(i,Zn(s),ei(u))}if(r.Strings!=null&&r.Strings.length>0){s="xl/sharedStrings."+t;Fr(i,s,Ho(r.Strings,r));n.strs.push(s);ri(r.wbrels,-1,"sharedStrings."+t,qn.SST)}s="xl/workbook."+t;Fr(i,s,rm(e,r));n.workbooks.push(s);ri(r.rels,1,s,qn.WB);s="xl/theme/theme1.xml";Fr(i,s,Il(e.Themes,r));n.themes.push(s);ri(r.wbrels,-1,"theme/theme1.xml",qn.THEME);s="xl/styles."+t;Fr(i,s,$c(e,r));n.styles.push(s);ri(r.wbrels,-1,"styles."+t,qn.STY);if(e.vbaraw&&a){s="xl/vbaProject.bin";Fr(i,s,e.vbaraw);n.vba.push(s);ri(r.wbrels,-1,"vbaProject.bin",qn.VBA)}s="xl/metadata."+t;Fr(i,s,Jl());n.metadata.push(s);ri(r.wbrels,-1,"metadata."+t,qn.XLMETA);if(l.length>1){s="xl/persons/person.xml";Fr(i,s,uu(l,r));n.people.push(s);ri(r.wbrels,-1,"persons/person.xml",qn.PEOPLE)}Fr(i,"[Content_Types].xml",Jn(n,r));Fr(i,"_rels/.rels",ei(r.rels));Fr(i,"xl/_rels/workbook."+t+".rels",ei(r.wbrels));delete r.revssf;delete r.ssf;return i}function qg(e,r){var t="";switch((r||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":t=k(e.slice(0,12));break;case"binary":t=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(r&&r.type||"undefined"));}return[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3),t.charCodeAt(4),t.charCodeAt(5),t.charCodeAt(6),t.charCodeAt(7)]}function Zg(e,r){if(Ke.find(e,"EncryptedPackage"))return $g(e,r);return vb(e,r)}function Qg(e,r){var t,a=e;var n=r||{};if(!n.type)n.type=T&&Buffer.isBuffer(e)?"buffer":"base64";t=Pr(a,n);return Xg(t,n)}function ew(e,r){var t=0;e:while(t=2&&n[3]===0)return Co.to_workbook(a,t);if(n[2]===0&&(n[3]===8||n[3]===9))return Co.to_workbook(a,t)}break;case 3:;case 131:;case 139:;case 140:return Eo.to_workbook(a,t);case 123:if(n[1]===92&&n[2]===114&&n[3]===116)return mc.to_workbook(a,t);break;case 10:;case 13:;case 32:return rw(a,t);case 137:if(n[1]===80&&n[2]===78&&n[3]===71)throw new Error("PNG Image File is not a spreadsheet");break;}if(To.indexOf(n[0])>-1&&n[2]<=12&&n[3]<=31)return Eo.to_workbook(a,t);return nw(e,a,t,i)}function sw(e,r){var t=r||{};t.type="file";return iw(e,t)}function fw(e,r){switch(r.type){case"base64":;case"binary":break;case"buffer":;case"array":r.type="";break;case"file":return Qe(r.file,Ke.write(e,{type:T?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");default:throw new Error("Unrecognized type "+r.type);}return Ke.write(e,r)}function ow(e,r){var t=gr(r||{});var a=Yg(e,t);return lw(a,t)}function cw(e,r){var t=gr(r||{});var a=Jg(e,t);return lw(a,t)}function lw(e,r){var t={};var a=T?"nodebuffer":typeof Uint8Array!=="undefined"?"array":"string";if(r.compression)t.compression="DEFLATE";if(r.password)t.type=a;else switch(r.type){case"base64":t.type="base64";break;case"binary":t.type="string";break;case"string":throw new Error("'string' output type invalid for '"+r.bookType+"' files");case"buffer":;case"file":t.type=a;break;default:throw new Error("Unrecognized type "+r.type);}var n=e.FullPaths?Ke.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[t.type]||t.type,compression:!!r.compression}):e.generate(t);if(typeof Deno!=="undefined"){if(typeof n=="string"){if(r.type=="binary"||r.type=="base64")return n;n=new Uint8Array(A(n))}}if(r.password&&typeof encrypt_agile!=="undefined")return fw(encrypt_agile(n,r.password),r);if(r.type==="file")return Qe(r.file,n);return r.type=="string"?ct(n):n}function uw(e,r){var t=r||{};var a=pb(e,t);return fw(a,t)}function hw(e,r,t){if(!t)t="";var a=t+e;switch(r.type){case"base64":return w(lt(a));case"binary":return lt(a);case"string":return e;case"file":return Qe(r.file,a,"utf8");case"buffer":{if(T)return E(a,"utf8");else if(typeof TextEncoder!=="undefined")return(new TextEncoder).encode(a);else return hw(a,{type:"binary"}).split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function dw(e,r){switch(r.type){case"base64":return w(e);case"binary":return e;case"string":return e;case"file":return Qe(r.file,e,"binary");case"buffer":{if(T)return E(e,"binary");else return e.split("").map(function(e){return e.charCodeAt(0)})};}throw new Error("Unrecognized type "+r.type)}function vw(e,r){switch(r.type){case"string":;case"base64":;case"binary":var t="";for(var a=0;a0)n=0;var u=Ta(o.s.r);var h=[];var d=[];var v=0,p=0;var m=Array.isArray(e);var b=o.s.r,g=0;var w={};if(m&&!e[b])e[b]=[];var k=c.skipHidden&&e["!cols"]||[];var T=c.skipHidden&&e["!rows"]||[];for(g=o.s.c;g<=o.e.c;++g){if((k[g]||{}).hidden)continue;h[g]=_a(g);t=m?e[b][g]:e[h[g]+u];switch(a){case 1:i[g]=g-o.s.c;break;case 2:i[g]=h[g];break;case 3:i[g]=c.header[g-o.s.c];break;default:if(t==null)t={w:"__EMPTY",t:"s"};f=s=Pa(t,null,c);p=w[s]||0;if(!p)w[s]=1;else{do{f=s+"_"+p++}while(w[f]);w[s]=p;w[f]=1}i[g]=f;}}for(b=o.s.r+n;b<=o.e.r;++b){if((T[b]||{}).hidden)continue;var E=Tw(e,o,b,h,a,i,m,c);if(E.isempty===false||(a===1?c.blankrows!==false:!!c.blankrows))d[v++]=E.row}d.length=v;return d}var yw=/"/g;function Sw(e,r,t,a,n,i,s,f){var o=true;var c=[],l="",u=Ta(t);for(var h=r.s.c;h<=r.e.c;++h){if(!a[h])continue;var d=f.dense?(e[t]||[])[h]:e[a[h]+u];if(d==null)l="";else if(d.v!=null){o=false;l=""+(f.rawNumbers&&d.t=="n"?d.v:Pa(d,null,f));for(var v=0,p=0;v!==l.length;++v)if((p=l.charCodeAt(v))===n||p===i||p===34||f.forceQuotes){l='"'+l.replace(yw,'""')+'"';break}if(l=="ID")l='"ID"'}else if(d.f!=null&&!d.F){o=false;l="="+d.f;if(l.indexOf(",")>=0)l='"'+l.replace(yw,'""')+'"'}else l="";c.push(l)}if(f.blankrows===false&&o)return null;return c.join(s)}function _w(e,r){var t=[];var a=r==null?{}:r;if(e==null||e["!ref"]==null)return"";var n=Fa(e["!ref"]);var i=a.FS!==undefined?a.FS:",",s=i.charCodeAt(0);var f=a.RS!==undefined?a.RS:"\n",o=f.charCodeAt(0);var c=new RegExp((i=="|"?"\\|":i)+"+$");var l="",u=[];a.dense=Array.isArray(e);var h=a.skipHidden&&e["!cols"]||[];var d=a.skipHidden&&e["!rows"]||[];for(var v=n.s.c;v<=n.e.c;++v)if(!(h[v]||{}).hidden)u[v]=_a(v);var p=0;for(var m=n.s.r;m<=n.e.r;++m){if((d[m]||{}).hidden)continue;l=Sw(e,n,m,u,s,o,i,a);if(l==null){continue}if(a.strip)l=l.replace(c,"");if(l||a.blankrows!==false)t.push((p++?f:"")+l)}delete a.dense;return t.join("")}function Aw(e,r){if(!r)r={};r.FS="\t";r.RS="\n";var t=_w(e,r);if(typeof a=="undefined"||r.type=="string")return t;var n=a.utils.encode(1200,t,"str");return String.fromCharCode(255)+String.fromCharCode(254)+n}function xw(e){var r="",t,a="";if(e==null||e["!ref"]==null)return[];var n=Fa(e["!ref"]),i="",s=[],f;var o=[];var c=Array.isArray(e);for(f=n.s.c;f<=n.e.c;++f)s[f]=_a(f);for(var l=n.s.r;l<=n.e.r;++l){i=Ta(l);for(f=n.s.c;f<=n.e.c;++f){r=s[f]+i;t=c?(e[l]||[])[f]:e[r];a="";if(t===undefined)continue;else if(t.F!=null){r=t.F;if(!t.f)continue;a=t.f;if(r.indexOf(":")==-1)r=r+":"+r}if(t.f!=null)a=t.f;else if(t.t=="z")continue;else if(t.t=="n"&&t.v!=null)a=""+t.v;else if(t.t=="b")a=t.v?"TRUE":"FALSE";else if(t.w!==undefined)a="'"+t.w;else if(t.v===undefined)continue;else if(t.t=="s")a="'"+t.v;else a=""+t.v;o[o.length]=r+"="+a}}return o}function Cw(e,r,t){var a=t||{};var n=+!a.skipHeader;var i=e||{};var s=0,f=0;if(i&&a.origin!=null){if(typeof a.origin=="number")s=a.origin;else{var o=typeof a.origin=="string"?Ra(a.origin):a.origin;s=o.r;f=o.c}}var c;var l={s:{c:0,r:0},e:{c:f,r:s+r.length-1+n}};if(i["!ref"]){var u=Fa(i["!ref"]);l.e.c=Math.max(l.e.c,u.e.c);l.e.r=Math.max(l.e.r,u.e.r);if(s==-1){s=u.e.r+1;l.e.r=s+r.length-1+n}}else{if(s==-1){s=0;l.e.r=r.length-1+n}}var h=a.header||[],d=0;r.forEach(function(e,r){rr(e).forEach(function(t){if((d=h.indexOf(t))==-1)h[d=h.length]=t;var o=e[t];var l="z";var u="";var v=Oa({c:f+d,r:s+r+n});c=Ow(i,v);if(o&&typeof o==="object"&&!(o instanceof Date)){i[v]=o}else{if(typeof o=="number")l="n";else if(typeof o=="boolean")l="b";else if(typeof o=="string")l="s";else if(o instanceof Date){l="d";if(!a.cellDates){l="n";o=fr(o)}u=a.dateNF||X[14]}else if(o===null&&a.nullError){l="e";o=0}if(!c)i[v]=c={t:l,v:o};else{c.t=l;c.v=o;delete c.w;delete c.R;if(u)c.z=u}if(u)c.z=u}})});l.e.c=Math.max(l.e.c,f+h.length-1);var v=Ta(s);if(n)for(d=0;d=0&&e.SheetNames.length>r)return r;throw new Error("Cannot find sheet # "+r)}else if(typeof r=="string"){var t=e.SheetNames.indexOf(r);if(t>-1)return t;throw new Error("Cannot find sheet name |"+r+"|")}else throw new Error("Cannot find sheet |"+r+"|")}function Nw(){return{SheetNames:[],Sheets:{}}}function Fw(e,r,t,a){var n=1;if(!t)for(;n<=65535;++n,t=undefined)if(e.SheetNames.indexOf(t="Sheet"+n)==-1)break;if(!t||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(a&&e.SheetNames.indexOf(t)>=0){var i=t.match(/(^.*?)(\d+)$/);n=i&&+i[2]||0;var s=i&&i[1]||t;for(++n;n<=65535;++n)if(e.SheetNames.indexOf(t=s+n)==-1)break}Jp(t);if(e.SheetNames.indexOf(t)>=0)throw new Error("Worksheet with name |"+t+"| already exists!");e.SheetNames.push(t);e.Sheets[t]=r;return t}function Dw(e,r,t){if(!e.Workbook)e.Workbook={};if(!e.Workbook.Sheets)e.Workbook.Sheets=[];var a=Iw(e,r);if(!e.Workbook.Sheets[a])e.Workbook.Sheets[a]={};switch(t){case 0:;case 1:;case 2:break;default:throw new Error("Bad sheet visibility setting "+t);}e.Workbook.Sheets[a].Hidden=t}function Pw(e,r){e.z=r;return e}function Lw(e,r,t){if(!r){delete e.l}else{e.l={Target:r};if(t)e.l.Tooltip=t}return e}function Mw(e,r,t){return Lw(e,"#"+r,t)}function Uw(e,r,t){if(!e.c)e.c=[];e.c.push({t:r,a:t||"SheetJS"})}function Bw(e,r,t,a){var n=typeof r!="string"?r:Fa(r);var i=typeof r=="string"?r:Na(r);for(var s=n.s.r;s<=n.e.r;++s)for(var f=n.s.c;f<=n.e.c;++f){var o=Ow(e,s,f);o.t="n";o.F=i;delete o.v;if(s==n.s.r&&f==n.s.c){o.f=t;if(a)o.D=true}}return e}var Ww={encode_col:_a,encode_row:Ta,encode_cell:Oa,encode_range:Na,decode_col:Sa,decode_row:ka,split_cell:Ca,decode_cell:Ra,decode_range:Ia,format_cell:Pa,sheet_add_aoa:Ma,sheet_add_json:Cw,sheet_add_dom:Gb,aoa_to_sheet:Ua,json_to_sheet:Rw,table_to_sheet:jb,table_to_book:Xb,sheet_to_csv:_w,sheet_to_txt:Aw,sheet_to_json:Ew,sheet_to_html:Vb,sheet_to_formulae:xw,sheet_to_row_object_array:Ew,sheet_get_cell:Ow,book_new:Nw,book_append_sheet:Fw,book_set_sheet_visibility:Dw,cell_set_number_format:Pw,cell_set_hyperlink:Lw,cell_set_internal_link:Mw,cell_add_comment:Uw,sheet_set_array_formula:Bw,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};var Hw;function zw(e){Hw=e}function Vw(e,r){var t=Hw();var a=r==null?{}:r;if(e==null||e["!ref"]==null){t.push(null);return t}var n=Fa(e["!ref"]);var i=a.FS!==undefined?a.FS:",",s=i.charCodeAt(0);var f=a.RS!==undefined?a.RS:"\n",o=f.charCodeAt(0);var c=new RegExp((i=="|"?"\\|":i)+"+$");var l="",u=[];a.dense=Array.isArray(e);var h=a.skipHidden&&e["!cols"]||[];var d=a.skipHidden&&e["!rows"]||[];for(var v=n.s.c;v<=n.e.c;++v)if(!(h[v]||{}).hidden)u[v]=_a(v);var p=n.s.r;var m=false,b=0;t._read=function(){if(!m){m=true;return t.push("\ufeff")}while(p<=n.e.r){++p;if((d[p-1]||{}).hidden)continue;l=Sw(e,n,p-1,u,s,o,i,a);if(l!=null){if(a.strip)l=l.replace(c,"");if(l||a.blankrows!==false)return t.push((b++?f:"")+l)}}return t.push(null)};return t}function Gw(e,r){var t=Hw();var a=r||{};var n=a.header!=null?a.header:Bb;var i=a.footer!=null?a.footer:Wb;t.push(n);var s=Ia(e["!ref"]);a.dense=Array.isArray(e);t.push(zb(e,s,a));var f=s.s.r;var o=false;t._read=function(){if(f>s.e.r){if(!o){o=true;t.push("
"+i)}return t.push(null)}while(f<=s.e.r){t.push(Ub(e,s,f,a));++f;break}};return t}function jw(e,r){var t=Hw({objectMode:true});if(e==null||e["!ref"]==null){t.push(null);return t}var a={t:"n",v:0},n=0,i=1,s=[],f=0,o="";var c={s:{r:0,c:0},e:{r:0,c:0}};var l=r||{};var u=l.range!=null?l.range:e["!ref"];if(l.header===1)n=1;else if(l.header==="A")n=2;else if(Array.isArray(l.header))n=3;switch(typeof u){case"string":c=Fa(u);break;case"number":c=Fa(e["!ref"]);c.s.r=u;break;default:c=u;}if(n>0)i=0;var h=Ta(c.s.r);var d=[];var v=0;var p=Array.isArray(e);var m=c.s.r,b=0;var g={};if(p&&!e[m])e[m]=[];var w=l.skipHidden&&e["!cols"]||[];var k=l.skipHidden&&e["!rows"]||[];for(b=c.s.c;b<=c.e.c;++b){if((w[b]||{}).hidden)continue;d[b]=_a(b);a=p?e[m][b]:e[d[b]+h];switch(n){case 1:s[b]=b-c.s.c;break;case 2:s[b]=d[b];break;case 3:s[b]=l.header[b-c.s.c];break;default:if(a==null)a={w:"__EMPTY",t:"s"};o=f=Pa(a,null,l);v=g[f]||0;if(!v)g[f]=1;else{do{o=f+"_"+v++}while(g[o]);g[f]=v;g[o]=1}s[b]=o;}}m=c.s.r+i;t._read=function(){while(m<=c.e.r){if((k[m-1]||{}).hidden)continue;var r=Tw(e,c,m,d,n,s,p,l);++m;if(r.isempty===false||(n===1?l.blankrows!==false:!!l.blankrows)){t.push(r.row);return}}return t.push(null)};return t}var Xw={to_json:jw,to_html:Gw,to_csv:Vw,set_readable:zw};if(typeof vb!=="undefined")e.parse_xlscfb=vb;e.parse_zip=Xg;e.read=iw;e.readFile=sw;e.readFileSync=sw;e.write=mw;e.writeFile=gw;e.writeFileSync=gw;e.writeFileAsync=kw;e.utils=Ww;e.writeXLSX=pw;e.writeFileXLSX=ww;e.SSF=Ve;if(typeof Xw!=="undefined")e.stream=Xw;if(typeof Ke!=="undefined")e.CFB=Ke;if(typeof require!=="undefined"){var $w=undefined;if(($w||{}).Readable)zw($w.Readable)}}if(typeof exports!=="undefined")make_xlsx_lib(exports);else if(typeof module!=="undefined"&&module.exports)make_xlsx_lib(module.exports);else if(typeof define==="function"&&define.amd)define("xlsx",function(){if(!XLSX.version)make_xlsx_lib(XLSX);return XLSX});else make_xlsx_lib(XLSX);if(typeof window!=="undefined"&&!window.XLSX)try{window.XLSX=XLSX}catch(e){} (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); -})(this, (function ($$3) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.find.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.to-string.js'), require('jquery')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.find.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.to-string.js', 'jquery'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_find_js, es_object_assign_js, es_object_toString_js, $) { 'use strict'; + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); @@ -23018,1680 +7721,34 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er return !!t; })(); } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { - var i = e.call(t, r || "default"); + var i = e.call(t, r ); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return (String )(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$a = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$c = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$b = fails$c; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$b(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$a = fails$c; - - var functionBindNative = !fails$a(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$2 = functionBindNative; - - var call$5 = Function.prototype.call; - - var functionCall = NATIVE_BIND$2 ? call$5.bind(call$5) : function () { - return call$5.apply(call$5, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$1(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable; - - var createPropertyDescriptor$3 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$1 = functionBindNative; - - var FunctionPrototype$1 = Function.prototype; - var call$4 = FunctionPrototype$1.call; - var uncurryThisWithBind = NATIVE_BIND$1 && FunctionPrototype$1.bind.bind(call$4, call$4); - - var functionUncurryThis = NATIVE_BIND$1 ? uncurryThisWithBind : function (fn) { - return function () { - return call$4.apply(fn, arguments); - }; - }; - - var uncurryThis$d = functionUncurryThis; - - var toString$2 = uncurryThis$d({}.toString); - var stringSlice$1 = uncurryThis$d(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$1(toString$2(it), 8, -1); - }; - - var uncurryThis$c = functionUncurryThis; - var fails$9 = fails$c; - var classof$4 = classofRaw$2; - - var $Object$3 = Object; - var split = uncurryThis$c(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$9(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$3('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$4(it) === 'String' ? split(it, '') : $Object$3(it); - } : $Object$3; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$2 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$1 = isNullOrUndefined$2; - - var $TypeError$6 = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$2 = function (it) { - if (isNullOrUndefined$1(it)) throw new $TypeError$6("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$2 = indexedObject; - var requireObjectCoercible$1 = requireObjectCoercible$2; - - var toIndexedObject$4 = function (it) { - return IndexedObject$2(requireObjectCoercible$1(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$c = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$b = isCallable$c; - - var isObject$7 = function (it) { - return typeof it == 'object' ? it !== null : isCallable$b(it); - }; - - var global$9 = global$a; - var isCallable$a = isCallable$c; - - var aFunction = function (argument) { - return isCallable$a(argument) ? argument : undefined; - }; - - var getBuiltIn$4 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$9[namespace]) : global$9[namespace] && global$9[namespace][method]; - }; - - var uncurryThis$b = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$b({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$8 = global$a; - var userAgent = engineUserAgent; - - var process = global$8.process; - var Deno = global$8.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$8 = fails$c; - var global$7 = global$a; - - var $String$3 = global$7.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$8(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$3(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$3 = getBuiltIn$4; - var isCallable$9 = isCallable$c; - var isPrototypeOf = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$2 = Object; - - var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$3('Symbol'); - return isCallable$9($Symbol) && isPrototypeOf($Symbol.prototype, $Object$2(it)); - }; - - var $String$2 = String; - - var tryToString$1 = function (argument) { - try { - return $String$2(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$8 = isCallable$c; - var tryToString = tryToString$1; - - var $TypeError$5 = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$2 = function (argument) { - if (isCallable$8(argument)) return argument; - throw new $TypeError$5(tryToString(argument) + ' is not a function'); - }; - - var aCallable$1 = aCallable$2; - var isNullOrUndefined = isNullOrUndefined$2; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$1 = function (V, P) { - var func = V[P]; - return isNullOrUndefined(func) ? undefined : aCallable$1(func); - }; - - var call$3 = functionCall; - var isCallable$7 = isCallable$c; - var isObject$6 = isObject$7; - - var $TypeError$4 = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$7(fn = input.toString) && !isObject$6(val = call$3(fn, input))) return val; - if (isCallable$7(fn = input.valueOf) && !isObject$6(val = call$3(fn, input))) return val; - if (pref !== 'string' && isCallable$7(fn = input.toString) && !isObject$6(val = call$3(fn, input))) return val; - throw new $TypeError$4("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var global$6 = global$a; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$3 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$3(global$6, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$6[key] = value; - } return value; - }; - - var globalThis$1 = global$a; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$3 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible = requireObjectCoercible$2; - - var $Object$1 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$4 = function (argument) { - return $Object$1(requireObjectCoercible(argument)); - }; - - var uncurryThis$a = functionUncurryThis; - var toObject$3 = toObject$4; - - var hasOwnProperty = uncurryThis$a({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$3(it), key); - }; - - var uncurryThis$9 = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$1 = uncurryThis$9(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$1(++id + postfix, 36); - }; - - var global$5 = global$a; - var shared$2 = shared$3; - var hasOwn$6 = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$1 = global$5.Symbol; - var WellKnownSymbolsStore = shared$2('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1; - - var wellKnownSymbol$7 = function (name) { - if (!hasOwn$6(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$6(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$2 = functionCall; - var isObject$5 = isObject$7; - var isSymbol$1 = isSymbol$2; - var getMethod = getMethod$1; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$6 = wellKnownSymbol$7; - - var $TypeError$3 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$6('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$1 = function (input, pref) { - if (!isObject$5(input) || isSymbol$1(input)) return input; - var exoticToPrim = getMethod(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$2(exoticToPrim, input, pref); - if (!isObject$5(result) || isSymbol$1(result)) return result; - throw new $TypeError$3("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive = toPrimitive$1; - var isSymbol = isSymbol$2; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; - }; - - var global$4 = global$a; - var isObject$4 = isObject$7; - - var document$1 = global$4.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$4(document$1) && isObject$4(document$1.createElement); - - var documentCreateElement$1 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$9 = descriptors; - var fails$7 = fails$c; - var createElement = documentCreateElement$1; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$9 && !fails$7(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$8 = descriptors; - var call$1 = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$2 = createPropertyDescriptor$3; - var toIndexedObject$3 = toIndexedObject$4; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$5 = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$8 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$3(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$5(O, P)) return createPropertyDescriptor$2(!call$1(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$7 = descriptors; - var fails$6 = fails$c; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$7 && fails$6(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$3 = isObject$7; - - var $String$1 = String; - var $TypeError$2 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$4 = function (argument) { - if (isObject$3(argument)) return argument; - throw new $TypeError$2($String$1(argument) + ' is not an object'); - }; - - var DESCRIPTORS$6 = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$3 = anObject$4; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$1 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$6 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$3(O); - P = toPropertyKey(P); - anObject$3(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$3(O); - P = toPropertyKey(P); - anObject$3(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$1('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$5 = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$1 = createPropertyDescriptor$3; - - var createNonEnumerableProperty$2 = DESCRIPTORS$5 ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$1(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$2 = {exports: {}}; - - var DESCRIPTORS$4 = descriptors; - var hasOwn$4 = hasOwnProperty_1; - - var FunctionPrototype = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$4 && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$4(FunctionPrototype, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$4 || (DESCRIPTORS$4 && getDescriptor(FunctionPrototype, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$8 = functionUncurryThis; - var isCallable$6 = isCallable$c; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$8(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$6(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$3 = global$a; - var isCallable$5 = isCallable$c; - - var WeakMap$1 = global$3.WeakMap; - - var weakMapBasicDetection = isCallable$5(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$1 = shared$3; - var uid = uid$2; - - var keys = shared$1('keys'); - - var sharedKey$2 = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$2 = global$a; - var isObject$2 = isObject$7; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$2; - var hasOwn$3 = hasOwnProperty_1; - var shared = sharedStoreExports; - var sharedKey$1 = sharedKey$2; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$1 = global$2.TypeError; - var WeakMap = global$2.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$2(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared.state) { - var store = shared.state || (shared.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$1('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$3(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$1(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$3(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$3(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$7 = functionUncurryThis; - var fails$5 = fails$c; - var isCallable$4 = isCallable$c; - var hasOwn$2 = hasOwnProperty_1; - var DESCRIPTORS$3 = descriptors; - var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule = internalState; - - var enforceInternalState = InternalStateModule.enforce; - var getInternalState = InternalStateModule.get; - var $String = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$2 = Object.defineProperty; - var stringSlice = uncurryThis$7(''.slice); - var replace = uncurryThis$7(''.replace); - var join = uncurryThis$7([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$3 && !fails$5(function () { - return defineProperty$2(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$1 = makeBuiltIn$2.exports = function (value, name, options) { - if (stringSlice($String(name), 0, 7) === 'Symbol(') { - name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$2(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - if (DESCRIPTORS$3) defineProperty$2(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$2(options, 'arity') && value.length !== options.arity) { - defineProperty$2(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$2(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$3) defineProperty$2(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwn$2(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$1(function toString() { - return isCallable$4(this) && getInternalState(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$2.exports; - - var isCallable$3 = isCallable$c; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$2 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$3(value)) makeBuiltIn(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$2 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$1 = toIntegerOrInfinity$2; - - var max = Math.max; - var min$1 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$1 = function (index, length) { - var integer = toIntegerOrInfinity$1(index); - return integer < 0 ? max(integer + length, 0) : min$1(integer, length); - }; - - var toIntegerOrInfinity = toIntegerOrInfinity$2; - - var min = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$1 = function (argument) { - var len = toIntegerOrInfinity(argument); - return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength = toLength$1; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$3 = function (obj) { - return toLength(obj.length); - }; - - var toIndexedObject$2 = toIndexedObject$4; - var toAbsoluteIndex = toAbsoluteIndex$1; - var lengthOfArrayLike$2 = lengthOfArrayLike$3; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$1 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$2($this); - var length = lengthOfArrayLike$2(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$1(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$1(false) - }; - - var uncurryThis$6 = functionUncurryThis; - var hasOwn$1 = hasOwnProperty_1; - var toIndexedObject$1 = toIndexedObject$4; - var indexOf = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$1 = uncurryThis$6([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$1(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$1(hiddenKeys$2, key) && hasOwn$1(O, key) && push$1(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$1(O, key = names[i++])) { - ~indexOf(result, key) || push$1(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$2 = getBuiltIn$4; - var uncurryThis$5 = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$2 = anObject$4; - - var concat$1 = uncurryThis$5([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$2(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$1(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$1 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$4 = fails$c; - var isCallable$2 = isCallable$c; - - var replacement = /#|\.prototype\./; - - var isForced$1 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$2(detection) ? fails$4(detection) - : !!detection; - }; - - var normalize = isForced$1.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$1.data = {}; - var NATIVE = isForced$1.NATIVE = 'N'; - var POLYFILL = isForced$1.POLYFILL = 'P'; - - var isForced_1 = isForced$1; - - var global$1 = global$a; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty = createNonEnumerableProperty$2; - var defineBuiltIn$1 = defineBuiltIn$2; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties = copyConstructorProperties$1; - var isForced = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$1; - } else if (STATIC) { - target = global$1[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$1[TARGET] && global$1[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } - defineBuiltIn$1(target, key, sourceProperty, options); - } - }; - - var classof$3 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$2 = Array.isArray || function isArray(argument) { - return classof$3(argument) === 'Array'; - }; - - var $TypeError = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$1 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$2 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor = createPropertyDescriptor$3; - - var createProperty$1 = function (object, key, value) { - if (DESCRIPTORS$2) definePropertyModule$1.f(object, key, createPropertyDescriptor(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$5 = wellKnownSymbol$7; - - var TO_STRING_TAG$1 = wellKnownSymbol$5('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$1] = 'z'; - - var toStringTagSupport = String(test) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$1 = isCallable$c; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$4 = wellKnownSymbol$7; - - var TO_STRING_TAG = wellKnownSymbol$4('toStringTag'); - var $Object = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$2 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$1(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$4 = functionUncurryThis; - var fails$3 = fails$c; - var isCallable = isCallable$c; - var classof$1 = classof$2; - var getBuiltIn$1 = getBuiltIn$4; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$1('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec = uncurryThis$4(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable(argument)) return false; - switch (classof$1(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$1 = !construct || fails$3(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$1 = isArray$2; - var isConstructor = isConstructor$1; - var isObject$1 = isObject$7; - var wellKnownSymbol$3 = wellKnownSymbol$7; - - var SPECIES$1 = wellKnownSymbol$3('species'); - var $Array = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$1(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === $Array || isArray$1(C.prototype))) C = undefined; - else if (isObject$1(C)) { - C = C[SPECIES$1]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$2 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$2 = fails$c; - var wellKnownSymbol$2 = wellKnownSymbol$7; - var V8_VERSION$1 = engineV8Version; - - var SPECIES = wellKnownSymbol$2('species'); - - var arrayMethodHasSpeciesSupport$1 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$2(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$2 = _export; - var fails$1 = fails$c; - var isArray = isArray$2; - var isObject = isObject$7; - var toObject$2 = toObject$4; - var lengthOfArrayLike$1 = lengthOfArrayLike$3; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1; - var createProperty = createProperty$1; - var arraySpeciesCreate$1 = arraySpeciesCreate$2; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$1; - var wellKnownSymbol$1 = wellKnownSymbol$7; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$1('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$1(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$2({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$2(this); - var A = arraySpeciesCreate$1(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike$1(E); - doesNotExceedSafeInteger(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); - } else { - doesNotExceedSafeInteger(n + 1); - createProperty(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var classofRaw = classofRaw$2; - var uncurryThis$3 = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$3(fn); - }; - - var uncurryThis$2 = functionUncurryThisClause; - var aCallable = aCallable$2; - var NATIVE_BIND = functionBindNative; - - var bind$1 = uncurryThis$2(uncurryThis$2.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : NATIVE_BIND ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var bind = functionBindContext; - var uncurryThis$1 = functionUncurryThis; - var IndexedObject$1 = indexedObject; - var toObject$1 = toObject$4; - var lengthOfArrayLike = lengthOfArrayLike$3; - var arraySpeciesCreate = arraySpeciesCreate$2; - - var push = uncurryThis$1([].push); - - // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation - var createMethod = function (TYPE) { - var IS_MAP = TYPE === 1; - var IS_FILTER = TYPE === 2; - var IS_SOME = TYPE === 3; - var IS_EVERY = TYPE === 4; - var IS_FIND_INDEX = TYPE === 6; - var IS_FILTER_REJECT = TYPE === 7; - var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject$1($this); - var self = IndexedObject$1(O); - var length = lengthOfArrayLike(self); - var boundFunction = bind(callbackfn, that); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod(7) - }; - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$2 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$1 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$1 = anObject$4; - var toIndexedObject = toIndexedObject$4; - var objectKeys$1 = objectKeys$2; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$1 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$1(O); - var props = toIndexedObject(Properties); - var keys = objectKeys$1(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn = getBuiltIn$4; - - var html$1 = getBuiltIn('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject = anObject$4; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement = documentCreateElement$1; - var sharedKey = sharedKey$2; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO = sharedKey('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol = wellKnownSymbol$7; - var create = objectCreate; - var defineProperty$1 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$1(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$1 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var $$1 = _export; - var $find = arrayIteration.find; - var addToUnscopables = addToUnscopables$1; - - var FIND = 'find'; - var SKIPS_HOLES = true; - - // Shouldn't skip holes - // eslint-disable-next-line es/no-array-prototype-find -- testing - if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); - - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - $$1({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables(FIND); - - var DESCRIPTORS = descriptors; - var uncurryThis = functionUncurryThis; - var call = functionCall; - var fails = fails$c; - var objectKeys = objectKeys$2; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject = toObject$4; - var IndexedObject = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty = Object.defineProperty; - var concat = uncurryThis([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { - enumerable: true, - get: function () { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $ = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof = classof$2; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn = defineBuiltIn$2; - var toString = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); - } /** * @author vincent loh @@ -24699,14 +7756,14 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er * @update zhixin wen */ - var Utils = $$3.fn.bootstrapTable.utils; - Object.assign($$3.fn.bootstrapTable.defaults, { + var Utils = $.fn.bootstrapTable.utils; + Object.assign($.fn.bootstrapTable.defaults, { stickyHeader: false, stickyHeaderOffsetY: 0, stickyHeaderOffsetLeft: 0, stickyHeaderOffsetRight: 0 }); - $$3.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { + $.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { function _class() { _classCallCheck(this, _class); return _callSuper(this, _class, arguments); @@ -24740,10 +7797,10 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er // render sticky on window scroll or resize var resizeEvent = Utils.getEventName('resize.sticky-header-table', this.$el.attr('id')); var scrollEvent = Utils.getEventName('scroll.sticky-header-table', this.$el.attr('id')); - $$3(window).off(resizeEvent).on(resizeEvent, function () { + $(window).off(resizeEvent).on(resizeEvent, function () { return _this.renderStickyHeader(); }); - $$3(window).off(scrollEvent).on(scrollEvent, function () { + $(window).off(scrollEvent).on(scrollEvent, function () { return _this.renderStickyHeader(); }); this.$tableBody.off('scroll').on('scroll', function () { @@ -24770,7 +7827,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er args[_key2] = arguments[_key2]; } (_get3 = _get(_getPrototypeOf(_class.prototype), "resetView", this)).call.apply(_get3, [this].concat(args)); - $$3('.bootstrap-table.fullscreen').off('scroll').on('scroll', function () { + $('.bootstrap-table.fullscreen').off('scroll').on('scroll', function () { return _this2.renderStickyHeader(); }); } @@ -24785,7 +7842,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er if (this.$stickyHeader) { var $ths = this.$stickyHeader.find('th'); this.$header.find('th').each(function (i, th) { - $ths.eq(i).find('.sortable').attr('class', $$3(th).find('.sortable').attr('class')); + $ths.eq(i).find('.sortable').attr('class', $(th).find('.sortable').attr('class')); }); } } @@ -24805,8 +7862,8 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er var that = this; this.$stickyHeader = this.$header.clone(true, true); if (this.options.filterControl) { - $$3(this.$stickyHeader).off('keyup change mouseup').on('keyup change mouse', function (e) { - var $target = $$3(e.target); + $(this.$stickyHeader).off('keyup change mouseup').on('keyup change mouse', function (e) { + var $target = $(e.target); var value = $target.val(); var field = $target.parents('th').data('field'); var $coreTh = that.$header.find("th[data-field=\"".concat(field, "\"]")); @@ -24820,7 +7877,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er that.triggerSearch(); }); } - var top = $$3(window).scrollTop(); + var top = $(window).scrollTop(); // top anchor scroll position, minus header height var start = this.$stickyBegin.offset().top - this.options.stickyHeaderOffsetY; // bottom anchor scroll position, minus header height, minus sticky height @@ -24830,8 +7887,8 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er if (top > start && top <= end) { // ensure clone and source column widths are the same this.$stickyHeader.find('tr').each(function (indexRows, rows) { - $$3(rows).find('th').each(function (index, el) { - $$3(el).css('min-width', _this4.$header.find("tr:eq(".concat(indexRows, ")")).find("th:eq(".concat(index, ")")).css('width')); + $(rows).find('th').each(function (index, el) { + $(el).css('min-width', _this4.$header.find("tr:eq(".concat(indexRows, ")")).find("th:eq(".concat(index, ")")).css('width')); }); }); // match bootstrap table style @@ -24857,7 +7914,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er this.$stickyContainer.css('right', "".concat(stickyHeaderOffsetRight, "px")); this.$stickyContainer.css('width', "".concat(width)); // create scrollable container for header - this.$stickyTable = $$3(''); + this.$stickyTable = $('
'); this.$stickyTable.addClass(this.options.classes); // append cloned header to dom this.$stickyContainer.html(this.$stickyTable.append(this.$stickyHeader)); @@ -24873,19 +7930,122 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er this.$stickyContainer.scrollLeft(this.$tableBody.scrollLeft()); } }]); - }($$3.BootstrapTable); + }($.BootstrapTable); })); (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : - typeof define === 'function' && define.amd ? define(['jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); -})(this, (function ($$b) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('core-js/modules/es.array.concat.js'), require('core-js/modules/es.array.filter.js'), require('core-js/modules/es.array.find.js'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.array.index-of.js'), require('core-js/modules/es.array.join.js'), require('core-js/modules/es.object.assign.js'), require('core-js/modules/es.object.entries.js'), require('core-js/modules/es.object.to-string.js'), require('core-js/modules/es.regexp.exec.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/es.string.search.js'), require('core-js/modules/es.string.trim.js'), require('jquery')) : + typeof define === 'function' && define.amd ? define(['core-js/modules/es.array.concat.js', 'core-js/modules/es.array.filter.js', 'core-js/modules/es.array.find.js', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.array.index-of.js', 'core-js/modules/es.array.join.js', 'core-js/modules/es.object.assign.js', 'core-js/modules/es.object.entries.js', 'core-js/modules/es.object.to-string.js', 'core-js/modules/es.regexp.exec.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/es.string.search.js', 'core-js/modules/es.string.trim.js', 'jquery'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(null, null, null, null, null, null, null, null, null, null, null, null, null, global.jQuery)); +})(this, (function (es_array_concat_js, es_array_filter_js, es_array_find_js, es_array_includes_js, es_array_indexOf_js, es_array_join_js, es_object_assign_js, es_object_entries_js, es_object_toString_js, es_regexp_exec_js, es_string_includes_js, es_string_search_js, es_string_trim_js, $) { 'use strict'; + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e ) { + t && (r = t); + var n = 0, + F = function () {}; + return { + s: F, + n: function () { + return n >= r.length ? { + done: !0 + } : { + done: !1, + value: r[n++] + }; + }, + e: function (r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = !0, + u = !1; + return { + s: function () { + t = t.call(r); + }, + n: function () { + var r = t.next(); + return a = r.done, r; + }, + e: function (r) { + u = !0, o = r; + }, + f: function () { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } + }; + } + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); @@ -24894,6 +8054,9 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er return !!t; })(); } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { @@ -24905,10 +8068,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er f = !0, o = !1; try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { @@ -24921,2418 +8081,53 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er return a; } } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { - var i = e.call(t, r || "default"); + var i = e.call(t, r ); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return (String )(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function () {}; - return { - s: F, - n: function () { - if (i >= o.length) return { - done: true - }; - return { - done: false, - value: o[i++] - }; - }, - e: function (e) { - throw e; - }, - f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, - didErr = false, - err; - return { - s: function () { - it = it.call(o); - }, - n: function () { - var step = it.next(); - normalCompletion = step.done; - return step; - }, - e: function (e) { - didErr = true; - err = e; - }, - f: function () { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } - }; - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - var check = function (it) { - return it && it.Math === Math && it; - }; - - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - var global$d = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - var objectGetOwnPropertyDescriptor = {}; - - var fails$l = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - - var fails$k = fails$l; - - // Detect IE8's incomplete defineProperty implementation - var descriptors = !fails$k(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; - }); - - var fails$j = fails$l; - - var functionBindNative = !fails$j(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); - }); - - var NATIVE_BIND$2 = functionBindNative; - - var call$9 = Function.prototype.call; - - var functionCall = NATIVE_BIND$2 ? call$9.bind(call$9) : function () { - return call$9.apply(call$9, arguments); - }; - - var objectPropertyIsEnumerable = {}; - - var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // Nashorn ~ JDK8 bug - var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable$1.call({ 1: 2 }, 1); - - // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable - objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor$1(this, V); - return !!descriptor && descriptor.enumerable; - } : $propertyIsEnumerable$1; - - var createPropertyDescriptor$3 = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - - var NATIVE_BIND$1 = functionBindNative; - - var FunctionPrototype$1 = Function.prototype; - var call$8 = FunctionPrototype$1.call; - var uncurryThisWithBind = NATIVE_BIND$1 && FunctionPrototype$1.bind.bind(call$8, call$8); - - var functionUncurryThis = NATIVE_BIND$1 ? uncurryThisWithBind : function (fn) { - return function () { - return call$8.apply(fn, arguments); - }; - }; - - var uncurryThis$j = functionUncurryThis; - - var toString$7 = uncurryThis$j({}.toString); - var stringSlice$2 = uncurryThis$j(''.slice); - - var classofRaw$2 = function (it) { - return stringSlice$2(toString$7(it), 8, -1); - }; - - var uncurryThis$i = functionUncurryThis; - var fails$i = fails$l; - var classof$7 = classofRaw$2; - - var $Object$4 = Object; - var split = uncurryThis$i(''.split); - - // fallback for non-array-like ES3 and non-enumerable old V8 strings - var indexedObject = fails$i(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object$4('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof$7(it) === 'String' ? split(it, '') : $Object$4(it); - } : $Object$4; - - // we can't use just `it == null` since of `document.all` special case - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec - var isNullOrUndefined$3 = function (it) { - return it === null || it === undefined; - }; - - var isNullOrUndefined$2 = isNullOrUndefined$3; - - var $TypeError$8 = TypeError; - - // `RequireObjectCoercible` abstract operation - // https://tc39.es/ecma262/#sec-requireobjectcoercible - var requireObjectCoercible$5 = function (it) { - if (isNullOrUndefined$2(it)) throw new $TypeError$8("Can't call method on " + it); - return it; - }; - - // toObject with fallback for non-array-like ES3 strings - var IndexedObject$3 = indexedObject; - var requireObjectCoercible$4 = requireObjectCoercible$5; - - var toIndexedObject$6 = function (it) { - return IndexedObject$3(requireObjectCoercible$4(it)); - }; - - // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot - var documentAll = typeof document == 'object' && document.all; - - // `IsCallable` abstract operation - // https://tc39.es/ecma262/#sec-iscallable - // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing - var isCallable$e = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { - return typeof argument == 'function' || argument === documentAll; - } : function (argument) { - return typeof argument == 'function'; - }; - - var isCallable$d = isCallable$e; - - var isObject$8 = function (it) { - return typeof it == 'object' ? it !== null : isCallable$d(it); - }; - - var global$c = global$d; - var isCallable$c = isCallable$e; - - var aFunction = function (argument) { - return isCallable$c(argument) ? argument : undefined; - }; - - var getBuiltIn$4 = function (namespace, method) { - return arguments.length < 2 ? aFunction(global$c[namespace]) : global$c[namespace] && global$c[namespace][method]; - }; - - var uncurryThis$h = functionUncurryThis; - - var objectIsPrototypeOf = uncurryThis$h({}.isPrototypeOf); - - var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - - var global$b = global$d; - var userAgent = engineUserAgent; - - var process = global$b.process; - var Deno = global$b.Deno; - var versions = process && process.versions || Deno && Deno.version; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - - // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` - // so check `userAgent` even if `.v8` exists, but 0 - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - - var engineV8Version = version; - - /* eslint-disable es/no-symbol -- required for testing */ - var V8_VERSION$2 = engineV8Version; - var fails$h = fails$l; - var global$a = global$d; - - var $String$4 = global$a.String; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing - var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$h(function () { - var symbol = Symbol('symbol detection'); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, - // of course, fail. - return !$String$4(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION$2 && V8_VERSION$2 < 41; - }); - - /* eslint-disable es/no-symbol -- required for testing */ - var NATIVE_SYMBOL$1 = symbolConstructorDetection; - - var useSymbolAsUid = NATIVE_SYMBOL$1 - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - var getBuiltIn$3 = getBuiltIn$4; - var isCallable$b = isCallable$e; - var isPrototypeOf = objectIsPrototypeOf; - var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; - - var $Object$3 = Object; - - var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - var $Symbol = getBuiltIn$3('Symbol'); - return isCallable$b($Symbol) && isPrototypeOf($Symbol.prototype, $Object$3(it)); - }; - - var $String$3 = String; - - var tryToString$1 = function (argument) { - try { - return $String$3(argument); - } catch (error) { - return 'Object'; - } - }; - - var isCallable$a = isCallable$e; - var tryToString = tryToString$1; - - var $TypeError$7 = TypeError; - - // `Assert: IsCallable(argument) is true` - var aCallable$2 = function (argument) { - if (isCallable$a(argument)) return argument; - throw new $TypeError$7(tryToString(argument) + ' is not a function'); - }; - - var aCallable$1 = aCallable$2; - var isNullOrUndefined$1 = isNullOrUndefined$3; - - // `GetMethod` abstract operation - // https://tc39.es/ecma262/#sec-getmethod - var getMethod$2 = function (V, P) { - var func = V[P]; - return isNullOrUndefined$1(func) ? undefined : aCallable$1(func); - }; - - var call$7 = functionCall; - var isCallable$9 = isCallable$e; - var isObject$7 = isObject$8; - - var $TypeError$6 = TypeError; - - // `OrdinaryToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-ordinarytoprimitive - var ordinaryToPrimitive$1 = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable$9(fn = input.toString) && !isObject$7(val = call$7(fn, input))) return val; - if (isCallable$9(fn = input.valueOf) && !isObject$7(val = call$7(fn, input))) return val; - if (pref !== 'string' && isCallable$9(fn = input.toString) && !isObject$7(val = call$7(fn, input))) return val; - throw new $TypeError$6("Can't convert object to primitive value"); - }; - - var sharedStore = {exports: {}}; - - var global$9 = global$d; - - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$3 = Object.defineProperty; - - var defineGlobalProperty$3 = function (key, value) { - try { - defineProperty$3(global$9, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global$9[key] = value; - } return value; - }; - - var globalThis$1 = global$d; - var defineGlobalProperty$2 = defineGlobalProperty$3; - - var SHARED = '__core-js_shared__'; - var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {}); - - (store$3.versions || (store$3.versions = [])).push({ - version: '3.36.1', - mode: 'global', - copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE', - source: 'https://github.com/zloirock/core-js' - }); - - var sharedStoreExports = sharedStore.exports; - - var store$2 = sharedStoreExports; - - var shared$4 = function (key, value) { - return store$2[key] || (store$2[key] = value || {}); - }; - - var requireObjectCoercible$3 = requireObjectCoercible$5; - - var $Object$2 = Object; - - // `ToObject` abstract operation - // https://tc39.es/ecma262/#sec-toobject - var toObject$5 = function (argument) { - return $Object$2(requireObjectCoercible$3(argument)); - }; - - var uncurryThis$g = functionUncurryThis; - var toObject$4 = toObject$5; - - var hasOwnProperty = uncurryThis$g({}.hasOwnProperty); - - // `HasOwnProperty` abstract operation - // https://tc39.es/ecma262/#sec-hasownproperty - // eslint-disable-next-line es/no-object-hasown -- safe - var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject$4(it), key); - }; - - var uncurryThis$f = functionUncurryThis; - - var id = 0; - var postfix = Math.random(); - var toString$6 = uncurryThis$f(1.0.toString); - - var uid$2 = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$6(++id + postfix, 36); - }; - - var global$8 = global$d; - var shared$3 = shared$4; - var hasOwn$7 = hasOwnProperty_1; - var uid$1 = uid$2; - var NATIVE_SYMBOL = symbolConstructorDetection; - var USE_SYMBOL_AS_UID = useSymbolAsUid; - - var Symbol$1 = global$8.Symbol; - var WellKnownSymbolsStore = shared$3('wks'); - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1; - - var wellKnownSymbol$a = function (name) { - if (!hasOwn$7(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$7(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; - }; - - var call$6 = functionCall; - var isObject$6 = isObject$8; - var isSymbol$1 = isSymbol$2; - var getMethod$1 = getMethod$2; - var ordinaryToPrimitive = ordinaryToPrimitive$1; - var wellKnownSymbol$9 = wellKnownSymbol$a; - - var $TypeError$5 = TypeError; - var TO_PRIMITIVE = wellKnownSymbol$9('toPrimitive'); - - // `ToPrimitive` abstract operation - // https://tc39.es/ecma262/#sec-toprimitive - var toPrimitive$1 = function (input, pref) { - if (!isObject$6(input) || isSymbol$1(input)) return input; - var exoticToPrim = getMethod$1(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call$6(exoticToPrim, input, pref); - if (!isObject$6(result) || isSymbol$1(result)) return result; - throw new $TypeError$5("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); - }; - - var toPrimitive = toPrimitive$1; - var isSymbol = isSymbol$2; - - // `ToPropertyKey` abstract operation - // https://tc39.es/ecma262/#sec-topropertykey - var toPropertyKey$2 = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; - }; - - var global$7 = global$d; - var isObject$5 = isObject$8; - - var document$1 = global$7.document; - // typeof document.createElement is 'object' in old IE - var EXISTS$1 = isObject$5(document$1) && isObject$5(document$1.createElement); - - var documentCreateElement$1 = function (it) { - return EXISTS$1 ? document$1.createElement(it) : {}; - }; - - var DESCRIPTORS$a = descriptors; - var fails$g = fails$l; - var createElement = documentCreateElement$1; - - // Thanks to IE8 for its funny defineProperty - var ie8DomDefine = !DESCRIPTORS$a && !fails$g(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a !== 7; - }); - - var DESCRIPTORS$9 = descriptors; - var call$5 = functionCall; - var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; - var createPropertyDescriptor$2 = createPropertyDescriptor$3; - var toIndexedObject$5 = toIndexedObject$6; - var toPropertyKey$1 = toPropertyKey$2; - var hasOwn$6 = hasOwnProperty_1; - var IE8_DOM_DEFINE$1 = ie8DomDefine; - - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; - - // `Object.getOwnPropertyDescriptor` method - // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor - objectGetOwnPropertyDescriptor.f = DESCRIPTORS$9 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject$5(O); - P = toPropertyKey$1(P); - if (IE8_DOM_DEFINE$1) try { - return $getOwnPropertyDescriptor$1(O, P); - } catch (error) { /* empty */ } - if (hasOwn$6(O, P)) return createPropertyDescriptor$2(!call$5(propertyIsEnumerableModule$1.f, O, P), O[P]); - }; - - var objectDefineProperty = {}; - - var DESCRIPTORS$8 = descriptors; - var fails$f = fails$l; - - // V8 ~ Chrome 36- - // https://bugs.chromium.org/p/v8/issues/detail?id=3334 - var v8PrototypeDefineBug = DESCRIPTORS$8 && fails$f(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype !== 42; - }); - - var isObject$4 = isObject$8; - - var $String$2 = String; - var $TypeError$4 = TypeError; - - // `Assert: Type(argument) is Object` - var anObject$7 = function (argument) { - if (isObject$4(argument)) return argument; - throw new $TypeError$4($String$2(argument) + ' is not an object'); - }; - - var DESCRIPTORS$7 = descriptors; - var IE8_DOM_DEFINE = ie8DomDefine; - var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; - var anObject$6 = anObject$7; - var toPropertyKey = toPropertyKey$2; - - var $TypeError$3 = TypeError; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var $defineProperty = Object.defineProperty; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = 'enumerable'; - var CONFIGURABLE$1 = 'configurable'; - var WRITABLE = 'writable'; - - // `Object.defineProperty` method - // https://tc39.es/ecma262/#sec-object.defineproperty - objectDefineProperty.f = DESCRIPTORS$7 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { - anObject$6(O); - P = toPropertyKey(P); - anObject$6(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); - } : $defineProperty : function defineProperty(O, P, Attributes) { - anObject$6(O); - P = toPropertyKey(P); - anObject$6(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw new $TypeError$3('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - - var DESCRIPTORS$6 = descriptors; - var definePropertyModule$4 = objectDefineProperty; - var createPropertyDescriptor$1 = createPropertyDescriptor$3; - - var createNonEnumerableProperty$3 = DESCRIPTORS$6 ? function (object, key, value) { - return definePropertyModule$4.f(object, key, createPropertyDescriptor$1(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - - var makeBuiltIn$2 = {exports: {}}; - - var DESCRIPTORS$5 = descriptors; - var hasOwn$5 = hasOwnProperty_1; - - var FunctionPrototype = Function.prototype; - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - var getDescriptor = DESCRIPTORS$5 && Object.getOwnPropertyDescriptor; - - var EXISTS = hasOwn$5(FunctionPrototype, 'name'); - // additional protection from minified / mangled / dropped function names - var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS$5 || (DESCRIPTORS$5 && getDescriptor(FunctionPrototype, 'name').configurable)); - - var functionName = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE - }; - - var uncurryThis$e = functionUncurryThis; - var isCallable$8 = isCallable$e; - var store$1 = sharedStoreExports; - - var functionToString = uncurryThis$e(Function.toString); - - // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper - if (!isCallable$8(store$1.inspectSource)) { - store$1.inspectSource = function (it) { - return functionToString(it); - }; - } - - var inspectSource$2 = store$1.inspectSource; - - var global$6 = global$d; - var isCallable$7 = isCallable$e; - - var WeakMap$1 = global$6.WeakMap; - - var weakMapBasicDetection = isCallable$7(WeakMap$1) && /native code/.test(String(WeakMap$1)); - - var shared$2 = shared$4; - var uid = uid$2; - - var keys = shared$2('keys'); - - var sharedKey$3 = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - - var hiddenKeys$4 = {}; - - var NATIVE_WEAK_MAP = weakMapBasicDetection; - var global$5 = global$d; - var isObject$3 = isObject$8; - var createNonEnumerableProperty$2 = createNonEnumerableProperty$3; - var hasOwn$4 = hasOwnProperty_1; - var shared$1 = sharedStoreExports; - var sharedKey$2 = sharedKey$3; - var hiddenKeys$3 = hiddenKeys$4; - - var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; - var TypeError$1 = global$5.TypeError; - var WeakMap = global$5.WeakMap; - var set, get, has; - - var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject$3(it) || (state = get(it)).type !== TYPE) { - throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; - }; - - if (NATIVE_WEAK_MAP || shared$1.state) { - var store = shared$1.state || (shared$1.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store.get = store.get; - store.has = store.has; - store.set = store.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store.has(it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }; - get = function (it) { - return store.get(it) || {}; - }; - has = function (it) { - return store.has(it); - }; - } else { - var STATE = sharedKey$2('state'); - hiddenKeys$3[STATE] = true; - set = function (it, metadata) { - if (hasOwn$4(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty$2(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn$4(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn$4(it, STATE); - }; - } - - var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - - var uncurryThis$d = functionUncurryThis; - var fails$e = fails$l; - var isCallable$6 = isCallable$e; - var hasOwn$3 = hasOwnProperty_1; - var DESCRIPTORS$4 = descriptors; - var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE; - var inspectSource$1 = inspectSource$2; - var InternalStateModule = internalState; - - var enforceInternalState = InternalStateModule.enforce; - var getInternalState$1 = InternalStateModule.get; - var $String$1 = String; - // eslint-disable-next-line es/no-object-defineproperty -- safe - var defineProperty$2 = Object.defineProperty; - var stringSlice$1 = uncurryThis$d(''.slice); - var replace$2 = uncurryThis$d(''.replace); - var join = uncurryThis$d([].join); - - var CONFIGURABLE_LENGTH = DESCRIPTORS$4 && !fails$e(function () { - return defineProperty$2(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; - }); - - var TEMPLATE = String(String).split('String'); - - var makeBuiltIn$1 = makeBuiltIn$2.exports = function (value, name, options) { - if (stringSlice$1($String$1(name), 0, 7) === 'Symbol(') { - name = '[' + replace$2($String$1(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwn$3(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - if (DESCRIPTORS$4) defineProperty$2(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwn$3(options, 'arity') && value.length !== options.arity) { - defineProperty$2(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwn$3(options, 'constructor') && options.constructor) { - if (DESCRIPTORS$4) defineProperty$2(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwn$3(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; - }; - - // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - // eslint-disable-next-line no-extend-native -- required - Function.prototype.toString = makeBuiltIn$1(function toString() { - return isCallable$6(this) && getInternalState$1(this).source || inspectSource$1(this); - }, 'toString'); - - var makeBuiltInExports = makeBuiltIn$2.exports; - - var isCallable$5 = isCallable$e; - var definePropertyModule$3 = objectDefineProperty; - var makeBuiltIn = makeBuiltInExports; - var defineGlobalProperty$1 = defineGlobalProperty$3; - - var defineBuiltIn$3 = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable$5(value)) makeBuiltIn(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty$1(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else definePropertyModule$3.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; - }; - - var objectGetOwnPropertyNames = {}; - - var ceil = Math.ceil; - var floor = Math.floor; - - // `Math.trunc` method - // https://tc39.es/ecma262/#sec-math.trunc - // eslint-disable-next-line es/no-math-trunc -- safe - var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor : ceil)(n); - }; - - var trunc = mathTrunc; - - // `ToIntegerOrInfinity` abstract operation - // https://tc39.es/ecma262/#sec-tointegerorinfinity - var toIntegerOrInfinity$2 = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : trunc(number); - }; - - var toIntegerOrInfinity$1 = toIntegerOrInfinity$2; - - var max = Math.max; - var min$1 = Math.min; - - // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - var toAbsoluteIndex$1 = function (index, length) { - var integer = toIntegerOrInfinity$1(index); - return integer < 0 ? max(integer + length, 0) : min$1(integer, length); - }; - - var toIntegerOrInfinity = toIntegerOrInfinity$2; - - var min = Math.min; - - // `ToLength` abstract operation - // https://tc39.es/ecma262/#sec-tolength - var toLength$1 = function (argument) { - var len = toIntegerOrInfinity(argument); - return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - - var toLength = toLength$1; - - // `LengthOfArrayLike` abstract operation - // https://tc39.es/ecma262/#sec-lengthofarraylike - var lengthOfArrayLike$3 = function (obj) { - return toLength(obj.length); - }; - - var toIndexedObject$4 = toIndexedObject$6; - var toAbsoluteIndex = toAbsoluteIndex$1; - var lengthOfArrayLike$2 = lengthOfArrayLike$3; - - // `Array.prototype.{ indexOf, includes }` methods implementation - var createMethod$3 = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject$4($this); - var length = lengthOfArrayLike$2(O); - if (length === 0) return !IS_INCLUDES && -1; - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el !== el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value !== value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; - }; - - var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod$3(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod$3(false) - }; - - var uncurryThis$c = functionUncurryThis; - var hasOwn$2 = hasOwnProperty_1; - var toIndexedObject$3 = toIndexedObject$6; - var indexOf$1 = arrayIncludes.indexOf; - var hiddenKeys$2 = hiddenKeys$4; - - var push$2 = uncurryThis$c([].push); - - var objectKeysInternal = function (object, names) { - var O = toIndexedObject$3(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn$2(hiddenKeys$2, key) && hasOwn$2(O, key) && push$2(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn$2(O, key = names[i++])) { - ~indexOf$1(result, key) || push$2(result, key); - } - return result; - }; - - // IE8- don't enum bug keys - var enumBugKeys$3 = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - - var internalObjectKeys$1 = objectKeysInternal; - var enumBugKeys$2 = enumBugKeys$3; - - var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype'); - - // `Object.getOwnPropertyNames` method - // https://tc39.es/ecma262/#sec-object.getownpropertynames - // eslint-disable-next-line es/no-object-getownpropertynames -- safe - objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys$1(O, hiddenKeys$1); - }; - - var objectGetOwnPropertySymbols = {}; - - // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe - objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; - - var getBuiltIn$2 = getBuiltIn$4; - var uncurryThis$b = functionUncurryThis; - var getOwnPropertyNamesModule = objectGetOwnPropertyNames; - var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; - var anObject$5 = anObject$7; - - var concat$1 = uncurryThis$b([].concat); - - // all object keys, includes non-enumerable and symbols - var ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject$5(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; - return getOwnPropertySymbols ? concat$1(keys, getOwnPropertySymbols(it)) : keys; - }; - - var hasOwn$1 = hasOwnProperty_1; - var ownKeys = ownKeys$1; - var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; - var definePropertyModule$2 = objectDefineProperty; - - var copyConstructorProperties$1 = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule$2.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn$1(target, key) && !(exceptions && hasOwn$1(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - - var fails$d = fails$l; - var isCallable$4 = isCallable$e; - - var replacement = /#|\.prototype\./; - - var isForced$1 = function (feature, detection) { - var value = data[normalize(feature)]; - return value === POLYFILL ? true - : value === NATIVE ? false - : isCallable$4(detection) ? fails$d(detection) - : !!detection; - }; - - var normalize = isForced$1.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced$1.data = {}; - var NATIVE = isForced$1.NATIVE = 'N'; - var POLYFILL = isForced$1.POLYFILL = 'P'; - - var isForced_1 = isForced$1; - - var global$4 = global$d; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - var createNonEnumerableProperty$1 = createNonEnumerableProperty$3; - var defineBuiltIn$2 = defineBuiltIn$3; - var defineGlobalProperty = defineGlobalProperty$3; - var copyConstructorProperties = copyConstructorProperties$1; - var isForced = isForced_1; - - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key - */ - var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global$4; - } else if (STATIC) { - target = global$4[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = global$4[TARGET] && global$4[TARGET].prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty$1(sourceProperty, 'sham', true); - } - defineBuiltIn$2(target, key, sourceProperty, options); - } - }; - - var classof$6 = classofRaw$2; - - // `IsArray` abstract operation - // https://tc39.es/ecma262/#sec-isarray - // eslint-disable-next-line es/no-array-isarray -- safe - var isArray$2 = Array.isArray || function isArray(argument) { - return classof$6(argument) === 'Array'; - }; - - var $TypeError$2 = TypeError; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - - var doesNotExceedSafeInteger$1 = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError$2('Maximum allowed index exceeded'); - return it; - }; - - var DESCRIPTORS$3 = descriptors; - var definePropertyModule$1 = objectDefineProperty; - var createPropertyDescriptor = createPropertyDescriptor$3; - - var createProperty$1 = function (object, key, value) { - if (DESCRIPTORS$3) definePropertyModule$1.f(object, key, createPropertyDescriptor(0, value)); - else object[key] = value; - }; - - var wellKnownSymbol$8 = wellKnownSymbol$a; - - var TO_STRING_TAG$1 = wellKnownSymbol$8('toStringTag'); - var test = {}; - - test[TO_STRING_TAG$1] = 'z'; - - var toStringTagSupport = String(test) === '[object z]'; - - var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; - var isCallable$3 = isCallable$e; - var classofRaw$1 = classofRaw$2; - var wellKnownSymbol$7 = wellKnownSymbol$a; - - var TO_STRING_TAG = wellKnownSymbol$7('toStringTag'); - var $Object$1 = Object; - - // ES3 wrong here - var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments'; - - // fallback for IE11 Script Access Denied error - var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } - }; - - // getting tag from ES6+ `Object.prototype.toString` - var classof$5 = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object$1(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw$1(O) - // ES3 arguments fallback - : (result = classofRaw$1(O)) === 'Object' && isCallable$3(O.callee) ? 'Arguments' : result; - }; - - var uncurryThis$a = functionUncurryThis; - var fails$c = fails$l; - var isCallable$2 = isCallable$e; - var classof$4 = classof$5; - var getBuiltIn$1 = getBuiltIn$4; - var inspectSource = inspectSource$2; - - var noop = function () { /* empty */ }; - var construct = getBuiltIn$1('Reflect', 'construct'); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec$1 = uncurryThis$a(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.test(noop); - - var isConstructorModern = function isConstructor(argument) { - if (!isCallable$2(argument)) return false; - try { - construct(noop, [], argument); - return true; - } catch (error) { - return false; - } - }; - - var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable$2(argument)) return false; - switch (classof$4(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec$1(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } - }; - - isConstructorLegacy.sham = true; - - // `IsConstructor` abstract operation - // https://tc39.es/ecma262/#sec-isconstructor - var isConstructor$1 = !construct || fails$c(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; - }) ? isConstructorLegacy : isConstructorModern; - - var isArray$1 = isArray$2; - var isConstructor = isConstructor$1; - var isObject$2 = isObject$8; - var wellKnownSymbol$6 = wellKnownSymbol$a; - - var SPECIES$2 = wellKnownSymbol$6('species'); - var $Array = Array; - - // a part of `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesConstructor$1 = function (originalArray) { - var C; - if (isArray$1(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === $Array || isArray$1(C.prototype))) C = undefined; - else if (isObject$2(C)) { - C = C[SPECIES$2]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array : C; - }; - - var arraySpeciesConstructor = arraySpeciesConstructor$1; - - // `ArraySpeciesCreate` abstract operation - // https://tc39.es/ecma262/#sec-arrayspeciescreate - var arraySpeciesCreate$2 = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - - var fails$b = fails$l; - var wellKnownSymbol$5 = wellKnownSymbol$a; - var V8_VERSION$1 = engineV8Version; - - var SPECIES$1 = wellKnownSymbol$5('species'); - - var arrayMethodHasSpeciesSupport$2 = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION$1 >= 51 || !fails$b(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES$1] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - - var $$a = _export; - var fails$a = fails$l; - var isArray = isArray$2; - var isObject$1 = isObject$8; - var toObject$3 = toObject$5; - var lengthOfArrayLike$1 = lengthOfArrayLike$3; - var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1; - var createProperty = createProperty$1; - var arraySpeciesCreate$1 = arraySpeciesCreate$2; - var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$2; - var wellKnownSymbol$4 = wellKnownSymbol$a; - var V8_VERSION = engineV8Version; - - var IS_CONCAT_SPREADABLE = wellKnownSymbol$4('isConcatSpreadable'); - - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$a(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - - var isConcatSpreadable = function (O) { - if (!isObject$1(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED$2 = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport$1('concat'); - - // `Array.prototype.concat` method - // https://tc39.es/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - $$a({ target: 'Array', proto: true, arity: 1, forced: FORCED$2 }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` - concat: function concat(arg) { - var O = toObject$3(this); - var A = arraySpeciesCreate$1(O, 0); - var n = 0; - var i, k, length, len, E; - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - if (isConcatSpreadable(E)) { - len = lengthOfArrayLike$1(E); - doesNotExceedSafeInteger(n + len); - for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); - } else { - doesNotExceedSafeInteger(n + 1); - createProperty(A, n++, E); - } - } - A.length = n; - return A; - } - }); - - var classofRaw = classofRaw$2; - var uncurryThis$9 = functionUncurryThis; - - var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return uncurryThis$9(fn); - }; - - var uncurryThis$8 = functionUncurryThisClause; - var aCallable = aCallable$2; - var NATIVE_BIND = functionBindNative; - - var bind$1 = uncurryThis$8(uncurryThis$8.bind); - - // optional / simple context binding - var functionBindContext = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : NATIVE_BIND ? bind$1(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; - }; - - var bind = functionBindContext; - var uncurryThis$7 = functionUncurryThis; - var IndexedObject$2 = indexedObject; - var toObject$2 = toObject$5; - var lengthOfArrayLike = lengthOfArrayLike$3; - var arraySpeciesCreate = arraySpeciesCreate$2; - - var push$1 = uncurryThis$7([].push); - - // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation - var createMethod$2 = function (TYPE) { - var IS_MAP = TYPE === 1; - var IS_FILTER = TYPE === 2; - var IS_SOME = TYPE === 3; - var IS_EVERY = TYPE === 4; - var IS_FIND_INDEX = TYPE === 6; - var IS_FILTER_REJECT = TYPE === 7; - var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject$2($this); - var self = IndexedObject$2(O); - var length = lengthOfArrayLike(self); - var boundFunction = bind(callbackfn, that); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push$1(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push$1(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod$2(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod$2(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod$2(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod$2(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod$2(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod$2(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod$2(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod$2(7) - }; - - var $$9 = _export; - var $filter = arrayIteration.filter; - var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$2; - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); - - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - // with adding support of @@species - $$9({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { - filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - var objectDefineProperties = {}; - - var internalObjectKeys = objectKeysInternal; - var enumBugKeys$1 = enumBugKeys$3; - - // `Object.keys` method - // https://tc39.es/ecma262/#sec-object.keys - // eslint-disable-next-line es/no-object-keys -- safe - var objectKeys$3 = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys$1); - }; - - var DESCRIPTORS$2 = descriptors; - var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; - var definePropertyModule = objectDefineProperty; - var anObject$4 = anObject$7; - var toIndexedObject$2 = toIndexedObject$6; - var objectKeys$2 = objectKeys$3; - - // `Object.defineProperties` method - // https://tc39.es/ecma262/#sec-object.defineproperties - // eslint-disable-next-line es/no-object-defineproperties -- safe - objectDefineProperties.f = DESCRIPTORS$2 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$4(O); - var props = toIndexedObject$2(Properties); - var keys = objectKeys$2(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); - return O; - }; - - var getBuiltIn = getBuiltIn$4; - - var html$1 = getBuiltIn('document', 'documentElement'); - - /* global ActiveXObject -- old IE, WSH */ - var anObject$3 = anObject$7; - var definePropertiesModule = objectDefineProperties; - var enumBugKeys = enumBugKeys$3; - var hiddenKeys = hiddenKeys$4; - var html = html$1; - var documentCreateElement = documentCreateElement$1; - var sharedKey$1 = sharedKey$3; - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO$1 = sharedKey$1('IE_PROTO'); - - var EmptyConstructor = function () { /* empty */ }; - - var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; - - // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; - }; - - // Create object with fake `null` prototype: use iframe Object with cleared prototype - var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; - - // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - var activeXDocument; - var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); - }; - - hiddenKeys[IE_PROTO$1] = true; - - // `Object.create` method - // https://tc39.es/ecma262/#sec-object.create - // eslint-disable-next-line es/no-object-create -- safe - var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject$3(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO$1] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : definePropertiesModule.f(result, Properties); - }; - - var wellKnownSymbol$3 = wellKnownSymbol$a; - var create$1 = objectCreate; - var defineProperty$1 = objectDefineProperty.f; - - var UNSCOPABLES = wellKnownSymbol$3('unscopables'); - var ArrayPrototype = Array.prototype; - - // Array.prototype[@@unscopables] - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - if (ArrayPrototype[UNSCOPABLES] === undefined) { - defineProperty$1(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create$1(null) - }); - } - - // add a key to Array.prototype[@@unscopables] - var addToUnscopables$2 = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - - var $$8 = _export; - var $find = arrayIteration.find; - var addToUnscopables$1 = addToUnscopables$2; - - var FIND = 'find'; - var SKIPS_HOLES = true; - - // Shouldn't skip holes - // eslint-disable-next-line es/no-array-prototype-find -- testing - if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); - - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - $$8({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables$1(FIND); - - var $$7 = _export; - var $includes = arrayIncludes.includes; - var fails$9 = fails$l; - var addToUnscopables = addToUnscopables$2; - - // FF99+ bug - var BROKEN_ON_SPARSE = fails$9(function () { - // eslint-disable-next-line es/no-array-prototype-includes -- detection - return !Array(1).includes(); - }); - - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - $$7({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { - includes: function includes(el /* , fromIndex = 0 */) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } - }); - - // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables - addToUnscopables('includes'); - - var fails$8 = fails$l; - - var arrayMethodIsStrict$2 = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails$8(function () { - // eslint-disable-next-line no-useless-call -- required for testing - method.call(null, argument || function () { return 1; }, 1); - }); - }; - - /* eslint-disable es/no-array-prototype-indexof -- required for testing */ - var $$6 = _export; - var uncurryThis$6 = functionUncurryThisClause; - var $indexOf = arrayIncludes.indexOf; - var arrayMethodIsStrict$1 = arrayMethodIsStrict$2; - - var nativeIndexOf = uncurryThis$6([].indexOf); - - var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0; - var FORCED$1 = NEGATIVE_ZERO || !arrayMethodIsStrict$1('indexOf'); - - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - $$6({ target: 'Array', proto: true, forced: FORCED$1 }, { - indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { - var fromIndex = arguments.length > 1 ? arguments[1] : undefined; - return NEGATIVE_ZERO - // convert -0 to +0 - ? nativeIndexOf(this, searchElement, fromIndex) || 0 - : $indexOf(this, searchElement, fromIndex); - } - }); - - var $$5 = _export; - var uncurryThis$5 = functionUncurryThis; - var IndexedObject$1 = indexedObject; - var toIndexedObject$1 = toIndexedObject$6; - var arrayMethodIsStrict = arrayMethodIsStrict$2; - - var nativeJoin = uncurryThis$5([].join); - - var ES3_STRINGS = IndexedObject$1 !== Object; - var FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ','); - - // `Array.prototype.join` method - // https://tc39.es/ecma262/#sec-array.prototype.join - $$5({ target: 'Array', proto: true, forced: FORCED }, { - join: function join(separator) { - return nativeJoin(toIndexedObject$1(this), separator === undefined ? ',' : separator); - } - }); - - var DESCRIPTORS$1 = descriptors; - var uncurryThis$4 = functionUncurryThis; - var call$4 = functionCall; - var fails$7 = fails$l; - var objectKeys$1 = objectKeys$3; - var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; - var propertyIsEnumerableModule = objectPropertyIsEnumerable; - var toObject$1 = toObject$5; - var IndexedObject = indexedObject; - - // eslint-disable-next-line es/no-object-assign -- safe - var $assign = Object.assign; - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - var defineProperty = Object.defineProperty; - var concat = uncurryThis$4([].concat); - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - var objectAssign = !$assign || fails$7(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS$1 && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { - enumerable: true, - get: function () { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol('assign detection'); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] !== 7 || objectKeys$1($assign({}, B)).join('') !== alphabet; - }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject$1(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat(objectKeys$1(S), getOwnPropertySymbols(S)) : objectKeys$1(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS$1 || call$4(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; - } : $assign; - - var $$4 = _export; - var assign = objectAssign; - - // `Object.assign` method - // https://tc39.es/ecma262/#sec-object.assign - // eslint-disable-next-line es/no-object-assign -- required for testing - $$4({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { - assign: assign - }); - - var fails$6 = fails$l; - - var correctPrototypeGetter = !fails$6(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - // eslint-disable-next-line es/no-object-getprototypeof -- required for testing - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - - var hasOwn = hasOwnProperty_1; - var isCallable$1 = isCallable$e; - var toObject = toObject$5; - var sharedKey = sharedKey$3; - var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; - - var IE_PROTO = sharedKey('IE_PROTO'); - var $Object = Object; - var ObjectPrototype = $Object.prototype; - - // `Object.getPrototypeOf` method - // https://tc39.es/ecma262/#sec-object.getprototypeof - // eslint-disable-next-line es/no-object-getprototypeof -- safe - var objectGetPrototypeOf$1 = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { - var object = toObject(O); - if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; - var constructor = object.constructor; - if (isCallable$1(constructor) && object instanceof constructor) { - return constructor.prototype; - } return object instanceof $Object ? ObjectPrototype : null; - }; - - var DESCRIPTORS = descriptors; - var fails$5 = fails$l; - var uncurryThis$3 = functionUncurryThis; - var objectGetPrototypeOf = objectGetPrototypeOf$1; - var objectKeys = objectKeys$3; - var toIndexedObject = toIndexedObject$6; - var $propertyIsEnumerable = objectPropertyIsEnumerable.f; - - var propertyIsEnumerable = uncurryThis$3($propertyIsEnumerable); - var push = uncurryThis$3([].push); - - // in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys - // of `null` prototype objects - var IE_BUG = DESCRIPTORS && fails$5(function () { - // eslint-disable-next-line es/no-object-create -- safe - var O = Object.create(null); - O[2] = 2; - return !propertyIsEnumerable(O, 2); - }); - - // `Object.{ entries, values }` methods implementation - var createMethod$1 = function (TO_ENTRIES) { - return function (it) { - var O = toIndexedObject(it); - var keys = objectKeys(O); - var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) { - key = keys[i++]; - if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { - push(result, TO_ENTRIES ? [key, O[key]] : O[key]); - } - } - return result; - }; - }; - - var objectToArray = { - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - entries: createMethod$1(true), - // `Object.values` method - // https://tc39.es/ecma262/#sec-object.values - values: createMethod$1(false) - }; - - var $$3 = _export; - var $entries = objectToArray.entries; - - // `Object.entries` method - // https://tc39.es/ecma262/#sec-object.entries - $$3({ target: 'Object', stat: true }, { - entries: function entries(O) { - return $entries(O); - } - }); - - var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; - var classof$3 = classof$5; - - // `Object.prototype.toString` method implementation - // https://tc39.es/ecma262/#sec-object.prototype.tostring - var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { - return '[object ' + classof$3(this) + ']'; - }; - - var TO_STRING_TAG_SUPPORT = toStringTagSupport; - var defineBuiltIn$1 = defineBuiltIn$3; - var toString$5 = objectToString; - - // `Object.prototype.toString` method - // https://tc39.es/ecma262/#sec-object.prototype.tostring - if (!TO_STRING_TAG_SUPPORT) { - defineBuiltIn$1(Object.prototype, 'toString', toString$5, { unsafe: true }); - } - - var classof$2 = classof$5; - - var $String = String; - - var toString$4 = function (argument) { - if (classof$2(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); - return $String(argument); - }; - - var anObject$2 = anObject$7; - - // `RegExp.prototype.flags` getter implementation - // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags - var regexpFlags$1 = function () { - var that = anObject$2(this); - var result = ''; - if (that.hasIndices) result += 'd'; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.unicodeSets) result += 'v'; - if (that.sticky) result += 'y'; - return result; - }; - - var fails$4 = fails$l; - var global$3 = global$d; - - // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var $RegExp$2 = global$3.RegExp; - - var UNSUPPORTED_Y$1 = fails$4(function () { - var re = $RegExp$2('a', 'y'); - re.lastIndex = 2; - return re.exec('abcd') !== null; - }); - - // UC Browser bug - // https://github.com/zloirock/core-js/issues/1008 - var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$4(function () { - return !$RegExp$2('a', 'y').sticky; - }); - - var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$4(function () { - // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = $RegExp$2('^r', 'gy'); - re.lastIndex = 2; - return re.exec('str') !== null; - }); - - var regexpStickyHelpers = { - BROKEN_CARET: BROKEN_CARET, - MISSED_STICKY: MISSED_STICKY, - UNSUPPORTED_Y: UNSUPPORTED_Y$1 - }; - - var fails$3 = fails$l; - var global$2 = global$d; - - // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError - var $RegExp$1 = global$2.RegExp; - - var regexpUnsupportedDotAll = fails$3(function () { - var re = $RegExp$1('.', 's'); - return !(re.dotAll && re.test('\n') && re.flags === 's'); - }); - - var fails$2 = fails$l; - var global$1 = global$d; - - // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError - var $RegExp = global$1.RegExp; - - var regexpUnsupportedNcg = fails$2(function () { - var re = $RegExp('(?b)', 'g'); - return re.exec('b').groups.a !== 'b' || - 'b'.replace(re, '$c') !== 'bc'; - }); - - /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ - /* eslint-disable regexp/no-useless-quantifier -- testing */ - var call$3 = functionCall; - var uncurryThis$2 = functionUncurryThis; - var toString$3 = toString$4; - var regexpFlags = regexpFlags$1; - var stickyHelpers = regexpStickyHelpers; - var shared = shared$4; - var create = objectCreate; - var getInternalState = internalState.get; - var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll; - var UNSUPPORTED_NCG = regexpUnsupportedNcg; - - var nativeReplace = shared('native-string-replace', String.prototype.replace); - var nativeExec = RegExp.prototype.exec; - var patchedExec = nativeExec; - var charAt = uncurryThis$2(''.charAt); - var indexOf = uncurryThis$2(''.indexOf); - var replace$1 = uncurryThis$2(''.replace); - var stringSlice = uncurryThis$2(''.slice); - - var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - call$3(nativeExec, re1, 'a'); - call$3(nativeExec, re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - })(); - - var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; - - // nonparticipating capturing group, copied from es5-shim's String#split patch. - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; - - if (PATCH) { - patchedExec = function exec(string) { - var re = this; - var state = getInternalState(re); - var str = toString$3(string); - var raw = state.raw; - var result, reCopy, lastIndex, match, i, object, group; - - if (raw) { - raw.lastIndex = re.lastIndex; - result = call$3(patchedExec, raw, str); - re.lastIndex = raw.lastIndex; - return result; - } - - var groups = state.groups; - var sticky = UNSUPPORTED_Y && re.sticky; - var flags = call$3(regexpFlags, re); - var source = re.source; - var charsAdded = 0; - var strCopy = str; - - if (sticky) { - flags = replace$1(flags, 'y', ''); - if (indexOf(flags, 'g') === -1) { - flags += 'g'; - } - - strCopy = stringSlice(str, re.lastIndex); - // Support anchored sticky behavior. - if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) { - source = '(?: ' + source + ')'; - strCopy = ' ' + strCopy; - charsAdded++; - } - // ^(? + rx + ) is needed, in combination with some str slicing, to - // simulate the 'y' flag. - reCopy = new RegExp('^(?:' + source + ')', flags); - } - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + source + '$(?!\\s)', flags); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = call$3(nativeExec, sticky ? reCopy : re, strCopy); - - if (sticky) { - if (match) { - match.input = stringSlice(match.input, charsAdded); - match[0] = stringSlice(match[0], charsAdded); - match.index = re.lastIndex; - re.lastIndex += match[0].length; - } else re.lastIndex = 0; - } else if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ - call$3(nativeReplace, match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - if (match && groups) { - match.groups = object = create(null); - for (i = 0; i < groups.length; i++) { - group = groups[i]; - object[group[0]] = match[group[1]]; - } - } - - return match; - }; - } - - var regexpExec$2 = patchedExec; - - var $$2 = _export; - var exec = regexpExec$2; - - // `RegExp.prototype.exec` method - // https://tc39.es/ecma262/#sec-regexp.prototype.exec - $$2({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { - exec: exec - }); - - var isObject = isObject$8; - var classof$1 = classofRaw$2; - var wellKnownSymbol$2 = wellKnownSymbol$a; - - var MATCH$1 = wellKnownSymbol$2('match'); - - // `IsRegExp` abstract operation - // https://tc39.es/ecma262/#sec-isregexp - var isRegexp = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH$1]) !== undefined ? !!isRegExp : classof$1(it) === 'RegExp'); - }; - - var isRegExp = isRegexp; - - var $TypeError$1 = TypeError; - - var notARegexp = function (it) { - if (isRegExp(it)) { - throw new $TypeError$1("The method doesn't accept regular expressions"); - } return it; - }; - - var wellKnownSymbol$1 = wellKnownSymbol$a; - - var MATCH = wellKnownSymbol$1('match'); - - var correctIsRegexpLogic = function (METHOD_NAME) { - var regexp = /./; - try { - '/./'[METHOD_NAME](regexp); - } catch (error1) { - try { - regexp[MATCH] = false; - return '/./'[METHOD_NAME](regexp); - } catch (error2) { /* empty */ } - } return false; - }; - - var $$1 = _export; - var uncurryThis$1 = functionUncurryThis; - var notARegExp = notARegexp; - var requireObjectCoercible$2 = requireObjectCoercible$5; - var toString$2 = toString$4; - var correctIsRegExpLogic = correctIsRegexpLogic; - - var stringIndexOf = uncurryThis$1(''.indexOf); - - // `String.prototype.includes` method - // https://tc39.es/ecma262/#sec-string.prototype.includes - $$1({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { - includes: function includes(searchString /* , position = 0 */) { - return !!~stringIndexOf( - toString$2(requireObjectCoercible$2(this)), - toString$2(notARegExp(searchString)), - arguments.length > 1 ? arguments[1] : undefined - ); - } - }); - - // TODO: Remove from `core-js@4` since it's moved to entry points - - var call$2 = functionCall; - var defineBuiltIn = defineBuiltIn$3; - var regexpExec$1 = regexpExec$2; - var fails$1 = fails$l; - var wellKnownSymbol = wellKnownSymbol$a; - var createNonEnumerableProperty = createNonEnumerableProperty$3; - - var SPECIES = wellKnownSymbol('species'); - var RegExpPrototype = RegExp.prototype; - - var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) { - var SYMBOL = wellKnownSymbol(KEY); - - var DELEGATES_TO_SYMBOL = !fails$1(function () { - // String methods call symbol-named RegExp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) !== 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - - if (KEY === 'split') { - // We can't use real regex here since it causes deoptimization - // and serious performance degradation in V8 - // https://github.com/zloirock/core-js/issues/306 - re = {}; - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - re.flags = ''; - re[SYMBOL] = /./[SYMBOL]; - } - - re.exec = function () { - execCalled = true; - return null; - }; - - re[SYMBOL](''); - return !execCalled; - }); - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - FORCED - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - var $exec = regexp.exec; - if ($exec === regexpExec$1 || $exec === RegExpPrototype.exec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: call$2(nativeRegExpMethod, regexp, str, arg2) }; - } - return { done: true, value: call$2(nativeMethod, str, regexp, arg2) }; - } - return { done: false }; - }); - - defineBuiltIn(String.prototype, KEY, methods[0]); - defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); - } - - if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true); - }; - - // `SameValue` abstract operation - // https://tc39.es/ecma262/#sec-samevalue - // eslint-disable-next-line es/no-object-is -- safe - var sameValue$1 = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare -- NaN check - return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y; - }; - - var call$1 = functionCall; - var anObject$1 = anObject$7; - var isCallable = isCallable$e; - var classof = classofRaw$2; - var regexpExec = regexpExec$2; - - var $TypeError = TypeError; - - // `RegExpExec` abstract operation - // https://tc39.es/ecma262/#sec-regexpexec - var regexpExecAbstract = function (R, S) { - var exec = R.exec; - if (isCallable(exec)) { - var result = call$1(exec, R, S); - if (result !== null) anObject$1(result); - return result; - } - if (classof(R) === 'RegExp') return call$1(regexpExec, R, S); - throw new $TypeError('RegExp#exec called on incompatible receiver'); - }; - - var call = functionCall; - var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic; - var anObject = anObject$7; - var isNullOrUndefined = isNullOrUndefined$3; - var requireObjectCoercible$1 = requireObjectCoercible$5; - var sameValue = sameValue$1; - var toString$1 = toString$4; - var getMethod = getMethod$2; - var regExpExec = regexpExecAbstract; - - // @@search logic - fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) { - return [ - // `String.prototype.search` method - // https://tc39.es/ecma262/#sec-string.prototype.search - function search(regexp) { - var O = requireObjectCoercible$1(this); - var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH); - return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString$1(O)); - }, - // `RegExp.prototype[@@search]` method - // https://tc39.es/ecma262/#sec-regexp.prototype-@@search - function (string) { - var rx = anObject(this); - var S = toString$1(string); - var res = maybeCallNative(nativeSearch, rx, S); - - if (res.done) return res.value; - - var previousLastIndex = rx.lastIndex; - if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; - var result = regExpExec(rx, S); - if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; - return result === null ? -1 : result.index; - } - ]; - }); - - // a string of all valid unicode whitespaces - var whitespaces$2 = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + - '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; - - var uncurryThis = functionUncurryThis; - var requireObjectCoercible = requireObjectCoercible$5; - var toString = toString$4; - var whitespaces$1 = whitespaces$2; - - var replace = uncurryThis(''.replace); - var ltrim = RegExp('^[' + whitespaces$1 + ']+'); - var rtrim = RegExp('(^|[^' + whitespaces$1 + '])[' + whitespaces$1 + ']+$'); - - // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation - var createMethod = function (TYPE) { - return function ($this) { - var string = toString(requireObjectCoercible($this)); - if (TYPE & 1) string = replace(string, ltrim, ''); - if (TYPE & 2) string = replace(string, rtrim, '$1'); - return string; - }; - }; - - var stringTrim = { - // `String.prototype.{ trimLeft, trimStart }` methods - // https://tc39.es/ecma262/#sec-string.prototype.trimstart - start: createMethod(1), - // `String.prototype.{ trimRight, trimEnd }` methods - // https://tc39.es/ecma262/#sec-string.prototype.trimend - end: createMethod(2), - // `String.prototype.trim` method - // https://tc39.es/ecma262/#sec-string.prototype.trim - trim: createMethod(3) - }; - - var PROPER_FUNCTION_NAME = functionName.PROPER; - var fails = fails$l; - var whitespaces = whitespaces$2; - - var non = '\u200B\u0085\u180E'; - - // check that a method works with the correct list - // of whitespaces and has a correct name - var stringTrimForced = function (METHOD_NAME) { - return fails(function () { - return !!whitespaces[METHOD_NAME]() - || non[METHOD_NAME]() !== non - || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME); - }); - }; - - var $ = _export; - var $trim = stringTrim.trim; - var forcedStringTrimMethod = stringTrimForced; - - // `String.prototype.trim` method - // https://tc39.es/ecma262/#sec-string.prototype.trim - $({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { - trim: function trim() { - return $trim(this); - } - }); /** * @author: aperez @@ -27342,7 +8137,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er * @update zhixin wen */ - var Utils = $$b.fn.bootstrapTable.utils; + var Utils = $.fn.bootstrapTable.utils; var theme = { bootstrap3: { icons: { @@ -27350,7 +8145,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }, classes: {}, html: { - modal: "\n
\n
\n
\n
\n \n

%s

\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n " + modal: "\n
\n
\n
\n
\n \n

\n
\n
\n \n
\n
\n
\n " } }, bootstrap4: { @@ -27359,7 +8154,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }, classes: {}, html: { - modal: "\n
\n
\n
\n
\n

%s

\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n " + modal: "\n
\n
\n
\n
\n

\n \n
\n
\n \n
\n
\n
\n " } }, bootstrap5: { @@ -27370,7 +8165,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er formGroup: 'mb-3' }, html: { - modal: "\n
\n
\n
\n
\n
%s
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n " + modal: "\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n " } }, bulma: { @@ -27379,7 +8174,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }, classes: {}, html: { - modal: "\n
\n
\n
\n
\n

%s

\n \n
\n
\n
\n \n
\n
\n
\n " + modal: "\n
\n
\n
\n
\n

\n \n
\n
\n
\n \n
\n
\n
\n " } }, foundation: { @@ -27388,7 +8183,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }, classes: {}, html: { - modal: "\n
\n

%s

\n
\n\n
\n \n\n \n
\n " + modal: "\n
\n

\n
\n \n
\n \n
\n
\n " } }, materialize: { @@ -27397,7 +8192,7 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }, classes: {}, html: { - modal: "\n
\n " + modal: "\n
\n
\n

\n
\n
\n \n
\n " } }, semantic: { @@ -27406,11 +8201,11 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }, classes: {}, html: { - modal: "\n
\n \n
\n %s\n
\n
\n
\n
%s
\n
\n
\n " + modal: "\n
\n \n
\n
\n
\n
\n
\n
\n " } } - }[$$b.fn.bootstrapTable.theme]; - Object.assign($$b.fn.bootstrapTable.defaults, { + }[$.fn.bootstrapTable.theme]; + Object.assign($.fn.bootstrapTable.defaults, { advancedSearch: false, idForm: 'advancedSearch', actionForm: '', @@ -27420,13 +8215,13 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er return false; } }); - Object.assign($$b.fn.bootstrapTable.defaults.icons, { + Object.assign($.fn.bootstrapTable.defaults.icons, { advancedSearchIcon: theme.icons.advancedSearchIcon }); - Object.assign($$b.fn.bootstrapTable.events, { + Object.assign($.fn.bootstrapTable.events, { 'column-advanced-search.bs.table': 'onColumnAdvancedSearch' }); - Object.assign($$b.fn.bootstrapTable.locales, { + Object.assign($.fn.bootstrapTable.locales, { formatAdvancedSearch: function formatAdvancedSearch() { return 'Advanced search'; }, @@ -27434,8 +8229,8 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er return 'Close'; } }); - Object.assign($$b.fn.bootstrapTable.defaults, $$b.fn.bootstrapTable.locales); - $$b.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { + Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales); + $.BootstrapTable = /*#__PURE__*/function (_$$BootstrapTable) { function _class() { _classCallCheck(this, _class); return _callSuper(this, _class, arguments); @@ -27444,101 +8239,91 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er return _createClass(_class, [{ key: "initToolbar", value: function initToolbar() { - var o = this.options; - this.showToolbar = this.showToolbar || o.search && o.advancedSearch && o.idTable; - if (o.search && o.advancedSearch && o.idTable) { + this.showToolbar = this.showToolbar || this.options.search && this.options.advancedSearch && this.options.idTable; + if (this.showToolbar) { this.buttons = Object.assign(this.buttons, { advancedSearch: { text: this.options.formatAdvancedSearch(), icon: this.options.icons.advancedSearchIcon, - event: this.showAvdSearch, + event: this.showAdvancedSearch, attributes: { 'aria-label': this.options.formatAdvancedSearch(), title: this.options.formatAdvancedSearch() } } }); + if (Utils.isEmptyObject(this.filterColumnsPartial)) { + this.filterColumnsPartial = {}; + } } _get(_getPrototypeOf(_class.prototype), "initToolbar", this).call(this); } }, { - key: "showAvdSearch", - value: function showAvdSearch() { + key: "showAdvancedSearch", + value: function showAdvancedSearch() { var _this = this; - var o = this.options; - var modalSelector = "#avdSearchModal_".concat(o.idTable); - if ($$b(modalSelector).length <= 0) { - $$b('body').append(Utils.sprintf(theme.html.modal, o.idTable, o.formatAdvancedSearch(), o.idTable, o.idTable, o.buttonsClass, o.formatAdvancedCloseButton())); - var timeoutId = 0; - $$b("#avdSearchModalContent_".concat(o.idTable)).append(this.createFormAvd().join('')); - $$b("#".concat(o.idForm)).off('keyup blur', 'input').on('keyup blur', 'input', function (e) { - if (o.sidePagination === 'server') { - _this.onColumnAdvancedSearch(e); - } else { - clearTimeout(timeoutId); - timeoutId = setTimeout(function () { - _this.onColumnAdvancedSearch(e); - }, o.searchTimeOut); - } + this.$toolbarModal = $("#avdSearchModal_".concat(this.options.idTable)); + if (this.$toolbarModal.length <= 0) { + $('body').append(Utils.sprintf(theme.html.modal, this.options.idTable, this.options.buttonsClass)); + this.$toolbarModal = $("#avdSearchModal_".concat(this.options.idTable)); + this.$toolbarModal.find('.toolbar-modal-close').off('click').on('click', function () { + return _this.hideToolbarModal(); }); - $$b("#btnCloseAvd_".concat(o.idTable)).click(function () { - return _this.hideModal(); - }); - if ($$b.fn.bootstrapTable.theme === 'bulma') { - $$b(modalSelector).find('.delete').off('click').on('click', function () { - return _this.hideModal(); - }); - } - this.showModal(); - } else { - this.showModal(); } + this.initToolbarModalBody(); + this.showToolbarModal(); } }, { - key: "showModal", - value: function showModal() { - var modalSelector = "#avdSearchModal_".concat(this.options.idTable); - if ($$b.inArray($$b.fn.bootstrapTable.theme, ['bootstrap3', 'bootstrap4']) !== -1) { - $$b(modalSelector).modal(); - } else if ($$b.fn.bootstrapTable.theme === 'bootstrap5') { + key: "initToolbarModalBody", + value: function initToolbarModalBody() { + var _this2 = this; + this.$toolbarModal.find('.toolbar-modal-title').html(this.options.formatAdvancedSearch()); + this.$toolbarModal.find('.toolbar-modal-footer .toolbar-modal-close').html(this.options.formatAdvancedCloseButton()); + this.$toolbarModal.find('.toolbar-modal-body').html(this.createToolbarForm()).off('keyup blur', 'input').on('keyup blur', 'input', function (e) { + _this2.onColumnAdvancedSearch(e); + }); + } + }, { + key: "showToolbarModal", + value: function showToolbarModal() { + var theme = $.fn.bootstrapTable.theme; + if (['bootstrap3', 'bootstrap4'].includes(theme)) { + this.$toolbarModal.modal(); + } else if (theme === 'bootstrap5') { if (!this.toolbarModal) { - // eslint-disable-next-line no-undef - this.toolbarModal = new bootstrap.Modal(document.getElementById("avdSearchModal_".concat(this.options.idTable)), {}); + this.toolbarModal = new window.bootstrap.Modal(this.$toolbarModal[0], {}); } this.toolbarModal.show(); - } else if ($$b.fn.bootstrapTable.theme === 'bulma') { - $$b(modalSelector).toggleClass('is-active'); - } else if ($$b.fn.bootstrapTable.theme === 'foundation') { + } else if (theme === 'bulma') { + this.$toolbarModal.toggleClass('is-active'); + } else if (theme === 'foundation') { if (!this.toolbarModal) { - // eslint-disable-next-line no-undef - this.toolbarModal = new Foundation.Reveal($$b(modalSelector)); + this.toolbarModal = new window.Foundation.Reveal(this.$toolbarModal); } this.toolbarModal.open(); - } else if ($$b.fn.bootstrapTable.theme === 'materialize') { - $$b(modalSelector).modal(); - $$b(modalSelector).modal('open'); - } else if ($$b.fn.bootstrapTable.theme === 'semantic') { - $$b(modalSelector).modal('show'); + } else if (theme === 'materialize') { + this.$toolbarModal.modal().modal('open'); + } else if (theme === 'semantic') { + this.$toolbarModal.modal('show'); } } }, { - key: "hideModal", - value: function hideModal() { - var $closeModalButton = $$b("#avdSearchModal_".concat(this.options.idTable)); - var modalSelector = "#avdSearchModal_".concat(this.options.idTable); - if ($$b.inArray($$b.fn.bootstrapTable.theme, ['bootstrap3', 'bootstrap4']) !== -1) { - $closeModalButton.modal('hide'); - } else if ($$b.fn.bootstrapTable.theme === 'bootstrap5') { + key: "hideToolbarModal", + value: function hideToolbarModal() { + var theme = $.fn.bootstrapTable.theme; + if (['bootstrap3', 'bootstrap4'].includes(theme)) { + this.$toolbarModal.modal('hide'); + } else if (theme === 'bootstrap5') { this.toolbarModal.hide(); - } else if ($$b.fn.bootstrapTable.theme === 'bulma') { - $$b('html').toggleClass('is-clipped'); - $$b(modalSelector).toggleClass('is-active'); - } else if ($$b.fn.bootstrapTable.theme === 'foundation') { + } else if (theme === 'bulma') { + $('html').toggleClass('is-clipped'); + this.$toolbarModal.toggleClass('is-active'); + } else if (theme === 'foundation') { this.toolbarModal.close(); - } else if ($$b.fn.bootstrapTable.theme === 'materialize') { - $$b(modalSelector).modal('open'); - } else if ($$b.fn.bootstrapTable.theme === 'semantic') { - $$b(modalSelector).modal('close'); + } else if (theme === 'materialize') { + this.$toolbarModal.modal('open'); + } else if (theme === 'semantic') { + this.$toolbarModal.modal('close'); } if (this.options.sidePagination === 'server') { this.options.pageNumber = 1; @@ -27547,17 +8332,18 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er } } }, { - key: "createFormAvd", - value: function createFormAvd() { - var o = this.options; - var html = ["")]; + key: "createToolbarForm", + value: function createToolbarForm() { + var html = ["")]; var _iterator = _createForOfIteratorHelper(this.columns), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var column = _step.value; if (!column.checkbox && column.visible && column.searchable) { - html.push("\n
\n \n
\n \n
\n
\n ")); + var title = $('
').html(column.title).text().trim(); + var value = this.filterColumnsPartial[column.field] || ''; + html.push("\n
\n \n
\n \n
\n
\n ")); } } } catch (err) { @@ -27566,17 +8352,17 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er _iterator.f(); } html.push(''); - return html; + return html.join(''); } }, { key: "initSearch", value: function initSearch() { - var _this2 = this; + var _this3 = this; _get(_getPrototypeOf(_class.prototype), "initSearch", this).call(this); if (!this.options.advancedSearch || this.options.sidePagination === 'server') { return; } - var fp = $$b.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial; + var fp = Utils.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial; this.data = fp ? this.data.filter(function (item, i) { for (var _i = 0, _Object$entries = Object.entries(fp); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), @@ -27584,8 +8370,8 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er v = _Object$entries$_i[1]; var val = v.toLowerCase(); var value = item[key]; - var index = _this2.header.fields.indexOf(key); - value = Utils.calculateObjectValue(_this2.header, _this2.header.formatters[index], [value, item, i], value); + var index = _this3.header.fields.indexOf(key); + value = Utils.calculateObjectValue(_this3.header, _this3.header.formatters[index], [value, item, i], value); if (!(index !== -1 && (typeof value === 'string' || typeof value === 'number') && "".concat(value).toLowerCase().includes(val))) { return false; } @@ -27597,24 +8383,21 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }, { key: "onColumnAdvancedSearch", value: function onColumnAdvancedSearch(e) { - var text = $$b(e.currentTarget).val().trim(); - var $field = $$b(e.currentTarget)[0].id; - if ($$b.isEmptyObject(this.filterColumnsPartial)) { - this.filterColumnsPartial = {}; - } + var text = $(e.currentTarget).val().trim(); + var field = $(e.currentTarget).attr('name'); if (text) { - this.filterColumnsPartial[$field] = text; + this.filterColumnsPartial[field] = text; } else { - delete this.filterColumnsPartial[$field]; + delete this.filterColumnsPartial[field]; } if (this.options.sidePagination !== 'server') { this.options.pageNumber = 1; this.initSearch(); this.updatePagination(); - this.trigger('column-advanced-search', $field, text); + this.trigger('column-advanced-search', field, text); } } }]); - }($$b.BootstrapTable); + }($.BootstrapTable); })); diff --git a/public/js/select2/i18n/af.js b/public/js/select2/i18n/af.js new file mode 100644 index 0000000000..32e5ac7de8 --- /dev/null +++ b/public/js/select2/i18n/af.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Verwyders asseblief "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Voer asseblief "+(e.minimum-e.input.length)+" of meer karakters"},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var n="Kies asseblief net "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ar.js b/public/js/select2/i18n/ar.js new file mode 100644 index 0000000000..64e1caad34 --- /dev/null +++ b/public/js/select2/i18n/ar.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(n){return"الرجاء حذف "+(n.input.length-n.maximum)+" عناصر"},inputTooShort:function(n){return"الرجاء إضافة "+(n.minimum-n.input.length)+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(n){return"تستطيع إختيار "+n.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/az.js b/public/js/select2/i18n/az.js new file mode 100644 index 0000000000..1d52c260f2 --- /dev/null +++ b/public/js/select2/i18n/az.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/az",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+" simvol silin"},inputTooShort:function(n){return n.minimum-n.input.length+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(n){return"Sadəcə "+n.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/bg.js b/public/js/select2/i18n/bg.js new file mode 100644 index 0000000000..73b730a705 --- /dev/null +++ b/public/js/select2/i18n/bg.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bg",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u="Моля въведете с "+e+" по-малко символ";return e>1&&(u+="a"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u="Моля въведете още "+e+" символ";return e>1&&(u+="a"),u},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(n){var e="Можете да направите до "+n.maximum+" ";return n.maximum>1?e+="избора":e+="избор",e},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/bn.js b/public/js/select2/i18n/bn.js new file mode 100644 index 0000000000..2d17b9d8e0 --- /dev/null +++ b/public/js/select2/i18n/bn.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।";return 1!=e&&(u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।"),u},inputTooShort:function(n){return n.minimum-n.input.length+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।"},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(n){var e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return 1!=n.maximum&&(e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),e},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/bs.js b/public/js/select2/i18n/bs.js new file mode 100644 index 0000000000..46b084d758 --- /dev/null +++ b/public/js/select2/i18n/bs.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/bs",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(n){var r=n.input.length-n.maximum,t="Obrišite "+r+" simbol";return t+=e(r,"","a","a")},inputTooShort:function(n){var r=n.minimum-n.input.length,t="Ukucajte bar još "+r+" simbol";return t+=e(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(n){var r="Možete izabrati samo "+n.maximum+" stavk";return r+=e(n.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/build.txt b/public/js/select2/i18n/build.txt new file mode 100644 index 0000000000..8f319f29c3 --- /dev/null +++ b/public/js/select2/i18n/build.txt @@ -0,0 +1,236 @@ + +af.js +---------------- +af.js + +ar.js +---------------- +ar.js + +az.js +---------------- +az.js + +bg.js +---------------- +bg.js + +bn.js +---------------- +bn.js + +bs.js +---------------- +bs.js + +ca.js +---------------- +ca.js + +cs.js +---------------- +cs.js + +da.js +---------------- +da.js + +de.js +---------------- +de.js + +dsb.js +---------------- +dsb.js + +el.js +---------------- +el.js + +en.js +---------------- +en.js + +es.js +---------------- +es.js + +et.js +---------------- +et.js + +eu.js +---------------- +eu.js + +fa.js +---------------- +fa.js + +fi.js +---------------- +fi.js + +fr.js +---------------- +fr.js + +gl.js +---------------- +gl.js + +he.js +---------------- +he.js + +hi.js +---------------- +hi.js + +hr.js +---------------- +hr.js + +hsb.js +---------------- +hsb.js + +hu.js +---------------- +hu.js + +hy.js +---------------- +hy.js + +id.js +---------------- +id.js + +is.js +---------------- +is.js + +it.js +---------------- +it.js + +ja.js +---------------- +ja.js + +ka.js +---------------- +ka.js + +km.js +---------------- +km.js + +ko.js +---------------- +ko.js + +lt.js +---------------- +lt.js + +lv.js +---------------- +lv.js + +mk.js +---------------- +mk.js + +ms.js +---------------- +ms.js + +nb.js +---------------- +nb.js + +ne.js +---------------- +ne.js + +nl.js +---------------- +nl.js + +pl.js +---------------- +pl.js + +ps.js +---------------- +ps.js + +pt-BR.js +---------------- +pt-BR.js + +pt.js +---------------- +pt.js + +ro.js +---------------- +ro.js + +ru.js +---------------- +ru.js + +sk.js +---------------- +sk.js + +sl.js +---------------- +sl.js + +sq.js +---------------- +sq.js + +sr-Cyrl.js +---------------- +sr-Cyrl.js + +sr.js +---------------- +sr.js + +sv.js +---------------- +sv.js + +th.js +---------------- +th.js + +tk.js +---------------- +tk.js + +tr.js +---------------- +tr.js + +uk.js +---------------- +uk.js + +vi.js +---------------- +vi.js + +zh-CN.js +---------------- +zh-CN.js + +zh-TW.js +---------------- +zh-TW.js diff --git a/public/js/select2/i18n/ca.js b/public/js/select2/i18n/ca.js new file mode 100644 index 0000000000..82dbbb7a21 --- /dev/null +++ b/public/js/select2/i18n/ca.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Si us plau, elimina "+n+" car";return r+=1==n?"àcter":"àcters"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Si us plau, introdueix "+n+" car";return r+=1==n?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var n="Només es pot seleccionar "+e.maximum+" element";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/cs.js b/public/js/select2/i18n/cs.js new file mode 100644 index 0000000000..7116d6c1df --- /dev/null +++ b/public/js/select2/i18n/cs.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/cs",[],function(){function e(e,n){switch(e){case 2:return n?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadejte o jeden znak méně.":t<=4?"Prosím, zadejte o "+e(t,!0)+" znaky méně.":"Prosím, zadejte o "+t+" znaků méně."},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadejte ještě jeden znak.":t<=4?"Prosím, zadejte ještě další "+e(t,!0)+" znaky.":"Prosím, zadejte ještě dalších "+t+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(n){var t=n.maximum;return 1==t?"Můžete zvolit jen jednu položku.":t<=4?"Můžete zvolit maximálně "+e(t,!1)+" položky.":"Můžete zvolit maximálně "+t+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/da.js b/public/js/select2/i18n/da.js new file mode 100644 index 0000000000..cda32c34aa --- /dev/null +++ b/public/js/select2/i18n/da.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){return"Angiv venligst "+(e.input.length-e.maximum)+" tegn mindre"},inputTooShort:function(e){return"Angiv venligst "+(e.minimum-e.input.length)+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var n="Du kan kun vælge "+e.maximum+" emne";return 1!=e.maximum&&(n+="r"),n},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/de.js b/public/js/select2/i18n/de.js new file mode 100644 index 0000000000..c2e61e5800 --- /dev/null +++ b/public/js/select2/i18n/de.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){return"Bitte "+(e.input.length-e.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(e){return"Bitte "+(e.minimum-e.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var n="Sie können nur "+e.maximum+" Element";return 1!=e.maximum&&(n+="e"),n+=" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/dsb.js b/public/js/select2/i18n/dsb.js new file mode 100644 index 0000000000..02f283abad --- /dev/null +++ b/public/js/select2/i18n/dsb.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/dsb",[],function(){var n=["znamuško","znamušce","znamuška","znamuškow"],e=["zapisk","zapiska","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Pšosym lašuj "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Pšosym zapódaj nanejmjenjej "+a+" "+u(a,n)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(n){return"Móžoš jano "+n.maximum+" "+u(n.maximum,e)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/el.js b/public/js/select2/i18n/el.js new file mode 100644 index 0000000000..d4922a1df5 --- /dev/null +++ b/public/js/select2/i18n/el.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(n){var e=n.input.length-n.maximum,u="Παρακαλώ διαγράψτε "+e+" χαρακτήρ";return 1==e&&(u+="α"),1!=e&&(u+="ες"),u},inputTooShort:function(n){return"Παρακαλώ συμπληρώστε "+(n.minimum-n.input.length)+" ή περισσότερους χαρακτήρες"},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(n){var e="Μπορείτε να επιλέξετε μόνο "+n.maximum+" επιλογ";return 1==n.maximum&&(e+="ή"),1!=n.maximum&&(e+="ές"),e},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"},removeAllItems:function(){return"Καταργήστε όλα τα στοιχεία"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/en.js b/public/js/select2/i18n/en.js new file mode 100644 index 0000000000..3b19285734 --- /dev/null +++ b/public/js/select2/i18n/en.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Please delete "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var n="You can only select "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/es.js b/public/js/select2/i18n/es.js new file mode 100644 index 0000000000..68afd6d259 --- /dev/null +++ b/public/js/select2/i18n/es.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Por favor, elimine "+n+" car";return r+=1==n?"ácter":"acteres"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Por favor, introduzca "+n+" car";return r+=1==n?"ácter":"acteres"},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var n="Sólo puede seleccionar "+e.maximum+" elemento";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/et.js b/public/js/select2/i18n/et.js new file mode 100644 index 0000000000..070b61a26d --- /dev/null +++ b/public/js/select2/i18n/et.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" vähem"},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" rohkem"},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var n="Saad vaid "+e.maximum+" tulemus";return 1==e.maximum?n+="e":n+="t",n+=" valida"},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/eu.js b/public/js/select2/i18n/eu.js new file mode 100644 index 0000000000..90d5e73f8a --- /dev/null +++ b/public/js/select2/i18n/eu.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gutxiago"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gehiago"},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return 1===e.maximum?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/fa.js b/public/js/select2/i18n/fa.js new file mode 100644 index 0000000000..e1ffdbed0d --- /dev/null +++ b/public/js/select2/i18n/fa.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(n){return"لطفاً "+(n.input.length-n.maximum)+" کاراکتر را حذف نمایید"},inputTooShort:function(n){return"لطفاً تعداد "+(n.minimum-n.input.length)+" کاراکتر یا بیشتر وارد نمایید"},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(n){return"شما تنها می‌توانید "+n.maximum+" آیتم را انتخاب نمایید"},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/fi.js b/public/js/select2/i18n/fi.js new file mode 100644 index 0000000000..ffed1247dd --- /dev/null +++ b/public/js/select2/i18n/fi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(n){return"Ole hyvä ja anna "+(n.input.length-n.maximum)+" merkkiä vähemmän"},inputTooShort:function(n){return"Ole hyvä ja anna "+(n.minimum-n.input.length)+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(n){return"Voit valita ainoastaan "+n.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/fr.js b/public/js/select2/i18n/fr.js new file mode 100644 index 0000000000..dd02f973ff --- /dev/null +++ b/public/js/select2/i18n/fr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var n=e.input.length-e.maximum;return"Supprimez "+n+" caractère"+(n>1?"s":"")},inputTooShort:function(e){var n=e.minimum-e.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/gl.js b/public/js/select2/i18n/gl.js new file mode 100644 index 0000000000..208a005705 --- /dev/null +++ b/public/js/select2/i18n/gl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?"Elimine un carácter":"Elimine "+n+" caracteres"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?"Engada un carácter":"Engada "+n+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return 1===e.maximum?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Elimina todos os elementos"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/he.js b/public/js/select2/i18n/he.js new file mode 100644 index 0000000000..25a8805aa0 --- /dev/null +++ b/public/js/select2/i18n/he.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="נא למחוק ";return r+=1===e?"תו אחד":e+" תווים"},inputTooShort:function(n){var e=n.minimum-n.input.length,r="נא להכניס ";return r+=1===e?"תו אחד":e+" תווים",r+=" או יותר"},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(n){var e="באפשרותך לבחור עד ";return 1===n.maximum?e+="פריט אחד":e+=n.maximum+" פריטים",e},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/hi.js b/public/js/select2/i18n/hi.js new file mode 100644 index 0000000000..f3ed798434 --- /dev/null +++ b/public/js/select2/i18n/hi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+" अक्षर को हटा दें";return e>1&&(r=e+" अक्षरों को हटा दें "),r},inputTooShort:function(n){return"कृपया "+(n.minimum-n.input.length)+" या अधिक अक्षर दर्ज करें"},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(n){return"आप केवल "+n.maximum+" आइटम का चयन कर सकते हैं"},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."},removeAllItems:function(){return"सभी वस्तुओं को हटा दें"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/hr.js b/public/js/select2/i18n/hr.js new file mode 100644 index 0000000000..cb3268db16 --- /dev/null +++ b/public/js/select2/i18n/hr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hr",[],function(){function n(n){var e=" "+n+" znak";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+="a"):e+="ova",e}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(e){return"Unesite "+n(e.input.length-e.maximum)},inputTooShort:function(e){return"Unesite još "+n(e.minimum-e.input.length)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(n){return"Maksimalan broj odabranih stavki je "+n.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Ukloni sve stavke"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/hsb.js b/public/js/select2/i18n/hsb.js new file mode 100644 index 0000000000..3d5bf09dbd --- /dev/null +++ b/public/js/select2/i18n/hsb.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hsb",[],function(){var n=["znamješko","znamješce","znamješka","znamješkow"],e=["zapisk","zapiskaj","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Prošu zhašej "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Prošu zapodaj znajmjeńša "+a+" "+u(a,n)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(n){return"Móžeš jenož "+n.maximum+" "+u(n.maximum,e)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/hu.js b/public/js/select2/i18n/hu.js new file mode 100644 index 0000000000..4893aa2f70 --- /dev/null +++ b/public/js/select2/i18n/hu.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){return"Túl hosszú. "+(e.input.length-e.maximum)+" karakterrel több, mint kellene."},inputTooShort:function(e){return"Túl rövid. Még "+(e.minimum-e.input.length)+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/hy.js b/public/js/select2/i18n/hy.js new file mode 100644 index 0000000000..8230007141 --- /dev/null +++ b/public/js/select2/i18n/hy.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(n){return"Խնդրում ենք հեռացնել "+(n.input.length-n.maximum)+" նշան"},inputTooShort:function(n){return"Խնդրում ենք մուտքագրել "+(n.minimum-n.input.length)+" կամ ավել նշաններ"},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(n){return"Դուք կարող եք ընտրել առավելագույնը "+n.maximum+" կետ"},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"},removeAllItems:function(){return"Հեռացնել բոլոր տարրերը"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/id.js b/public/js/select2/i18n/id.js new file mode 100644 index 0000000000..4a0b3bf009 --- /dev/null +++ b/public/js/select2/i18n/id.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(n){return"Hapuskan "+(n.input.length-n.maximum)+" huruf"},inputTooShort:function(n){return"Masukkan "+(n.minimum-n.input.length)+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(n){return"Anda hanya dapat memilih "+n.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/is.js b/public/js/select2/i18n/is.js new file mode 100644 index 0000000000..cca5bbecf0 --- /dev/null +++ b/public/js/select2/i18n/is.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/is",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e="Vinsamlegast styttið texta um "+t+" staf";return t<=1?e:e+"i"},inputTooShort:function(n){var t=n.minimum-n.input.length,e="Vinsamlegast skrifið "+t+" staf";return t>1&&(e+="i"),e+=" í viðbót"},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(n){return"Þú getur aðeins valið "+n.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"},removeAllItems:function(){return"Fjarlægðu öll atriði"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/it.js b/public/js/select2/i18n/it.js new file mode 100644 index 0000000000..507c7d9f29 --- /dev/null +++ b/public/js/select2/i18n/it.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Per favore cancella "+n+" caratter";return t+=1!==n?"i":"e"},inputTooShort:function(e){return"Per favore inserisci "+(e.minimum-e.input.length)+" o più caratteri"},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var n="Puoi selezionare solo "+e.maximum+" element";return 1!==e.maximum?n+="i":n+="o",n},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ja.js b/public/js/select2/i18n/ja.js new file mode 100644 index 0000000000..451025e2c7 --- /dev/null +++ b/public/js/select2/i18n/ja.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(n){return n.input.length-n.maximum+" 文字を削除してください"},inputTooShort:function(n){return"少なくとも "+(n.minimum-n.input.length)+" 文字を入力してください"},loadingMore:function(){return"読み込み中…"},maximumSelected:function(n){return n.maximum+" 件しか選択できません"},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"},removeAllItems:function(){return"すべてのアイテムを削除"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ka.js b/public/js/select2/i18n/ka.js new file mode 100644 index 0000000000..60c593b705 --- /dev/null +++ b/public/js/select2/i18n/ka.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(n){return"გთხოვთ აკრიფეთ "+(n.input.length-n.maximum)+" სიმბოლოთი ნაკლები"},inputTooShort:function(n){return"გთხოვთ აკრიფეთ "+(n.minimum-n.input.length)+" სიმბოლო ან მეტი"},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(n){return"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+n.maximum+" ელემენტი"},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/km.js b/public/js/select2/i18n/km.js new file mode 100644 index 0000000000..4dca94f414 --- /dev/null +++ b/public/js/select2/i18n/km.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(n){return"សូមលុបចេញ "+(n.input.length-n.maximum)+" អក្សរ"},inputTooShort:function(n){return"សូមបញ្ចូល"+(n.minimum-n.input.length)+" អក្សរ រឺ ច្រើនជាងនេះ"},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(n){return"អ្នកអាចជ្រើសរើសបានតែ "+n.maximum+" ជម្រើសប៉ុណ្ណោះ"},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ko.js b/public/js/select2/i18n/ko.js new file mode 100644 index 0000000000..f2880fb004 --- /dev/null +++ b/public/js/select2/i18n/ko.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(n){return"너무 깁니다. "+(n.input.length-n.maximum)+" 글자 지워주세요."},inputTooShort:function(n){return"너무 짧습니다. "+(n.minimum-n.input.length)+" 글자 더 입력해주세요."},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(n){return"최대 "+n.maximum+"개까지만 선택 가능합니다."},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/lt.js b/public/js/select2/i18n/lt.js new file mode 100644 index 0000000000..f6a42155ad --- /dev/null +++ b/public/js/select2/i18n/lt.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/lt",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t="Pašalinkite "+i+" simbol";return t+=n(i,"į","ius","ių")},inputTooShort:function(e){var i=e.minimum-e.input.length,t="Įrašykite dar "+i+" simbol";return t+=n(i,"į","ius","ių")},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(e){var i="Jūs galite pasirinkti tik "+e.maximum+" element";return i+=n(e.maximum,"ą","us","ų")},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"},removeAllItems:function(){return"Pašalinti visus elementus"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/lv.js b/public/js/select2/i18n/lv.js new file mode 100644 index 0000000000..806dc5c433 --- /dev/null +++ b/public/js/select2/i18n/lv.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/lv",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i="Lūdzu ievadiet par "+u;return(i+=" simbol"+e(u,"iem","u","iem"))+" mazāk"},inputTooShort:function(n){var u=n.minimum-n.input.length,i="Lūdzu ievadiet vēl "+u;return i+=" simbol"+e(u,"us","u","us")},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(n){var u="Jūs varat izvēlēties ne vairāk kā "+n.maximum;return u+=" element"+e(n.maximum,"us","u","us")},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/mk.js b/public/js/select2/i18n/mk.js new file mode 100644 index 0000000000..cb7b84a263 --- /dev/null +++ b/public/js/select2/i18n/mk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/mk",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,"Ве молиме внесете "+n.maximum+" помалку карактер");return 1!==n.maximum&&(e+="и"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,"Ве молиме внесете уште "+n.maximum+" карактер");return 1!==n.maximum&&(e+="и"),e},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(n){var e="Можете да изберете само "+n.maximum+" ставк";return 1===n.maximum?e+="а":e+="и",e},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"},removeAllItems:function(){return"Отстрани ги сите предмети"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ms.js b/public/js/select2/i18n/ms.js new file mode 100644 index 0000000000..6bd7eaa3e0 --- /dev/null +++ b/public/js/select2/i18n/ms.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(n){return"Sila hapuskan "+(n.input.length-n.maximum)+" aksara"},inputTooShort:function(n){return"Sila masukkan "+(n.minimum-n.input.length)+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(n){return"Anda hanya boleh memilih "+n.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/nb.js b/public/js/select2/i18n/nb.js new file mode 100644 index 0000000000..25d89c6870 --- /dev/null +++ b/public/js/select2/i18n/nb.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){return"Vennligst fjern "+(e.input.length-e.maximum)+" tegn"},inputTooShort:function(e){return"Vennligst skriv inn "+(e.minimum-e.input.length)+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ne.js b/public/js/select2/i18n/ne.js new file mode 100644 index 0000000000..1c39f67210 --- /dev/null +++ b/public/js/select2/i18n/ne.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ne",[],function(){return{errorLoading:function(){return"नतिजाहरु देखाउन सकिएन।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="कृपया "+e+" अक्षर मेटाउनुहोस्।";return 1!=e&&(u+="कृपया "+e+" अक्षरहरु मेटाउनुहोस्।"),u},inputTooShort:function(n){return"कृपया बाँकी रहेका "+(n.minimum-n.input.length)+" वा अरु धेरै अक्षरहरु भर्नुहोस्।"},loadingMore:function(){return"अरु नतिजाहरु भरिँदैछन् …"},maximumSelected:function(n){var e="तँपाई "+n.maximum+" वस्तु मात्र छान्न पाउँनुहुन्छ।";return 1!=n.maximum&&(e="तँपाई "+n.maximum+" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।"),e},noResults:function(){return"कुनै पनि नतिजा भेटिएन।"},searching:function(){return"खोजि हुँदैछ…"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/nl.js b/public/js/select2/i18n/nl.js new file mode 100644 index 0000000000..2b74058d23 --- /dev/null +++ b/public/js/select2/i18n/nl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){return"Gelieve "+(e.input.length-e.maximum)+" karakters te verwijderen"},inputTooShort:function(e){return"Gelieve "+(e.minimum-e.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var n=1==e.maximum?"kan":"kunnen",r="Er "+n+" maar "+e.maximum+" item";return 1!=e.maximum&&(r+="s"),r+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/pl.js b/public/js/select2/i18n/pl.js new file mode 100644 index 0000000000..4ca5748c38 --- /dev/null +++ b/public/js/select2/i18n/pl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/pl",[],function(){var n=["znak","znaki","znaków"],e=["element","elementy","elementów"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Usuń "+t+" "+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Podaj przynajmniej "+t+" "+r(t,n)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(n){return"Możesz zaznaczyć tylko "+n.maximum+" "+r(n.maximum,e)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ps.js b/public/js/select2/i18n/ps.js new file mode 100644 index 0000000000..9b008e4c14 --- /dev/null +++ b/public/js/select2/i18n/ps.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="د مهربانۍ لمخي "+e+" توری ړنګ کړئ";return 1!=e&&(r=r.replace("توری","توري")),r},inputTooShort:function(n){return"لږ تر لږه "+(n.minimum-n.input.length)+" يا ډېر توري وليکئ"},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(n){var e="تاسو يوازي "+n.maximum+" قلم په نښه کولای سی";return 1!=n.maximum&&(e=e.replace("قلم","قلمونه")),e},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."},removeAllItems:function(){return"ټول توکي لرې کړئ"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/pt-BR.js b/public/js/select2/i18n/pt-BR.js new file mode 100644 index 0000000000..c991e2550a --- /dev/null +++ b/public/js/select2/i18n/pt-BR.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Apague "+n+" caracter";return 1!=n&&(r+="es"),r},inputTooShort:function(e){return"Digite "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var n="Você só pode selecionar "+e.maximum+" ite";return 1==e.maximum?n+="m":n+="ns",n},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/pt.js b/public/js/select2/i18n/pt.js new file mode 100644 index 0000000000..b5da1a6b49 --- /dev/null +++ b/public/js/select2/i18n/pt.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var r=e.input.length-e.maximum,n="Por favor apague "+r+" ";return n+=1!=r?"caracteres":"caractere"},inputTooShort:function(e){return"Introduza "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var r="Apenas pode seleccionar "+e.maximum+" ";return r+=1!=e.maximum?"itens":"item"},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ro.js b/public/js/select2/i18n/ro.js new file mode 100644 index 0000000000..1ba7b40bef --- /dev/null +++ b/public/js/select2/i18n/ro.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return 1!==t&&(n+="e"),n},inputTooShort:function(e){return"Vă rugăm să introduceți "+(e.minimum-e.input.length)+" sau mai multe caractere"},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",1!==e.maximum&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"},removeAllItems:function(){return"Eliminați toate elementele"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/ru.js b/public/js/select2/i18n/ru.js new file mode 100644 index 0000000000..63a7d66c3b --- /dev/null +++ b/public/js/select2/i18n/ru.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ru",[],function(){function n(n,e,r,u){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?r:e:u}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Пожалуйста, введите на "+r+" символ";return u+=n(r,"","a","ов"),u+=" меньше"},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Пожалуйста, введите ещё хотя бы "+r+" символ";return u+=n(r,"","a","ов")},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(e){var r="Вы можете выбрать не более "+e.maximum+" элемент";return r+=n(e.maximum,"","a","ов")},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/sk.js b/public/js/select2/i18n/sk.js new file mode 100644 index 0000000000..5049528ad0 --- /dev/null +++ b/public/js/select2/i18n/sk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadajte o jeden znak menej":t>=2&&t<=4?"Prosím, zadajte o "+e[t](!0)+" znaky menej":"Prosím, zadajte o "+t+" znakov menej"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadajte ešte jeden znak":t<=4?"Prosím, zadajte ešte ďalšie "+e[t](!0)+" znaky":"Prosím, zadajte ešte ďalších "+t+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(n){return 1==n.maximum?"Môžete zvoliť len jednu položku":n.maximum>=2&&n.maximum<=4?"Môžete zvoliť najviac "+e[n.maximum](!1)+" položky":"Môžete zvoliť najviac "+n.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/sl.js b/public/js/select2/i18n/sl.js new file mode 100644 index 0000000000..4d0b7d3e34 --- /dev/null +++ b/public/js/select2/i18n/sl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Prosim zbrišite "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Prosim vpišite še "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var n="Označite lahko največ "+e.maximum+" predmet";return 2==e.maximum?n+="a":1!=e.maximum&&(n+="e"),n},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"},removeAllItems:function(){return"Odstranite vse elemente"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/sq.js b/public/js/select2/i18n/sq.js new file mode 100644 index 0000000000..59162024ed --- /dev/null +++ b/public/js/select2/i18n/sq.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sq",[],function(){return{errorLoading:function(){return"Rezultatet nuk mund të ngarkoheshin."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Të lutem fshi "+n+" karakter";return 1!=n&&(t+="e"),t},inputTooShort:function(e){return"Të lutem shkruaj "+(e.minimum-e.input.length)+" ose më shumë karaktere"},loadingMore:function(){return"Duke ngarkuar më shumë rezultate…"},maximumSelected:function(e){var n="Mund të zgjedhësh vetëm "+e.maximum+" element";return 1!=e.maximum&&(n+="e"),n},noResults:function(){return"Nuk u gjet asnjë rezultat"},searching:function(){return"Duke kërkuar…"},removeAllItems:function(){return"Hiq të gjitha sendet"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/sr-Cyrl.js b/public/js/select2/i18n/sr-Cyrl.js new file mode 100644 index 0000000000..ce13ce8f9a --- /dev/null +++ b/public/js/select2/i18n/sr-Cyrl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr-Cyrl",[],function(){function n(n,e,r,u){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:u}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Обришите "+r+" симбол";return u+=n(r,"","а","а")},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Укуцајте бар још "+r+" симбол";return u+=n(r,"","а","а")},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(e){var r="Можете изабрати само "+e.maximum+" ставк";return r+=n(e.maximum,"у","е","и")},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/sr.js b/public/js/select2/i18n/sr.js new file mode 100644 index 0000000000..dd407a06dc --- /dev/null +++ b/public/js/select2/i18n/sr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr",[],function(){function n(n,e,r,t){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(e){var r=e.input.length-e.maximum,t="Obrišite "+r+" simbol";return t+=n(r,"","a","a")},inputTooShort:function(e){var r=e.minimum-e.input.length,t="Ukucajte bar još "+r+" simbol";return t+=n(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(e){var r="Možete izabrati samo "+e.maximum+" stavk";return r+=n(e.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/sv.js b/public/js/select2/i18n/sv.js new file mode 100644 index 0000000000..1bc8724a79 --- /dev/null +++ b/public/js/select2/i18n/sv.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(n){return"Vänligen sudda ut "+(n.input.length-n.maximum)+" tecken"},inputTooShort:function(n){return"Vänligen skriv in "+(n.minimum-n.input.length)+" eller fler tecken"},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(n){return"Du kan max välja "+n.maximum+" element"},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/th.js b/public/js/select2/i18n/th.js new file mode 100644 index 0000000000..63eab7114b --- /dev/null +++ b/public/js/select2/i18n/th.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(n){return"โปรดลบออก "+(n.input.length-n.maximum)+" ตัวอักษร"},inputTooShort:function(n){return"โปรดพิมพ์เพิ่มอีก "+(n.minimum-n.input.length)+" ตัวอักษร"},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(n){return"คุณสามารถเลือกได้ไม่เกิน "+n.maximum+" รายการ"},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/tk.js b/public/js/select2/i18n/tk.js new file mode 100644 index 0000000000..30255ff377 --- /dev/null +++ b/public/js/select2/i18n/tk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){return e.input.length-e.maximum+" harp bozuň."},inputTooShort:function(e){return"Ýene-de iň az "+(e.minimum-e.input.length)+" harp ýazyň."},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){return"Diňe "+e.maximum+" sanysyny saýlaň."},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/tr.js b/public/js/select2/i18n/tr.js new file mode 100644 index 0000000000..fc4c0bf051 --- /dev/null +++ b/public/js/select2/i18n/tr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(n){return n.input.length-n.maximum+" karakter daha girmelisiniz"},inputTooShort:function(n){return"En az "+(n.minimum-n.input.length)+" karakter daha girmelisiniz"},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(n){return"Sadece "+n.maximum+" seçim yapabilirsiniz"},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/uk.js b/public/js/select2/i18n/uk.js new file mode 100644 index 0000000000..63697e3884 --- /dev/null +++ b/public/js/select2/i18n/uk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/uk",[],function(){function n(n,e,u,r){return n%100>10&&n%100<15?r:n%10==1?e:n%10>1&&n%10<5?u:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(e){return"Будь ласка, видаліть "+(e.input.length-e.maximum)+" "+n(e.maximum,"літеру","літери","літер")},inputTooShort:function(n){return"Будь ласка, введіть "+(n.minimum-n.input.length)+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(e){return"Ви можете вибрати лише "+e.maximum+" "+n(e.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"},removeAllItems:function(){return"Видалити всі елементи"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/vi.js b/public/js/select2/i18n/vi.js new file mode 100644 index 0000000000..24f3bc2d61 --- /dev/null +++ b/public/js/select2/i18n/vi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/vi",[],function(){return{inputTooLong:function(n){return"Vui lòng xóa bớt "+(n.input.length-n.maximum)+" ký tự"},inputTooShort:function(n){return"Vui lòng nhập thêm từ "+(n.minimum-n.input.length)+" ký tự trở lên"},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(n){return"Chỉ có thể chọn được "+n.maximum+" lựa chọn"},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/zh-CN.js b/public/js/select2/i18n/zh-CN.js new file mode 100644 index 0000000000..2c5649d310 --- /dev/null +++ b/public/js/select2/i18n/zh-CN.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(n){return"请删除"+(n.input.length-n.maximum)+"个字符"},inputTooShort:function(n){return"请再输入至少"+(n.minimum-n.input.length)+"个字符"},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(n){return"最多只能选择"+n.maximum+"个项目"},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"},removeAllItems:function(){return"删除所有项目"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/js/select2/i18n/zh-TW.js b/public/js/select2/i18n/zh-TW.js new file mode 100644 index 0000000000..570a566937 --- /dev/null +++ b/public/js/select2/i18n/zh-TW.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(n){return"請刪掉"+(n.input.length-n.maximum)+"個字元"},inputTooShort:function(n){return"請再輸入"+(n.minimum-n.input.length)+"個字元"},loadingMore:function(){return"載入中…"},maximumSelected:function(n){return"你只能選擇最多"+n.maximum+"項"},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"},removeAllItems:function(){return"刪除所有項目"}}}),n.define,n.require}(); \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index b48530bf85..f9a49f7725 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,5 +1,5 @@ { - "/js/build/app.js": "/js/build/app.js?id=d47043e03f80612693d9b9034d94e28f", + "/js/build/app.js": "/js/build/app.js?id=842cc33168d973ac10d35eb664be2a2c", "/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374", "/css/build/overrides.css": "/css/build/overrides.css?id=004835e70ed3ae2e2340162b7a37c752", @@ -18,9 +18,69 @@ "/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=553ee68741b5a392037abcf04da80adc", "/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da", - "/css/dist/all.css": "/css/dist/all.css?id=0f9956c66f93c6417f69f0134c6ae128", + "/css/dist/all.css": "/css/dist/all.css?id=656b0a0561a4be447c195846c3de3558", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", + "/js/select2/i18n/af.js": "/js/select2/i18n/af.js?id=4f6fcd73488ce79fae1b7a90aceaecde", + "/js/select2/i18n/ar.js": "/js/select2/i18n/ar.js?id=65aa8e36bf5da57ff4e3f22a835ab035", + "/js/select2/i18n/az.js": "/js/select2/i18n/az.js?id=270c257daf8140a0cf23ad5de6f8ed1b", + "/js/select2/i18n/bg.js": "/js/select2/i18n/bg.js?id=39b8be30d4f06779839cfaaa415d0690", + "/js/select2/i18n/bn.js": "/js/select2/i18n/bn.js?id=6d42b4dd5665d0fa28f06994eedb4899", + "/js/select2/i18n/bs.js": "/js/select2/i18n/bs.js?id=91624382358e95086b80f00fa0bd6955", + "/js/select2/i18n/build.txt": "/js/select2/i18n/build.txt?id=c9fb9399ed170dfbc76c0d3b26267c1f", + "/js/select2/i18n/ca.js": "/js/select2/i18n/ca.js?id=a166b745933a48ce3d0580a74210617d", + "/js/select2/i18n/cs.js": "/js/select2/i18n/cs.js?id=4f43e8e7d33aa1e6aadf3286c7e379e9", + "/js/select2/i18n/da.js": "/js/select2/i18n/da.js?id=766346afe4dd72c003242cfb1cbe2617", + "/js/select2/i18n/de.js": "/js/select2/i18n/de.js?id=8a1c222b0204c8faaf6d3c07c961d8aa", + "/js/select2/i18n/dsb.js": "/js/select2/i18n/dsb.js?id=56372c92d2f1bcb2b8e382981dca0546", + "/js/select2/i18n/el.js": "/js/select2/i18n/el.js?id=27097f071856a0f4e82298fe407d1eac", + "/js/select2/i18n/en.js": "/js/select2/i18n/en.js?id=cf932ba09a98fe11bde8e1f3dd5e2cfa", + "/js/select2/i18n/es.js": "/js/select2/i18n/es.js?id=66dbc2652fb1b769bf29058e707b43c8", + "/js/select2/i18n/et.js": "/js/select2/i18n/et.js?id=2b96fd98289dc3fc5e61f21e6e1a7d52", + "/js/select2/i18n/eu.js": "/js/select2/i18n/eu.js?id=adfe5c97b72c20bb0afbc0968b440e50", + "/js/select2/i18n/fa.js": "/js/select2/i18n/fa.js?id=3b5bd1961cfd0a6f96ac4cd2ea16c243", + "/js/select2/i18n/fi.js": "/js/select2/i18n/fi.js?id=614ec42aa9baaf687ab9ff44705dfd2e", + "/js/select2/i18n/fr.js": "/js/select2/i18n/fr.js?id=05e0542fcfe6df5ab074a377dc1a5a9b", + "/js/select2/i18n/gl.js": "/js/select2/i18n/gl.js?id=d99b1fedaa86d011818cfbab11dd355c", + "/js/select2/i18n/he.js": "/js/select2/i18n/he.js?id=e420ff6cd3ed77ab9271c9b3d441442c", + "/js/select2/i18n/hi.js": "/js/select2/i18n/hi.js?id=70640d41628f36284af78b22ea8b283b", + "/js/select2/i18n/hr.js": "/js/select2/i18n/hr.js?id=a2b092cc1147f07b978145d407c67fa1", + "/js/select2/i18n/hsb.js": "/js/select2/i18n/hsb.js?id=fa3b55265efe8f4182d5e65a1a506252", + "/js/select2/i18n/hu.js": "/js/select2/i18n/hu.js?id=6ec6039cb8a354e2bc6a1794f729caae", + "/js/select2/i18n/hy.js": "/js/select2/i18n/hy.js?id=c7babaeef5a625566434ea79b19d4c7e", + "/js/select2/i18n/id.js": "/js/select2/i18n/id.js?id=04debded514d3962bb74f05532e793d4", + "/js/select2/i18n/is.js": "/js/select2/i18n/is.js?id=3ddd9a6a97e93e1910210c9eefc1bca1", + "/js/select2/i18n/it.js": "/js/select2/i18n/it.js?id=be4fe8d365b5916432504d1f98e2e0af", + "/js/select2/i18n/ja.js": "/js/select2/i18n/ja.js?id=170ae885d74f1634271e1eb470cb4621", + "/js/select2/i18n/ka.js": "/js/select2/i18n/ka.js?id=2083264a54f0873f55468affa796d61e", + "/js/select2/i18n/km.js": "/js/select2/i18n/km.js?id=c23089cb06ca871153ba9bfe8458a378", + "/js/select2/i18n/ko.js": "/js/select2/i18n/ko.js?id=e7be6c20e67393698a0f05971e9720c1", + "/js/select2/i18n/lt.js": "/js/select2/i18n/lt.js?id=23c7ce903300fc118947994b9cdd16cb", + "/js/select2/i18n/lv.js": "/js/select2/i18n/lv.js?id=08e62128eac1d0e8ac32cfaf75f2ec9f", + "/js/select2/i18n/mk.js": "/js/select2/i18n/mk.js?id=dabbb90871300ce3a295969bc0260420", + "/js/select2/i18n/ms.js": "/js/select2/i18n/ms.js?id=4ba82c9a51ce975fe0e4eff5f6eece65", + "/js/select2/i18n/nb.js": "/js/select2/i18n/nb.js?id=da2fce143f2794208e36dc8520e4c36a", + "/js/select2/i18n/ne.js": "/js/select2/i18n/ne.js?id=3d79fd3f08dbfd0973cf91dd6a62bccd", + "/js/select2/i18n/nl.js": "/js/select2/i18n/nl.js?id=997868a37ed89062ad7b19c9a88f1bb0", + "/js/select2/i18n/pl.js": "/js/select2/i18n/pl.js?id=6031b4f164521f58dfec7d1e46238861", + "/js/select2/i18n/ps.js": "/js/select2/i18n/ps.js?id=38dfa47af9e086eece5a333d711abc79", + "/js/select2/i18n/pt-BR.js": "/js/select2/i18n/pt-BR.js?id=e1b294433e7fc3175842ce37b9f15014", + "/js/select2/i18n/pt.js": "/js/select2/i18n/pt.js?id=33b4a3b44d437614b83497e36c138ca9", + "/js/select2/i18n/ro.js": "/js/select2/i18n/ro.js?id=f75cb460ec3b98b4b9017e9513ca20cf", + "/js/select2/i18n/ru.js": "/js/select2/i18n/ru.js?id=934aa95f5b5f32c72c80857bb2622074", + "/js/select2/i18n/sk.js": "/js/select2/i18n/sk.js?id=33d02cef8d110f358acd1624f7f79ffe", + "/js/select2/i18n/sl.js": "/js/select2/i18n/sl.js?id=131a78bc075237a13750ead3807683d2", + "/js/select2/i18n/sq.js": "/js/select2/i18n/sq.js?id=5636b60d29c9bdd55f18a4585746b6d1", + "/js/select2/i18n/sr-Cyrl.js": "/js/select2/i18n/sr-Cyrl.js?id=f254bb8c4c7ce00d9d17e9e91945ad9b", + "/js/select2/i18n/sr.js": "/js/select2/i18n/sr.js?id=5ed85a48f483d17a7ad102832cb11ea1", + "/js/select2/i18n/sv.js": "/js/select2/i18n/sv.js?id=7a9c2f71e7779a263b2cf3520b1aa611", + "/js/select2/i18n/th.js": "/js/select2/i18n/th.js?id=f38c20b0221b68924d6c8f0773cb252d", + "/js/select2/i18n/tk.js": "/js/select2/i18n/tk.js?id=7c572a68c78fb798f11f7d8c78ebb9d6", + "/js/select2/i18n/tr.js": "/js/select2/i18n/tr.js?id=b5a0643d1545f4a3e1622e65e46ddc7c", + "/js/select2/i18n/uk.js": "/js/select2/i18n/uk.js?id=8cede7f4803c7dbd1e8261bfa1932b7c", + "/js/select2/i18n/vi.js": "/js/select2/i18n/vi.js?id=097a5b75b3e146e2d94ab8e1510be607", + "/js/select2/i18n/zh-CN.js": "/js/select2/i18n/zh-CN.js?id=2cff662ec5f972b4613566cf5988cda2", + "/js/select2/i18n/zh-TW.js": "/js/select2/i18n/zh-TW.js?id=04554a227c2ba0f3bb6ca3d2e01e5440", "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0141634c24336be626e05c8b77d1fa27", "/css/webfonts/fa-brands-400.woff2": "/css/webfonts/fa-brands-400.woff2?id=b3cf7a6dd618bd392f3ddcc61343a463", "/css/webfonts/fa-regular-400.ttf": "/css/webfonts/fa-regular-400.ttf?id=9cf69d99de9d83f82466a647f5cb1f94", @@ -29,10 +89,12 @@ "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=96d16b1bdb177fd796c810b9e706c780", "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=8994b282f9f3b7a00380bb1e2731a4bf", "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=111e341dba724e1df946e8d1f406a7bd", - "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=5f79123a6750afd34dbf565faec3dda3", - "/js/build/vendor.js": "/js/build/vendor.js?id=179bfe20e8767f7df32658c6b5a10ca3", - "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=e5918703a22f8992c4c98f1dbbecb8f7", - "/js/dist/all.js": "/js/dist/all.js?id=a5164c1c20074421f561fade29d392c3", + "/js/dist/bootstrap-table-locale-all.min.js": "/js/dist/bootstrap-table-locale-all.min.js?id=27eb00f47f9bae70cd630d184b7969f1", + "/js/dist/bootstrap-table-en-US.min.js": "/js/dist/bootstrap-table-en-US.min.js?id=57bdb4770b2924f5efeda100caf3c9b7", + "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=8abbb6aea625ec64cd7ebdad77ebf6e5", + "/js/build/vendor.js": "/js/build/vendor.js?id=e27070bdbc5fce3bfd132b952d641fd6", + "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=859e11e4e6b05c84e4b7302de29bac5e", + "/js/dist/all.js": "/js/dist/all.js?id=01108f9d8f4f67b20669f0c25a64eb5d", "/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=553ee68741b5a392037abcf04da80adc", "/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb", diff --git a/public/uploads/.gitignore b/public/uploads/.gitignore index 73edf0327e..e841eefe2f 100755 --- a/public/uploads/.gitignore +++ b/public/uploads/.gitignore @@ -1,2 +1,3 @@ +* !.gitignore -* \ No newline at end of file +!default.png \ No newline at end of file diff --git a/public/uploads/avatars/.gitignore b/public/uploads/avatars/.gitignore index f935021a8f..7f5853c769 100755 --- a/public/uploads/avatars/.gitignore +++ b/public/uploads/avatars/.gitignore @@ -1 +1,2 @@ !.gitignore +!default.png \ No newline at end of file diff --git a/public/uploads/default.png b/public/uploads/default.png new file mode 100644 index 0000000000..6a39280543 Binary files /dev/null and b/public/uploads/default.png differ diff --git a/resources/assets/js/snipeit.js b/resources/assets/js/snipeit.js index bd03690ca7..f8b0a21efc 100755 --- a/resources/assets/js/snipeit.js +++ b/resources/assets/js/snipeit.js @@ -219,6 +219,8 @@ $(document).ready(function () { */ placeholder: '', allowClear: true, + language: $('meta[name="language"]').attr('content'), + dir: $('meta[name="language-direction"]').attr('content'), ajax: { diff --git a/resources/lang/aa-ER/account/general.php b/resources/lang/aa-ER/account/general.php index 1d698e0fb2..7d04f1acb6 100644 --- a/resources/lang/aa-ER/account/general.php +++ b/resources/lang/aa-ER/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'crwdns6798:0crwdne6798:0', + 'personal_access_token' => 'crwdns12312:0crwdne12312:0', + 'personal_api_keys_success' => 'crwdns12314:0crwdne12314:0', + 'here_is_api_key' => 'crwdns12316:0crwdne12316:0', 'api_key_warning' => 'crwdns12268:0crwdne12268:0', 'api_base_url' => 'crwdns6802:0crwdne6802:0', 'api_base_url_endpoint' => 'crwdns6804:0crwdne6804:0', 'api_token_expiration_time' => 'crwdns6806:0crwdne6806:0', 'api_reference' => 'crwdns12270:0crwdne12270:0', 'profile_updated' => 'crwdns12202:0crwdne12202:0', + 'no_tokens' => 'crwdns12318:0crwdne12318:0', ); diff --git a/resources/lang/aa-ER/admin/accessories/message.php b/resources/lang/aa-ER/admin/accessories/message.php index 8e91c099ee..86442f615f 100644 --- a/resources/lang/aa-ER/admin/accessories/message.php +++ b/resources/lang/aa-ER/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'crwdns1229:0crwdne1229:0', 'success' => 'crwdns1230:0crwdne1230:0', 'unavailable' => 'crwdns11523:0crwdne11523:0', - 'user_does_not_exist' => 'crwdns1231:0crwdne1231:0' + 'user_does_not_exist' => 'crwdns1231:0crwdne1231:0', + 'checkout_qty' => array( + 'lte' => 'crwdns12326:0crwdne12326:0', + ), + ), 'checkin' => array( diff --git a/resources/lang/aa-ER/admin/consumables/general.php b/resources/lang/aa-ER/admin/consumables/general.php index 9425c9956d..8e762c7419 100644 --- a/resources/lang/aa-ER/admin/consumables/general.php +++ b/resources/lang/aa-ER/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'crwdns1307:0crwdne1307:0', 'total' => 'crwdns1308:0crwdne1308:0', 'update' => 'crwdns1398:0crwdne1398:0', + 'inventory_warning' => 'crwdns12614:0crwdne12614:0', ); diff --git a/resources/lang/aa-ER/admin/consumables/message.php b/resources/lang/aa-ER/admin/consumables/message.php index 6473ad0991..86b1d95c53 100644 --- a/resources/lang/aa-ER/admin/consumables/message.php +++ b/resources/lang/aa-ER/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'crwdns12320:0crwdne12320:0', 'does_not_exist' => 'crwdns1309:0crwdne1309:0', 'create' => array( diff --git a/resources/lang/aa-ER/admin/custom_fields/message.php b/resources/lang/aa-ER/admin/custom_fields/message.php index c76b8f86af..0531ba73a1 100644 --- a/resources/lang/aa-ER/admin/custom_fields/message.php +++ b/resources/lang/aa-ER/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'crwdns1505:0crwdne1505:0', 'already_added' => 'crwdns1506:0crwdne1506:0', + 'none_selected' => 'crwdns12586:0crwdne12586:0', 'create' => array( 'error' => 'crwdns1507:0crwdne1507:0', diff --git a/resources/lang/aa-ER/admin/hardware/message.php b/resources/lang/aa-ER/admin/hardware/message.php index e78fdca87c..0776a849bb 100644 --- a/resources/lang/aa-ER/admin/hardware/message.php +++ b/resources/lang/aa-ER/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'crwdns1173:0crwdne1173:0', + 'undeployable' => 'crwdns12562:0crwdne12562:0', 'does_not_exist' => 'crwdns740:0crwdne740:0', 'does_not_exist_var'=> 'crwdns12188:0crwdne12188:0', 'no_tag' => 'crwdns12190:0crwdne12190:0', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'crwdns12564:0crwdne12564:0', 'error' => 'crwdns1688:0crwdne1688:0', 'errorDetail' => 'crwdns1689:0crwdne1689:0', 'success' => 'crwdns1690:0crwdne1690:0', diff --git a/resources/lang/aa-ER/admin/licenses/general.php b/resources/lang/aa-ER/admin/licenses/general.php index f6295cab10..acfe10c6c3 100644 --- a/resources/lang/aa-ER/admin/licenses/general.php +++ b/resources/lang/aa-ER/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'crwdns957:0crwdne957:0', 'license_seats' => 'crwdns958:0crwdne958:0', 'seat' => 'crwdns959:0crwdne959:0', + 'seat_count' => 'crwdns12566:0crwdne12566:0', 'seats' => 'crwdns960:0crwdne960:0', 'software_licenses' => 'crwdns961:0crwdne961:0', 'user' => 'crwdns962:0crwdne962:0', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'crwdns11549:0crwdne11549:0', - 'modal' => 'crwdns11551:0crwdne11551:0', + 'modal' => 'crwdns12568:0crwdne12568:0', 'enabled_tooltip' => 'crwdns11553:0crwdne11553:0', 'disabled_tooltip' => 'crwdns11555:0crwdne11555:0', 'disabled_tooltip_reassignable' => 'crwdns11803:0crwdne11803:0', 'success' => 'crwdns11557:0crwdne11557:0', - 'log_msg' => 'crwdns11559:0crwdne11559:0', + 'log_msg' => 'crwdns12570:0crwdne12570:0', ], 'checkout_all' => [ diff --git a/resources/lang/aa-ER/admin/licenses/message.php b/resources/lang/aa-ER/admin/licenses/message.php index f8a8298276..2a677fb72c 100644 --- a/resources/lang/aa-ER/admin/licenses/message.php +++ b/resources/lang/aa-ER/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'crwdns946:0crwdne946:0', 'success' => 'crwdns947:0crwdne947:0', 'not_enough_seats' => 'crwdns11902:0crwdne11902:0', + 'mismatch' => 'crwdns12574:0crwdne12574:0', + 'unavailable' => 'crwdns12576:0crwdne12576:0', ), 'checkin' => array( diff --git a/resources/lang/aa-ER/admin/models/message.php b/resources/lang/aa-ER/admin/models/message.php index b5f0dc4f34..3c9b2013b1 100644 --- a/resources/lang/aa-ER/admin/models/message.php +++ b/resources/lang/aa-ER/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'crwdns11693:0crwdne11693:0', 'no_association_fix' => 'crwdns11235:0crwdne11235:0', 'assoc_users' => 'crwdns672:0crwdne672:0', - + 'invalid_category_type' => 'crwdns12302:0crwdne12302:0', 'create' => array( 'error' => 'crwdns673:0crwdne673:0', diff --git a/resources/lang/aa-ER/admin/settings/general.php b/resources/lang/aa-ER/admin/settings/general.php index a218b1a45f..11cc3850b4 100644 --- a/resources/lang/aa-ER/admin/settings/general.php +++ b/resources/lang/aa-ER/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'crwdns1969:0crwdne1969:0', 'ldap_manager' => 'crwdns6814:0crwdne6814:0', 'ldap_server' => 'crwdns1451:0crwdne1451:0', - 'ldap_server_help' => 'crwdns1675:0crwdne1675:0', + 'ldap_server_help' => 'crwdns12578:0crwdne12578:0', 'ldap_server_cert' => 'crwdns1475:0crwdne1475:0', 'ldap_server_cert_ignore' => 'crwdns1476:0crwdne1476:0', 'ldap_server_cert_help' => 'crwdns1477:0crwdne1477:0', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'crwdns6349:0crwdne6349:0', 'ldap_test_sync' => 'crwdns6351:0crwdne6351:0', 'license' => 'crwdns1989:0crwdne1989:0', - 'load_remote' => 'crwdns12086:0crwdne12086:0', - 'load_remote_help_text' => 'crwdns12088:0crwdne12088:0', + 'load_remote' => 'crwdns12292:0crwdne12292:0', + 'load_remote_help_text' => 'crwdns12294:0crwdne12294:0', 'login' => 'crwdns6353:0crwdne6353:0', 'login_attempt' => 'crwdns6355:0crwdne6355:0', 'login_ip' => 'crwdns6357:0crwdne6357:0', @@ -150,7 +150,7 @@ return [ 'optional' => 'crwdns1298:0crwdne1298:0', 'per_page' => 'crwdns832:0crwdne832:0', 'php' => 'crwdns1120:0crwdne1120:0', - 'php_info' => 'crwdns6365:0crwdne6365:0', + 'php_info' => 'crwdns12298:0crwdne12298:0', 'php_overview' => 'crwdns6367:0crwdne6367:0', 'php_overview_keywords' => 'crwdns6369:0crwdne6369:0', 'php_overview_help' => 'crwdns6371:0crwdne6371:0', @@ -375,5 +375,9 @@ return [ 'timezone' => 'crwdns11831:0crwdne11831:0', 'profile_edit' => 'crwdns12280:0crwdne12280:0', 'profile_edit_help' => 'crwdns12282:0crwdne12282:0', + 'default_avatar' => 'crwdns12588:0crwdne12588:0', + 'default_avatar_help' => 'crwdns12590:0crwdne12590:0', + 'restore_default_avatar' => 'crwdns12592:0crwdne12592:0', + 'restore_default_avatar_help' => 'crwdns12594:0crwdne12594:0', ]; diff --git a/resources/lang/aa-ER/button.php b/resources/lang/aa-ER/button.php index 363e8b894b..d15ed2765c 100644 --- a/resources/lang/aa-ER/button.php +++ b/resources/lang/aa-ER/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'crwdns10510:0crwdne10510:0', 'delete' => 'crwdns965:0crwdne965:0', 'edit' => 'crwdns964:0crwdne964:0', + 'clone' => 'crwdns12596:0crwdne12596:0', 'restore' => 'crwdns966:0crwdne966:0', 'remove' => 'crwdns6301:0crwdne6301:0', 'request' => 'crwdns1407:0crwdne1407:0', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'crwdns6307:0crwdne6307:0', 'append' => 'crwdns6309:0crwdne6309:0', 'new' => 'crwdns6311:0crwdne6311:0', + 'var' => [ + 'clone' => 'crwdns12598:0crwdne12598:0', + 'edit' => 'crwdns12600:0crwdne12600:0', + 'delete' => 'crwdns12602:0crwdne12602:0', + 'restore' => 'crwdns12604:0crwdne12604:0', + 'create' => 'crwdns12606:0crwdne12606:0', + 'checkout' => 'crwdns12608:0crwdne12608:0', + 'checkin' => 'crwdns12610:0crwdne12610:0', + ] ]; diff --git a/resources/lang/aa-ER/general.php b/resources/lang/aa-ER/general.php index bea3cdd70f..dc33fad2aa 100644 --- a/resources/lang/aa-ER/general.php +++ b/resources/lang/aa-ER/general.php @@ -548,6 +548,14 @@ return [ 'license_seats' => 'crwdns12142:0crwdne12142:0', 'consumables' => 'crwdns12144:0crwdne12144:0', 'components' => 'crwdns12146:0crwdne12146:0', - ] + ], + 'more_info' => 'crwdns12288:0crwdne12288:0', + 'quickscan_bulk_help' => 'crwdns12290:0crwdne12290:0', + 'whoops' => 'crwdns12304:0crwdne12304:0', + 'something_went_wrong' => 'crwdns12306:0crwdne12306:0', + 'close' => 'crwdns12308:0crwdne12308:0', + 'expires' => 'crwdns12310:0crwdne12310:0', + 'map_fields'=> 'crwdns12572:0crwdne12572:0', + 'remaining_var' => 'crwdns12612:0crwdne12612:0', ]; diff --git a/resources/lang/aa-ER/mail.php b/resources/lang/aa-ER/mail.php index 3bbee46b87..509d08dbe4 100644 --- a/resources/lang/aa-ER/mail.php +++ b/resources/lang/aa-ER/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'crwdns1736:0crwdne1736:0', 'inventory_report' => 'crwdns11243:0crwdne11243:0', 'item' => 'crwdns1737:0crwdne1737:0', + 'item_checked_reminder' => 'crwdns12322:0crwdne12322:0', 'license_expiring_alert' => 'crwdns2048:0crwdne2048:0', 'link_to_update_password' => 'crwdns1742:0crwdne1742:0', 'login' => 'crwdns1744:0crwdne1744:0', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'crwdns6002:0crwdne6002:0', 'user' => 'crwdns2032:0crwdne2032:0', 'username' => 'crwdns2033:0crwdne2033:0', + 'unaccepted_asset_reminder' => 'crwdns12324:0crwdne12324:0', 'welcome' => 'crwdns1767:0crwdne1767:0', 'welcome_to' => 'crwdns1768:0crwdne1768:0', 'your_assets' => 'crwdns6014:0crwdne6014:0', 'your_credentials' => 'crwdns1769:0crwdne1769:0', + 'mail_sent' => 'crwdns12300:0crwdne12300:0', ]; diff --git a/resources/lang/aa-ER/validation.php b/resources/lang/aa-ER/validation.php index a932f8e92a..0859bc66cf 100644 --- a/resources/lang/aa-ER/validation.php +++ b/resources/lang/aa-ER/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'crwdns973:0crwdne973:0', - 'active_url' => 'crwdns974:0crwdne974:0', - 'after' => 'crwdns975:0crwdne975:0', - 'after_or_equal' => 'crwdns1921:0crwdne1921:0', - 'alpha' => 'crwdns976:0crwdne976:0', - 'alpha_dash' => 'crwdns977:0crwdne977:0', - 'alpha_num' => 'crwdns978:0crwdne978:0', - 'array' => 'crwdns1922:0crwdne1922:0', - 'before' => 'crwdns979:0crwdne979:0', - 'before_or_equal' => 'crwdns1923:0crwdne1923:0', - 'between' => [ - 'numeric' => 'crwdns980:0crwdne980:0', - 'file' => 'crwdns981:0crwdne981:0', - 'string' => 'crwdns982:0crwdne982:0', - 'array' => 'crwdns1924:0crwdne1924:0', + 'accepted' => 'crwdns12328:0crwdne12328:0', + 'accepted_if' => 'crwdns12330:0crwdne12330:0', + 'active_url' => 'crwdns12332:0crwdne12332:0', + 'after' => 'crwdns12334:0crwdne12334:0', + 'after_or_equal' => 'crwdns12336:0crwdne12336:0', + 'alpha' => 'crwdns12338:0crwdne12338:0', + 'alpha_dash' => 'crwdns12340:0crwdne12340:0', + 'alpha_num' => 'crwdns12342:0crwdne12342:0', + 'array' => 'crwdns12344:0crwdne12344:0', + 'ascii' => 'crwdns12346:0crwdne12346:0', + 'before' => 'crwdns12348:0crwdne12348:0', + 'before_or_equal' => 'crwdns12350:0crwdne12350:0', + 'between' => [ + 'array' => 'crwdns12352:0crwdne12352:0', + 'file' => 'crwdns12354:0crwdne12354:0', + 'numeric' => 'crwdns12356:0crwdne12356:0', + 'string' => 'crwdns12358:0crwdne12358:0', ], - 'boolean' => 'crwdns1860:0crwdne1860:0', - 'confirmed' => 'crwdns983:0crwdne983:0', - 'date' => 'crwdns984:0crwdne984:0', - 'date_format' => 'crwdns985:0crwdne985:0', - 'different' => 'crwdns986:0crwdne986:0', - 'digits' => 'crwdns987:0crwdne987:0', - 'digits_between' => 'crwdns988:0crwdne988:0', - 'dimensions' => 'crwdns1925:0crwdne1925:0', - 'distinct' => 'crwdns1926:0crwdne1926:0', - 'email' => 'crwdns989:0crwdne989:0', - 'exists' => 'crwdns990:0crwdne990:0', - 'file' => 'crwdns1927:0crwdne1927:0', - 'filled' => 'crwdns1928:0crwdne1928:0', - 'image' => 'crwdns991:0crwdne991:0', + 'boolean' => 'crwdns12360:0crwdne12360:0', + 'can' => 'crwdns12362:0crwdne12362:0', + 'confirmed' => 'crwdns12364:0crwdne12364:0', + 'contains' => 'crwdns12366:0crwdne12366:0', + 'current_password' => 'crwdns12368:0crwdne12368:0', + 'date' => 'crwdns12370:0crwdne12370:0', + 'date_equals' => 'crwdns12372:0crwdne12372:0', + 'date_format' => 'crwdns12374:0crwdne12374:0', + 'decimal' => 'crwdns12376:0crwdne12376:0', + 'declined' => 'crwdns12378:0crwdne12378:0', + 'declined_if' => 'crwdns12380:0crwdne12380:0', + 'different' => 'crwdns12382:0crwdne12382:0', + 'digits' => 'crwdns12384:0crwdne12384:0', + 'digits_between' => 'crwdns12386:0crwdne12386:0', + 'dimensions' => 'crwdns12388:0crwdne12388:0', + 'distinct' => 'crwdns1926:0crwdne1926:0', + 'doesnt_end_with' => 'crwdns12390:0crwdne12390:0', + 'doesnt_start_with' => 'crwdns12392:0crwdne12392:0', + 'email' => 'crwdns12394:0crwdne12394:0', + 'ends_with' => 'crwdns12396:0crwdne12396:0', + 'enum' => 'crwdns12398:0crwdne12398:0', + 'exists' => 'crwdns990:0crwdne990:0', + 'extensions' => 'crwdns12400:0crwdne12400:0', + 'file' => 'crwdns12402:0crwdne12402:0', + 'filled' => 'crwdns1928:0crwdne1928:0', + 'gt' => [ + 'array' => 'crwdns12404:0crwdne12404:0', + 'file' => 'crwdns12406:0crwdne12406:0', + 'numeric' => 'crwdns12408:0crwdne12408:0', + 'string' => 'crwdns12410:0crwdne12410:0', + ], + 'gte' => [ + 'array' => 'crwdns12412:0crwdne12412:0', + 'file' => 'crwdns12414:0crwdne12414:0', + 'numeric' => 'crwdns12416:0crwdne12416:0', + 'string' => 'crwdns12418:0crwdne12418:0', + ], + 'hex_color' => 'crwdns12420:0crwdne12420:0', + 'image' => 'crwdns12422:0crwdne12422:0', 'import_field_empty' => 'crwdns11191:0crwdne11191:0', - 'in' => 'crwdns992:0crwdne992:0', - 'in_array' => 'crwdns1929:0crwdne1929:0', - 'integer' => 'crwdns993:0crwdne993:0', - 'ip' => 'crwdns994:0crwdne994:0', - 'ipv4' => 'crwdns1930:0crwdne1930:0', - 'ipv6' => 'crwdns1931:0crwdne1931:0', - 'is_unique_department' => 'crwdns11193:0crwdne11193:0', - 'json' => 'crwdns1932:0crwdne1932:0', - 'max' => [ - 'numeric' => 'crwdns995:0crwdne995:0', - 'file' => 'crwdns996:0crwdne996:0', - 'string' => 'crwdns997:0crwdne997:0', - 'array' => 'crwdns1933:0crwdne1933:0', + 'in' => 'crwdns992:0crwdne992:0', + 'in_array' => 'crwdns12424:0crwdne12424:0', + 'integer' => 'crwdns12426:0crwdne12426:0', + 'ip' => 'crwdns12428:0crwdne12428:0', + 'ipv4' => 'crwdns12430:0crwdne12430:0', + 'ipv6' => 'crwdns12432:0crwdne12432:0', + 'json' => 'crwdns12434:0crwdne12434:0', + 'list' => 'crwdns12436:0crwdne12436:0', + 'lowercase' => 'crwdns12438:0crwdne12438:0', + 'lt' => [ + 'array' => 'crwdns12440:0crwdne12440:0', + 'file' => 'crwdns12442:0crwdne12442:0', + 'numeric' => 'crwdns12444:0crwdne12444:0', + 'string' => 'crwdns12446:0crwdne12446:0', ], - 'mimes' => 'crwdns998:0crwdne998:0', - 'mimetypes' => 'crwdns1934:0crwdne1934:0', - 'min' => [ - 'numeric' => 'crwdns999:0crwdne999:0', - 'file' => 'crwdns1000:0crwdne1000:0', - 'string' => 'crwdns1001:0crwdne1001:0', - 'array' => 'crwdns1935:0crwdne1935:0', + 'lte' => [ + 'array' => 'crwdns12448:0crwdne12448:0', + 'file' => 'crwdns12450:0crwdne12450:0', + 'numeric' => 'crwdns12452:0crwdne12452:0', + 'string' => 'crwdns12454:0crwdne12454:0', ], - 'starts_with' => 'crwdns6095:0crwdne6095:0', - 'ends_with' => 'crwdns11607:0crwdne11607:0', - - 'not_in' => 'crwdns1002:0crwdne1002:0', - 'numeric' => 'crwdns1003:0crwdne1003:0', - 'present' => 'crwdns1936:0crwdne1936:0', - 'valid_regex' => 'crwdns1970:0crwdne1970:0', - 'regex' => 'crwdns1004:0crwdne1004:0', - 'required' => 'crwdns1005:0crwdne1005:0', - 'required_if' => 'crwdns1006:0crwdne1006:0', - 'required_unless' => 'crwdns1937:0crwdne1937:0', - 'required_with' => 'crwdns1007:0crwdne1007:0', - 'required_with_all' => 'crwdns1938:0crwdne1938:0', - 'required_without' => 'crwdns1008:0crwdne1008:0', + 'mac_address' => 'crwdns12456:0crwdne12456:0', + 'max' => [ + 'array' => 'crwdns12458:0crwdne12458:0', + 'file' => 'crwdns12460:0crwdne12460:0', + 'numeric' => 'crwdns12462:0crwdne12462:0', + 'string' => 'crwdns12464:0crwdne12464:0', + ], + 'max_digits' => 'crwdns12466:0crwdne12466:0', + 'mimes' => 'crwdns12468:0crwdne12468:0', + 'mimetypes' => 'crwdns12470:0crwdne12470:0', + 'min' => [ + 'array' => 'crwdns12472:0crwdne12472:0', + 'file' => 'crwdns12474:0crwdne12474:0', + 'numeric' => 'crwdns12476:0crwdne12476:0', + 'string' => 'crwdns12478:0crwdne12478:0', + ], + 'min_digits' => 'crwdns12480:0crwdne12480:0', + 'missing' => 'crwdns12482:0crwdne12482:0', + 'missing_if' => 'crwdns12484:0crwdne12484:0', + 'missing_unless' => 'crwdns12486:0crwdne12486:0', + 'missing_with' => 'crwdns12488:0crwdne12488:0', + 'missing_with_all' => 'crwdns12490:0crwdne12490:0', + 'multiple_of' => 'crwdns12492:0crwdne12492:0', + 'not_in' => 'crwdns1002:0crwdne1002:0', + 'not_regex' => 'crwdns12494:0crwdne12494:0', + 'numeric' => 'crwdns12496:0crwdne12496:0', + 'password' => [ + 'letters' => 'crwdns12498:0crwdne12498:0', + 'mixed' => 'crwdns12500:0crwdne12500:0', + 'numbers' => 'crwdns12502:0crwdne12502:0', + 'symbols' => 'crwdns12504:0crwdne12504:0', + 'uncompromised' => 'crwdns12506:0crwdne12506:0', + ], + 'present' => 'crwdns1936:0crwdne1936:0', + 'present_if' => 'crwdns12508:0crwdne12508:0', + 'present_unless' => 'crwdns12510:0crwdne12510:0', + 'present_with' => 'crwdns12512:0crwdne12512:0', + 'present_with_all' => 'crwdns12514:0crwdne12514:0', + 'prohibited' => 'crwdns12516:0crwdne12516:0', + 'prohibited_if' => 'crwdns12518:0crwdne12518:0', + 'prohibited_unless' => 'crwdns12520:0crwdne12520:0', + 'prohibits' => 'crwdns12522:0crwdne12522:0', + 'regex' => 'crwdns12524:0crwdne12524:0', + 'required' => 'crwdns1005:0crwdne1005:0', + 'required_array_keys' => 'crwdns12526:0crwdne12526:0', + 'required_if' => 'crwdns1006:0crwdne1006:0', + 'required_if_accepted' => 'crwdns12528:0crwdne12528:0', + 'required_if_declined' => 'crwdns12530:0crwdne12530:0', + 'required_unless' => 'crwdns1937:0crwdne1937:0', + 'required_with' => 'crwdns1007:0crwdne1007:0', + 'required_with_all' => 'crwdns12532:0crwdne12532:0', + 'required_without' => 'crwdns1008:0crwdne1008:0', 'required_without_all' => 'crwdns1939:0crwdne1939:0', - 'same' => 'crwdns1009:0crwdne1009:0', - 'size' => [ - 'numeric' => 'crwdns1010:0crwdne1010:0', - 'file' => 'crwdns1011:0crwdne1011:0', - 'string' => 'crwdns1012:0crwdne1012:0', - 'array' => 'crwdns1940:0crwdne1940:0', + 'same' => 'crwdns12534:0crwdne12534:0', + 'size' => [ + 'array' => 'crwdns12536:0crwdne12536:0', + 'file' => 'crwdns12538:0crwdne12538:0', + 'numeric' => 'crwdns12540:0crwdne12540:0', + 'string' => 'crwdns12542:0crwdne12542:0', ], + 'starts_with' => 'crwdns12544:0crwdne12544:0', 'string' => 'crwdns1941:0crwdne1941:0', - 'timezone' => 'crwdns1942:0crwdne1942:0', 'two_column_unique_undeleted' => 'crwdns11892:0crwdne11892:0', - 'unique' => 'crwdns1013:0crwdne1013:0', - 'uploaded' => 'crwdns1943:0crwdne1943:0', - 'url' => 'crwdns1014:0crwdne1014:0', 'unique_undeleted' => 'crwdns1964:0crwdne1964:0', 'non_circular' => 'crwdns6070:0crwdne6070:0', 'not_array' => 'crwdns12056:0crwdne12056:0', @@ -102,12 +163,13 @@ return [ 'numbers' => 'crwdns10502:0crwdne10502:0', 'case_diff' => 'crwdns10504:0crwdne10504:0', 'symbols' => 'crwdns10506:0crwdne10506:0', - 'gte' => [ - 'numeric' => 'crwdns6796:0crwdne6796:0' - ], - 'checkboxes' => 'crwdns12152:0crwdne12152:0', - 'radio_buttons' => 'crwdns12154:0crwdne12154:0', - + 'timezone' => 'crwdns12546:0crwdne12546:0', + 'unique' => 'crwdns1013:0crwdne1013:0', + 'uploaded' => 'crwdns1943:0crwdne1943:0', + 'uppercase' => 'crwdns12548:0crwdne12548:0', + 'url' => 'crwdns12550:0crwdne12550:0', + 'ulid' => 'crwdns12552:0crwdne12552:0', + 'uuid' => 'crwdns12554:0crwdne12554:0', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'crwdns11247:0crwdne11247:0', 'last_audit_date.date_format' => 'crwdns11249:0crwdne11249:0', 'expiration_date.date_format' => 'crwdns11251:0crwdne11251:0', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'crwdns11255:0crwdne11255:0', 'start_date.date_format' => 'crwdns11257:0crwdne11257:0', 'end_date.date_format' => 'crwdns11259:0crwdne11259:0', - - ], - + 'checkboxes' => 'crwdns12556:0crwdne12556:0', + 'radio_buttons' => 'crwdns12558:0crwdne12558:0', + 'invalid_value_in_field' => 'crwdns12560:0crwdne12560:0', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'crwdns12156:0crwdne12156:0', + + 'generic' => [ + 'invalid_value_in_field' => 'crwdns12580:0crwdne12580:0', + 'required' => 'crwdns12582:0crwdne12582:0', + 'email' => 'crwdns12584:0crwdne12584:0', + ], + + ]; diff --git a/resources/lang/af-ZA/account/general.php b/resources/lang/af-ZA/account/general.php index dda17abaaf..1cef87b079 100644 --- a/resources/lang/af-ZA/account/general.php +++ b/resources/lang/af-ZA/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => '私有API 金鑰', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/af-ZA/admin/accessories/message.php b/resources/lang/af-ZA/admin/accessories/message.php index 170abe3501..6c2362e25c 100644 --- a/resources/lang/af-ZA/admin/accessories/message.php +++ b/resources/lang/af-ZA/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Toebehore is nie nagegaan nie, probeer asseblief weer', 'success' => 'Toebehore suksesvol nagegaan.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.' + 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/af-ZA/admin/consumables/general.php b/resources/lang/af-ZA/admin/consumables/general.php index 9c690cb898..b828b1418c 100644 --- a/resources/lang/af-ZA/admin/consumables/general.php +++ b/resources/lang/af-ZA/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'oorblywende', 'total' => 'totale', 'update' => 'Verbruik Verbruik', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/af-ZA/admin/consumables/message.php b/resources/lang/af-ZA/admin/consumables/message.php index 20999a76ff..4e88a67649 100644 --- a/resources/lang/af-ZA/admin/consumables/message.php +++ b/resources/lang/af-ZA/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Verbruiksgoedere bestaan ​​nie.', 'create' => array( diff --git a/resources/lang/af-ZA/admin/custom_fields/message.php b/resources/lang/af-ZA/admin/custom_fields/message.php index 3280b8ca6c..1f39cb1bf1 100644 --- a/resources/lang/af-ZA/admin/custom_fields/message.php +++ b/resources/lang/af-ZA/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Daardie veld bestaan ​​nie.', 'already_added' => 'Veld reeds bygevoeg', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Veld is nie geskep nie, probeer asseblief weer.', diff --git a/resources/lang/af-ZA/admin/hardware/message.php b/resources/lang/af-ZA/admin/hardware/message.php index d345c9298d..74bd3b78d4 100644 --- a/resources/lang/af-ZA/admin/hardware/message.php +++ b/resources/lang/af-ZA/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Waarskuwing: Hierdie bate is gemerk as tans onbruikbaar. As hierdie status verander het, verander asseblief die batestatus.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Bate bestaan ​​nie.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Sommige items is nie korrek ingevoer nie.', 'errorDetail' => 'Die volgende items is nie ingevoer as gevolg van foute nie.', 'success' => 'Jou lêer is ingevoer', diff --git a/resources/lang/af-ZA/admin/licenses/general.php b/resources/lang/af-ZA/admin/licenses/general.php index b0d2afff14..f0ff83b608 100644 --- a/resources/lang/af-ZA/admin/licenses/general.php +++ b/resources/lang/af-ZA/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Lisensie-inligting', 'license_seats' => 'Lisensie Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'sitplekke', 'software_licenses' => 'Sagteware lisensies', 'user' => 'gebruiker', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/af-ZA/admin/licenses/message.php b/resources/lang/af-ZA/admin/licenses/message.php index a0f69b9a74..a58ce23042 100644 --- a/resources/lang/af-ZA/admin/licenses/message.php +++ b/resources/lang/af-ZA/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Daar was \'n probleem om die lisensie te kontroleer. Probeer asseblief weer.', 'success' => 'Die lisensie is suksesvol nagegaan', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/af-ZA/admin/models/message.php b/resources/lang/af-ZA/admin/models/message.php index e345c1bad3..75c36e8cbb 100644 --- a/resources/lang/af-ZA/admin/models/message.php +++ b/resources/lang/af-ZA/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Hierdie model word tans geassosieer met een of meer bates en kan nie verwyder word nie. Verwyder asseblief die bates en probeer dan weer uitvee.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model is nie geskep nie, probeer asseblief weer.', diff --git a/resources/lang/af-ZA/admin/settings/general.php b/resources/lang/af-ZA/admin/settings/general.php index e7e15bab85..da9893920b 100644 --- a/resources/lang/af-ZA/admin/settings/general.php +++ b/resources/lang/af-ZA/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP-bediener', - 'ldap_server_help' => 'Dit moet begin met ldap: // (vir unencrypted of TLS) of ldaps: // (vir SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL-sertifikaat-validering', 'ldap_server_cert_ignore' => 'Laat ongeldige SSL-sertifikaat toe', 'ldap_server_cert_help' => 'Kies hierdie boks as u \'n self-ondertekende SSL-sertifikaat gebruik en graag \'n ongeldige SSL-sertifikaat aanvaar.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'opsioneel', 'per_page' => 'Resultate per bladsy', 'php' => 'PHP weergawe', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/af-ZA/button.php b/resources/lang/af-ZA/button.php index e0709bce16..f7e1690d10 100644 --- a/resources/lang/af-ZA/button.php +++ b/resources/lang/af-ZA/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'verwyder', 'edit' => 'wysig', + 'clone' => 'Clone', 'restore' => 'herstel', 'remove' => 'Remove', 'request' => 'versoek', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Nuwe', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/af-ZA/general.php b/resources/lang/af-ZA/general.php index eae36eb446..2496fe7f15 100644 --- a/resources/lang/af-ZA/general.php +++ b/resources/lang/af-ZA/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Meer inligting', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'verstryk', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/af-ZA/mail.php b/resources/lang/af-ZA/mail.php index c90f6c8dba..a1d95c723a 100644 --- a/resources/lang/af-ZA/mail.php +++ b/resources/lang/af-ZA/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ek het die gebruiksvoorwaardes gelees en ingestem en het hierdie item ontvang.', 'inventory_report' => 'Inventory Report', 'item' => 'item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Klik asseblief op die volgende skakel om u webtuiste te verander:', 'login' => 'Teken aan:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'gebruiker', 'username' => 'Gebruikersnaam', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welkom: naam', 'welcome_to' => 'Welkom by: web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Jou Snipe-IT-referenties', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/af-ZA/validation.php b/resources/lang/af-ZA/validation.php index 2a12ea3ae8..e7a0eb8a2b 100644 --- a/resources/lang/af-ZA/validation.php +++ b/resources/lang/af-ZA/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Die: Attribuut moet aanvaar word.', - 'active_url' => 'Die: Attribuut is nie \'n geldige URL nie.', - 'after' => 'Die: Attribuut moet \'n datum wees na: datum.', - 'after_or_equal' => 'Die: Attribuut moet \'n datum na of gelyk wees aan: datum.', - 'alpha' => 'Die: Attribuut mag slegs letters bevat.', - 'alpha_dash' => 'Die: Attribuut mag slegs letters, nommers en streepies bevat.', - 'alpha_num' => 'Die: Attribuut mag slegs letters en syfers bevat.', - 'array' => 'Die: kenmerk moet \'n skikking wees.', - 'before' => 'Die: Attribuut moet \'n datum wees voor: datum.', - 'before_or_equal' => 'Die: Attribuut moet \'n datum voor of gelyk wees aan: datum.', - 'between' => [ - 'numeric' => 'Die: Attribuut moet tussen: min en: maksimum wees.', - 'file' => 'Die: Attribuut moet tussen: min en: maksimum kilobytes wees.', - 'string' => 'Die: Attribuut moet tussen: min en: maksimum karakters wees.', - 'array' => 'Die: Attribuut moet tussen: min en: maksimum items hê.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Die: Attribuut veld moet waar of onwaar wees.', - 'confirmed' => 'Die: Attribuut bevestiging stem nie ooreen nie.', - 'date' => 'Die: Attribuut is nie \'n geldige datum nie.', - 'date_format' => 'Die: Attribuut stem nie ooreen met die formaat: formaat.', - 'different' => 'Die: attribuut en: ander moet anders wees.', - 'digits' => 'Die: Attribuut moet wees: syfers syfers.', - 'digits_between' => 'Die: Attribuut moet tussen: min en: maksimum syfers wees.', - 'dimensions' => 'Die: Attribuut het ongeldige beeldafmetings.', - 'distinct' => 'Die: Attribuut veld het \'n duplikaat waarde.', - 'email' => 'Die: Attribuut moet \'n geldige e-posadres wees.', - 'exists' => 'Die gekose: attribuut is ongeldig.', - 'file' => 'Die: Attribuut moet \'n lêer wees.', - 'filled' => 'Die: Attribuut veld moet \'n waarde hê.', - 'image' => 'Die: kenmerk moet \'n beeld wees.', + 'boolean' => 'Die: Attribuut veld moet waar of onwaar wees.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Die: Attribuut veld het \'n duplikaat waarde.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Die gekose: attribuut is ongeldig.', + 'exists' => 'Die gekose: attribuut is ongeldig.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Die: Attribuut veld moet \'n waarde hê.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Die gekose: attribuut is ongeldig.', - 'in_array' => 'Die: attribuut veld bestaan ​​nie in: ander.', - 'integer' => 'Die: Attribuut moet \'n heelgetal wees.', - 'ip' => 'Die: Attribuut moet \'n geldige IP-adres wees.', - 'ipv4' => 'Die: Attribuut moet \'n geldige IPv4-adres wees.', - 'ipv6' => 'Die: Attribuut moet \'n geldige IPv6-adres wees.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Die: Attribuut moet \'n geldige JSON-string wees.', - 'max' => [ - 'numeric' => 'Die: Attribuut mag nie groter wees as: maksimum.', - 'file' => 'Die: kenmerk mag nie groter wees as: maksimum kilobytes.', - 'string' => 'Die: Attribuut mag nie groter wees as: maksimum karakters.', - 'array' => 'Die: Attribuut mag nie meer as: maksimum items hê nie.', + 'in' => 'Die gekose: attribuut is ongeldig.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Die: kenmerk moet \'n lêer van tipe wees:: waardes.', - 'mimetypes' => 'Die: kenmerk moet \'n lêer van tipe wees:: waardes.', - 'min' => [ - 'numeric' => 'Die: attribuut moet ten minste wees: min.', - 'file' => 'Die: attribuut moet ten minste wees: min kilobytes.', - 'string' => 'Die: kenmerk moet ten minste wees: min karakters.', - 'array' => 'Die: Attribuut moet ten minste: min items hê.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Die gekose: attribuut is ongeldig.', - 'numeric' => 'Die: Attribuut moet \'n nommer wees.', - 'present' => 'Die: attribuut veld moet teenwoordig wees.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'Die: Attribuutformaat is ongeldig.', - 'required' => 'Die: attribuut veld is nodig.', - 'required_if' => 'Die: attribuut veld is nodig wanneer: ander is: waarde.', - 'required_unless' => 'Die: Attribuut veld is nodig tensy: ander is in: waardes.', - 'required_with' => 'Die: Attribuut veld is nodig wanneer: waardes teenwoordig is.', - 'required_with_all' => 'Die: Attribuut veld is nodig wanneer: waardes teenwoordig is.', - 'required_without' => 'Die: Attribuut veld is nodig wanneer: waardes nie teenwoordig is nie.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Die gekose: attribuut is ongeldig.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Die: attribuut veld moet teenwoordig wees.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Die: attribuut veld is nodig.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Die: attribuut veld is nodig wanneer: ander is: waarde.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Die: Attribuut veld is nodig tensy: ander is in: waardes.', + 'required_with' => 'Die: Attribuut veld is nodig wanneer: waardes teenwoordig is.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Die: Attribuut veld is nodig wanneer: waardes nie teenwoordig is nie.', 'required_without_all' => 'Die: Attribuut veld is nodig wanneer geen van: waardes teenwoordig is nie.', - 'same' => 'Die: attribuut en ander moet ooreenstem.', - 'size' => [ - 'numeric' => 'Die: Attribuut moet wees: grootte.', - 'file' => 'Die: Attribuut moet wees: grootte kilobyte.', - 'string' => 'Die: Attribuut moet wees: grootte karakters.', - 'array' => 'Die: Attribuut moet bevat: grootte items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Die: kenmerk moet \'n string wees.', - 'timezone' => 'Die: Attribuut moet \'n geldige sone wees.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Die: Attribuut is reeds geneem.', - 'uploaded' => 'Die: kenmerk kon nie opgelaai word nie.', - 'url' => 'Die: Attribuutformaat is ongeldig.', 'unique_undeleted' => 'Die: Attribuut moet uniek wees.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Die: Attribuut is reeds geneem.', + 'uploaded' => 'Die: kenmerk kon nie opgelaai word nie.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/am-ET/account/general.php b/resources/lang/am-ET/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/am-ET/account/general.php +++ b/resources/lang/am-ET/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/am-ET/admin/accessories/message.php b/resources/lang/am-ET/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/am-ET/admin/accessories/message.php +++ b/resources/lang/am-ET/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/am-ET/admin/consumables/general.php b/resources/lang/am-ET/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/am-ET/admin/consumables/general.php +++ b/resources/lang/am-ET/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/am-ET/admin/consumables/message.php b/resources/lang/am-ET/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/am-ET/admin/consumables/message.php +++ b/resources/lang/am-ET/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/am-ET/admin/custom_fields/message.php b/resources/lang/am-ET/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/am-ET/admin/custom_fields/message.php +++ b/resources/lang/am-ET/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/am-ET/admin/hardware/message.php b/resources/lang/am-ET/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/am-ET/admin/hardware/message.php +++ b/resources/lang/am-ET/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/am-ET/admin/licenses/general.php b/resources/lang/am-ET/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/am-ET/admin/licenses/general.php +++ b/resources/lang/am-ET/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/am-ET/admin/licenses/message.php b/resources/lang/am-ET/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/am-ET/admin/licenses/message.php +++ b/resources/lang/am-ET/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/am-ET/admin/models/message.php b/resources/lang/am-ET/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/am-ET/admin/models/message.php +++ b/resources/lang/am-ET/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/am-ET/admin/settings/general.php b/resources/lang/am-ET/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/am-ET/admin/settings/general.php +++ b/resources/lang/am-ET/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/am-ET/button.php b/resources/lang/am-ET/button.php index fe6dfe97a1..f28b62b756 100644 --- a/resources/lang/am-ET/button.php +++ b/resources/lang/am-ET/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/am-ET/general.php b/resources/lang/am-ET/general.php index 5018634195..86d01da010 100644 --- a/resources/lang/am-ET/general.php +++ b/resources/lang/am-ET/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/am-ET/mail.php b/resources/lang/am-ET/mail.php index 8d5aa80f61..89c6755a88 100644 --- a/resources/lang/am-ET/mail.php +++ b/resources/lang/am-ET/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/am-ET/validation.php b/resources/lang/am-ET/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/am-ET/validation.php +++ b/resources/lang/am-ET/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ar-SA/account/general.php b/resources/lang/ar-SA/account/general.php index 0be269548b..2fbe34ba3d 100644 --- a/resources/lang/ar-SA/account/general.php +++ b/resources/lang/ar-SA/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'مفاتيح API الشخصية', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'عنوان URL الأساسي API الخاص بك موجود في:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'تم تعيين رموز API لانتهاء صلاحيتها في:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ar-SA/admin/accessories/message.php b/resources/lang/ar-SA/admin/accessories/message.php index fa1a252de1..e664d31c67 100644 --- a/resources/lang/ar-SA/admin/accessories/message.php +++ b/resources/lang/ar-SA/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'لم يتم إخراج الملحق، الرجاء المحاولة مرة أخرى', 'success' => 'تم إخراج الملحق بنجاح.', 'unavailable' => 'الملحق غير متوفر لعملية الدفع. تحقق من الكمية المتاحة', - 'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.' + 'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ar-SA/admin/consumables/general.php b/resources/lang/ar-SA/admin/consumables/general.php index 430cfe89fa..3c29112155 100644 --- a/resources/lang/ar-SA/admin/consumables/general.php +++ b/resources/lang/ar-SA/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'المتبقية', 'total' => 'المجموع', 'update' => 'تحديث المادة الإستهلاكية', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ar-SA/admin/consumables/message.php b/resources/lang/ar-SA/admin/consumables/message.php index 58eaa5ff51..3e7a15e57a 100644 --- a/resources/lang/ar-SA/admin/consumables/message.php +++ b/resources/lang/ar-SA/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'المادة الإستهلاكية غير موجودة.', 'create' => array( diff --git a/resources/lang/ar-SA/admin/custom_fields/message.php b/resources/lang/ar-SA/admin/custom_fields/message.php index 9c2709c43e..0cf68b4fef 100644 --- a/resources/lang/ar-SA/admin/custom_fields/message.php +++ b/resources/lang/ar-SA/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'هذا الحقل غير موجود.', 'already_added' => 'تم إضافة الحقل مسبقا', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'لم يتم إنشاء الحقل، الرجاء المحاولة مرة اخرى.', diff --git a/resources/lang/ar-SA/admin/hardware/message.php b/resources/lang/ar-SA/admin/hardware/message.php index cc4a5efdeb..eb149b5021 100644 --- a/resources/lang/ar-SA/admin/hardware/message.php +++ b/resources/lang/ar-SA/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => ' تحذير: تم تحديد الحالة لهذا الأصل بانه غير قابل للتوزيع حاليا. إذا تغيرت هذه الحالة، يرجى تحديث حالة الأصل.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'الأصل غير موجود.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'لم يتم استيراد بعض العناصر بشكل صحيح.', 'errorDetail' => 'لم يتم استيراد العناصر التالية بسبب الأخطاء.', 'success' => 'تم استيراد الملف الخاص بك', diff --git a/resources/lang/ar-SA/admin/licenses/general.php b/resources/lang/ar-SA/admin/licenses/general.php index 395c9c427d..e83a5c0253 100644 --- a/resources/lang/ar-SA/admin/licenses/general.php +++ b/resources/lang/ar-SA/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'معلومات الترخيص', 'license_seats' => 'مقاعد الترخيص', 'seat' => 'مقعد', + 'seat_count' => 'Seat :count', 'seats' => 'مقاعد', 'software_licenses' => 'تراخيص البرامج', 'user' => 'مستخدم', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'ادخل جميع المقاعد', - 'modal' => 'سيؤدي هذا إلى التدقيق في مقعد واحد. سيؤدي هذا الإجراء إلى التحقق من جميع مقاعد الـ :checkedout_seats_count لهذا الترخيص.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'تسجيل جميع مقاعد هذا الترخيص من كل من المستخدمين والأصول', 'disabled_tooltip' => 'تم تعطيل هذا لأنه لا توجد مقاعد حاليا', 'disabled_tooltip_reassignable' => 'هذا معطل لأن الترخيص غير قابل لإعادة التعيين', 'success' => 'تم تسجيل الترخيص بنجاح! تم تسجيل جميع التراخيص بنجاح!', - 'log_msg' => 'تحقق عن طريق دفع الترخيص بالجملة في واجهة المستخدم المرخص', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ar-SA/admin/licenses/message.php b/resources/lang/ar-SA/admin/licenses/message.php index a2e4458eca..378ebc6ac3 100644 --- a/resources/lang/ar-SA/admin/licenses/message.php +++ b/resources/lang/ar-SA/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'حدثت مشكلة أثناء اخراج الترخيص. يرجى إعادة المحاولة.', 'success' => 'تم اخراج الترخيص بنجاح', 'not_enough_seats' => 'لا توجد مقاعد ترخيص كافية متاحة للدفع', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ar-SA/admin/models/message.php b/resources/lang/ar-SA/admin/models/message.php index 81dfb39116..a4541bb9ea 100644 --- a/resources/lang/ar-SA/admin/models/message.php +++ b/resources/lang/ar-SA/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'تحذير! نموذج الأصول لهذا العنصر غير صالح أو مفقود!', 'no_association_fix' => 'سيؤدي هذا إلى كسر الأمور بطرق غريبة وفظيعة. قم بتعديل هذا الأصل الآن لربطه بنموذج.', 'assoc_users' => 'هذا الموديل مرتبط حاليا بواحد أو أكثر من الأصول ولا يمكن حذفه. يرجى حذف الأصول، ثم محاولة الحذف مرة أخرى. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'لم يتم انشاء الموديل، يرجى إعادة المحاولة.', diff --git a/resources/lang/ar-SA/admin/settings/general.php b/resources/lang/ar-SA/admin/settings/general.php index 2fcb8d05ac..d3f7d35710 100644 --- a/resources/lang/ar-SA/admin/settings/general.php +++ b/resources/lang/ar-SA/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'هذا يختبر فقط أن LDAP يستطيع المزامنة بشكل صحيح. إذا كان استعلام التوثيق الى LDAP الخاص بك غير صحيح، قد لا يزال المستخدمون غير قادرين على تسجيل الدخول. يجب عليك اولا حفظ اي تغييرات في إعدادات LDAP.', 'ldap_manager' => 'مدير LDAP', 'ldap_server' => 'خادم لداب', - 'ldap_server_help' => 'ينبغي أن يبدأ هذا مع //:ldap (للاتصال غير المشفر او TLS) او //:ldaps (لاتصال SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'التحقق من صحة شهادة سل لداب', 'ldap_server_cert_ignore' => 'السماح بشهادة سل غير صالحة', 'ldap_server_cert_help' => 'حدد مربع الاختيار هذا إذا كنت تستخدم شهادة سل موقعة ذاتيا وترغب في قبول شهادة سل غير صالحة.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'اختبار LDAP', 'ldap_test_sync' => 'اختبار مزامنة LDAP', 'license' => 'ترخيص البرنامج', - 'load_remote' => 'استخدام Gravatar', - 'load_remote_help_text' => 'قم بإلغاء تحديد هذا المربع إذا لم يتمكن التثبيت الخاص بك من تحميل البرامج النصية من الإنترنت الخارجي. وهذا سيمنع Snipe-IT من محاولة تحميل الصور من Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'محاولات تسجيل الدخول', 'login_attempt' => 'محاولة تسجيل الدخول', 'login_ip' => 'عنوان IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'اختياري', 'per_page' => 'النتائج لكل صفحة', 'php' => 'نسخة فب', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, النظام, معلومات', 'php_overview_help' => 'معلومات نظام PHP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ar-SA/button.php b/resources/lang/ar-SA/button.php index 0e1ffa6e8e..65dcbf67de 100644 --- a/resources/lang/ar-SA/button.php +++ b/resources/lang/ar-SA/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'تسجيل الكل / حذف المستخدم', 'delete' => 'حذف', 'edit' => 'تعديل', + 'clone' => 'Clone', 'restore' => 'إستعادة', 'remove' => 'حذف', 'request' => 'طلب', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'إضافة صيانة', 'append' => 'إلحاق', 'new' => 'جديد', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ar-SA/general.php b/resources/lang/ar-SA/general.php index 3de2ca181c..d3fadc453f 100644 --- a/resources/lang/ar-SA/general.php +++ b/resources/lang/ar-SA/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count مقاعد الرخصة :count مقاعد الرخص', 'consumables' => ':count مستهلكة :count مستهلك', 'components' => ':count مكون :count مكونات', - ] + ], + 'more_info' => 'المزيد من المعلومات', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'انتهاء الصلاحية', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ar-SA/mail.php b/resources/lang/ar-SA/mail.php index ec1f564fca..87006488ce 100644 --- a/resources/lang/ar-SA/mail.php +++ b/resources/lang/ar-SA/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'لقد قرأت بنود الاستخدام وأوافق عليها، وقد تلقيت هذا البند.', 'inventory_report' => 'تقرير المخزون', 'item' => 'عنصر:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'هنالك :count رخص سوف تنتهي في الأيام :threshold القادمة.', 'link_to_update_password' => 'يرجى النقر على الرابط التالي لتحديث كلمة المرور الخاصة بك على :web :', 'login' => 'تسجيل الدخول:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'هناك :count الأصل الذي سيأتي للمراجعة في غضون :threshold أيام. هناك :count أصول ستأتي للمراجعة في غضون :threshold أيام.', 'user' => 'المستخدم', 'username' => 'اسم المستخدم', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'مرحباً :name', 'welcome_to' => 'مرحبا بكم في :web!', 'your_assets' => 'عرض الأصول الخاصة بك', 'your_credentials' => 'أوراق اعتماد قنص-إيت الخاص بك', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ar-SA/validation.php b/resources/lang/ar-SA/validation.php index 00bd955a10..ea6b0090d5 100644 --- a/resources/lang/ar-SA/validation.php +++ b/resources/lang/ar-SA/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'يجب ان يتم قبول :attribute .', - 'active_url' => ':attribute موقع غير صحيح.', - 'after' => ':attribute يجب ان يكون تاريخ قبل :date.', - 'after_or_equal' => ':attribute يجب أن يكون تاريخ بعد أو يساوي :date.', - 'alpha' => 'يجب ان تحتوي :attribute على أحرف فقط.', - 'alpha_dash' => 'يجب ان تحتوي :attribute على أحرف وأرقام وشرطات فقط.', - 'alpha_num' => 'يجب ان تحتوي :attribute على أحرف وأرقام فقط.', - 'array' => 'يجب أن تكون :attribute مصفوفة.', - 'before' => ':attribute يجب ان يكون تاريخ قبل :date.', - 'before_or_equal' => 'يجب أن تكون :attribute عبارة عن تاريخ قبل أو يساوي :date.', - 'between' => [ - 'numeric' => ':attribute يجب ان يكون بين :min - :max.', - 'file' => 'يجب أن تكون :attribute بين :min - :max كيلوبايت.', - 'string' => 'يجب أن تكون :attribute بين :min - :max من الأحرف.', - 'array' => 'يجب أن تكون :attribute ما بين: :min and :max من العناصر.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'يجب أن يكون :attribute صحيحا أو خاطئا.', - 'confirmed' => 'تأكيد :attribute غير متطابق.', - 'date' => 'ان :attribute تاريخ غير صحيح.', - 'date_format' => 'لا تتطابق :attribute مع التنسيق.', - 'different' => 'يجب أن تكون :attribute و :other مختلفين.', - 'digits' => 'يجب أن تكون السمة: أرقام الأرقام.', - 'digits_between' => 'يجب أن تكون السمة: مين و: ماكس ديجيتس.', - 'dimensions' => 'تحتوي :attribute على أبعاد غير صالحة للصور.', - 'distinct' => 'يحتوي :attribute على قيمة مكررة.', - 'email' => 'يجب أن يكون :attribute عنوان بريد إلكتروني صالحا.', - 'exists' => ':attribute المحدد غير صالح.', - 'file' => 'يجب أن تكون :attribute ملف.', - 'filled' => 'يجب أن يحتوي :attribute على قيمة.', - 'image' => 'يجب أن تكون :attribute صورة.', + 'boolean' => 'يجب أن يكون حقل السمة صحيحا أو خاطئا.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'يحتوي :attribute على قيمة مكررة.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => ':attribute المحدد غير صالح.', + 'exists' => ':attribute المحدد غير صالح.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'يجب أن يحتوي :attribute على قيمة.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'لا يمكن أن تكون قيمة :fieldname فارغة.', - 'in' => ':attribute المحدد غير صالح.', - 'in_array' => ':attribute غير موجود في :other.', - 'integer' => 'يجب أن تكون :attribute عدد صحيح.', - 'ip' => 'يجب أن تكون :attribute عنوان IP صالحا.', - 'ipv4' => 'يجب أن تكون :attribute عنوان IPv4 صالحا.', - 'ipv6' => 'يجب أن تكون :attribute عنوان IPv6 صالح.', - 'is_unique_department' => 'يجب أن يكون :attribute فريداً في موقع الشركة هذا', - 'json' => 'يجب أن يكون :attribute نص جسون JSON صالح.', - 'max' => [ - 'numeric' => 'يجب ان يكون :attribute أكبر من :max.', - 'file' => 'يجب ان يكون :attribute أكبر من كيلوبايت كحد أقصى.', - 'string' => 'يجب ان يكون :attribute أكبر من :max احرف.', - 'array' => 'قد لا تحتوي :attribute على أكثر من :max من للعناصر.', + 'in' => ':attribute المحدد غير صالح.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'يجب أن يكون :attribute ملف من النوع :values.', - 'mimetypes' => 'يجب أن يكون :attribute ملف من النوع :values.', - 'min' => [ - 'numeric' => 'يجب أن يكون :attribute على الأقل :min.', - 'file' => 'يجب أن يكون :attribute على الأقل :min كيلوبايت.', - 'string' => 'يجب أن يكون :attribute على الأقل :min من الاحرف.', - 'array' => 'يجب أن تحتوي :attribute على الأقل :min من العناصر.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'يجب أن تبدأ خانة :attribute بواحد مما يلي: :values.', - 'ends_with' => 'يجب أن تنتهي خانة :attribute بواحد مما يلي: :values.', - - 'not_in' => ':attribute المحدد غير صالح.', - 'numeric' => 'يجب أن يكون :attribute رقما.', - 'present' => 'يجب أن يكون :attribute موجود.', - 'valid_regex' => 'هذا ليس تعبير regex صحيح. ', - 'regex' => 'تنسيق :attribute غير صالح.', - 'required' => 'الحقل :attribute اجباري.', - 'required_if' => 'الحقل :attribute اجباري عندما يكون :other يساوي :value.', - 'required_unless' => 'الحقل :attribute اجباري ما لم يكن :other ما بين :values.', - 'required_with' => 'الحقل :attribute اجباري عندما يكون :values موجودا.', - 'required_with_all' => 'الحقل :attribute اجباري عندما يكون :values موجودا.', - 'required_without' => 'الحقل :attribute اجباري عندما تكون :values غير موجودة.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => ':attribute المحدد غير صالح.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'يجب أن يكون :attribute موجود.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'الحقل :attribute اجباري.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'الحقل :attribute اجباري عندما يكون :other يساوي :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'الحقل :attribute اجباري ما لم يكن :other ما بين :values.', + 'required_with' => 'الحقل :attribute اجباري عندما يكون :values موجودا.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'الحقل :attribute اجباري عندما تكون :values غير موجودة.', 'required_without_all' => 'الحقل :attribute اجباري عندما لا يكون اي من :values موجودة.', - 'same' => 'يجب ان يكون :attribute و :other متطابقين.', - 'size' => [ - 'numeric' => 'ان :attribute يجب ان يكون :size.', - 'file' => 'ان :attribute يجب ان يكون :size كيلوبايت.', - 'string' => 'ان :attribute يجب ان يكون :size احرف.', - 'array' => 'يجب أن يحتوي :attribute على :size من العناصر.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'يجب أن يكون :attribute عبارة عن سلسلة نصية.', - 'timezone' => 'يجب أن يكون :attribute منطقة صالحة.', 'two_column_unique_undeleted' => ':attribute يجب أن يكون فريداً عبر :table1 و :table2. ', - 'unique' => 'لقد تم أخذ :attribute مسبقا.', - 'uploaded' => 'لقد فشل تحميل :attribute.', - 'url' => 'ان تنسيق :attribute غير صالح.', 'unique_undeleted' => ':attribute يجب ان تكون فريدة.', 'non_circular' => 'يجب ألا تنشئ السمة مرجعًا دائريًا.', 'not_array' => ':attribute لا يمكن أن يكون مصفوف.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'يجب أن تحتوي كلمة المرور على رقم واحد على الأقل.', 'case_diff' => 'كلمة المرور يجب أن تستخدم حالة مختلطة.', 'symbols' => 'يجب أن تحتوي كلمة المرور على رموز.', - 'gte' => [ - 'numeric' => 'لا يمكن أن تكون القيمة سالبة' - ], - 'checkboxes' => ':attribute يحتوي على خيارات غير صالحة.', - 'radio_buttons' => ':attribute غير صالح.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'لقد تم أخذ :attribute مسبقا.', + 'uploaded' => 'لقد فشل تحميل :attribute.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'يجب أن يكون :attribute تاريخ صالح بتنسيق YYY-MM-DD', 'last_audit_date.date_format' => 'يجب أن يكون :attribute تاريخًا صحيحًا في تنسيق YYY-MM-DD hh:mm:ss', 'expiration_date.date_format' => 'يجب أن يكون :attribute تاريخ صالح بتنسيق YYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'يجب أن يكون :attribute تاريخ صالح بتنسيق YYY-MM-DD', 'start_date.date_format' => 'يجب أن يكون :attribute تاريخ صالح بتنسيق YYY-MM-DD', 'end_date.date_format' => 'يجب أن يكون :attribute تاريخ صالح بتنسيق YYY-MM-DD', - - ], - + 'checkboxes' => ':attribute يحتوي على خيارات غير صالحة.', + 'radio_buttons' => ':attribute غير صالح.', + 'invalid_value_in_field' => 'القيمة غير صالحة المدرجة في هذا الحقل', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'القيمة غير صالحة المدرجة في هذا الحقل', + + 'generic' => [ + 'invalid_value_in_field' => 'القيمة غير صالحة المدرجة في هذا الحقل', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/bg-BG/account/general.php b/resources/lang/bg-BG/account/general.php index 53a63ec326..3a9cf0aa6c 100644 --- a/resources/lang/bg-BG/account/general.php +++ b/resources/lang/bg-BG/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Частни API ключове', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', + 'api_key_warning' => 'Когато генерирате API токен, не забравяйте да го копирате незабавно, тъй като те няма да бъдат видими за вас отново.', 'api_base_url' => 'Вашият API основен URL се намира на:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API ключа ще изтиче на:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', - 'profile_updated' => 'Account successfully updated', + 'api_reference' => 'Моля, проверете справката за API, за да намерите конкретни API крайни точки и допълнителна API документация.', + 'profile_updated' => 'Акаунтът е актуализиран успешно', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/bg-BG/admin/accessories/message.php b/resources/lang/bg-BG/admin/accessories/message.php index 4de264f0db..f1aef90543 100644 --- a/resources/lang/bg-BG/admin/accessories/message.php +++ b/resources/lang/bg-BG/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Аксесоарът не беше изписан. Моля опитайте отново.', 'success' => 'Аксесоарът изписан успешно.', 'unavailable' => 'Аксесоарт не е наличен за изписване. Проверете наличното количество', - 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.' + 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/bg-BG/admin/consumables/general.php b/resources/lang/bg-BG/admin/consumables/general.php index 5792f67ffc..56a2528920 100644 --- a/resources/lang/bg-BG/admin/consumables/general.php +++ b/resources/lang/bg-BG/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Остава', 'total' => 'Oбщо', 'update' => 'Обновяване на консуматив', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/bg-BG/admin/consumables/message.php b/resources/lang/bg-BG/admin/consumables/message.php index 8721beb17e..d7e1e237e4 100644 --- a/resources/lang/bg-BG/admin/consumables/message.php +++ b/resources/lang/bg-BG/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Консуматива не съществува.', 'create' => array( diff --git a/resources/lang/bg-BG/admin/custom_fields/message.php b/resources/lang/bg-BG/admin/custom_fields/message.php index ba83bb4e64..854d207b58 100644 --- a/resources/lang/bg-BG/admin/custom_fields/message.php +++ b/resources/lang/bg-BG/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Това поле не съществува.', 'already_added' => 'Вече е добавено поле', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Поле не беше създадено, моля опитайте отново.', diff --git a/resources/lang/bg-BG/admin/hardware/form.php b/resources/lang/bg-BG/admin/hardware/form.php index 7927d7e356..a7c15cf8df 100644 --- a/resources/lang/bg-BG/admin/hardware/form.php +++ b/resources/lang/bg-BG/admin/hardware/form.php @@ -39,9 +39,9 @@ return [ 'order' => 'Номер на поръчка', 'qr' => 'QR код', 'requestable' => 'Потребителите могат да изписват актива', - 'redirect_to_all' => 'Return to all :type', - 'redirect_to_type' => 'Go to :type', - 'redirect_to_checked_out_to' => 'Go to Checked Out to', + 'redirect_to_all' => 'Връщане към всички :type', + 'redirect_to_type' => 'Отидете на :type', + 'redirect_to_checked_out_to' => 'Отидете на Checked Out to', 'select_statustype' => 'Избиране на тип на статуса', 'serial' => 'Сериен номер', 'status' => 'Статус', diff --git a/resources/lang/bg-BG/admin/hardware/general.php b/resources/lang/bg-BG/admin/hardware/general.php index e0ff0a9d5a..60a934b329 100644 --- a/resources/lang/bg-BG/admin/hardware/general.php +++ b/resources/lang/bg-BG/admin/hardware/general.php @@ -15,8 +15,8 @@ return [ 'delete_confirm' => 'Сигурни ли сте, че желаете изтриване на актива?', 'edit' => 'Редакция на актив', 'model_deleted' => 'Този Модел на актив беше изтрит. Вие трябва да възстановите този модел преди да можете да възстановите актива.', - 'model_invalid' => 'This model for this asset is invalid.', - 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', + 'model_invalid' => 'Този модел за този актив е невалиден.', + 'model_invalid_fix' => 'Активът трябва да бъде актуализиран с помощта на валиден модел на актив, преди да се опитате да го проверите или изведете или да го одитирате.', 'requestable' => 'Може да бъде изискван', 'requested' => 'Изискан', 'not_requestable' => 'Не може да бъде изискан', diff --git a/resources/lang/bg-BG/admin/hardware/message.php b/resources/lang/bg-BG/admin/hardware/message.php index 2dd4ac7a00..f49d9fa86c 100644 --- a/resources/lang/bg-BG/admin/hardware/message.php +++ b/resources/lang/bg-BG/admin/hardware/message.php @@ -2,13 +2,13 @@ return [ - 'undeployable' => 'Внимание: Този актив е маркиран като невъзможен за предоставяне. Ако статусът е променен, моля обновете актива.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Активът не съществува.', - 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', - 'no_tag' => 'No asset tag provided.', + 'does_not_exist_var'=> 'Активът с етике :asset_tag не е намерен.', + 'no_tag' => 'Не е предоставен етикет на актив.', 'does_not_exist_or_not_requestable' => 'Актива не съществува или не може да бъде предоставян.', 'assoc_users' => 'Активът е изписан на потребител и не може да бъде изтрит. Моля впишете го обратно и след това опитайте да го изтриете отново.', - 'warning_audit_date_mismatch' => 'This asset\'s next audit date (:next_audit_date) is before the last audit date (:last_audit_date). Please update the next audit date.', + 'warning_audit_date_mismatch' => 'Следващата дата на одит на този актив (:next_audit_date) е преди последната дата на одит (:last_audit_date). Моля, актуализирайте следващата дата на одита.', 'create' => [ 'error' => 'Активът не беше създаден. Моля опитайте отново.', @@ -19,7 +19,7 @@ return [ 'update' => [ 'error' => 'Активът не беше обновен. Моля опитайте отново.', 'success' => 'Активът обновен успешно.', - 'encrypted_warning' => 'Asset updated successfully, but encrypted custom fields were not due to permissions', + 'encrypted_warning' => 'Активът беше актуализиран успешно, но шифрованите персонализирани полета не бяха актуализирани поради разрешения', 'nothing_updated' => 'Няма избрани полета, съответно нищо не беше обновено.', 'no_assets_selected' => 'Няма избрани активи, така че нищо не бе обновено.', 'assets_do_not_exist_or_are_invalid' => 'Избраните активи не могат да се обновят.', @@ -33,7 +33,7 @@ return [ ], 'audit' => [ - 'error' => 'Asset audit unsuccessful: :error ', + 'error' => 'Одитът на активите е неуспешен: :error ', 'success' => 'Активният одит бе успешно регистриран.', ], @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Някои елементи не бяха въведени правилно.', 'errorDetail' => 'Следните елементи не бяха въведени поради грешки.', 'success' => 'Вашият файл беше въведен.', diff --git a/resources/lang/bg-BG/admin/licenses/general.php b/resources/lang/bg-BG/admin/licenses/general.php index 126220342d..01d8b52321 100644 --- a/resources/lang/bg-BG/admin/licenses/general.php +++ b/resources/lang/bg-BG/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Информация за лиценз', 'license_seats' => 'Потребителски лицензи', 'seat' => 'Потребителски лиценз', + 'seat_count' => 'Seat :count', 'seats' => 'Потребителски лицензи', 'software_licenses' => 'Софтуерни лицензи', 'user' => 'Потребител', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Връщане на всички бройки', - 'modal' => 'Това ще заведе една бройка. | Това ще заведе всички :checkedout_seats_count бройки от този лиценз.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Вписване на всички бройки от този лиценз за потребителите и активите', 'disabled_tooltip' => 'Това е забранено защото няма изписани бройки', 'disabled_tooltip_reassignable' => 'Това е деактивирано, защото лиценза не може да се прехвърля', 'success' => 'Лиценза е заведен успешно! | Всички лицензи са заведени успешно!', - 'log_msg' => 'Проверено чрез групово лиценз изписване в GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/bg-BG/admin/licenses/message.php b/resources/lang/bg-BG/admin/licenses/message.php index fd79c7574a..15f6870c3c 100644 --- a/resources/lang/bg-BG/admin/licenses/message.php +++ b/resources/lang/bg-BG/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Възникна проблем при изписването на лиценза. Моля, опитайте отново.', 'success' => 'Лицензът е изписан', 'not_enough_seats' => 'Няма достатъчно лицензи за изписване', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/bg-BG/admin/locations/message.php b/resources/lang/bg-BG/admin/locations/message.php index f6a9c1f257..e20d914e98 100644 --- a/resources/lang/bg-BG/admin/locations/message.php +++ b/resources/lang/bg-BG/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Местоположението не съществува.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Понастоящем това местоположение не може да се изтрие, защото е местоположението на запис за поне един актив или потребител, има присвоени към него активи или е родителското местоположение на друго местоположение. Моля, актуализирайте моделите си, за да не споменавате повече тази компания, и опитайте отново. ', 'assoc_assets' => 'Местоположението е свързано с поне един актив и не може да бъде изтрито. Моля, актуализирайте активите, така че да не са свързани с това местоположение и опитайте отново. ', 'assoc_child_loc' => 'В избраното местоположение е присъединено едно или повече местоположения. Моля преместете ги в друго и опитайте отново.', 'assigned_assets' => 'Изписани Активи', diff --git a/resources/lang/bg-BG/admin/models/message.php b/resources/lang/bg-BG/admin/models/message.php index ed6e1d1235..1b7192b20b 100644 --- a/resources/lang/bg-BG/admin/models/message.php +++ b/resources/lang/bg-BG/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ВНИМАНИЕ! Модела за този актив е неправилен или липсва!', 'no_association_fix' => 'Това ще счупи нещата по много лош начин. Редактирайте артикула сега и го зачислете към модел.', 'assoc_users' => 'Този модел е асоцииран с един или повече активи и не може да бъде изтрит. Моля изтрийте активите и опитайте отново.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Моделът не беше създаден. Моля опитайте отново.', diff --git a/resources/lang/bg-BG/admin/settings/general.php b/resources/lang/bg-BG/admin/settings/general.php index 70549d0db0..b2350b11ba 100644 --- a/resources/lang/bg-BG/admin/settings/general.php +++ b/resources/lang/bg-BG/admin/settings/general.php @@ -49,7 +49,7 @@ return [ 'default_eula_text' => 'EULA по подразбиране', 'default_language' => 'Език по подразбиране', 'default_eula_help_text' => 'Можете да асоциирате специфична EULA към всяка избрана категория.', - 'acceptance_note' => 'Add a note for your decision (Optional)', + 'acceptance_note' => 'Добавете бележка за вашето решение (По желание)', 'display_asset_name' => 'Визуализиране на актив', 'display_checkout_date' => 'Визуализиране на дата на изписване', 'display_eol' => 'Визуализиране на EOL в таблиците', @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Това единствено проверява дали LDAP може да се синхронизира успешно. Ако вашата LDAP заявка за оторизация не е коректна е възможно потребителите да не могат да влязат. НЕОБХОДИМО Е ДА ЗАПИШЕТЕ LDAP НАСТРОЙКИТЕ ПРЕДИ ТОВА.', 'ldap_manager' => 'LDAP мениджър', 'ldap_server' => 'LDAP сървър', - 'ldap_server_help' => 'Това трябва да започва с Idap:// (for unencrypted or TLS) или Idaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Валидация на LDAP SSL сертификата', 'ldap_server_cert_ignore' => 'Допускане на невалиден SSL сертификат', 'ldap_server_cert_help' => 'Изберете тази опция ако използвате самоподписан SSL сертификат.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Тест LDAP', 'ldap_test_sync' => 'Тест LDAP Синхронизация', 'license' => 'Софтуерен лиценз', - 'load_remote' => 'Използвай Gravatar', - 'load_remote_help_text' => 'Махнете отметката, ако нямате достъп до интернет. Това ще забрани на Snipe-IT да пробва да зареди аватар снимките от Gravatar.', + 'load_remote' => 'Зареждане на отдалечени аватари', + 'load_remote_help_text' => 'Премахнете отметката от това квадратче, ако вашата инсталация не може да зареди скриптове от външен интернет. Това ще попречи на Snipe-IT да се опита да зареди аватари от Gravatar или други външни източници.', 'login' => 'Опити за вход', 'login_attempt' => 'Опит за вход', 'login_ip' => 'IP Адрес', @@ -150,7 +150,7 @@ return [ 'optional' => 'незадължително', 'per_page' => 'Резултати на страница', 'php' => 'PHP версия', - 'php_info' => 'PHP инфо', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, система, информация', 'php_overview_help' => 'PHP Системна информация', @@ -287,18 +287,18 @@ return [ 'zerofill_count' => 'Дължина на етикети на актив, включително zerofill', 'username_format_help' => 'Тази настройка се изпозлва само при импортиране, ако потребителя не е въведен и ние трябва да му генерираме потребителско име.', 'oauth_title' => 'OAuth API Настройки', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'OAuth Клиенти', 'oauth' => 'OAuth', 'oauth_help' => 'Oauth Endpoint настройки', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', - 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', - 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', + 'oauth_no_clients' => 'Все още не сте създали OAuth клиенти.', + 'oauth_secret' => 'Тайна', + 'oauth_authorized_apps' => 'Оторизирани приложения', + 'oauth_redirect_url' => 'URL адрес за пренасочване', + 'oauth_name_help' => ' Нещо, на което вашите потребители ще разпознаят и ще се доверят.', + 'oauth_scopes' => 'Обхват', + 'oauth_callback_url' => 'Вашият URL адрес за обратно извикване за оторизация.', + 'create_client' => 'Създайте клиент', + 'no_scopes' => 'Без обхват', 'asset_tag_title' => 'Обнови настроките на етикета на актива', 'barcode_title' => 'Обнови настройките на баркод', 'barcodes' => 'Баркоди', @@ -373,7 +373,11 @@ return [ 'database_driver' => 'Драйвер на датабаза', 'bs_table_storage' => 'Table Storage', 'timezone' => 'Часова зона', - 'profile_edit' => 'Edit Profile', - 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'profile_edit' => 'Редактиране на профил', + 'profile_edit_help' => 'Позволете на потребителите сами да могат да редактират собствените си профили.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/bg-BG/admin/users/message.php b/resources/lang/bg-BG/admin/users/message.php index 5a15131561..d444cd9f60 100644 --- a/resources/lang/bg-BG/admin/users/message.php +++ b/resources/lang/bg-BG/admin/users/message.php @@ -37,16 +37,16 @@ return array( 'update' => 'Възникна проблем при обновяването на този потребител. Моля, опитайте отново.', 'delete' => 'Възникна проблем при изтриването на този потребител. Моля, опитайте отново.', 'delete_has_assets' => 'Този потребител има зададени елементи и не може да бъде изтрит.', - 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', - 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', - 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', - 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', - 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', + 'delete_has_assets_var' => 'Този потребител все още има присвоен актив. Моля, първо го проверете.|Този потребител все още има присвоени :count активи. Моля, първо проверете активите им.', + 'delete_has_licenses_var' => 'Този потребител все още има присвоени лицензи. Моля, първо го проверете.|Този потребител все още има :count присвоени лицензи. Моля, първо ги проверете.', + 'delete_has_accessories_var' => 'Този потребител все още има присвоен аксесоар. Моля, първо го проверете.|Този потребител все още има :count присвоени аксесоари. Моля, първо проверете активите им.', + 'delete_has_locations_var' => 'Този потребител все още управлява местоположение. Моля, първо изберете друг мениджър.|Този потребител все още управлява :count местоположения. Моля, първо изберете друг мениджър.', + 'delete_has_users_var' => 'Този потребител все още управлява друг потребител. Моля, първо изберете друг мениджър за този потребител.|Този потребител все още управлява :count потребители. Моля, първо изберете друг мениджър за тях.', 'unsuspend' => 'Проблем при активирането на потребителя. Моля опитайте отново.', 'import' => 'Проблем при зареждането на потребителите. Моля опитайте отново.', 'asset_already_accepted' => 'Този актив е вече приет.', 'accept_or_decline' => 'Трябва да приемете или да откажете този актив.', - 'cannot_delete_yourself' => 'We would feel really bad if you deleted yourself, please reconsider.', + 'cannot_delete_yourself' => 'Ще се почувстваме много зле, ако се изтриете, моля, помислете отново.', 'incorrect_user_accepted' => 'Активът, който се опитвате да приемете не е изписан към Вас.', 'ldap_could_not_connect' => 'Проблем при комуникацията с LDAP сървъра. Моля прегледайте конфигурацията на LDAP.
Грешка от LDAP сървъра: ', 'ldap_could_not_bind' => 'Проблем при връзката с LDAP сървъра. Моля прегледайте конфигурацията на LDAP.
Грешка от LDAP сървъра: ', diff --git a/resources/lang/bg-BG/auth/message.php b/resources/lang/bg-BG/auth/message.php index 6c009251b1..31f7ae72e3 100644 --- a/resources/lang/bg-BG/auth/message.php +++ b/resources/lang/bg-BG/auth/message.php @@ -14,8 +14,8 @@ return array( 'success' => 'Вие влязохте успешно.', 'code_required' => 'Необходим е код за двуфакторова идентификация.', 'invalid_code' => 'Кода за двуфакторна идентификация е невалиден.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Моля, въведете вашия двуфакторен код за удостоверяване.', + 'please_enroll' => 'Моля, регистрирайте устройство с двуфакторно удостоверяване.', ), 'signin' => array( diff --git a/resources/lang/bg-BG/button.php b/resources/lang/bg-BG/button.php index c048a7896f..290c238dcf 100644 --- a/resources/lang/bg-BG/button.php +++ b/resources/lang/bg-BG/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Впиши всички / изтрии потребител', 'delete' => 'Изтриване', 'edit' => 'Редакция', + 'clone' => 'Clone', 'restore' => 'Възстановяване', 'remove' => 'Премахване', 'request' => 'Заявка', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Добави поддръжка', 'append' => 'Добави', 'new' => 'Нов', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/bg-BG/general.php b/resources/lang/bg-BG/general.php index d8a96901b7..40fa4c46bf 100644 --- a/resources/lang/bg-BG/general.php +++ b/resources/lang/bg-BG/general.php @@ -11,9 +11,9 @@ return [ 'activity_report' => 'Справка за дейностите', 'address' => 'Aдрес', 'admin' => 'Администриране', - 'admin_tooltip' => 'This user has admin privileges', - 'superuser' => 'Superuser', - 'superuser_tooltip' => 'This user has superuser privileges', + 'admin_tooltip' => 'Този потребител има администраторски привилегии', + 'superuser' => 'Супер потребител', + 'superuser_tooltip' => 'Този потребител има привилегии на супер потребител', 'administrator' => 'Администратор', 'add_seats' => 'Добавени работни места', 'age' => "Години", @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Фамилия и Първа буква от име (ivanov_i@example.com)', 'firstinitial.lastname' => 'Първа буква от името и Фамилия (i.ivanov@example.com)', 'firstnamelastinitial' => 'Име и първа буква от фамилия (ivani@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Фамилно име Собствено име (smith.jane@example.com)', 'first_name' => 'Собствено име', 'first_name_format' => 'Име (jane@example.com)', 'files' => 'Файлове', @@ -158,7 +158,7 @@ return [ 'image_upload' => 'Качване на изображение', 'filetypes_accepted_help' => 'Позволенo разширенe на файлa :types. Максимално позволен размер :size.|Позволени разширения на файлове са :types. Максимално позволен размер :size.', 'filetypes_size_help' => 'Максимално позволен размер на файла е :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Допустимите файлови типове са jpg, webp, png, gif, svg и avif. Максималният разрешен размер за качване е :size.', 'unaccepted_image_type' => 'Снимката не може да се прочете. Типовете файлови разширения са jpg, webp, png, gif и svg. Разширението на този файл е :mimetype.', 'import' => 'Зареждане', 'import_this_file' => 'Асоциирайте полетата и обработете този файл', @@ -206,8 +206,8 @@ return [ 'new_password' => 'Нова парола', 'next' => 'Следващ', 'next_audit_date' => 'Следваща дата на одита', - 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', - 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', + 'next_audit_date_help' => 'Ако използвате одит във вашата организация, това обикновено се изчислява автоматично въз основа на последната дата на одит на актива' и честота на одит (в Настройки на администратора > Сигнали) и можете да оставите това празно. Можете ръчно да зададете тази дата тук, ако е необходимо, но тя трябва да е по-късна от последната дата на одит. ', + 'audit_images_help' => 'Можете да намерите изображения за одит в раздела за история на актива.', 'no_email' => 'Няма е-майл адрес към този потребител', 'last_audit' => 'Последният одит', 'new' => 'new!', @@ -240,14 +240,14 @@ return [ 'restored' => 'възстановени', 'restore' => 'Възстановяване', 'requestable_models' => 'Изискуеми Модели', - 'requestable_items' => 'Requestable Items', + 'requestable_items' => 'Изискуеми артикули', 'requested' => 'Изискан', 'requested_date' => 'Дата на заявката', 'requested_assets' => 'Изискуеми активи', 'requested_assets_menu' => 'Изискуеми активи', 'request_canceled' => 'Заявка отменена', - 'request_item' => 'Request this item', - 'external_link_tooltip' => 'External link to', + 'request_item' => 'Поискайте този артикул', + 'external_link_tooltip' => 'Външна връзка към', 'save' => 'Запис', 'select_var' => 'Избран :thing... ', // this will eventually replace all of our other selects 'select' => 'Избор', @@ -304,7 +304,7 @@ return [ 'user' => 'Потребител', 'accepted' => 'приет', 'declined' => 'отказан', - 'declined_note' => 'Declined Notes', + 'declined_note' => 'Отхвърлени бележки', 'unassigned' => 'Не е асоциирано', 'unaccepted_asset_report' => 'Неприети активи', 'users' => 'Потребители', @@ -405,9 +405,9 @@ return [ 'accessory_name' => 'Име на аксесоар:', 'clone_item' => 'Клониране', 'checkout_tooltip' => 'Изпишете този артикул', - 'checkin_tooltip' => 'Check this item in so that it is available for re-issue, re-imaging, etc', + 'checkin_tooltip' => 'Маркирайте този артикул, така че да е наличен за повторно издаване, повторно изобразяване и т. н.', 'checkout_user_tooltip' => 'Изпишете този артикул на потребител', - 'checkin_to_diff_location' => 'You can choose to check this asset in to a location other than this asset\'s default location of :default_location if one is set', + 'checkin_to_diff_location' => 'Можете да изберете да проверите този актив на място, различно от местоположението по подразбиране на този актив :default_location, ако е зададено такова', 'maintenance_mode' => 'Услугата е временно недостъпна поради обновяване. Моля опитайте по-късно.', 'maintenance_mode_title' => 'Системата е временно недостъпна', 'ldap_import' => 'Потребителската парола не трябва да се управлява от LDAP. (Това ви позволява да изпращате заявки за забравена парола)', @@ -508,8 +508,8 @@ return [ 'address2' => 'Адрес ред 2', 'import_note' => 'Импортирано използвайки CSV импорт', ], - 'remove_customfield_association' => 'Remove this field from the fieldset. This will not delete the custom field, only this field\'s association with this fieldset.', - 'checked_out_to_fields' => 'Checked Out To Fields', + 'remove_customfield_association' => 'Премахнете това поле от набора полета. Това няма да изтрие персонализираното поле, а само връзката на това поле с този набор от полета.', + 'checked_out_to_fields' => 'Checked Out To полета', 'percent_complete' => '% завърешен', 'uploading' => 'Качване... ', 'upload_error' => 'Грешка при качване на файл. Моля проверете да няма празни редове или повтарящи се колони.', @@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => 'Разрешението е отказано. Не можете да актуализирате потребителска информация за суперадминистратори в демо версията.', 'pwd_reset_not_sent' => 'Потребителят не е активиран, синхронизиран е с LDAP или няма имейл адрес', 'error_sending_email' => 'Възникна грешка при изпращане на имейл', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Тъжна панда. Не си упълномощен да направиш нещото. Може би да се върнете към таблото за управление или да се свържете с администратора ви.', 'bulk' => [ 'delete' => [ @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Лицензно място|:count Лицензни места', 'consumables' => ':count Консуматив|:count Консумативи', 'components' => ':count Компонент|:count Компоненти', - ] + ], + 'more_info' => 'Повече информация', + 'quickscan_bulk_help' => 'Поставянето на отметка в това квадратче ще редактира записа на актива, за да отрази това ново местоположение. Оставянето му без отметка просто ще отбележи местоположението в журнала за проверка. Обърнете внимание, че ако този актив бъде извлечен, той няма да промени местоположението на лицето, актива или местоположението, към които е извлечен.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Изтича', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/bg-BG/localizations.php b/resources/lang/bg-BG/localizations.php index a2b5197b24..994b2bd5dc 100644 --- a/resources/lang/bg-BG/localizations.php +++ b/resources/lang/bg-BG/localizations.php @@ -191,27 +191,27 @@ return [ 'KW'=>'Кувейт', 'KY'=>'Кайманови острови', 'KZ'=>'Казахстан', - 'LA'=>'Lao People\'s Democratic Republic', + 'LA'=>'Лаоска народнодемократична република', 'LB'=>'Ливан', 'LC'=>'Сейнт Лусия', 'LI'=>'Лихтенщайн', - 'LK'=>'Sri Lanka', - 'LR'=>'Liberia', - 'LS'=>'Lesotho', - 'LT'=>'Lithuania', - 'LU'=>'Luxembourg', - 'LV'=>'Latvia', - 'LY'=>'Libyan Arab Jamahiriya', - 'MA'=>'Morocco', - 'MC'=>'Monaco', - 'MD'=>'Moldova, Republic Of', - 'ME'=>'Montenegro', - 'MG'=>'Madagascar', - 'MH'=>'Marshall Islands', - 'MK'=>'Macedonia, The Former Yugoslav Republic Of', - 'ML'=>'Mali', - 'MM'=>'Myanmar', - 'MN'=>'Mongolia', + 'LK'=>'Шри Ланка', + 'LR'=>'Либерия', + 'LS'=>'Лесото', + 'LT'=>'Литва', + 'LU'=>'Люксембург', + 'LV'=>'Латвия', + 'LY'=>'Либийска Арабска Джамахирия', + 'MA'=>'Мароко', + 'MC'=>'Монако', + 'MD'=>'Република Молдова', + 'ME'=>'Черна гора', + 'MG'=>'Мадагаскар', + 'MH'=>'Маршалови острови', + 'MK'=>'Северна Македония, бивша Югославка република', + 'ML'=>'Мали', + 'MM'=>'Мианмар', + 'MN'=>'Монголия', 'MO'=>'Макао', 'MP'=>'Северни Мариански острови', 'MQ'=>'Мартиника', @@ -219,14 +219,14 @@ return [ 'MS'=>'Монсерат', 'MT'=>'Малта', 'MU'=>'Мавриций', - 'MV'=>'Maldives', - 'MW'=>'Malawi', - 'MX'=>'Mexico', - 'MY'=>'Malaysia', - 'MZ'=>'Mozambique', - 'NA'=>'Namibia', - 'NC'=>'New Caledonia', - 'NE'=>'Niger', + 'MV'=>'Малдиви', + 'MW'=>'Малави', + 'MX'=>'Мексико', + 'MY'=>'Малайзия', + 'MZ'=>'Мозамбик', + 'NA'=>'Намибия', + 'NC'=>'Нова Каледония', + 'NE'=>'Нигер', 'NF'=>'Остров Норфолк', 'NG'=>'Нигерия', 'NI'=>'Никарагуа', @@ -235,7 +235,7 @@ return [ 'NP'=>'Непал', 'NR'=>'Науру', 'NU'=>'Ниуе', - 'NZ'=>'New Zealand', + 'NZ'=>'Нова Зеландия', 'OM'=>'Оман', 'PA'=>'Панама', 'PE'=>'Перу', @@ -270,29 +270,29 @@ return [ 'SJ'=>'Острови Свалбард и Ян Майен', 'SK'=>'Словакия (Словашка република)', 'SL'=>'Сиера Леоне', - 'SM'=>'San Marino', - 'SN'=>'Senegal', - 'SO'=>'Somalia', + 'SM'=>'Сан Марино', + 'SN'=>'Сенегал', + 'SO'=>'Сомалия', 'SR'=>'Суринам', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', - 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', - 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', - 'TD'=>'Chad', - 'TF'=>'French Southern Territories', - 'TG'=>'Togo', - 'TH'=>'Thailand', - 'TJ'=>'Tajikistan', - 'TK'=>'Tokelau', - 'TI'=>'East Timor', - 'TM'=>'Turkmenistan', - 'TN'=>'Tunisia', - 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', - 'TR'=>'Turkey', - 'TT'=>'Trinidad And Tobago', + 'ST'=>'Сао Томе и Принсипи', + 'SU'=>'Съветски съюз', + 'SV'=>'Ел Салвадор', + 'SY'=>'Сирийска Арабска Република', + 'SZ'=>'Свазиленд', + 'TC'=>'Острови Търкс и Кайкос', + 'TD'=>'Чад', + 'TF'=>'Френски южни територии', + 'TG'=>'Того', + 'TH'=>'Тайланд', + 'TJ'=>'Таджикистан', + 'TK'=>'Токелау', + 'TI'=>'Източен Тимор', + 'TM'=>'Тюркменистан', + 'TN'=>'Тунис', + 'TO'=>'Тонга', + 'TP'=>'Източен Тимор (стар код)', + 'TR'=>'Турция', + 'TT'=>'Тринидад и Тобаго', 'TV'=>'Тувалу', 'TW'=>'Тайван', 'TZ'=>'Обединена република Танзания', @@ -300,18 +300,18 @@ return [ 'UG'=>'Уганда', 'UK'=>'Великобритания', 'US'=>'САЩ', - 'UM'=>'United States Minor Outlying Islands', - 'UY'=>'Uruguay', - 'UZ'=>'Uzbekistan', - 'VA'=>'Vatican City State (Holy See)', - 'VC'=>'Saint Vincent And The Grenadines', - 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', - 'VN'=>'Viet Nam', - 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', - 'WS'=>'Samoa', + 'UM'=>'Малки отдалечени острови на Съединените щати', + 'UY'=>'Уругвай', + 'UZ'=>'Узбекистан', + 'VA'=>'Град-държава Ватикана (Светия престол)', + 'VC'=>'Сейнт Винсент и Гренадини', + 'VE'=>'Венецуела', + 'VG'=>'Вирджински острови (Британски)', + 'VI'=>'Вирджински острови (САЩ)', + 'VN'=>'Виетнам', + 'VU'=>'Вануату', + 'WF'=>'Острови Уолис и Футуна', + 'WS'=>'Самоу', 'YE'=>'Йемен', 'YT'=>'Майот', 'ZA'=>'Южна Африка', diff --git a/resources/lang/bg-BG/mail.php b/resources/lang/bg-BG/mail.php index a1bc50e593..c90fc87a03 100644 --- a/resources/lang/bg-BG/mail.php +++ b/resources/lang/bg-BG/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Прочетох и се съгласих с условията за ползване, и получих този артикул.', 'inventory_report' => 'Списък активи', 'item' => 'Артикул:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Има :count лиценз, който изтича в следващите :threshold дни.|Има :count лиценза, които изтичат в следващите :threshold дни.', 'link_to_update_password' => 'Моля щракенете върху следния линк за да обновите своята :web password:', 'login' => 'Вход:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Има :count актив, който подлежи на одит в следващите :threshold дни.|Има :count активи, които подлежат на отид през следващите :threshold дни.', 'user' => 'Потребител', 'username' => 'Потребителско име', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Добре дошли, :name', 'welcome_to' => 'Добре дошли: уеб!', 'your_assets' => 'Преглед на вашите активи', 'your_credentials' => 'Вашите идентификационни данни за Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/bg-BG/table.php b/resources/lang/bg-BG/table.php index 87ab0ff030..53bc674196 100644 --- a/resources/lang/bg-BG/table.php +++ b/resources/lang/bg-BG/table.php @@ -6,6 +6,6 @@ return array( 'action' => 'Действие', 'by' => 'От', 'item' => 'Информация', - 'no_matching_records' => 'No matching records found', + 'no_matching_records' => 'Няма намерени съответстващи записи', ); diff --git a/resources/lang/bg-BG/validation.php b/resources/lang/bg-BG/validation.php index f541db6157..fc2eb2864e 100644 --- a/resources/lang/bg-BG/validation.php +++ b/resources/lang/bg-BG/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute трябва да бъде потвърден.', - 'active_url' => ':attribute не е валиден URL адрес.', - 'after' => ':attribute трябва да бъде дата след :date.', - 'after_or_equal' => 'Атрибутът: трябва да бъде дата след или равна на: дата.', - 'alpha' => ':attribute може да съдържа единствено букви.', - 'alpha_dash' => ':attribute може да съдържа единствено букви, числа и тире.', - 'alpha_num' => ':attribute може да съдържа единствено букви и числа.', - 'array' => 'Атрибутът: трябва да бъде масив.', - 'before' => ':attribute трябва да бъде дата преди :date.', - 'before_or_equal' => 'Атрибутът: трябва да бъде дата преди или равна на: дата.', - 'between' => [ - 'numeric' => ':attribute трябва да бъде между :min и :max.', - 'file' => ':attribute трябва да бъде с големина между :min и :max KB.', - 'string' => ':attribute трябва да бъде с дължина между :min и :max символа.', - 'array' => 'Атрибутът: трябва да има между: min и: max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute трябва да е верен или грешен.', - 'confirmed' => ':attribute потвърждение не съвпада.', - 'date' => ':attribute не е валидна дата.', - 'date_format' => ':attribute не съвпада с формата :format.', - 'different' => ':attribute и :other трябва да се различават.', - 'digits' => ':attribute трябва да бъде с дължина :digits цифри.', - 'digits_between' => ':attribute трябва да бъде с дължина между :min и :max цифри.', - 'dimensions' => 'Атрибутът: има невалидни величини на изображението.', - 'distinct' => 'Полето: atribut има дублираща се стойност.', - 'email' => ':attribute е с невалиден формат.', - 'exists' => 'Избраният :attribute е невалиден.', - 'file' => 'Атрибутът: трябва да е файл.', - 'filled' => 'Полето на атрибута: трябва да има стойност.', - 'image' => ':attribute трябва да бъде изображение.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Полето: atribut има дублираща се стойност.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Избраният :attribute е невалиден.', + 'exists' => 'Избраният :attribute е невалиден.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Полето на атрибута: трябва да има стойност.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Стойността за :fieldname не може да бъде празна.', - 'in' => 'Избраният :attribute е невалиден.', - 'in_array' => 'Полето: atribut не съществува в: други.', - 'integer' => ':attribute трябва да бъде целочислен.', - 'ip' => ':attribute трябва да бъде валиден IP адрес.', - 'ipv4' => 'Атрибутът: трябва да е валиден IPv4 адрес.', - 'ipv6' => 'Атрибутът: трябва да е валиден IPv6 адрес.', - 'is_unique_department' => ':attribute трябва да бъде уникален за тази локация на фирмата.', - 'json' => 'Атрибутът: трябва да е валиден низ на JSON.', - 'max' => [ - 'numeric' => ':attribute не може да бъде по-дълъг от :max.', - 'file' => ':attribute не може да бъде по-голям от :max KB.', - 'string' => ':attribute не може да бъде по-дълъг от :max символа.', - 'array' => 'Атрибутът: не може да има повече от: max items.', + 'in' => 'Избраният :attribute е невалиден.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute трябва да бъде файл с един от следните типове: :values.', - 'mimetypes' => 'Атрибутът: трябва да бъде файл от тип:: стойности.', - 'min' => [ - 'numeric' => ':attribute трябва да бъде минимум :min.', - 'file' => ':attribute трябва да бъде с големина минимум :min KB.', - 'string' => ':attribute трябва да бъде минимум :min символа.', - 'array' => 'Атрибутът: трябва да има поне: min елементи.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute трябва да започва с една от следните стойности: :values', - 'ends_with' => ':attribute трябва да завършва с една от следните стойности: :values', - - 'not_in' => 'Избраният :attribute е невалиден.', - 'numeric' => ':attribute трябва да бъде число.', - 'present' => 'Полето на атрибута трябва да е налице.', - 'valid_regex' => 'Това не е валиден регулярен израз.', - 'regex' => 'Форматът на :attribute е невалиден.', - 'required' => 'Полето :attribute е задължително.', - 'required_if' => 'Полето :attribute е задължително, когато :other е :value.', - 'required_unless' => 'Полето: атрибут се изисква, освен ако: другият не е в: стойности.', - 'required_with' => ':attribute е задължителен, когато са избрани :values.', - 'required_with_all' => 'Полето: атрибут се изисква, когато: стойностите са налице.', - 'required_without' => ':attribute е задължителен, когато не са избрани :values.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Избраният :attribute е невалиден.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Полето на атрибута трябва да е налице.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Полето :attribute е задължително.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Полето :attribute е задължително, когато :other е :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Полето: атрибут се изисква, освен ако: другият не е в: стойности.', + 'required_with' => ':attribute е задължителен, когато са избрани :values.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute е задължителен, когато не са избрани :values.', 'required_without_all' => 'Полето: атрибут се изисква, когато няма стойности: стойности.', - 'same' => ':attribute и :other трябва да съвпадат.', - 'size' => [ - 'numeric' => ':attribute трябва да бъде с дължина :size.', - 'file' => ':attribute трябва да бъде с големина :size KB.', - 'string' => ':attribute трябва да бъде с дължина :size символа.', - 'array' => 'Атрибутът: трябва да съдържа: размерни елементи.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Атрибутът: трябва да е низ.', - 'timezone' => 'Атрибутът: трябва да е валидна зона.', 'two_column_unique_undeleted' => ':attribute трябва да бъде уникален за :table1 и :table2. ', - 'unique' => ':attribute вече е вписан.', - 'uploaded' => 'Атрибутът: не успя да качи.', - 'url' => 'Форматът на :attribute е невалиден.', 'unique_undeleted' => ':attribute трябва да бъде уникален.', 'non_circular' => ':attribute не трябва да създава препрадка към себе си.', 'not_array' => ':attribute не може да бъде масив.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Паролата трябва да съдържа поне една цифра.', 'case_diff' => 'Паролата трябва да съдържа главни и малки букви.', 'symbols' => 'Паролата трябва да съдържа символи.', - 'gte' => [ - 'numeric' => 'Стойността не може да бъде отрицателна' - ], - 'checkboxes' => ':attribute съдържа невалидни опции.', - 'radio_buttons' => ':attribute е невалиден.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute вече е вписан.', + 'uploaded' => 'Атрибутът: не успя да качи.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':values трябва да бъде валидна дата в YYYY-MM-DD формат', 'last_audit_date.date_format' => ':attribute трябва да бъде валидна дата в YYYY-MM-DD hh:mm:ss формат', 'expiration_date.date_format' => ':attribute трябва да бъде валидна дата в YYYY-MM-DD формат', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute трябва да бъде валидна дата в YYYY-MM-DD формат', 'start_date.date_format' => ':attribute трябва да бъде валидна дата в YYYY-MM-DD формат', 'end_date.date_format' => ':attribute трябва да бъде валидна дата в YYYY-MM-DD формат', - - ], - + 'checkboxes' => ':attribute съдържа невалидни опции.', + 'radio_buttons' => ':attribute е невалиден.', + 'invalid_value_in_field' => 'В това поле е включена невалидна стойност', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'В това поле е включена невалидна стойност', + + 'generic' => [ + 'invalid_value_in_field' => 'В това поле е включена невалидна стойност', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ca-ES/account/general.php b/resources/lang/ca-ES/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/ca-ES/account/general.php +++ b/resources/lang/ca-ES/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ca-ES/admin/accessories/message.php b/resources/lang/ca-ES/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/ca-ES/admin/accessories/message.php +++ b/resources/lang/ca-ES/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ca-ES/admin/consumables/general.php b/resources/lang/ca-ES/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/ca-ES/admin/consumables/general.php +++ b/resources/lang/ca-ES/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ca-ES/admin/consumables/message.php b/resources/lang/ca-ES/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/ca-ES/admin/consumables/message.php +++ b/resources/lang/ca-ES/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/ca-ES/admin/custom_fields/message.php b/resources/lang/ca-ES/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/ca-ES/admin/custom_fields/message.php +++ b/resources/lang/ca-ES/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/ca-ES/admin/hardware/message.php b/resources/lang/ca-ES/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/ca-ES/admin/hardware/message.php +++ b/resources/lang/ca-ES/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/ca-ES/admin/licenses/general.php b/resources/lang/ca-ES/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/ca-ES/admin/licenses/general.php +++ b/resources/lang/ca-ES/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ca-ES/admin/licenses/message.php b/resources/lang/ca-ES/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/ca-ES/admin/licenses/message.php +++ b/resources/lang/ca-ES/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ca-ES/admin/models/message.php b/resources/lang/ca-ES/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/ca-ES/admin/models/message.php +++ b/resources/lang/ca-ES/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/ca-ES/admin/settings/general.php b/resources/lang/ca-ES/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/ca-ES/admin/settings/general.php +++ b/resources/lang/ca-ES/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ca-ES/button.php b/resources/lang/ca-ES/button.php index 59ff9a02a4..aaf67104f7 100644 --- a/resources/lang/ca-ES/button.php +++ b/resources/lang/ca-ES/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Suprimeix', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ca-ES/general.php b/resources/lang/ca-ES/general.php index 9abc624ad2..8218008c51 100644 --- a/resources/lang/ca-ES/general.php +++ b/resources/lang/ca-ES/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ca-ES/mail.php b/resources/lang/ca-ES/mail.php index cb3e88cae0..9bb00688f4 100644 --- a/resources/lang/ca-ES/mail.php +++ b/resources/lang/ca-ES/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ca-ES/validation.php b/resources/lang/ca-ES/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/ca-ES/validation.php +++ b/resources/lang/ca-ES/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/chr-US/account/general.php b/resources/lang/chr-US/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/chr-US/account/general.php +++ b/resources/lang/chr-US/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/chr-US/admin/accessories/message.php b/resources/lang/chr-US/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/chr-US/admin/accessories/message.php +++ b/resources/lang/chr-US/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/chr-US/admin/consumables/general.php b/resources/lang/chr-US/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/chr-US/admin/consumables/general.php +++ b/resources/lang/chr-US/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/chr-US/admin/consumables/message.php b/resources/lang/chr-US/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/chr-US/admin/consumables/message.php +++ b/resources/lang/chr-US/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/chr-US/admin/custom_fields/message.php b/resources/lang/chr-US/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/chr-US/admin/custom_fields/message.php +++ b/resources/lang/chr-US/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/chr-US/admin/hardware/message.php b/resources/lang/chr-US/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/chr-US/admin/hardware/message.php +++ b/resources/lang/chr-US/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/chr-US/admin/licenses/general.php b/resources/lang/chr-US/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/chr-US/admin/licenses/general.php +++ b/resources/lang/chr-US/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/chr-US/admin/licenses/message.php b/resources/lang/chr-US/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/chr-US/admin/licenses/message.php +++ b/resources/lang/chr-US/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/chr-US/admin/models/message.php b/resources/lang/chr-US/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/chr-US/admin/models/message.php +++ b/resources/lang/chr-US/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/chr-US/admin/settings/general.php b/resources/lang/chr-US/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/chr-US/admin/settings/general.php +++ b/resources/lang/chr-US/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/chr-US/button.php b/resources/lang/chr-US/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/chr-US/button.php +++ b/resources/lang/chr-US/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/chr-US/general.php b/resources/lang/chr-US/general.php index 5b1d0e9b3c..b3a6b34320 100644 --- a/resources/lang/chr-US/general.php +++ b/resources/lang/chr-US/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/chr-US/mail.php b/resources/lang/chr-US/mail.php index 759ff0f5e8..edb1683200 100644 --- a/resources/lang/chr-US/mail.php +++ b/resources/lang/chr-US/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/chr-US/validation.php b/resources/lang/chr-US/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/chr-US/validation.php +++ b/resources/lang/chr-US/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/cs-CZ/account/general.php b/resources/lang/cs-CZ/account/general.php index 6099bc7bde..9923f9ad10 100644 --- a/resources/lang/cs-CZ/account/general.php +++ b/resources/lang/cs-CZ/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Osobní API klíče', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Základní adresa API je umístěna na:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokeny vyprší:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/cs-CZ/admin/accessories/message.php b/resources/lang/cs-CZ/admin/accessories/message.php index 08d8fd6b04..6608b4cde3 100644 --- a/resources/lang/cs-CZ/admin/accessories/message.php +++ b/resources/lang/cs-CZ/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Příslušenství nebylo převzato, zkuste to znovu', 'success' => 'Příslušenství úspěšně předáno.', 'unavailable' => 'Příslušenství nelze vydat. Zkontrolujte skladové zásoby.', - 'user_does_not_exist' => 'Neplatný uživatel. Zkuste to znovu.' + 'user_does_not_exist' => 'Neplatný uživatel. Zkuste to znovu.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/cs-CZ/admin/consumables/general.php b/resources/lang/cs-CZ/admin/consumables/general.php index ea4ce1c3d1..97003d103b 100644 --- a/resources/lang/cs-CZ/admin/consumables/general.php +++ b/resources/lang/cs-CZ/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Zbývá', 'total' => 'Celkem', 'update' => 'Upravit sp. materiál', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/cs-CZ/admin/consumables/message.php b/resources/lang/cs-CZ/admin/consumables/message.php index 6d775d09f6..a3770250e6 100644 --- a/resources/lang/cs-CZ/admin/consumables/message.php +++ b/resources/lang/cs-CZ/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Spotřební materiál nebyl nalezen.', 'create' => array( diff --git a/resources/lang/cs-CZ/admin/custom_fields/message.php b/resources/lang/cs-CZ/admin/custom_fields/message.php index a924d7a19e..5115cd1279 100644 --- a/resources/lang/cs-CZ/admin/custom_fields/message.php +++ b/resources/lang/cs-CZ/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Takové pole neexistuje.', 'already_added' => 'Takové pole již existuje', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Pole se nepodařilo přidat, pokuste se o to znovu.', diff --git a/resources/lang/cs-CZ/admin/hardware/message.php b/resources/lang/cs-CZ/admin/hardware/message.php index 653f60fbfd..4b80c1507b 100644 --- a/resources/lang/cs-CZ/admin/hardware/message.php +++ b/resources/lang/cs-CZ/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Varování: Toto zařízení bylo označeno jako momentálně nepřiřaditelné. - Pokud se na jeho stavu něco změnilo, upravte jej.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Majetek nenalezen.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Některé položky nebyly správně importovány.', 'errorDetail' => 'Následující položky nebyly importovány kvůli chybám.', 'success' => 'Váš soubor byl importován', diff --git a/resources/lang/cs-CZ/admin/licenses/general.php b/resources/lang/cs-CZ/admin/licenses/general.php index 2a617221e8..9ef84a0c0a 100644 --- a/resources/lang/cs-CZ/admin/licenses/general.php +++ b/resources/lang/cs-CZ/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informace o licenci', 'license_seats' => 'Počet licencí', 'seat' => 'Licence', + 'seat_count' => 'Seat :count', 'seats' => 'Počet licencí', 'software_licenses' => 'Softwarové licence', 'user' => 'Uživatel', @@ -23,12 +24,12 @@ return array( [ '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í.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', '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', 'disabled_tooltip_reassignable' => 'Toto je zakázáno, protože licence není znovu přiřazitelná', 'success' => 'Lincece úspěšně převzata! | Licence úspěšně převzaty!', - 'log_msg' => 'Převzato pomocí hromadného zpracování licencí', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/cs-CZ/admin/licenses/message.php b/resources/lang/cs-CZ/admin/licenses/message.php index 3fddef6b9d..0c2fc94ccd 100644 --- a/resources/lang/cs-CZ/admin/licenses/message.php +++ b/resources/lang/cs-CZ/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Vyskytl se problém při výdeji licence. Zkuste to znovu prosím.', 'success' => 'Licence byla úspěšně vydána', 'not_enough_seats' => 'Není k dispozici dostatek licenčních míst pro pokladnu', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/cs-CZ/admin/models/message.php b/resources/lang/cs-CZ/admin/models/message.php index 9b374e27ec..46be6918ce 100644 --- a/resources/lang/cs-CZ/admin/models/message.php +++ b/resources/lang/cs-CZ/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'VAROVÁNÍ! Model majetku pro tuto položku je neplatný, nebo chybí!', 'no_association_fix' => 'Tento stav může způsobit nedozírné problémy. Přiřaďte dotyčnému majetku správný model.', 'assoc_users' => 'Tento model je spojen s alespoň jedním majetkem a nemůže být smazán. Prosím smažte tyto majetky a pak to zkuste znovu. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model nebyl vytvořen, zkuste to znovu.', diff --git a/resources/lang/cs-CZ/admin/settings/general.php b/resources/lang/cs-CZ/admin/settings/general.php index 8333e98d5e..b3495870b1 100644 --- a/resources/lang/cs-CZ/admin/settings/general.php +++ b/resources/lang/cs-CZ/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP server', - 'ldap_server_help' => 'Toto by mělo začít s ldap: // (pro nešifrované nebo TLS) nebo ldaps: // (pro SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validace certifikátů LDAP SSL', 'ldap_server_cert_ignore' => 'Povolit neplatný certifikát SSL', 'ldap_server_cert_help' => 'Zaškrtněte toto políčko, pokud používáte SSL certifikát s vlastním podpisem a chcete přijmout neplatný certifikát SSL.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP synchronizace', 'license' => 'Softwarová licence', - 'load_remote' => 'Použít Gravatar', - 'load_remote_help_text' => 'Zrušte zaškrtnutí tohoto políčka, pokud vaše instalace nemůže načíst skripty z externího internetu. To Snipe-IT zabrání načítání obrázků z Gravataru.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Pokusů o přihlášení', 'login_attempt' => 'Pokus o přihlášení', 'login_ip' => 'IP adresa', @@ -150,7 +150,7 @@ return [ 'optional' => 'volitelný', 'per_page' => 'Výsledků na stránku', 'php' => 'Verze PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, systém, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/cs-CZ/button.php b/resources/lang/cs-CZ/button.php index e674be04c7..e9d10985c7 100644 --- a/resources/lang/cs-CZ/button.php +++ b/resources/lang/cs-CZ/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Vrátit vše / Smazat uživatele', 'delete' => 'Smazat', 'edit' => 'Upravit', + 'clone' => 'Clone', 'restore' => 'Obnovit', 'remove' => 'Odebrat', 'request' => 'Požadavek', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Přidat údržbu', 'append' => 'Připojit', 'new' => 'Nový', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/cs-CZ/general.php b/resources/lang/cs-CZ/general.php index d072c8fc95..a8b3d719c2 100644 --- a/resources/lang/cs-CZ/general.php +++ b/resources/lang/cs-CZ/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count sídlo licence|:count licenční místa', 'consumables' => ':count Spotřební materiál|:count Spotřební materiál', 'components' => ':count komponenta|:count komponenty', - ] + ], + 'more_info' => 'Více informací', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Vyprší', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/cs-CZ/mail.php b/resources/lang/cs-CZ/mail.php index e846d7cbed..226e79c4ea 100644 --- a/resources/lang/cs-CZ/mail.php +++ b/resources/lang/cs-CZ/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Přečetl/a jsem si podmínky používání, souhlasím s pravidel používání a obdržel jsem tuto položku.', 'inventory_report' => 'Zpráva o majetku', 'item' => 'Položka:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Je zde :count licence, které končí platnost v příštích :threshold dnech.|Jsou zde :count licence, kterým končí platnost v příštích :threshold dnech.', 'link_to_update_password' => 'Klepnutím na následující odkaz aktualizujte své heslo pro :web:', 'login' => 'Uživatelské jméno:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Je zde :count položka, která má chystaný audit za :threshold dní.|Jsou zde :count položek, který se chystá k auditu za :threshold dní.', 'user' => 'Uživatel', 'username' => 'Uživatelské jméno', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Vítej uživateli :name', 'welcome_to' => 'Vítejte na :web!', 'your_assets' => 'Zobrazit vaše položky', 'your_credentials' => 'Vaše pověření Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/cs-CZ/validation.php b/resources/lang/cs-CZ/validation.php index 92c41a0c07..efae48ba9e 100644 --- a/resources/lang/cs-CZ/validation.php +++ b/resources/lang/cs-CZ/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Je potřeba potvrdit :attribute.', - 'active_url' => ':attribute není platnou URL.', - 'after' => ':attribute nemůže být dříve než :date.', - 'after_or_equal' => 'Atribut musí mít datum následující nebo rovné: datum.', - 'alpha' => ':attribute může obsahovat pouze písmena.', - 'alpha_dash' => ':attribute může obsahovat pouze písmena, čísla, a pomlčky.', - 'alpha_num' => ':attribute může obsahovat pouze písmena čísla.', - 'array' => 'Atribut musí být atribut.', - 'before' => ':attribute nemůže být později než :date.', - 'before_or_equal' => 'Atribut: musí mít datum před datem nebo se rovnat: datum.', - 'between' => [ - 'numeric' => ':attribute musí být mezi :min - :max.', - 'file' => ':attribute musí být mezi :min - :max kilobajtů.', - 'string' => ':attribute smí obsahovat pouze :min - :max znaků.', - 'array' => 'Atribut: musí obsahovat položky: min a max.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute musí být true nebo false.', - 'confirmed' => 'Potvrzení :attribute se neshoduje.', - 'date' => ':attribute není platným datem.', - 'date_format' => 'Atribut :attribute nesouhlasí s formátem :format.', - 'different' => ':attribute a :other se musí lišit.', - 'digits' => ':attribute musí být :digits číslo.', - 'digits_between' => ':attribute musí být mezi hodnotami :min a :max.', - 'dimensions' => 'Atribut: má neplatné kóty obrázku.', - 'distinct' => 'Pole atributu: atribut má duplicitní hodnotu.', - 'email' => 'Formát :attribute je neplatný.', - 'exists' => 'Zvolený :attribute je neplatný.', - 'file' => 'Atribut: musí být soubor.', - 'filled' => 'Pole atributu: musí mít hodnotu.', - 'image' => ':attribute musí být obrázek.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Pole atributu: atribut má duplicitní hodnotu.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Zvolený :attribute je neplatný.', + 'exists' => 'Zvolený :attribute je neplatný.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Pole atributu: musí mít hodnotu.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Hodnota pro :fieldname nemůže být null.', - 'in' => 'Zvolený :attribute je neplatný.', - 'in_array' => 'Pole atributu neexistuje v: jiné.', - 'integer' => ':attribute musí být celočíselný.', - 'ip' => ':attribute musí být platná IP adresa.', - 'ipv4' => 'Atribut: musí mít platnou adresu IPv4.', - 'ipv6' => 'Atribut: musí být platná adresa IPv6.', - 'is_unique_department' => ':attribute musí být unikátní pro tuto lokalitu společnosti', - 'json' => 'Atribut: musí být platný řetězec JSON.', - 'max' => [ - 'numeric' => ':attribute nesmí být větší než :max.', - 'file' => ':attribute nesmí být větší než :max kilobajtů.', - 'string' => ':attribute nesmí být větší než :max znaků.', - 'array' => 'Atribut: Atribut nesmí mít více než: max položky.', + 'in' => 'Zvolený :attribute je neplatný.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute musí být soubor typu: :values.', - 'mimetypes' => 'Atribut: musí být soubor typu:: values.', - 'min' => [ - 'numeric' => ':attribute musí být minimálne :min.', - 'file' => ':attribute musí být minimálně :min kilobajtů.', - 'string' => ':attribute musí mít minimálně :min znaků.', - 'array' => 'Atribut musí mít alespoň: min položky.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute musí končit jednou z následujících hodnot: :values.', - 'ends_with' => ':attribute musí končit jedním z těchto znaků: :values.', - - 'not_in' => 'Zvolený :attribute je neplatný.', - 'numeric' => ':attribute musí být číslo.', - 'present' => 'Pole atributu musí být přítomno.', - 'valid_regex' => 'Toto není platný regulární výraz. ', - 'regex' => 'Formát :attribute je neplatný.', - 'required' => 'Pole :attribute je požadováno.', - 'required_if' => 'Položka :attribute je vyžadována, když :other je :value.', - 'required_unless' => 'Pole atributu: je povinné, pokud: jiný není v: hodnoty.', - 'required_with' => 'Hodnota :attribute je vyžadována, když je přítomno :values.', - 'required_with_all' => 'Pole atributu: je požadováno, když: jsou přítomny hodnoty.', - 'required_without' => 'Hodnota :attribute je vyžadována, když není přítomno :values.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Zvolený :attribute je neplatný.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Pole atributu musí být přítomno.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Pole :attribute je požadováno.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Položka :attribute je vyžadována, když :other je :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Pole atributu: je povinné, pokud: jiný není v: hodnoty.', + 'required_with' => 'Hodnota :attribute je vyžadována, když je přítomno :values.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Hodnota :attribute je vyžadována, když není přítomno :values.', 'required_without_all' => 'Pole atributu: je vyžadováno, pokud nejsou žádné hodnoty: existují.', - 'same' => ':attribute a :other se musí shodovat.', - 'size' => [ - 'numeric' => ':attribute musí být :size.', - 'file' => ':attribute musí být :size kilobajtů.', - 'string' => ':attribute musí mít :size znaků.', - 'array' => 'Atribut: musí obsahovat: položky velikosti.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Atribut: musí být řetězec.', - 'timezone' => 'Atribut: musí být platnou zónou.', 'two_column_unique_undeleted' => ':attribute musí být unikátní napříč :table1 a :table2. ', - 'unique' => ':attribute byl již vybrán.', - 'uploaded' => 'Atribut: se nepodařilo nahrát.', - 'url' => 'Formát :attribute je neplatný.', 'unique_undeleted' => 'Je třeba, aby se :attribute neopakoval.', 'non_circular' => ':attribute nesmí vytvořit kruhový odkaz.', 'not_array' => ':attribute nemůže být pole.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Heslo musí obsahovat alespoň jednu číslici.', 'case_diff' => 'Heslo musí použít smíšené znaky.', 'symbols' => 'Heslo musí obsahovat symboly.', - 'gte' => [ - 'numeric' => 'Hodnota nemůže být záporná' - ], - 'checkboxes' => ':attribute obsahuje neplatné možnosti.', - 'radio_buttons' => ':attribute je neplatný.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute byl již vybrán.', + 'uploaded' => 'Atribut: se nepodařilo nahrát.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute musí být platné datum ve formátu RRRR-MM-DD', 'last_audit_date.date_format' => ':attribute musí být platné datum ve formátu RRRR-MM-DD hh:mm:ss', 'expiration_date.date_format' => ':attribute musí být platné datum ve formátu RRRR-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute musí být platné datum ve formátu RRRR-MM-DD', 'start_date.date_format' => ':attribute musí být platné datum ve formátu RRRR-MM-DD', 'end_date.date_format' => ':attribute musí být platné datum ve formátu RRRR-MM-DD', - - ], - + 'checkboxes' => ':attribute obsahuje neplatné možnosti.', + 'radio_buttons' => ':attribute je neplatný.', + 'invalid_value_in_field' => 'Neplatná hodnota zahrnutá v tomto poli', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Neplatná hodnota zahrnutá v tomto poli', + + 'generic' => [ + 'invalid_value_in_field' => 'Neplatná hodnota zahrnutá v tomto poli', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/cy-GB/account/general.php b/resources/lang/cy-GB/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/cy-GB/account/general.php +++ b/resources/lang/cy-GB/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/cy-GB/admin/accessories/message.php b/resources/lang/cy-GB/admin/accessories/message.php index a14eb5c3cc..85e06e49fa 100644 --- a/resources/lang/cy-GB/admin/accessories/message.php +++ b/resources/lang/cy-GB/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Ategolyn heb ei nodi allan, ceisiwch eto o. g. y. dd', 'success' => 'Ategolyn wedi nodi allan yn llwyddiannus.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Nid yw\'r defnyddiwr yna yn ddilys. Ceisiwch eto o.g.y.dd.' + 'user_does_not_exist' => 'Nid yw\'r defnyddiwr yna yn ddilys. Ceisiwch eto o.g.y.dd.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/cy-GB/admin/consumables/general.php b/resources/lang/cy-GB/admin/consumables/general.php index 4efaf8e9e2..34ff743000 100644 --- a/resources/lang/cy-GB/admin/consumables/general.php +++ b/resources/lang/cy-GB/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Yn weddill', 'total' => 'Cyfanswm', 'update' => 'Diweddaru nwydd traul', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/cy-GB/admin/consumables/message.php b/resources/lang/cy-GB/admin/consumables/message.php index f7f5438001..7acf2a33df 100644 --- a/resources/lang/cy-GB/admin/consumables/message.php +++ b/resources/lang/cy-GB/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Nid yw\'r nwydd traul yn bodoli.', 'create' => array( diff --git a/resources/lang/cy-GB/admin/custom_fields/message.php b/resources/lang/cy-GB/admin/custom_fields/message.php index 30d7297b21..a1ca87bac2 100644 --- a/resources/lang/cy-GB/admin/custom_fields/message.php +++ b/resources/lang/cy-GB/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Nid yw\'r maes yn bodoli.', 'already_added' => 'Maes eisoes yn bodoli', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Ni crewyd y maes, ceisiwch eto o. g. y. dd.', diff --git a/resources/lang/cy-GB/admin/hardware/message.php b/resources/lang/cy-GB/admin/hardware/message.php index 5f41876580..b839855f58 100644 --- a/resources/lang/cy-GB/admin/hardware/message.php +++ b/resources/lang/cy-GB/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => ' Rhybudd: Mae\'r ased hwn wedi\'i nodi fel un na ellir ei ddefnyddio ar hyn o bryd. - Os yw\'r statws hwn wedi newid, diweddarwch statws yr ased.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Nid yw\'r ased yn bodoli.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Rhai eitemau heb ei mewnforio\'n gywir.', 'errorDetail' => 'Ni fewnforiwyd yr eitemau canlynol oherwydd gwallau.', 'success' => 'Mae\'ch ffeil wedi\'i mewnforio', diff --git a/resources/lang/cy-GB/admin/licenses/general.php b/resources/lang/cy-GB/admin/licenses/general.php index 1583278259..523cb50fe3 100644 --- a/resources/lang/cy-GB/admin/licenses/general.php +++ b/resources/lang/cy-GB/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Gwybodaeth Trwydded', 'license_seats' => 'Seddi Trwydded', 'seat' => 'Sedd', + 'seat_count' => 'Seat :count', 'seats' => 'Seddi', 'software_licenses' => 'Trwyddedau Meddalwedd', 'user' => 'Defnyddiwr', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/cy-GB/admin/licenses/message.php b/resources/lang/cy-GB/admin/licenses/message.php index 765824681b..82b01ac1ca 100644 --- a/resources/lang/cy-GB/admin/licenses/message.php +++ b/resources/lang/cy-GB/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Nid oedd yn bosib nodi\'r trwydded allan. Ceisiwch eto o. g. y. dd.', 'success' => 'Trwydded wedi nodi allan yn llwyddiannus', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/cy-GB/admin/models/message.php b/resources/lang/cy-GB/admin/models/message.php index eadedfe479..b8c1fef9d4 100644 --- a/resources/lang/cy-GB/admin/models/message.php +++ b/resources/lang/cy-GB/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Mae\'r model yma wedi perthnasu hefo un neu mwy o asedau. Fydd rhaid dileu\'r asedau ac yna trio eto. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Ni crewyd y model, ceisiwch eto o.g.y.dd.', diff --git a/resources/lang/cy-GB/admin/settings/general.php b/resources/lang/cy-GB/admin/settings/general.php index 0559776548..5e15b8dc2e 100644 --- a/resources/lang/cy-GB/admin/settings/general.php +++ b/resources/lang/cy-GB/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Mae\'r prawf yma yn profi\'r gallu i LDAP gwneud sync. Os ydi\'r gosodiadau LDAP yn anghywir mae\'n bosib ni ellith defnyddwyr mewngofnodi. RHAID ARBED GOSODIADAU LDAP CYNTAF.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'Server LDAP', - 'ldap_server_help' => 'Dylith hwn ddechra hefo ldap://(Ar gyfer cysylltiadau TLS neu heb eu hamcryptio) neu ldaps://(ar gyfer SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Profi tystysgrif LDAP SSL dilys', 'ldap_server_cert_ignore' => 'Caniatau Tystyrgrif SSL annilys', 'ldap_server_cert_help' => 'Dewisiwch y blwch yma os ydych yn defnyddio tystysgrif wedi hunan-arwyddo ac os ydych am dderbyn tystysgrif SSL annilys.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Trwydded Meddalwedd', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'Cyfeiriad IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'dewisol', 'per_page' => 'Canlyniadau fesul tudalen', 'php' => 'Fersiwn PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/cy-GB/button.php b/resources/lang/cy-GB/button.php index b5514d7020..139926f120 100644 --- a/resources/lang/cy-GB/button.php +++ b/resources/lang/cy-GB/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Dileu', 'edit' => 'Addasu', + 'clone' => 'Clone', 'restore' => 'Adfer', 'remove' => 'Cael gwared', 'request' => 'Gofynnwyd amdano', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Newydd', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/cy-GB/general.php b/resources/lang/cy-GB/general.php index ef714551b3..f4b55f36ce 100644 --- a/resources/lang/cy-GB/general.php +++ b/resources/lang/cy-GB/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Mwy o wybodaeth', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Dod i ben', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/cy-GB/mail.php b/resources/lang/cy-GB/mail.php index dbf900f71c..5f611e2456 100644 --- a/resources/lang/cy-GB/mail.php +++ b/resources/lang/cy-GB/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Rwyf wedi darllen a chytuno â\'r telerau defnyddio, ac wedi derbyn yr eitem hon.', 'inventory_report' => 'Inventory Report', 'item' => 'Eitem:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Mae yna :count trwydded yn dod i ben yn ystod y :threshold diwrnod nesaf | Mae :count trwyddedau yn dod i ben yn y :threshold diwrnod nesaf.', 'link_to_update_password' => 'Cliciwch ar y ddolen ganlynol i gadarnhau eich cyfrinair :gwe:', 'login' => 'Mewngofnodi:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Defnyddiwr', 'username' => 'Enw defnyddiwr', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Croeso, :name', 'welcome_to' => 'Croeso i :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Eich manylion defnyddiwr Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/cy-GB/validation.php b/resources/lang/cy-GB/validation.php index 14ee3535de..2e764543d2 100644 --- a/resources/lang/cy-GB/validation.php +++ b/resources/lang/cy-GB/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Rhaid derbyn y :attribute.', - 'active_url' => 'Nid ywr :attribute yn URL dilys.', - 'after' => 'Rhaid i\'r :attribute bod yn dyddiad ar ol :date.', - 'after_or_equal' => 'Rhaid i\'r :attribute bod yn dyddiad ar ol neu yn hafal i :date.', - 'alpha' => 'Rhaid ir :attribute cynnwys llythrennau yn unig.', - 'alpha_dash' => 'Fedrith y :attribute dim ond cynnwys llythrennau, rhifau a dashes.', - 'alpha_num' => 'Rhaid ir :attribute cynnwys llythrennau a rhifau yn unig.', - 'array' => 'Rhaid i :attribute fod yn array.', - 'before' => 'Rhaid i\'r :attribute bod yn dyddiad cyn :date.', - 'before_or_equal' => 'Rhaid i\'r :attribute bod yn dyddiad cyn neu yn hafal i :date.', - 'between' => [ - 'numeric' => 'Rhaid i\'r :attribute bod rhwng :min - :max.', - 'file' => 'Rhaid i\'r :attribute bod rhwng :min - :max kilobytes.', - 'string' => 'Rhaid i\'r :attribute bod rhwng :min - :max characters.', - 'array' => 'Rhaid i\'r :attribute cael rhwng :min - :max o eitemau.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Rhaid i :attribute fod yn wir neu ddim.', - 'confirmed' => 'Dydi\'r cadarnhad :attribute ddim yn cydfynd.', - 'date' => 'Nid yw\'r :attribute yn dyddiad dilys.', - 'date_format' => 'Nid yw\'r :attribute yn cydfynd ar format :format.', - 'different' => 'Rhaid i :attribute a :other bod yn wahanol.', - 'digits' => 'Rhai i\'r :attribute bod yn :digits o ddigidau.', - 'digits_between' => 'Rhaid i\'r :attribute bodrhwng :min - :max o digidau.', - 'dimensions' => 'Mae\'r :attribute hefo maint annilys.', - 'distinct' => 'Mae\'r :attribute hefo maes sydd wedi\'i dyblygu.', - 'email' => 'Mae fformat :attribute yn annilys.', - 'exists' => 'Mae\'r :attribute a dewisir yn annilys.', - 'file' => 'Rhaid i\'r :attribute bod yn ffeil.', - 'filled' => 'Rhaid i\'r maes :attribute cael gwerth.', - 'image' => 'Rhaid i\'r :attribute bod yn delwedd.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Mae\'r :attribute hefo maes sydd wedi\'i dyblygu.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Mae\'r :attribute a dewisir yn annilys.', + 'exists' => 'Mae\'r :attribute a dewisir yn annilys.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Rhaid i\'r maes :attribute cael gwerth.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Mae\'r :attribute a dewisir yn annilys.', - 'in_array' => 'Nid yw\'r maes :attribute yn bodoli yn :other.', - 'integer' => 'Rhaid i\'r :attribute bod yn cyfanrif.', - 'ip' => 'Rhaid i\'r :attribute bod yn cyfeiriad IP dilys.', - 'ipv4' => 'Rhaid i\'r :attribute bod yn cyfeiriad IPv4 dilys.', - 'ipv6' => 'Rhaid i\'r :attribute bod yn cyfeiriad IPv6 dilys.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Rhaid i\'r :attribute bod yn llinyn JSON dilys.', - 'max' => [ - 'numeric' => 'Ni ellir :attribute bod yn fwy na :max.', - 'file' => 'Ni ellir :attribute bod yn fwy na :max kilobytes.', - 'string' => 'Ni ellir :attribute bod yn fwy na :max chaaracters.', - 'array' => 'Ni ellir :attribute cael mwy na :max o eitemau.', + 'in' => 'Mae\'r :attribute a dewisir yn annilys.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Rhaid i\'r :attribute bod yn ffeil o\'r math :values.', - 'mimetypes' => 'Rhaid i\'r :attribute bod yn ffeil o\'r math: :values.', - 'min' => [ - 'numeric' => 'Rhaid i\'r :attribute bod o leiaf :min.', - 'file' => 'Rhaid i\'r :attribute bod o leiaf :min kilobytes.', - 'string' => 'Rhaid i\'r :attribute bod o leiaf :min characters.', - 'array' => 'Rhaid i\'r :attribute cael o leiaf :min o eitemau.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Mae\'r :attribute a dewisir yn annilys.', - 'numeric' => 'Rhaid i\'r :attribute bod yn rhif.', - 'present' => 'Rhaid i\'r maes :attribute bod yn presennol.', - 'valid_regex' => 'Nid yw hyn yn Regex dilys. ', - 'regex' => 'Mae\'r fformat :attribute yn annilys.', - 'required' => 'Mae angen llenwi\'r maes :attribute.', - 'required_if' => 'Mae angen y maes :attribute pan :other yw :value.', - 'required_unless' => 'Mae angen y maes :attribute pan :other yn :values.', - 'required_with' => 'Mae angen y maes :attribute pan mae :values yn bresennol.', - 'required_with_all' => 'Mae angen y maes :attribute pan mae :values yn bresennol.', - 'required_without' => 'Mae angen y maes :attribute os dydi\'r :values ddim yn bresennol.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Mae\'r :attribute a dewisir yn annilys.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Rhaid i\'r maes :attribute bod yn presennol.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Mae angen llenwi\'r maes :attribute.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Mae angen y maes :attribute pan :other yw :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Mae angen y maes :attribute pan :other yn :values.', + 'required_with' => 'Mae angen y maes :attribute pan mae :values yn bresennol.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Mae angen y maes :attribute os dydi\'r :values ddim yn bresennol.', 'required_without_all' => 'Mae angen y maes :attribute os dydi\'r un o :values yn bresennol.', - 'same' => 'Rhaid i :attribute a :other cydfynd.', - 'size' => [ - 'numeric' => 'Rhaid i\'r :attribute bod :size.', - 'file' => 'Rhaid i\'r :attribute bod o leiaf :size kilobytes.', - 'string' => 'Rhaid i\'r :attribute bod o leiaf :size characters.', - 'array' => 'Rhaid ir :attribute cynnwys :size eitemau.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Rhaid i\'r :attribute bod yn string.', - 'timezone' => 'Rhaid i\'r :attribute bod yn barth dilys.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Mae\'r :attribute wedi cymeryd yn barod.', - 'uploaded' => 'Mae\'r :attribute wedi fethu uwchlwytho.', - 'url' => 'Mae fformat :attribute yn annilys.', 'unique_undeleted' => 'Rhaid i\'r :attribute bod yn unigryw.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Mae\'r :attribute wedi cymeryd yn barod.', + 'uploaded' => 'Mae\'r :attribute wedi fethu uwchlwytho.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/da-DK/account/general.php b/resources/lang/da-DK/account/general.php index 3f66906786..13fe5b572c 100644 --- a/resources/lang/da-DK/account/general.php +++ b/resources/lang/da-DK/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personlige API-nøgler', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Din basisadressen til API\'en er:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API-nøgler er indstillet til at udløbe efter:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/da-DK/admin/accessories/message.php b/resources/lang/da-DK/admin/accessories/message.php index 0f8363e25b..394d705325 100644 --- a/resources/lang/da-DK/admin/accessories/message.php +++ b/resources/lang/da-DK/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Tilbehør blev ikke tjekket ud, prøv igen', 'success' => 'Tilbehør er tjekket ud.', 'unavailable' => 'Tilbehør er ikke tilgængeligt til kassen. Tjek antal tilgængelige', - 'user_does_not_exist' => 'Den bruger er ikke gyldig. Prøv igen.' + 'user_does_not_exist' => 'Den bruger er ikke gyldig. Prøv igen.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/da-DK/admin/consumables/general.php b/resources/lang/da-DK/admin/consumables/general.php index 4363e9fa4e..cc80a5e5f5 100644 --- a/resources/lang/da-DK/admin/consumables/general.php +++ b/resources/lang/da-DK/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Resterende', 'total' => 'Total', 'update' => 'Opdater forbrugsstoffer', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/da-DK/admin/consumables/message.php b/resources/lang/da-DK/admin/consumables/message.php index 25c33561b7..3ccd3b6070 100644 --- a/resources/lang/da-DK/admin/consumables/message.php +++ b/resources/lang/da-DK/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Forbrugsstoffer findes ikke.', 'create' => array( diff --git a/resources/lang/da-DK/admin/custom_fields/message.php b/resources/lang/da-DK/admin/custom_fields/message.php index d2d527d86a..26e28a573f 100644 --- a/resources/lang/da-DK/admin/custom_fields/message.php +++ b/resources/lang/da-DK/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Dette felt findes ikke.', 'already_added' => 'Feltet allerede tilføjet', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Feltet blev ikke oprettet, prøve igen.', diff --git a/resources/lang/da-DK/admin/hardware/message.php b/resources/lang/da-DK/admin/hardware/message.php index a32011e9c6..1dee491dcc 100644 --- a/resources/lang/da-DK/admin/hardware/message.php +++ b/resources/lang/da-DK/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Advarsel: Dette aktiv er blevet markeret som uudnytteligt. Hvis denne status er ændret, skal du opdatere aktivstatus.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset eksisterer ikke.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Nogle elementer importerede ikke korrekt.', 'errorDetail' => 'Følgende elementer blev ikke importeret på grund af fejl.', 'success' => 'Din fil er blevet importeret', diff --git a/resources/lang/da-DK/admin/licenses/general.php b/resources/lang/da-DK/admin/licenses/general.php index 038e2fb8bb..29594da38f 100644 --- a/resources/lang/da-DK/admin/licenses/general.php +++ b/resources/lang/da-DK/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Licens Info', 'license_seats' => 'Licenssæder', 'seat' => 'Sæde', + 'seat_count' => 'Seat :count', 'seats' => 'Sæder', 'software_licenses' => 'Softwarelicenser', 'user' => 'Bruger', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Tjek Alle Pladser Ind', - 'modal' => 'Dette vil handle checkin et sæde. - Denne handling vil tjekke alle :checkedout_seats_count sæder for denne licens.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Checkin ALLE pladser til denne licens fra både brugere og aktiver', 'disabled_tooltip' => 'Dette er deaktiveret, fordi der ikke er nogen pladser i øjeblikket tjekket ud', 'disabled_tooltip_reassignable' => 'Dette er deaktiveret fordi licensen ikke kan gentildeles', 'success' => 'Licensen blev tjekket ind! - Alle licenser blev tjekket ind!', - 'log_msg' => 'Checket ind via bulk licens checkout i licens GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/da-DK/admin/licenses/message.php b/resources/lang/da-DK/admin/licenses/message.php index 58ee9cd683..fa809997fb 100644 --- a/resources/lang/da-DK/admin/licenses/message.php +++ b/resources/lang/da-DK/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Der var et problem med at tjekke licensen. Prøv igen.', 'success' => 'Licensen blev tjekket ud med succes', 'not_enough_seats' => 'Ikke nok licenser til rådighed til kassen', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/da-DK/admin/models/message.php b/resources/lang/da-DK/admin/models/message.php index 9739e353ad..657436d58e 100644 --- a/resources/lang/da-DK/admin/models/message.php +++ b/resources/lang/da-DK/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ADVARSEL! Aktivmodellen for dette element er ugyldig eller mangler!', 'no_association_fix' => 'Dette vil ødelægge ting på underlige og forfærdelige måder. Rediger dette aktiv nu for at tildele det en model.', 'assoc_users' => 'Denne model er knyttet til en eller flere aktiver og ikke kan slettes. Slet venligst aktiver, og prøv derefter at slette igen. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Modellen blev ikke oprettet, prøve igen.', diff --git a/resources/lang/da-DK/admin/settings/general.php b/resources/lang/da-DK/admin/settings/general.php index 8cfedcb82b..6f6c2faf92 100644 --- a/resources/lang/da-DK/admin/settings/general.php +++ b/resources/lang/da-DK/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Dette tester kun om LDAP kan synkronisere korrekt. Hvis din LDAP authentisering ikke er korrekt, er det usikkert om brugere kan logge ind. DU SKAL FØRST OPDATERE OG GEMME DINE LDAP INDSTILLINGER.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP-server', - 'ldap_server_help' => 'Dette skal starte med ldap: // (for ukrypteret eller TLS) eller ldaps: // (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validering af LDAP SSL-certifikat', 'ldap_server_cert_ignore' => 'Tillad ugyldigt SSL-certifikat', 'ldap_server_cert_help' => 'Marker dette afkrydsningsfelt, hvis du bruger et selvtegnet SSL cert og vil gerne acceptere et ugyldigt SSL-certifikat.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synkronisering', 'license' => 'Software licens', - 'load_remote' => 'Brug Gravatar', - 'load_remote_help_text' => 'Afmarkér dette felt, hvis din installation ikke kan indlæse scripts fra det eksterne internet. Dette vil forhindre Snipe-IT i at prøve at indlæse billeder fra Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Log Ind Forsøg', 'login_attempt' => 'Log Ind Forsøg', 'login_ip' => 'Ip Adresse', @@ -150,7 +150,7 @@ return [ 'optional' => 'valgfri', 'per_page' => 'Resultater pr. Side', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'Php System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/da-DK/button.php b/resources/lang/da-DK/button.php index 92dc920c36..4af3d6f329 100644 --- a/resources/lang/da-DK/button.php +++ b/resources/lang/da-DK/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Tjek alt ind og slet bruger', 'delete' => 'Slet', 'edit' => 'Rediger', + 'clone' => 'Clone', 'restore' => 'Gendan', 'remove' => 'Fjern', 'request' => 'Anmodning', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Tilføj vedligehold', 'append' => 'Tilføj', 'new' => 'Ny', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/da-DK/general.php b/resources/lang/da-DK/general.php index 4d65bc58ed..e3abae5fc6 100644 --- a/resources/lang/da-DK/general.php +++ b/resources/lang/da-DK/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Licenssæde:count Licenssæder', 'consumables' => ':count Forbrugsparti:count Forbrugsvarer', 'components' => ':count Komponent:count Komponenter', - ] + ], + 'more_info' => 'Mere Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Udløber', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/da-DK/mail.php b/resources/lang/da-DK/mail.php index 7fe1a3bc7a..f6883c0db9 100644 --- a/resources/lang/da-DK/mail.php +++ b/resources/lang/da-DK/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Jeg har læst og accepterer vilkårene for brug og har modtaget denne vare.', 'inventory_report' => 'Lagerrapport', 'item' => 'Vare:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Der er :count licens(er) der udløber indenfor den/de næste :threshold dag(e).', 'link_to_update_password' => 'Venligst klik på følgende link for at opdatere din: webadgangskode:', 'login' => 'Log på:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Der er :count asset, som skal tilses inden :threshold dage. |Der er :count assets, som skal tilses inden :threshold dage.', 'user' => 'Bruger', 'username' => 'Brugernavn', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Velkommen :navn', 'welcome_to' => 'Velkommen til :web!', 'your_assets' => 'Se dine assets', 'your_credentials' => 'Dine Snipe-IT Legitimationsoplysninger', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/da-DK/validation.php b/resources/lang/da-DK/validation.php index f1b5a5cf99..da707899a5 100644 --- a/resources/lang/da-DK/validation.php +++ b/resources/lang/da-DK/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute skal være accepteret.', - 'active_url' => ':attribute er ikke en gyldig URL.', - 'after' => ':attribute skal være en dato efter :date.', - 'after_or_equal' => 'Attributten skal være en dato efter eller lig med: dato.', - 'alpha' => ':attribute må kun indeholde bogstaver.', - 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal eller bindestreger.', - 'alpha_num' => ':attribute må kun indeholde bogstaver eller tal.', - 'array' => 'Attributten skal være en matrix.', - 'before' => ':attribute skal være en dato før :date.', - 'before_or_equal' => 'Attributten skal være en dato før eller lig med: dato.', - 'between' => [ - 'numeric' => ':attribute skal være imellem :min - :max.', - 'file' => ':attribute skal være imellem :min - :max kilobytes.', - 'string' => ':attribute skal være imellem :min - :max tegn.', - 'array' => 'Attributten skal have mellem: min og: maks. Emner.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Attributfeltet skal være sandt eller falsk.', - 'confirmed' => 'Attributbevisningen stemmer ikke overens.', - 'date' => ':attribute er ikke en gyldig dato.', - 'date_format' => ':attribute svarer ikke til formatet :format.', - 'different' => ':attribute og :other skal være forskellige.', - 'digits' => ':attribute skal være :digits cifre.', - 'digits_between' => ':attribute skal være imellem :min og :max cifre.', - 'dimensions' => 'Attributten har ugyldige billeddimensioner.', - 'distinct' => 'Attributfeltet har en duplikatværdi.', - 'email' => ':attribute formatet er ugylidgt.', - 'exists' => 'Den valgte :attribute er ugyldig.', - 'file' => 'Attributten skal være en fil.', - 'filled' => 'Attributfeltet skal have en værdi.', - 'image' => ':attribute skal være et billede.', + 'boolean' => 'Attributfeltet skal være sandt eller falsk.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Attributfeltet har en duplikatværdi.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Den valgte :attribute er ugyldig.', + 'exists' => 'Den valgte :attribute er ugyldig.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Attributfeltet skal have en værdi.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Værdien for :fieldname kan ikke være null.', - 'in' => 'Det valgte :attribute er ugyldigt.', - 'in_array' => 'Attributfeltet findes ikke i: andet.', - 'integer' => ':attribute skal være et heltal.', - 'ip' => ':attribute skal være en gyldig IP adresse.', - 'ipv4' => 'Attributten skal være en gyldig IPv4-adresse.', - 'ipv6' => 'Attributten skal være en gyldig IPv6-adresse.', - 'is_unique_department' => ':attribute skal være unik for denne virksomhedsplacering', - 'json' => 'Attributten skal være en gyldig JSON-streng.', - 'max' => [ - 'numeric' => ':attribute må ikke overstige :max.', - 'file' => ':attribute må ikke overstige :max. kilobytes.', - 'string' => ':attribute må ikke overstige :max. tegn.', - 'array' => 'Attributten må ikke have mere end: maks. Emner.', + 'in' => 'Det valgte :attribute er ugyldigt.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute skal være en fil af typen: :values.', - 'mimetypes' => 'Attributten skal være en fil af typen:: værdier.', - 'min' => [ - 'numeric' => ':attribute skal mindst være :min.', - 'file' => ':attribute skal mindst være :min kilobytes.', - 'string' => ':attribute skal mindst være :min tegn.', - 'array' => 'Attributten skal have mindst: min elementer.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute skal starte med en af følgende: :values', - 'ends_with' => 'Attributten skal slutte med en af følgende: :values.', - - 'not_in' => 'Den valgte :attribute er ugyldig.', - 'numeric' => ':attribute skal være et tal.', - 'present' => 'Attributfeltet skal være til stede.', - 'valid_regex' => 'Det er ikke et validt regex. ', - 'regex' => ':attribute formatet er ugyldigt.', - 'required' => ':attribute feltet er krævet.', - 'required_if' => ':attribute feltet er krævet når :other er :value.', - 'required_unless' => 'Attributfeltet er påkrævet, medmindre: andet er i: værdier.', - 'required_with' => ':attribute er krævet når :values forekommer.', - 'required_with_all' => 'Attributfeltet er påkrævet, når: værdier er til stede.', - 'required_without' => ':attribute er krævet når :values ikke forekommer.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Den valgte :attribute er ugyldig.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Attributfeltet skal være til stede.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute feltet er krævet.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute feltet er krævet når :other er :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Attributfeltet er påkrævet, medmindre: andet er i: værdier.', + 'required_with' => ':attribute er krævet når :values forekommer.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute er krævet når :values ikke forekommer.', 'required_without_all' => 'Attributfeltet er påkrævet, når ingen af: værdier er til stede.', - 'same' => ':attribute og :other skal være ens.', - 'size' => [ - 'numeric' => ':attribute skal være :size.', - 'file' => ':attribute skal være :size kilobytes.', - 'string' => ':attribute skal være :size tegn.', - 'array' => 'Attributten skal indeholde: størrelseselementer.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Attributten skal være en streng.', - 'timezone' => 'Attributten skal være en gyldig zone.', 'two_column_unique_undeleted' => 'Attributten skal være unik på tværs af :table1 og: table2. ', - 'unique' => ':attribute er allerede taget.', - 'uploaded' => 'Attributtet kunne ikke uploades.', - 'url' => ':attribute formatet er ugyldigt.', 'unique_undeleted' => ':attribute skal være unik.', 'non_circular' => ':attribute må ikke oprette en cirkulær reference.', 'not_array' => ':attribute kan ikke være et array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Adgangskoden skal indeholde mindst ét tal.', 'case_diff' => 'Adgangskoden skal bruge både store og små bogstaver.', 'symbols' => 'Adgangskoden skal indeholde specialtegn.', - 'gte' => [ - 'numeric' => 'Værdien må ikke være negativ' - ], - 'checkboxes' => ':attribute indeholder ugyldige indstillinger.', - 'radio_buttons' => ':attribute er ugyldig.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute er allerede taget.', + 'uploaded' => 'Attributtet kunne ikke uploades.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute skal være en gyldig dato i YYYY-MM-DD format', 'last_audit_date.date_format' => ':attribute skal være en gyldig dato i YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => ':attribute skal være en gyldig dato i YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute skal være en gyldig dato i YYYY-MM-DD format', 'start_date.date_format' => ':attribute skal være en gyldig dato i YYYY-MM-DD format', 'end_date.date_format' => ':attribute skal være en gyldig dato i YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute indeholder ugyldige indstillinger.', + 'radio_buttons' => ':attribute er ugyldig.', + 'invalid_value_in_field' => 'Ugyldig værdi inkluderet i dette felt', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Ugyldig værdi inkluderet i dette felt', + + 'generic' => [ + 'invalid_value_in_field' => 'Ugyldig værdi inkluderet i dette felt', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/de-DE/account/general.php b/resources/lang/de-DE/account/general.php index d533326d18..e0e64536f8 100644 --- a/resources/lang/de-DE/account/general.php +++ b/resources/lang/de-DE/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Persönliche API-Schlüssel', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'personal_access_token' => 'Persönlicher Zugangs-Token', + 'personal_api_keys_success' => 'Persönlicher API-Schlüssel :key erfolgreich erstellt', + 'here_is_api_key' => 'Hier ist Ihr neuer persönlicher Zugangs-Token. Dieser wird nur ein einziges Mal angezeigt, verlieren Sie ihn nicht! Sie können nun diesen Token verwenden, um API-Anfragen zu erstellen.', + 'api_key_warning' => 'Wenn Sie ein API-Token generieren, stellen Sie sicher, dass Sie diesen sofort kopieren, da er danach nicht mehr für Sie sichtbar sein wird.', 'api_base_url' => 'Ihre API Basis-URL befindet sich unter:', 'api_base_url_endpoint' => '/<Endpunkt>', 'api_token_expiration_time' => 'API-Token sollen ablaufen in:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'api_reference' => 'Bitte lesen Sie die API Dokumentation um Informationen über die verfügbaren API-Endpunkte zu erhalten.', 'profile_updated' => 'Konto erfolgreich aktualisiert', + 'no_tokens' => 'Sie haben noch keinen persönlichen Zugangs-Token erstellt.', ); diff --git a/resources/lang/de-DE/admin/accessories/message.php b/resources/lang/de-DE/admin/accessories/message.php index a78440ddde..53d4c3e944 100644 --- a/resources/lang/de-DE/admin/accessories/message.php +++ b/resources/lang/de-DE/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Zubehör konnte nicht herausgegeben werden. Bitte versuchen Sie es erneut', 'success' => 'Zubehör erfolgreich herausgegeben.', 'unavailable' => 'Zubehör ist nicht verfügbar, um herausgegeben zu werden. Prüfen Sie die verfügbare Menge', - 'user_does_not_exist' => 'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.' + 'user_does_not_exist' => 'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.', + 'checkout_qty' => array( + 'lte' => 'Derzeit ist nur ein Zubehör dieses Typs verfügbar, und Sie versuchsen :checkout_qty auszuprobieren. Bitte passen Sie die Herausgabe-Menge oder den Gesamtbestand des Zubehörs an und versuchen Sie es erneut. Es gibt :number_currently_remaining insgesamt verfügbare Zubehör, und Sie versuchen, :checkout_qty herauszugeben. Bitte passen Sie die Herausgabe-Menge oder den Gesamtbestand des Zubehörs an und versuchen Sie es erneut.', + ), + ), 'checkin' => array( diff --git a/resources/lang/de-DE/admin/consumables/general.php b/resources/lang/de-DE/admin/consumables/general.php index 5e13c1c97c..8e40b422f7 100644 --- a/resources/lang/de-DE/admin/consumables/general.php +++ b/resources/lang/de-DE/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Verbleibend', 'total' => 'Gesamt', 'update' => 'Verbrauchsmaterial bearbeiten', + 'inventory_warning' => 'Der Bestand dieses Verbrauchsmaterials liegt unter der Mindestmenge von :min_count', ); diff --git a/resources/lang/de-DE/admin/consumables/message.php b/resources/lang/de-DE/admin/consumables/message.php index 2e3dc7540e..5ea1bc6a74 100644 --- a/resources/lang/de-DE/admin/consumables/message.php +++ b/resources/lang/de-DE/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'Diese Kategorie muss eine Kategorie vom Typ Verbrauchsmaterialien sein.', 'does_not_exist' => 'Verbrauchsmaterial existiert nicht.', 'create' => array( diff --git a/resources/lang/de-DE/admin/custom_fields/message.php b/resources/lang/de-DE/admin/custom_fields/message.php index d6436bd897..5a97646a80 100644 --- a/resources/lang/de-DE/admin/custom_fields/message.php +++ b/resources/lang/de-DE/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Dieses Feld existiert nicht.', 'already_added' => 'Feld wurde bereits hinzugefügt', + 'none_selected' => 'Kein Feld ausgewählt', 'create' => array( 'error' => 'Feld wurde nicht erstellt. Bitte versuchen Sie es erneut.', diff --git a/resources/lang/de-DE/admin/hardware/form.php b/resources/lang/de-DE/admin/hardware/form.php index 90548cc13b..64f1f8547f 100644 --- a/resources/lang/de-DE/admin/hardware/form.php +++ b/resources/lang/de-DE/admin/hardware/form.php @@ -39,8 +39,8 @@ return [ 'order' => 'Auftragsnummer', 'qr' => 'QR-Code', 'requestable' => 'Benutzer dürfen dieses Asset anfordern', - 'redirect_to_all' => 'Return to all :type', - 'redirect_to_type' => 'Go to :type', + 'redirect_to_all' => 'Zurück zu allen :type', + 'redirect_to_type' => 'Zu :type gehen', 'redirect_to_checked_out_to' => 'Go to Checked Out to', 'select_statustype' => 'Status Typ auswählen', 'serial' => 'Seriennummer', diff --git a/resources/lang/de-DE/admin/hardware/general.php b/resources/lang/de-DE/admin/hardware/general.php index be674aca13..9d23a29247 100644 --- a/resources/lang/de-DE/admin/hardware/general.php +++ b/resources/lang/de-DE/admin/hardware/general.php @@ -15,8 +15,8 @@ return [ 'delete_confirm' => 'Sind Sie sich sicher, dass Sie dieses Asset löschen möchten?', 'edit' => 'Asset bearbeiten', 'model_deleted' => 'Dieses Modell für Assets wurde gelöscht. Sie müssen das Modell wiederherstellen, bevor Sie das Asset wiederherstellen können.', - 'model_invalid' => 'This model for this asset is invalid.', - 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', + 'model_invalid' => 'Dieses Modell für dieses Asset ist ungültig.', + 'model_invalid_fix' => 'Das Asset muss mithilfe eines gültigen Asset-Modells aktualisiert werden, bevor Sie versuchen, es ein- oder auszuchecken oder zu prüfen.', 'requestable' => 'Anforderbar', 'requested' => 'Angefordert', 'not_requestable' => 'Kann nicht angefordert werden', diff --git a/resources/lang/de-DE/admin/hardware/message.php b/resources/lang/de-DE/admin/hardware/message.php index 2ce1f69d6a..9b0658ad9f 100644 --- a/resources/lang/de-DE/admin/hardware/message.php +++ b/resources/lang/de-DE/admin/hardware/message.php @@ -2,14 +2,13 @@ return [ - 'undeployable' => 'Achtung:Dieses Asset wurde kürzlich als nicht verteilbar markiert. - Falls sich dieser Status verändert hat, aktualisieren Sie bitte den Asset Status.', + 'undeployable' => 'Warnung: Dieses Asset wurde als nicht zur Herausgabe bereit markiert. Falls sich dieser Status geändert hat, aktualisieren Sie bitte den Asset Status.', 'does_not_exist' => 'Asset existiert nicht.', 'does_not_exist_var'=> 'Asset mit Tag :asset_tag nicht gefunden.', 'no_tag' => 'Kein Asset Tag angegeben.', 'does_not_exist_or_not_requestable' => 'Dieses Asset existiert nicht oder kann nicht angefordert werden.', 'assoc_users' => 'Dieses Asset ist im Moment an einen Benutzer herausgegeben und kann nicht entfernt werden. Bitte buchen sie das Asset wieder ein und versuchen Sie dann erneut es zu entfernen. ', - 'warning_audit_date_mismatch' => 'This asset\'s next audit date (:next_audit_date) is before the last audit date (:last_audit_date). Please update the next audit date.', + 'warning_audit_date_mismatch' => 'Das nächste Prüfdatum dieses Assets (:next_audit_date) liegt vor dem letzten Prüfungsdatum (:last_audit_date). Bitte aktualisieren Sie daher das nächste Prüfungsdatum.', 'create' => [ 'error' => 'Asset wurde nicht erstellt. Bitte versuchen Sie es erneut. :(', @@ -34,7 +33,7 @@ return [ ], 'audit' => [ - 'error' => 'Asset audit unsuccessful: :error ', + 'error' => 'Asset Audit fehlgeschlagen: :error ', 'success' => 'Asset-Audit erfolgreich protokolliert.', ], @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Prozess Import', 'error' => 'Einige Elemente wurden nicht korrekt importiert.', 'errorDetail' => 'Die folgenden Elemente wurden aufgrund von Fehlern nicht importiert.', 'success' => 'Ihre Datei wurde importiert', diff --git a/resources/lang/de-DE/admin/licenses/general.php b/resources/lang/de-DE/admin/licenses/general.php index b66462fd6e..f2d6e9bf9a 100644 --- a/resources/lang/de-DE/admin/licenses/general.php +++ b/resources/lang/de-DE/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Lizenzinfo', 'license_seats' => 'Lizenzaktivierungen', 'seat' => 'Lizenz', + 'seat_count' => 'Platz :count', 'seats' => 'Verfügbare Lizenzen', 'software_licenses' => 'Software Lizenzen', 'user' => 'Nutzer', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Alle Plätze zurücknehmen', - 'modal' => 'Diese Aktion wird einen Sitz zurücknehmen. | Diese Aktion wird alle :checkedout_seats_count Sitze für diese Lizenz zurücknehmen.', + 'modal' => 'Diese Aktion wird einen Platz zurücknehmen. | Diese Aktion wird alle :checkedout_seats_count Sitze für diese Lizenz zurücknehmen.', 'enabled_tooltip' => 'ALLE Plätze für diese Lizenz zurücknehmen, sowohl von Benutzern als auch von Assets', 'disabled_tooltip' => 'Es ist deaktiviert, da derzeit keine Plätze zum herausgegeben verfügbar sind', 'disabled_tooltip_reassignable' => 'Dies ist deaktiviert, da die Lizenz nicht zuweisbar ist', 'success' => 'Lizenz erfolgreich zurückgenommen! | Alle Lizenzen wurden erfolgreich zurückgenommen!', - 'log_msg' => 'Zurückgenommen über Massen-Zurücknehmen in der Lizenzübersicht', + 'log_msg' => 'Zurückgenommen über Massen-Rücknahme in der Lizenzübersicht', ], 'checkout_all' => [ diff --git a/resources/lang/de-DE/admin/licenses/message.php b/resources/lang/de-DE/admin/licenses/message.php index 6b89054936..66e1b0d2ee 100644 --- a/resources/lang/de-DE/admin/licenses/message.php +++ b/resources/lang/de-DE/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Lizenz wurde nicht herausgegeben, bitte versuchen Sie es erneut.', 'success' => 'Lizenz wurde erfolgreich herausgegeben', 'not_enough_seats' => 'Nicht genügend Lizenz-Sitze zur Herausgabe verfügbar', + 'mismatch' => 'Der angegebene Lizenzplatz entspricht nicht der Lizenz', + 'unavailable' => 'Dieser Platz ist nicht zur Herausgabe verfügbar.', ), 'checkin' => array( diff --git a/resources/lang/de-DE/admin/locations/message.php b/resources/lang/de-DE/admin/locations/message.php index bdcfbfe06a..25de236c5b 100644 --- a/resources/lang/de-DE/admin/locations/message.php +++ b/resources/lang/de-DE/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Standort nicht verfügbar.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Dieser Standort kann derzeit nicht gelöscht werden, da er der Standort für mindestens ein Asset oder einen Benutzer ist, ihm Assets zugewiesen sind oder er der übergeordnete Standort eines anderen Standorts ist. Aktualisieren Sie Ihre Modelle, damit diese nicht mehr auf dieses Unternehmen verweisen, und versuchen Sie es erneut. ', 'assoc_assets' => 'Dieser Standort ist aktuell mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entfernen Sie die Standortzuweisung bei den jeweiligen Gegenständen und versuchen Sie es erneut diesen Standort zu entfernen. ', 'assoc_child_loc' => 'Dieser Ort ist aktuell mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte Orte aktualisieren, so dass dieser Standort nicht mehr verknüpft ist und erneut versuchen. ', 'assigned_assets' => 'Zugeordnete Assets', diff --git a/resources/lang/de-DE/admin/models/message.php b/resources/lang/de-DE/admin/models/message.php index e22d625cff..a99f9e7335 100644 --- a/resources/lang/de-DE/admin/models/message.php +++ b/resources/lang/de-DE/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNUNG! Das Asset Modell für dieses Element ist ungültig oder fehlt!', 'no_association_fix' => 'Dies wird Dinge auf seltsame und schreckliche Weise zerstören. Bearbeite dieses Asset jetzt, um ihm ein Modell zuzuordnen.', 'assoc_users' => 'Dieses Modell ist zurzeit mit einem oder mehreren Assets verknüpft und kann nicht gelöscht werden. Bitte lösche die Assets und versuche dann erneut das Modell zu löschen. ', - + 'invalid_category_type' => 'Diese Kategorie muss eine Asset-Kategorie sein.', 'create' => array( 'error' => 'Modell wurde nicht erstellt. Bitte versuch es noch einmal.', diff --git a/resources/lang/de-DE/admin/settings/general.php b/resources/lang/de-DE/admin/settings/general.php index 01e9cff568..0263ea5d8b 100644 --- a/resources/lang/de-DE/admin/settings/general.php +++ b/resources/lang/de-DE/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Dies testet nur, ob LDAP korrekt synchronisiert werden kann. Wenn Ihre LDAP-Authentifizierungsabfrage nicht korrekt ist, können sich Benutzer möglicherweise nicht anmelden. SIE MÜSSEN IHRE AKTUALISIERTEN LDAP-EINSTELLUNGEN ZUERST SPEICHERN.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP Server', - 'ldap_server_help' => 'Sollte mit ldap:// (für unencrypted oder TLS) oder ldaps:// (für SSL) starten', + 'ldap_server_help' => 'Dies sollte mit ldap:// (für unverschlüsselt) oder ldaps:// (für TLS oder SSL) beginnen', 'ldap_server_cert' => 'LDAP SSL Zertifikatsüberprüfung', 'ldap_server_cert_ignore' => 'Erlaube ungültige SSL Zertifikate', 'ldap_server_cert_help' => 'Wählen Sie diese Option, wenn Sie selbstsignierte SSL Zertifikate verwenden und diese gegebenenfalls ungültigen Zertifikate akzeptieren möchten.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'LDAP testen', 'ldap_test_sync' => 'LDAP-Synchronisierung testen', 'license' => 'Softwarelizenz', - 'load_remote' => 'Gravatar verwenden', - 'load_remote_help_text' => 'Deaktivieren Sie dieses Kästchen, wenn Ihre Installation keine Skripte aus dem externen Internet laden kann. Das verhindert, dass Snipe-IT versucht, Bilder von Gravatar zu laden.', + 'load_remote' => 'Externe Avatare laden', + 'load_remote_help_text' => 'Deaktivieren Sie dieses Kästchen, wenn Ihre Installation keine Skripte aus dem externen Internet laden kann. Das verhindert, dass Snipe-IT versucht, Bilder von Gravatar oder anderen externen Quellen zu laden.', 'login' => 'Anmeldeversuche', 'login_attempt' => 'Anmeldeversuch', 'login_ip' => 'IP-Adresse', @@ -290,15 +290,15 @@ return [ 'oauth_clients' => 'OAuth Clients', 'oauth' => 'OAuth', 'oauth_help' => 'OAuth Endpunkt Einstellungen', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', + 'oauth_no_clients' => 'Sie haben noch keine OAuth-Clients erstellt.', 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', - 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', + 'oauth_authorized_apps' => 'Autorisierte Anwendungen', + 'oauth_redirect_url' => 'Weiterleitungs-URL', + 'oauth_name_help' => ' Etwas, das Ihre Benutzer erkennen und dem sie vertrauen.', + 'oauth_scopes' => 'Bereiche', + 'oauth_callback_url' => 'Ihr App-Autorisierungs-Callback-URL.', + 'create_client' => 'Client erstellen', + 'no_scopes' => 'Keine Bereiche', 'asset_tag_title' => 'Asset Tag Einstellungen aktualisieren', 'barcode_title' => 'Barcode Einstellungen aktualisieren', 'barcodes' => 'Barcodes', @@ -373,7 +373,11 @@ return [ 'database_driver' => 'Datenbanktreiber', 'bs_table_storage' => 'Tabellen Speicher', 'timezone' => 'Zeitzone', - 'profile_edit' => 'Edit Profile', - 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'profile_edit' => 'Profil bearbeiten', + 'profile_edit_help' => 'Benutzern erlauben, ihre eigenen Profile zu bearbeiten.', + 'default_avatar' => 'Benutzerdefinierten Standard-Avatar hochladen', + 'default_avatar_help' => 'Dieses Bild wird als Profilbild angezeigt, wenn ein Benutzer kein Profilbild festgelegt hat.', + 'restore_default_avatar' => 'Ursprünglichen Standard-Avatar des Systems wiederherstellen', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/de-DE/admin/users/message.php b/resources/lang/de-DE/admin/users/message.php index db0e5cfcde..f83a34bd4d 100644 --- a/resources/lang/de-DE/admin/users/message.php +++ b/resources/lang/de-DE/admin/users/message.php @@ -37,16 +37,16 @@ return array( 'update' => 'Beim Aktualisieren des Benutzers ist ein Fehler aufgetreten. Bitte probieren Sie es noch einmal.', 'delete' => 'Beim Entfernen des Benutzers ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.', 'delete_has_assets' => 'Der Benutzer konnte nicht gelöscht werden, da ihm Gegenstände zugeordnet sind.', - 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', - 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', - 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', - 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', - 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', + 'delete_has_assets_var' => 'Diesem Benutzer ist noch ein Asset zugewiesen. Bitte checken Sie es zuerst ein.|Diesem Benutzer sind noch :count Assets zugewiesen. Bitte checken Sie zuerst seine Assets ein.', + 'delete_has_licenses_var' => 'Diesem Benutzer sind noch Lizenzplätze zugewiesen. Bitte checken Sie diese zuerst ein.|Diesem Benutzer sind noch :count Lizenzplätze zugewiesen. Bitte checken Sie diese zuerst ein.', + 'delete_has_accessories_var' => 'Diesem Benutzer ist noch ein Zubehör zugewiesen. Bitte checken Sie es zuerst ein.|Diesem Benutzer sind noch :count Zubehöre zugewiesen. Bitte checken Sie zuerst deren Assets ein.', + 'delete_has_locations_var' => 'Dieser Benutzer verwaltet noch einen anderen Standort. Bitte wählen Sie zuerst einen anderen Manager.|Dieser Benutzer verwaltet noch :count Standorte. Bitte wählen Sie zuerst einen anderen Manager.', + 'delete_has_users_var' => 'Dieser Benutzer verwaltet noch einen anderen Benutzer. Bitte wählen Sie zuerst einen anderen Manager für diesen Benutzer.|Dieser Benutzer verwaltet noch :count Benutzer. Bitte wählen Sie zuerst einen anderen Manager.', 'unsuspend' => 'Es gab ein Problem beim reaktivieren des Benutzers. Bitte versuche es erneut.', 'import' => 'Es gab ein Problem beim importieren der Benutzer. Bitte noch einmal versuchen.', 'asset_already_accepted' => 'Dieses Asset wurde bereits akzeptiert.', 'accept_or_decline' => 'Sie müssen diesen Gegenstand entweder annehmen oder ablehnen.', - 'cannot_delete_yourself' => 'We would feel really bad if you deleted yourself, please reconsider.', + 'cannot_delete_yourself' => 'Wir würden uns wirklich schlecht fühlen, wenn Sie sich selbst löschen würden. Überlegen Sie es sich bitte noch einmal.', 'incorrect_user_accepted' => 'Das Asset, welches Sie versuchen zu aktivieren, wurde nicht für Sie ausgebucht.', 'ldap_could_not_connect' => 'Konnte keine Verbindung zum LDAP Server herstellen. Bitte LDAP Einstellungen in der LDAP Konfigurationsdatei prüfen.
Fehler vom LDAP Server:', 'ldap_could_not_bind' => 'Konnte keine Verbindung zum LDAP Server herstellen. Bitte LDAP Einstellungen in der LDAP Konfigurationsdatei prüfen.
Fehler vom LDAP Server: ', diff --git a/resources/lang/de-DE/auth/message.php b/resources/lang/de-DE/auth/message.php index 90a8d7a541..5d29754ca1 100644 --- a/resources/lang/de-DE/auth/message.php +++ b/resources/lang/de-DE/auth/message.php @@ -14,8 +14,8 @@ return array( 'success' => 'Sie haben sich erfolgreich eingeloggt.', 'code_required' => 'Zwei-Faktor-Code ist erforderlich.', 'invalid_code' => 'Zwei-Faktor-Code ist ungültig.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Bitte geben Sie Ihren Zwei-Faktor-Authentifizierungscode ein.', + 'please_enroll' => 'Bitte registrieren Sie ein Gerät für die Zwei-Faktor-Authentifizierung.', ), 'signin' => array( diff --git a/resources/lang/de-DE/button.php b/resources/lang/de-DE/button.php index 023d34dc76..eab45acc91 100644 --- a/resources/lang/de-DE/button.php +++ b/resources/lang/de-DE/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Alle einchecken / Benutzer löschen', 'delete' => 'Löschen', 'edit' => 'Bearbeiten', + 'clone' => 'Duplizieren', 'restore' => 'Wiederherstellen', 'remove' => 'Entfernen', 'request' => 'Anfragen', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Füge Wartung hinzu', 'append' => 'Anhängen', 'new' => 'Neu', + 'var' => [ + 'clone' => ':item_type duplizieren', + 'edit' => ':item_type bearbeiten', + 'delete' => ':item_type löschen', + 'restore' => ':item_type löschen', + 'create' => 'Neue/s :item_type erstellen', + 'checkout' => ':item_type auschecken', + 'checkin' => ':item_type einchecken', + ] ]; diff --git a/resources/lang/de-DE/general.php b/resources/lang/de-DE/general.php index f228b1b4dc..579b8529af 100644 --- a/resources/lang/de-DE/general.php +++ b/resources/lang/de-DE/general.php @@ -11,9 +11,9 @@ return [ 'activity_report' => 'Aktivitätsbericht', 'address' => 'Adresse', 'admin' => 'Administrator', - 'admin_tooltip' => 'This user has admin privileges', + 'admin_tooltip' => 'Dieser Benutzer verfügt über Administratorrechte', 'superuser' => 'Superuser', - 'superuser_tooltip' => 'This user has superuser privileges', + 'superuser_tooltip' => 'Dieser Benutzer verfügt über Superuserrechte', 'administrator' => 'Administrator', 'add_seats' => 'Plätze hinzugefügt', 'age' => "Alter", @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Nachname_Initiale des Vornamens (mustermann_e@beispiel.de)', 'firstinitial.lastname' => 'Initiale des Vornamens.Nachname (e.mustermann@beispiel.de)', 'firstnamelastinitial' => 'Vorname und Initiale des Nachnamen (erika_m@beispiel.de)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Nachname Vorname (mustermann.erika@example.com)', 'first_name' => 'Vorname', 'first_name_format' => 'Vorname (jane@example.com)', 'files' => 'Dateien', @@ -158,7 +158,7 @@ return [ 'image_upload' => 'Bild hochladen', 'filetypes_accepted_help' => 'Akzeptierter Dateityp ist :types. Maximal zulässige Hochlade-Größe ist :size.|Akzeptierte Dateitypen sind :types. Maximal erlaubte Hochlade-Größe ist :size.', 'filetypes_size_help' => 'Maximal erlaubte Hochlade-Größe ist :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Akzeptierte Dateitypen sind jpg, webp, png, gif, svg, und avif. Die maximal zulässige Upload-Größe beträgt :size.', 'unaccepted_image_type' => 'Diese Bilddatei ist nicht lesbar. Akzeptierte Dateitypen sind jpg, webp, png, gif und svg. Der MIME-Type dieser Datei ist: :mimetype.', 'import' => 'Importieren', 'import_this_file' => 'Felder zuordnen und diese Datei bearbeiten', @@ -206,8 +206,8 @@ return [ 'new_password' => 'Neues Passwort', 'next' => 'Nächste', 'next_audit_date' => 'Nächstes Prüfungsdatum', - 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', - 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', + 'next_audit_date_help' => 'Wenn Sie in Ihrer Organisation Prüfungen verwenden, wird dies normalerweise automatisch basierend auf dem letzten Prüfungsdatum und der Prüfungshäufigkeit des Assets berechnet (in Admin-Einstellungen > Warnungen) und Sie können dieses Feld leer lassen. Sie können dieses Datum auch hier bei Bedarf manuell festlegen, es muss jedoch nach dem letzten Prüfungsdatum liegen. ', + 'audit_images_help' => 'Sie können Prüfbilder in der Asset-Historie finden.', 'no_email' => 'Es ist keine E-Mail-Adresse mit diesem Benutzer verknüpft', 'last_audit' => 'Letzte Prüfung', 'new' => 'Neu!', @@ -240,7 +240,7 @@ return [ 'restored' => 'wiederhergestellt', 'restore' => 'Wiederherstellen', 'requestable_models' => 'Angeforderte Modelle', - 'requestable_items' => 'Requestable Items', + 'requestable_items' => 'Anforderbare Gegenstände', 'requested' => 'Angefordert', 'requested_date' => 'Angefordertes Datum', 'requested_assets' => 'Angeforderte Assets', @@ -304,7 +304,7 @@ return [ 'user' => 'Benutzer', 'accepted' => 'angenommen', 'declined' => 'abgelehnt', - 'declined_note' => 'Declined Notes', + 'declined_note' => 'Abgelehnte Notizen', 'unassigned' => 'Nicht zugewiesen', 'unaccepted_asset_report' => 'Nicht akzeptierte Assets', 'users' => 'Benutzer', @@ -509,7 +509,7 @@ return [ 'import_note' => 'Mit CSV-Importer importiert', ], 'remove_customfield_association' => 'Dieses Feld aus dem Feldsatz entfernen. Das benutzerdefinierte Feld wird nicht gelöscht, nur die Verbindung des Feldes mit diesem Feldsatz.', - 'checked_out_to_fields' => 'Checked Out To Fields', + 'checked_out_to_fields' => 'Folgenden Feldern zugewiesen', 'percent_complete' => '% vollständig', 'uploading' => 'Wird hochgeladen ... ', 'upload_error' => 'Fehler beim Hochladen der Datei. Bitte überprüfen Sie, dass keine leeren Zeilen vorhanden sind und keine Spaltennamen dupliziert werden.', @@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => 'Zugriff verweigert. Die Benutzerinformationen für Superadministratoren in der Demoinstallation können nicht aktualisiert werden.', 'pwd_reset_not_sent' => 'Benutzer ist nicht aktiviert, ist mit LDAP synchronisiert oder hat keine E-Mail-Adresse', 'error_sending_email' => 'Fehler beim Senden der E-Mail', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Trauriger Panda. Sie sind nicht berechtigt, das zu tun. Kehren Sie zum Dashboard zurück oder wenden Sie sich an Ihren Administrator.', 'bulk' => [ 'delete' => [ @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Lizenzplatz|:count Lizenzplätze', 'consumables' => ':count Verbrauchsmaterial|:count Verbrauchsmaterialien', 'components' => ':count Komponente|:count Komponenten', - ] + ], + 'more_info' => 'Mehr Informationen', + 'quickscan_bulk_help' => 'Wenn Sie dieses Kontrollkästchen aktivieren, wird der Asset-Datensatz so bearbeitet, dass dieser neue Standort angezeigt wird. Wenn Sie es nicht aktivieren, wird der Standort einfach im Prüfprotokoll vermerkt. Beachten Sie, dass sich der Standort der Person, des Assets oder des Standorts, an den es ausgecheckt wurde, nicht ändert, wenn dieses Asset ausgecheckt wird.', + 'whoops' => 'Hoppla!', + 'something_went_wrong' => 'Bei Ihrer Anfrage ist ein Fehler aufgetreten.', + 'close' => 'Schließen', + 'expires' => 'Ablaufdatum', + 'map_fields'=> ':item_type Feld zuordnen', + 'remaining_var' => ':count verbleibend', ]; diff --git a/resources/lang/de-DE/mail.php b/resources/lang/de-DE/mail.php index 5f088745bb..ab6a55a32f 100644 --- a/resources/lang/de-DE/mail.php +++ b/resources/lang/de-DE/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ich habe die Nutzungsbedingungen gelesen und stimme diesen zu, und ich habe diesen Gegenstand erhalten.', 'inventory_report' => 'Bestandsbericht', 'item' => 'Gegenstand:', + 'item_checked_reminder' => 'Dies ist eine Erinnerung daran, dass Sie derzeit :count Artikel ausgeliehen haben, die Sie weder angenommen noch abgelehnt haben. Klicken Sie bitte auf den untenstehenden Link, um diese entweder anzunehmen oder abzulehnen.', 'license_expiring_alert' => 'Es gibt :count auslaufende Lizenz in den nächsten :threshold Tagen.|Es gibt :count auslaufende Lizenzen in den nächsten :threshold Tagen.', 'link_to_update_password' => 'Klicken Sie bitte auf den folgenden Link zum Aktualisieren Ihres :web Passworts:', 'login' => 'Benutzername:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Es ist :count Asset vorhanden, für das innerhalb von :threshold Tagen ein Audit durchzuführen ist. |Es gibt :count Assets, für die innerhalb von :threshold Tagen Audits durchzuführen sind.', 'user' => 'Benutzer', 'username' => 'Benutzername', + 'unaccepted_asset_reminder' => 'Sie haben nicht akzeptierte Assets.', 'welcome' => 'Wilkommen, :name', 'welcome_to' => 'Willkommen bei :web!', 'your_assets' => 'Ihre Assets anzeigen', 'your_credentials' => 'Ihre Snipe-IT Anmeldedaten', + 'mail_sent' => 'Mail erfolgreich gesendet!', ]; diff --git a/resources/lang/de-DE/validation.php b/resources/lang/de-DE/validation.php index 11c7a92347..b88ac5281d 100644 --- a/resources/lang/de-DE/validation.php +++ b/resources/lang/de-DE/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute muss akzeptiert werden.', - 'active_url' => ':attribute ist keine gültige URL.', - 'after' => ':attribute muss ein Datum nach dem :date sein.', - 'after_or_equal' => 'Das :attribute muss ein Datum nach oder gleich :date sein.', - 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen und Gedankenstrichen bestehen.', - 'alpha_num' => ':attribute darf nur aus Buchstaben und Zahlen bestehen.', - 'array' => 'Das Attribut muss ein Array sein.', - 'before' => ':attribute muss ein Datum vor dem :date sein.', - 'before_or_equal' => 'Das Attribut muss ein Datum vor oder gleich: date sein.', - 'between' => [ - 'numeric' => ':attribute muss zwischen :min und :max liegen.', - 'file' => ':attribute darf nur zwischen :min und :max kilobytes groß sein.', - 'string' => ':attribute muss mindestens :min und maximal :max Zeichen enthalten.', - 'array' => ':attribute muss mindestens :min und darf maximal :max Einträge haben.', + 'accepted' => 'Dieses :attribute Feld muss akzeptiert werden.', + 'accepted_if' => 'Dieses :attribute Feld muss akzeptiert werden wenn :other :value ist.', + 'active_url' => 'Dieses :attribute Feld muss eine gültige URL sein.', + 'after' => 'Das Feld :attribute muss ein Datum nach :date sein.', + 'after_or_equal' => 'Das Feld :attribute muss ein Datum nach oder gleich :date sein.', + 'alpha' => 'Das Feld :attribute darf nur Buchstaben enthalten.', + 'alpha_dash' => 'Das Feld :attribute darf nur Buchstaben, Zahlen, Binde- und Unterstriche enthalten.', + 'alpha_num' => 'Das Feld :attribute darf nur Buchstaben und Zahlen enthalten.', + 'array' => 'Das Feld :attribute muss ein Array sein.', + 'ascii' => 'Das Feld :attribute darf nur einbyteige alphanumerische Zeichen und Symbole enthalten.', + 'before' => 'Das Feld :attribute muss ein Datum vor dem :date sein.', + 'before_or_equal' => 'Das Feld :attribute muss ein Datum vor oder gleich dem :date sein.', + 'between' => [ + 'array' => 'Das Feld :attribute muss zwischen :min und :max Elemente enthalten.', + 'file' => 'Das Feld :attribute muss zwischen :min und :max Kilobyte liegen.', + 'numeric' => 'Das Feld :attribute muss zwischen :min und :max liegen.', + 'string' => 'Das Feld :attribute muss zwischen :min und :max Zeichen enthalten.', ], - 'boolean' => ':attribute muss wahr oder falsch sein.', - 'confirmed' => ':attribute Bestätigung stimmt nicht überein.', - 'date' => ':attribute ist kein gültiges Datum.', - 'date_format' => ':attribute passt nicht zur :format Formatierung.', - 'different' => ':attribute und :other müssen sich unterscheiden.', - 'digits' => ':attribute muss :digits Stellen haben.', - 'digits_between' => ':attribute soll mindestens :min und darf maximal :max Stellen haben.', - 'dimensions' => ':attribute hat ein ungültiges Bildformat.', - 'distinct' => 'Das Attributfeld hat einen doppelten Wert.', - 'email' => 'Das Format von :attribute ist ungültig.', - 'exists' => 'Das ausgewählte :attribute ist ungültig.', - 'file' => ':attribute muss eine Datei sein.', - 'filled' => 'Das :attribute Feld muss einen Wert haben.', - 'image' => ':attribute muss ein Bild sein.', + 'boolean' => 'Das Feld :attribute muss true oder false sein.', + 'can' => 'Das Feld :attribute enthält einen nicht autorisierten Wert.', + 'confirmed' => 'Die Bestätigung des Feldes :attribute stimmt nicht überein.', + 'contains' => 'Im Feld :attribute fehlt ein erforderlicher Wert.', + 'current_password' => 'Das Passwort ist ungültig.', + 'date' => 'Das Feld :attribute muss ein gültiges Datum enthalten.', + 'date_equals' => 'Das Feld :attribute muss ein Datum enthalten, das dem Wert :date entspricht.', + 'date_format' => 'Das Feld :attribute muss dem Format :format entsprechen.', + 'decimal' => 'Das Feld :attribute muss :decimal Dezimalstellen haben.', + 'declined' => 'Das Feld :attribute muss abgelehnt werden.', + 'declined_if' => 'Das Feld :attribute muss abgelehnt werden, wenn :other :value ist.', + 'different' => 'Die Felder :attribute und :other müssen unterschiedlich sein.', + 'digits' => 'Das Feld :attribute muss :digits Ziffern enthalten.', + 'digits_between' => 'Das Feld :attribute muss zwischen :min und :max Ziffern enthalten.', + 'dimensions' => 'Das Feld :attribute hat ungültige Bilddimensionen.', + 'distinct' => 'Das Attributfeld hat einen doppelten Wert.', + 'doesnt_end_with' => 'Das Feld :attribute darf nicht mit einem der folgenden Elemente enden: :values.', + 'doesnt_start_with' => 'Das Feld :attribute darf nicht mit einem der folgenden Elemente enden: :values.', + 'email' => 'Das Feld :attribute muss eine gültige E-Mail-Adresse enthalten.', + 'ends_with' => 'Das Feld :attribute muss mit einem der folgenden enden: :values.', + 'enum' => 'Auswahl :attribute ist ungültig.', + 'exists' => 'Das ausgewählte :attribute ist ungültig.', + 'extensions' => 'Das Feld :attribute muss eine der folgenden Erweiterungen haben: :values.', + 'file' => 'Das Feld :attribute muss eine Datei sein.', + 'filled' => 'Das :attribute Feld muss einen Wert haben.', + 'gt' => [ + 'array' => 'Das Feld :attribute muss mehr als :value Elemente haben.', + 'file' => 'Das Feld :attribute muss größer als :value Kilobyte sein.', + 'numeric' => 'Das Feld :attribute muss größer sein als :value.', + 'string' => 'Das Feld :attribute muss größer als :value Zeichen sein.', + ], + 'gte' => [ + 'array' => 'Das Feld :attribute muss :value Elemente oder mehr enthalten.', + 'file' => 'Das Feld :attribute muss größer oder gleich :value Kilobyte sein.', + 'numeric' => 'Das Feld :attribute muss größer oder gleich :value sein.', + 'string' => 'Das Feld :attribute muss größer oder gleich :value Zeichen sein.', + ], + 'hex_color' => 'Das Feld :attribute muss eine gültige hexadezimale Farbe sein.', + 'image' => 'Das Feld :attribute muss ein Bild sein.', 'import_field_empty' => ':fieldname darf nicht leer sein.', - 'in' => 'Auswahl :attribute ist ungültig.', - 'in_array' => 'Das Feld :attribute existiert nicht in :other.', - 'integer' => ':attribute muss eine ganze Zahl sein.', - 'ip' => ':attribute muss eine gültige IP Adresse sein.', - 'ipv4' => ':attribute muss eine gültige IPv4 Adresse sein.', - 'ipv6' => ':attribute muss eine gültige IPv6 Adresse sein.', - 'is_unique_department' => ':attribute muss einzigartig an diesem Standort sein', - 'json' => 'Das Attribut muss eine gültige JSON-Zeichenfolge sein.', - 'max' => [ - 'numeric' => ':attribute darf nicht größer als :max sein.', - 'file' => ':attribute darf nicht größer als :max Kilobyte sein.', - 'string' => ':attribute darf nicht mehr als :max Zeichen sein.', - 'array' => 'Das: -Attribut darf nicht mehr als: maximale Elemente haben.', + 'in' => 'Auswahl :attribute ist ungültig.', + 'in_array' => 'Das Feld :attribute muss in :other vorhanden sein.', + 'integer' => 'Das Feld :attribute muss ein Integer sein.', + 'ip' => 'Das Feld :attribute muss eine gültige IP-Adresse sein.', + 'ipv4' => 'Das Feld :attribute muss eine gültige IPv4-Adresse sein.', + 'ipv6' => 'Das Feld :attribute muss eine gültige IPv6-Adresse sein.', + 'json' => 'Das Feld :attribute muss eine gültige JSON-Zeichenfolge sein.', + 'list' => 'Das Feld :attribute muss eine Liste sein.', + 'lowercase' => 'Das Feld :attribute muss klein geschrieben sein.', + 'lt' => [ + 'array' => 'Das Feld :attribute muss weniger als :value Elemente haben.', + 'file' => 'Das Feld :attribute muss kleiner als :value Kilobyte sein.', + 'numeric' => 'Das Feld :attribute muss kleiner sein als :value.', + 'string' => 'Das Feld :attribut muss weniger als :value Zeichen enthalten.', ], - 'mimes' => ':attribute muss eine Datei des Typs :values sein.', - 'mimetypes' => ':attribute muss eine Datei vom Typ: :values sein.', - 'min' => [ - 'numeric' => ':attribute muss kleiner als :min sein.', - 'file' => ':attribute muss mindestens :min Kilobyte groß sein.', - 'string' => ':attribute benötigt mindestens :min Zeichen.', - 'array' => ':attribute muss mindestens :min Elemente enthalten.', + 'lte' => [ + 'array' => 'Das Feld :attribute darf nicht mehr als :value Elemente enthalten.', + 'file' => 'Das Feld :attribute muss kleiner oder gleich :value Kilobyte sein.', + 'numeric' => 'Das Feld :attribute muss kleiner oder gleich :value sein.', + 'string' => 'Das Feld :attribute muss kleiner oder gleich :value Zeichen sein.', ], - 'starts_with' => ':attribute muss mit einem der folgenden Werte beginnen: :values.', - 'ends_with' => ':attribute muss mit einem der folgenden Werte enden: :values.', - - 'not_in' => 'Auswahl :attribute ist ungültig.', - 'numeric' => ':attribute muss eine Zahl sein.', - 'present' => ':attribute muss vorhanden sein.', - 'valid_regex' => 'Dies ist kein gültiger Regex-Ausdruck. ', - 'regex' => ':attribute Format ungültig.', - 'required' => ':attribute Feld muss ausgefüllt sein.', - 'required_if' => ':attribute wird benötigt, wenn :other :value entspricht.', - 'required_unless' => ':attribute ist erforderlich, es sei denn :other ist in :values.', - 'required_with' => ':attribute wird benötigt wenn :value ausgewählt ist.', - 'required_with_all' => ':attribute field ist erforderlich, wenn :values vorhanden sind.', - 'required_without' => ':attribute wird benötigt wenn :value nicht ausgewählt ist.', + 'mac_address' => 'Das Feld :attribute muss eine gültige MAC-Adresse sein.', + 'max' => [ + 'array' => 'Das Feld :attribute darf nicht mehr als :max Elemente enthalten.', + 'file' => 'Das Feld :attribute darf nicht größer als :max Kilobyte sein.', + 'numeric' => 'Das Feld :attribute darf nicht größer als :max sein.', + 'string' => 'Das Feld :attribute darf nicht größer als :max Zeichen sein.', + ], + 'max_digits' => 'Das Feld :attribute darf nicht mehr als :max Ziffern haben.', + 'mimes' => 'Das Feld :attribute muss eine Datei vom Typ: :values ​​sein.', + 'mimetypes' => 'Das Feld :attribute muss eine Datei vom Typ: :values ​​sein.', + 'min' => [ + 'array' => 'Das Feld :attribute muss mindestens :min Elemente enthalten.', + 'file' => 'Das Feld :attribute muss mindestens :min Kilobyte groß sein.', + 'numeric' => 'Das Feld :attribute muss mindestens :min sein.', + 'string' => 'Das Feld :attribute muss mindestens :min Zeichen enthalten.', + ], + 'min_digits' => 'Das Feld :attribute muss mindestens :min Ziffern haben.', + 'missing' => 'Das Feld :attribute muss fehlen.', + 'missing_if' => 'Das Feld :attribute muss fehlen, wenn :other :value ist.', + 'missing_unless' => 'Das Feld :attribute muss fehlen, es sei denn, :other ist :value.', + 'missing_with' => 'Das Feld :attribute muss fehlen, wenn :values ​​vorhanden ist.', + 'missing_with_all' => 'Das Feld :attribute muss fehlen, wenn :values ​​vorhanden sind.', + 'multiple_of' => 'Das Feld :attribute muss ein Vielfaches von :value sein.', + 'not_in' => 'Auswahl :attribute ist ungültig.', + 'not_regex' => 'Das Format von dem Feld :attribute ist ungültig.', + 'numeric' => 'Das Feld :attribute muss eine Zahl sein.', + 'password' => [ + 'letters' => 'Das Feld :attribute muss mindestens einen Buchstaben enthalten.', + 'mixed' => 'Das Feld :attribute muss mindestens einen Groß- und einen Kleinbuchstaben enthalten.', + 'numbers' => 'Das Feld :attribute muss mindestens eine Zahl enthalten.', + 'symbols' => 'Das Feld :attribute muss mindestens ein Symbol enthalten.', + 'uncompromised' => 'Das angegebene :attribute ist in einem Datenleck aufgetaucht. Bitte wählen Sie ein anderes :attribute.', + ], + 'present' => ':attribute muss vorhanden sein.', + 'present_if' => 'Das Feld :attribute muss vorhanden sein, wenn :other :value ist.', + 'present_unless' => 'Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.', + 'present_with' => 'Das Feld :attribute muss vorhanden sein, wenn :values ​​vorhanden ist.', + 'present_with_all' => 'Das Feld :attribute muss vorhanden sein, wenn :values ​​vorhanden sind.', + 'prohibited' => 'Das Feld :attribute ist nicht erlaubt.', + 'prohibited_if' => 'Das Feld :attribute ist nicht erlaubt, wenn :other :value ist.', + 'prohibited_unless' => 'Das Feld :attribute ist nicht erlaubt, sofern :other nicht in :values ​​enthalten ist.', + 'prohibits' => 'Das Feld :attribute verhindert die Anwesenheit von :other.', + 'regex' => 'Das Format von dem Feld :attribute ist ungültig.', + 'required' => ':attribute Feld muss ausgefüllt sein.', + 'required_array_keys' => 'Das Feld :attribute muss Einträge für: :values ​​enthalten.', + 'required_if' => ':attribute wird benötigt, wenn :other :value entspricht.', + 'required_if_accepted' => 'Das Feld :attribute ist erforderlich, wenn :other akzeptiert wird.', + 'required_if_declined' => 'Das Feld :attribute ist erforderlich, wenn :other abgelehnt wird.', + 'required_unless' => ':attribute ist erforderlich, es sei denn :other ist in :values.', + 'required_with' => ':attribute wird benötigt wenn :value ausgewählt ist.', + 'required_with_all' => 'Das Feld :attribute ist erforderlich, wenn :values ​​vorhanden sind.', + 'required_without' => ':attribute wird benötigt wenn :value nicht ausgewählt ist.', 'required_without_all' => 'Das: Attributfeld ist erforderlich, wenn keine der folgenden Werte vorhanden sind:', - 'same' => ':attribute und :other müssen übereinstimmen.', - 'size' => [ - 'numeric' => ':attribute muss :size groß sein.', - 'file' => ':attribute muss :size Kilobyte groß sein.', - 'string' => ':attribute muss :size Zeichen haben.', - 'array' => 'Das Attribut muss Folgendes enthalten: Größenelemente.', + 'same' => 'Das Feld :attribute muss mit :other übereinstimmen.', + 'size' => [ + 'array' => 'Das Feld :attribute muss :size Elemente enthalten.', + 'file' => 'Das Feld :attribute muss :size Kilobyte groß sein.', + 'numeric' => 'Das Feld :attribute muss :size sein.', + 'string' => 'Das Feld :attribute muss :size Zeichen enthalten.', ], + 'starts_with' => 'Das Feld :attribute muss mit einem der folgenden beginnen: :values.', 'string' => 'Das Attribut muss eine Zeichenfolge sein.', - 'timezone' => ':attribute muss eine gültige Zeitzone sein.', 'two_column_unique_undeleted' => ':attribute muss in :table1 und :table2 einzigartig sein. ', - 'unique' => ':attribute schon benutzt.', - 'uploaded' => ':attribute konnte nicht hochgeladen werden.', - 'url' => ':attribute Format ist ungültig.', 'unique_undeleted' => 'Die Variable :attribute muss eindeutig sein.', 'non_circular' => 'Das :attribute darf keinen Zirkelbezug ergeben.', 'not_array' => ':attribute darf kein Array sein.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Das Passwort muss mindestens eine Zahl beinhalten.', 'case_diff' => 'Das Passwort muss Groß- und Kleinschreibung beinhalten.', 'symbols' => 'Das Passwort muss Sonderzeichen beinhalten.', - 'gte' => [ - 'numeric' => 'Wert darf nicht negativ sein' - ], - 'checkboxes' => ':attribute enthält ungültige Optionen.', - 'radio_buttons' => ':attribute ist ungültig.', - + 'timezone' => 'Das Feld :attribute muss eine gültige Zeitzone sein.', + 'unique' => ':attribute schon benutzt.', + 'uploaded' => ':attribute konnte nicht hochgeladen werden.', + 'uppercase' => 'Das Feld :attribute muss groß geschrieben werden.', + 'url' => 'Das Feld :attribute muss eine gültige URL sein.', + 'ulid' => 'Das Feld :attribute muss eine gültige ULID sein.', + 'uuid' => 'Das Feld :attribute muss eine gültige UUID sein.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', 'last_audit_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT hh:mm:ss sein', 'expiration_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', 'start_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', 'end_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', - - ], - + 'checkboxes' => ':attribute enthält ungültige Optionen.', + 'radio_buttons' => ':attribute ist ungültig.', + 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', + + 'generic' => [ + 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', + 'required' => 'Dieses Feld ist erforderlich', + 'email' => 'Bitte geben Sie eine gültige E-Mail-Adresse ein', + ], + + ]; diff --git a/resources/lang/de-if/account/general.php b/resources/lang/de-if/account/general.php index 1544c4dd26..41e6a9908e 100644 --- a/resources/lang/de-if/account/general.php +++ b/resources/lang/de-if/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Persönliche API-Schlüssel', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'personal_access_token' => 'Persönlicher Zugangsschlüssel', + 'personal_api_keys_success' => 'Persönlicher API-Schlüssel :key erfolgreich erstellt', + 'here_is_api_key' => 'Hier ist Ihr neuer persönlicher Zugangsschlüssel. Dies ist das einzige Mal, dass er angezeigt wird, also verlieren Sie ihn nicht! Sie können diesen Schlüssel jetzt verwenden, um API-Anfragen zu stellen.', + 'api_key_warning' => 'Wenn du ein API-Token generierst, stelle sicher, dass du diesen sofort kopierst, da er danach nicht mehr für dich sichtbar sein wird.', 'api_base_url' => 'Deine API Basis-URL befindet sich unter:', 'api_base_url_endpoint' => '/<Endpunkt>', 'api_token_expiration_time' => 'API-Token sollen ablaufen in:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'api_reference' => 'Bitte lese die API Dokumentation um Informationen über die verfügbaren API-Endpunkte zu bekommen.', 'profile_updated' => 'Konto erfolgreich aktualisiert', + 'no_tokens' => 'Sie haben keine persönlichen Zugangsschlüssel erstellt.', ); diff --git a/resources/lang/de-if/admin/accessories/message.php b/resources/lang/de-if/admin/accessories/message.php index 2ffe7d897e..d8377dbe99 100644 --- a/resources/lang/de-if/admin/accessories/message.php +++ b/resources/lang/de-if/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Zubehör konnte nicht herausgegeben werden. Bitte versuche es erneut', 'success' => 'Zubehör erfolgreich herausgegeben.', 'unavailable' => 'Zubehör ist nicht verfügbar, um herausgegeben zu werden. Prüfe die verfügbare Menge', - 'user_does_not_exist' => 'Dieser Benutzer ist ungültig. Bitte versuche es erneut.' + 'user_does_not_exist' => 'Dieser Benutzer ist ungültig. Bitte versuche es erneut.', + 'checkout_qty' => array( + 'lte' => 'Derzeit steht nur ein Zubehörteil dieses Typs zur Verfügung, und Sie versuchen, :checkout_qty auszuleihen. Bitte passen Sie entweder die Ausleihmenge oder den Gesamtbestand dieses Zubehörs an und versuchen Sie es erneut.|Es sind insgesamt :number_currently_remaining verfügbare Zubehörteile vorhanden, und Sie versuchen, :checkout_qty auszuleihen. Bitte passen Sie entweder die Ausleihmenge oder den Gesamtbestand dieses Zubehörs an und versuchen Sie es erneut.', + ), + ), 'checkin' => array( diff --git a/resources/lang/de-if/admin/consumables/general.php b/resources/lang/de-if/admin/consumables/general.php index ce5fc13d38..6c036427b4 100644 --- a/resources/lang/de-if/admin/consumables/general.php +++ b/resources/lang/de-if/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Verbleibend', 'total' => 'Gesamt', 'update' => 'Verbrauchsmaterial aktualisieren', + 'inventory_warning' => 'Der Bestand des Verbrauchsmaterials liegt unter der Mindestmenge von :min_count', ); diff --git a/resources/lang/de-if/admin/consumables/message.php b/resources/lang/de-if/admin/consumables/message.php index 45d5e12bb4..88f9c3f885 100644 --- a/resources/lang/de-if/admin/consumables/message.php +++ b/resources/lang/de-if/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'Die Kategorie muss eine Kategorie mit Verbrauchsmaterialien sein.', 'does_not_exist' => 'Verbrauchsmaterial existiert nicht.', 'create' => array( diff --git a/resources/lang/de-if/admin/custom_fields/message.php b/resources/lang/de-if/admin/custom_fields/message.php index ab3325bb3f..dd5f451f73 100644 --- a/resources/lang/de-if/admin/custom_fields/message.php +++ b/resources/lang/de-if/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Dieses Feld existiert nicht.', 'already_added' => 'Feld wurde bereits hinzugefügt', + 'none_selected' => 'Kein Feld ausgewählt', 'create' => array( 'error' => 'Feld wurde nicht erstellt. Bitte versuche es erneut.', diff --git a/resources/lang/de-if/admin/hardware/form.php b/resources/lang/de-if/admin/hardware/form.php index ad83aed39b..f3392a527f 100644 --- a/resources/lang/de-if/admin/hardware/form.php +++ b/resources/lang/de-if/admin/hardware/form.php @@ -39,9 +39,9 @@ return [ 'order' => 'Auftragsnummer', 'qr' => 'QR-Code', 'requestable' => 'Benutzer dürfen dieses Asset anfordern', - 'redirect_to_all' => 'Return to all :type', - 'redirect_to_type' => 'Go to :type', - 'redirect_to_checked_out_to' => 'Go to Checked Out to', + 'redirect_to_all' => 'Zurück zu allen :type', + 'redirect_to_type' => 'Gehe zu :type', + 'redirect_to_checked_out_to' => 'Gehe von herausgegeben zu', 'select_statustype' => 'Status Typ auswählen', 'serial' => 'Seriennummer', 'status' => 'Status', diff --git a/resources/lang/de-if/admin/hardware/message.php b/resources/lang/de-if/admin/hardware/message.php index 7fa02be239..43c7e3e8d0 100644 --- a/resources/lang/de-if/admin/hardware/message.php +++ b/resources/lang/de-if/admin/hardware/message.php @@ -2,11 +2,10 @@ return [ - 'undeployable' => 'Achtung:Dieses Asset wurde kürzlich als nicht verteilbar markiert. - Falls sich dieser Status verändert hat, aktualisiere bitte den Asset Status.', + 'undeployable' => 'Warnung: Dieses Asset wurde als derzeit nicht einsetzbar markiert. Wenn sich dieser Status geändert hat, aktualisieren Sie bitte den Asset-Status.', 'does_not_exist' => 'Asset existiert nicht.', - 'does_not_exist_var'=> 'Asset mit Tag :asset_tag nicht gefunden.', - 'no_tag' => 'Kein Asset Tag angegeben.', + 'does_not_exist_var'=> 'Asset mit Asset-Tag :asset_tag nicht gefunden.', + 'no_tag' => 'Kein Asset-Tag angegeben.', 'does_not_exist_or_not_requestable' => 'Dieses Asset existiert nicht oder kann nicht angefordert werden.', 'assoc_users' => 'Dieses Asset ist im Moment an einen Benutzer herausgegeben und kann nicht entfernt werden. Bitte buche das Asset wieder ein und versuche dann erneut, es zu entfernen. ', 'warning_audit_date_mismatch' => 'Das nächste Prüfdatum dieses Assets (:next_audit_date) liegt vor dem letzten Prüfdatum (:last_audit_date). Bitte aktualisieren Sie das nächste Prüfdatum.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Importvorgang', 'error' => 'Einige Elemente wurden nicht korrekt importiert.', 'errorDetail' => 'Die folgenden Elemente wurden aufgrund von Fehlern nicht importiert.', 'success' => 'Deine Datei wurde importiert', diff --git a/resources/lang/de-if/admin/licenses/general.php b/resources/lang/de-if/admin/licenses/general.php index 5ece023c34..2bf14b95f8 100644 --- a/resources/lang/de-if/admin/licenses/general.php +++ b/resources/lang/de-if/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Lizenzinfo', 'license_seats' => 'Lizenzaktivierungen', 'seat' => 'Lizenz', + 'seat_count' => 'Platz :count', 'seats' => 'Lizenzen', 'software_licenses' => 'Software Lizenzen', 'user' => 'Benutzer', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Alle Plätze zurücknehmen', - 'modal' => 'Diese Aktion wird einen Sitz zurücknehmen. | Diese Aktion wird alle :checkedout_seats_count Plätze für diese Lizenz zurücknehmen.', + 'modal' => 'Diese Aktion wird einen Platz einchecken. | Diese Aktion wird alle :checkedout_seats_count Plätze dieser Lizenz einchecken.', 'enabled_tooltip' => 'ALLE Plätze für diese Lizenz zurücknehmen, sowohl von Benutzern als auch von Assets', 'disabled_tooltip' => 'Es ist deaktiviert, da derzeit keine Plätze zum herausgegeben verfügbar sind', 'disabled_tooltip_reassignable' => 'Dies ist deaktiviert, da die Lizenz nicht zuweisbar ist', 'success' => 'Lizenz erfolgreich zurückgenommen! | Alle Lizenzen wurden erfolgreich zurückgenommen!', - 'log_msg' => 'Zurückgenommen über Massen-Zurücknehmen in der Lizenzübersicht', + 'log_msg' => 'Über die Massenrückgabe in der Lizenz-Benutzeroberfläche eingebucht', ], 'checkout_all' => [ diff --git a/resources/lang/de-if/admin/licenses/message.php b/resources/lang/de-if/admin/licenses/message.php index a4938e9a4f..a42c63877e 100644 --- a/resources/lang/de-if/admin/licenses/message.php +++ b/resources/lang/de-if/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Lizenz wurde nicht herausgegeben, bitte versuche es erneut.', 'success' => 'Lizenz wurde erfolgreich herausgegeben', 'not_enough_seats' => 'Nicht genügend Lizenz-Plätze zur Herausgabe verfügbar', + 'mismatch' => 'Die bereitgestellte Lizenzplatzierung entspricht nicht der Lizenz', + 'unavailable' => 'Dieser Platz ist nicht zur Ausleihe verfügbar.', ), 'checkin' => array( diff --git a/resources/lang/de-if/admin/locations/message.php b/resources/lang/de-if/admin/locations/message.php index cba3b0b1af..138808be6a 100644 --- a/resources/lang/de-if/admin/locations/message.php +++ b/resources/lang/de-if/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Standort existiert nicht.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Der Standort kann gerade nicht gelöscht werden, weil mindestens ein Asset oder ein Benutzer damit verbunden ist, da ihm Assets zugeordnet sind, oder er der Hauptstandort für einen anderen Standort ist. Aktualisiere deine Modelle, sodass sie nicht mehr auf diesen Standort verweisen, und probier’s dann nochmal. ', 'assoc_assets' => 'Dieser Standort ist mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entferne die Standortzuweisung bei den jeweiligen Gegenständen und versuche erneut, diesen Standort zu entfernen. ', 'assoc_child_loc' => 'Dieser Standort ist mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte aktualisiere Deine Standorte, so dass dieser Standort nicht mehr verknüpft ist, und versuche es erneut. ', 'assigned_assets' => 'Zugeordnete Assets', diff --git a/resources/lang/de-if/admin/models/message.php b/resources/lang/de-if/admin/models/message.php index 553d4fe92b..ab6c2b25e0 100644 --- a/resources/lang/de-if/admin/models/message.php +++ b/resources/lang/de-if/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNUNG! Das Asset Modell für dieses Element ist ungültig oder fehlt!', 'no_association_fix' => 'Dies wird Dinge auf seltsame und schreckliche Weise zerstören. Bearbeite dieses Asset jetzt, um ihm ein Modell zuzuordnen.', 'assoc_users' => 'Dieses Modell ist zur Zeit mit einem oder mehreren Assets verknüpft und kann nicht gelöscht werden. Bitte lösche die Assets und versuche dann erneut, das Modell zu löschen. ', - + 'invalid_category_type' => 'Die Kategorie muss eine Asset-Kategorie sein.', 'create' => array( 'error' => 'Modell wurde nicht erstellt. Bitte versuche es noch einmal.', diff --git a/resources/lang/de-if/admin/settings/general.php b/resources/lang/de-if/admin/settings/general.php index 5c2d2ae078..f162ba2c19 100644 --- a/resources/lang/de-if/admin/settings/general.php +++ b/resources/lang/de-if/admin/settings/general.php @@ -49,7 +49,7 @@ return [ 'default_eula_text' => 'Standard EULA', 'default_language' => 'Standardsprache', 'default_eula_help_text' => 'Du kannst ebenso benutzerdefinierte EULAs bestimmten Asset-Kategorien zuordnen.', - 'acceptance_note' => 'Notiz für Ihre Entscheidung hinzufügen (Optional)', + 'acceptance_note' => 'Füge eine Notiz zu deiner Entscheidung hinzu (optional)', 'display_asset_name' => 'Asset-Name anzeigen', 'display_checkout_date' => 'Checkout-Datum anzeigen', 'display_eol' => 'EOL in Tabellenansicht anzeigen', @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Dies testet nur, ob LDAP korrekt synchronisiert werden kann. Falls Deine LDAP-Authentifizierungsabfrage nicht korrekt ist, können sich Benutzer möglicherweise nicht anmelden. DU MUSST DEINE AKTUALISIERTEN LDAP-EINSTELLUNGEN ZUERST SPEICHERN.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP-Server', - 'ldap_server_help' => 'Dies sollte mit ldap:// (für unverschlüsselt oder TLS) oder ldaps:// (für SSL) beginnen', + 'ldap_server_help' => 'Dies sollte mit ldap:// (für unverschlüsselt) oder ldaps:// (für TLS oder SSL) beginnen', 'ldap_server_cert' => 'LDAP-SSL-Zertifikatsüberprüfung', 'ldap_server_cert_ignore' => 'Ungültiges SSL-Zertifikat erlauben', 'ldap_server_cert_help' => 'Wähle diese Option, wenn Du selbstsignierte SSL Zertifikate verwenden und diese gegebenenfalls ungültigen Zertifikate akzeptieren möchtest.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'LDAP testen', 'ldap_test_sync' => 'LDAP-Synchronisierung testen', 'license' => 'Softwarelizenz', - 'load_remote' => 'Gravatar verwenden', - 'load_remote_help_text' => 'Deaktivieren Sie dieses Kästchen, wenn Ihre Installation keine Skripte aus dem externen Internet laden kann. Dies wird verhindern, dass Snipe-IT Bilder von Gravatar laden kann.', + 'load_remote' => 'Externe Avatare laden', + 'load_remote_help_text' => 'Deaktiviere dieses Kästchen, wenn deine Installation keine Skripte aus dem externen Internet laden kann. Das verhindert, dass Snipe-IT versucht, Bilder von Gravatar oder anderen externen Quellen zu laden.', 'login' => 'Anmeldeversuche', 'login_attempt' => 'Anmeldeversuch', 'login_ip' => 'IP-Adresse', @@ -290,15 +290,15 @@ return [ 'oauth_clients' => 'OAuth Clients', 'oauth' => 'OAuth', 'oauth_help' => 'Oauth Endpunkt Einstellungen', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', + 'oauth_no_clients' => 'Du hast noch keine OAuth-Clients erstellt.', 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', - 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', + 'oauth_authorized_apps' => 'Autorisierte Anwendungen', + 'oauth_redirect_url' => 'Weiterleitungs-URL', + 'oauth_name_help' => ' Etwas, das eure Nutzer kennen und dem sie vertrauen.', + 'oauth_scopes' => 'Bereiche', + 'oauth_callback_url' => 'Dein App-Autorisierungs-Callback-URL.', + 'create_client' => 'Client erstellen', + 'no_scopes' => 'Keine Bereiche', 'asset_tag_title' => 'Asset Tag Einstellungen aktualisieren', 'barcode_title' => 'Barcode Einstellungen aktualisieren', 'barcodes' => 'Barcodes', @@ -373,7 +373,11 @@ return [ 'database_driver' => 'Datenbanktreiber', 'bs_table_storage' => 'Tabellen Speicher', 'timezone' => 'Zeitzone', - 'profile_edit' => 'Edit Profile', - 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'profile_edit' => 'Profil bearbeiten', + 'profile_edit_help' => 'Benutzern erlauben, ihre eigenen Profile zu bearbeiten.', + 'default_avatar' => 'Eigenen Standard-Avatar hochladen', + 'default_avatar_help' => 'Dieses Bild wird als Profilbild angezeigt, wenn ein Benutzer kein Profilbild festgelegt hat.', + 'restore_default_avatar' => 'Ursprünglichen Standard-Avatar des Systems wiederherstellen', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/de-if/admin/users/message.php b/resources/lang/de-if/admin/users/message.php index 8182ff6586..0d55bea3c6 100644 --- a/resources/lang/de-if/admin/users/message.php +++ b/resources/lang/de-if/admin/users/message.php @@ -37,16 +37,16 @@ return array( 'update' => 'Beim Aktualisieren des Benutzers ist ein Fehler aufgetreten. Bitte probiere es noch einmal.', 'delete' => 'Beim Löschen des Benutzers ist ein Fehler aufgetreten. Bitte versuche es erneut.', 'delete_has_assets' => 'Der Benutzer konnte nicht gelöscht werden, da ihm Gegenstände zugeordnet sind.', - 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', - 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', - 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', - 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', - 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', + 'delete_has_assets_var' => 'Dieser Benutzer hat noch ein Asset zugewiesen. Bitte nehme es zuerst zurück.|Dieser Benutzer hat noch :count Assets zugewiesen. Bitte nehme diese zuerst zurück.', + 'delete_has_licenses_var' => 'Dieser Benutzer hat noch einen Lizenzplatz zugewiesen. Bitte nehme es zuerst zurück.|Dieser Benutzer hat noch :count Lizenzplätze zugewiesen. Bitte nehme diese zuerst zurück.', + 'delete_has_accessories_var' => 'Dieser Benutzer hat noch ein Zubehör zugewiesen. Bitte nehme es zuerst zurück.|Dieser Benutzer hat noch :count Zubehöre zugewiesen. Bitte nehme diese zuerst zurück.', + 'delete_has_locations_var' => 'Dieser Benutzer verwaltet noch einen anderen Standort. Bitte wähle zuerst einen anderen Manager.|Dieser Benutzer verwaltet noch :count Standorte. Bitte wähle zuerst einen anderen Manager.', + 'delete_has_users_var' => 'Dieser Benutzer verwaltet noch einen anderen Benutzer. Bitte wähle zuerst einen anderen Manager für diesen Benutzer.|Dieser Benutzer verwaltet noch :count Benutzer. Bitte wähle zuerst einen anderen Manager.', 'unsuspend' => 'Es gab ein Problem beim reaktivieren des Benutzers. Bitte versuche es erneut.', 'import' => 'Es gab ein Problem beim Importieren der Benutzer. Bitte noch einmal versuchen.', 'asset_already_accepted' => 'Dieses Asset wurde bereits akzeptiert.', 'accept_or_decline' => 'Du musst diesen Gegenstand entweder annehmen oder ablehnen.', - 'cannot_delete_yourself' => 'We would feel really bad if you deleted yourself, please reconsider.', + 'cannot_delete_yourself' => 'Wir würden uns wirklich schlecht fühlen, wenn du dich selbst löschen würdest. Überlege es dir bitte noch einmal.', 'incorrect_user_accepted' => 'Das Asset, dass Du versuchst zu aktivieren, wurde nicht an Dich ausgebucht.', 'ldap_could_not_connect' => 'Konnte keine Verbindung zum LDAP Server herstellen. Bitte LDAP Einstellungen in der LDAP Konfigurationsdatei prüfen.
Fehler vom LDAP Server:', 'ldap_could_not_bind' => 'Konnte keine Verbindung zum LDAP Server herstellen. Bitte LDAP Einstellungen in der LDAP Konfigurationsdatei prüfen.
Fehler vom LDAP Server: ', diff --git a/resources/lang/de-if/auth/message.php b/resources/lang/de-if/auth/message.php index 775c87c58f..e5e2c958bf 100644 --- a/resources/lang/de-if/auth/message.php +++ b/resources/lang/de-if/auth/message.php @@ -14,8 +14,8 @@ return array( 'success' => 'Du hast Dich erfolgreich angemeldet.', 'code_required' => 'Zwei-Faktor-Code ist erforderlich.', 'invalid_code' => 'Zwei-Faktor-Code ist ungültig.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Bitte gebe deinen Zwei-Faktor-Authentifizierungscode ein.', + 'please_enroll' => 'Bitte registriere ein Gerät für die Zwei-Faktor-Authentifizierung.', ), 'signin' => array( diff --git a/resources/lang/de-if/button.php b/resources/lang/de-if/button.php index 4e1c4424ef..9f0bf89dd9 100644 --- a/resources/lang/de-if/button.php +++ b/resources/lang/de-if/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Alles einchecken / Benutzer löschen', 'delete' => 'Löschen', 'edit' => 'Bearbeiten', + 'clone' => 'Duplizieren', 'restore' => 'Wiederherstellen', 'remove' => 'Entfernen', 'request' => 'Anfrage', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Füge Wartung hinzu', 'append' => 'Anhängen', 'new' => 'Neu', + 'var' => [ + 'clone' => ':item_type duplizieren', + 'edit' => ':item_type bearbeiten', + 'delete' => ':item_type löschen', + 'restore' => ':item_type löschen', + 'create' => 'Neue/s :item_type erstellen', + 'checkout' => ':item_type herausgeben', + 'checkin' => ':item_type zurücknehmen', + ] ]; diff --git a/resources/lang/de-if/general.php b/resources/lang/de-if/general.php index 40a859769b..9745dd3a00 100644 --- a/resources/lang/de-if/general.php +++ b/resources/lang/de-if/general.php @@ -158,7 +158,7 @@ return [ 'image_upload' => 'Bild hochladen', 'filetypes_accepted_help' => 'Akzeptierter Dateityp ist :types. Maximal zulässige Upload-Größe ist :size.|Akzeptierte Dateitypen sind :types. Maximal erlaubte Upload-Größe ist :size.', 'filetypes_size_help' => 'Maximal erlaubte Upload-Größe ist :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Akzeptierte Dateitypen sind jpg, webp, png, gif, svg, und avif. Die maximal zulässige Upload-Größe beträgt :size.', 'unaccepted_image_type' => 'Diese Bilddatei ist nicht lesbar. Akzeptierte Dateitypen sind jpg, webp, png, gif und svg. Der MIME-Type dieser Datei ist: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Felder zuordnen und diese Datei bearbeiten', @@ -207,7 +207,7 @@ return [ 'next' => 'Nächste', 'next_audit_date' => 'Nächstes Prüfdatum', 'next_audit_date_help' => 'Wenn Sie Auditing in Ihrer Organisation verwenden, dies wird in der Regel automatisch anhand des letzten Prüfdatums und der Prüffrequenz (in Admin-Einstellungen > Alarme) berechnet und Sie können dies leer lassen. Sie können dieses Datum hier manuell festlegen, wenn Sie es benötigen, aber es muss später als das letzte Prüfungsdatum sein. ', - 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', + 'audit_images_help' => 'Du kannst Prüfbilder in der Asset-Historie finden.', 'no_email' => 'Keine E-Mail-Adresse mit diesem Benutzer verknüpft', 'last_audit' => 'Letzte Prüfung', 'new' => 'Neu!', @@ -240,7 +240,7 @@ return [ 'restored' => 'Wiederhergestellt', 'restore' => 'Wiederherstellen', 'requestable_models' => 'Angeforderte Modelle', - 'requestable_items' => 'Requestable Items', + 'requestable_items' => 'Anforderbare Gegenstände', 'requested' => 'Angefragt', 'requested_date' => 'Anfragedatum', 'requested_assets' => 'Angeforderte Assets', @@ -304,7 +304,7 @@ return [ 'user' => 'Benutzer', 'accepted' => 'angenommen', 'declined' => 'abgelehnt', - 'declined_note' => 'Declined Notes', + 'declined_note' => 'Abgelehnte Notiz', 'unassigned' => 'Nicht zugewiesen', 'unaccepted_asset_report' => 'Nicht akzeptierte Assets', 'users' => 'Benutzer', @@ -509,7 +509,7 @@ return [ 'import_note' => 'Mit CSV-Importer importiert', ], 'remove_customfield_association' => 'Entfernen Sie dieses Feld aus dem Feldsatz. Dies wird das benutzerdefinierte Feld nicht löschen, sondern nur die Zuordnung dieses Feldes zu diesem Feldsatz entfernen.', - 'checked_out_to_fields' => 'Checked Out To Fields', + 'checked_out_to_fields' => 'Auf folgende Felder herausgegeben', 'percent_complete' => '% vollständig', 'uploading' => 'Hochladen... ', 'upload_error' => 'Fehler beim Hochladen der Datei. Bitte überprüfe, dass keine leeren Zeilen vorhanden sind und keine Spaltennamen dupliziert werden.', @@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => 'Zugriff verweigert. Benutzerinformationen für Superadministratoren auf der Demo können nicht aktualisiert werden.', 'pwd_reset_not_sent' => 'Benutzer ist nicht aktiviert, ist LDAP-synchronisiert oder hat keine E-Mail-Adresse', 'error_sending_email' => 'Fehler beim Senden der E-Mail', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Trauriger Panda. Du bist nicht berechtigt, das zu tun. Kehre zum Dashboard zurück oder wende dich an deinen Administrator.', 'bulk' => [ 'delete' => [ @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Lizenzsitze|:count Lizenzsitze', 'consumables' => ':count Verbrauchsmaterialien|:count Verbrauchsmaterialien', 'components' => ':count Komponente|:count Komponenten', - ] + ], + 'more_info' => 'Mehr Info', + 'quickscan_bulk_help' => 'Wenn du dieses Kontrollkästchen aktivierst, wird der Asset-Datensatz so bearbeitet, dass der neue Standort angezeigt wird. Wenn du es nicht aktivierst, wird der Standort nur im Prüfprotokoll vermerkt. Beachte, dass sich der Standort der Person, des Assets oder des Standorts, an den es ausgecheckt wurde, nicht ändert, wenn dieses Asset ausgecheckt wird.', + 'whoops' => 'Hoppla!', + 'something_went_wrong' => 'Etwas ist bei Ihrer Anfrage schiefgegangen.', + 'close' => 'Schließen', + 'expires' => 'Ablaufdatum', + 'map_fields'=> 'Feld :item_type zuordnen', + 'remaining_var' => ':count verbleibend', ]; diff --git a/resources/lang/de-if/mail.php b/resources/lang/de-if/mail.php index f23bce2c10..430ab69fdf 100644 --- a/resources/lang/de-if/mail.php +++ b/resources/lang/de-if/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ich habe die Nutzungsbedingungen gelesen und stimme diesen zu, und ich habe diesen Gegenstand erhalten.', 'inventory_report' => 'Bestandsbericht', 'item' => 'Gegenstand:', + 'item_checked_reminder' => 'Dies ist eine Erinnerung, dass Sie derzeit :count Artikel ausgeliehen haben, die Sie noch nicht akzeptiert oder abgelehnt haben. Bitte klicken Sie auf den untenstehenden Link, um Ihre Entscheidung zu bestätigen.', 'license_expiring_alert' => 'Es gibt :count auslaufende Lizenz in den nächsten :threshold Tagen.|Es gibt :count auslaufende Lizenzen in den nächsten :threshold Tagen.', 'link_to_update_password' => 'Klicken Sie bitte auf den folgenden Link zum Aktualisieren Ihres :web Passworts:', 'login' => 'Anmelden:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Es ist :count Asset vorhanden, für das innerhalb von :threshold Tagen ein Audit durchzuführen ist. |Es gibt :count Assets, für die innerhalb von :threshold Tagen Audits durchzuführen sind.', 'user' => 'Benutzer', 'username' => 'Benutzername', + 'unaccepted_asset_reminder' => 'Sie haben nicht akzeptierte Assets.', 'welcome' => 'Wilkommen, :name', 'welcome_to' => 'Willkommen bei :web!', 'your_assets' => 'Deine Assets anzeigen', 'your_credentials' => 'Ihre Snipe-IT Anmeldedaten', + 'mail_sent' => 'E-Mail erfolgreich gesendet!', ]; diff --git a/resources/lang/de-if/validation.php b/resources/lang/de-if/validation.php index d96cd772f0..32b14dbae9 100644 --- a/resources/lang/de-if/validation.php +++ b/resources/lang/de-if/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute muss akzeptiert werden.', - 'active_url' => ':attribute ist keine gültige URL.', - 'after' => ':attribute muss ein Datum nach dem :date sein.', - 'after_or_equal' => ':attribute muss ein Datum nach oder gleich :date sein.', - 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen und Gedankenstrichen bestehen.', - 'alpha_num' => ':attribute darf nur aus Buchstaben und Zahlen bestehen.', - 'array' => ':attribute muss ein Array sein.', - 'before' => ':attribute muss ein Datum vor dem :date sein.', - 'before_or_equal' => ':attribute muss ein Datum vor oder gleich dem :date sein.', - 'between' => [ - 'numeric' => ':attribute muss zwischen :min und :max liegen.', - 'file' => ':attribute darf nur zwischen :min und :max kilobytes groß sein.', - 'string' => ':attribute muss mindestens :min und maximal :max Zeichen enthalten.', - 'array' => ':attribute muss mindestens :min und darf maximal :max Einträge haben.', + 'accepted' => 'Das Feld :attribute muss akzeptiert werden.', + 'accepted_if' => 'Das Feld :attribute muss akzeptiert werden, wenn :other :value ist.', + 'active_url' => 'Das Feld :attribute muss eine gültige URL sein.', + 'after' => 'Das Feld :attribute muss ein Datum nach dem :date sein.', + 'after_or_equal' => 'Das Feld :attribute muss ein Datum sein, das nach dem :date liegt oder diesem entspricht.', + 'alpha' => 'Das Feld :attribute darf nur Buchstaben enthalten.', + 'alpha_dash' => 'Das Feld :attribute darf nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten.', + 'alpha_num' => 'Das Feld :attribute darf nur Buchstaben und Zahlen enthalten.', + 'array' => 'Das Feld :attribute muss ein Array sein.', + 'ascii' => 'Das Feld :attribute darf nur alphanumerische Zeichen und Symbole enthalten.', + 'before' => 'Das Feld :attribute muss ein Datum vor dem :date sein.', + 'before_or_equal' => 'Das Feld :attribute muss ein Datum sein, das vor dem :date liegt oder diesem entspricht.', + 'between' => [ + 'array' => 'Das Feld :attribute muss zwischen :min und :max Elemente haben.', + 'file' => 'Das Feld :attribute muss zwischen :min und :max Kilobytes groß sein.', + 'numeric' => 'Das Feld :attribute muss zwischen :min und :max liegen.', + 'string' => 'Das Feld :attribute muss zwischen :min und :max Zeichen lang sein.', ], - 'boolean' => ':attribute muss wahr oder falsch sein.', - 'confirmed' => ':attribute Bestätigung stimmt nicht überein.', - 'date' => ':attribute ist kein gültiges Datum.', - 'date_format' => ':attribute passt nicht zur :format Formatierung.', - 'different' => ':attribute und :other müssen sich unterscheiden.', - 'digits' => ':attribute muss :digits Stellen haben.', - 'digits_between' => ':attribute soll mindestens :min und darf maximal :max Stellen haben.', - 'dimensions' => ':attribute hat ein ungültiges Bildformat.', - 'distinct' => ':attribute hat einen doppelten Wert.', - 'email' => 'Das Format von :attribute ist ungültig.', - 'exists' => 'Auswahl :attribute ist ungültig.', - 'file' => ':attribute muss eine Datei sein.', - 'filled' => ':attribute muss einen Wert haben.', - 'image' => ':attribute muss ein Bild sein.', + 'boolean' => 'Das Feld :attribute muss wahr oder falsch sein.', + 'can' => 'Das Feld :attribute enthält einen nicht autorisierten Wert.', + 'confirmed' => 'Die Bestätigung für das Feld :attribute stimmt nicht überein.', + 'contains' => 'Im Feld :attribute fehlt ein erforderlicher Wert.', + 'current_password' => 'Das Passwort ist falsch.', + 'date' => 'Das Feld :attribute muss ein gültiges Datum sein.', + 'date_equals' => 'Das Feld :attribute muss ein Datum sein, das dem :date entspricht.', + 'date_format' => 'Das Feld :attribute muss dem Format :format entsprechen.', + 'decimal' => 'Das Feld :attribute muss :decimal Dezimalstellen haben.', + 'declined' => 'Das Feld :attribute muss abgelehnt werden.', + 'declined_if' => 'Das Feld :attribute muss abgelehnt werden, wenn :other den Wert :value hat.', + 'different' => 'Das Feld :attribute und :other müssen sich unterscheiden.', + 'digits' => 'Das Feld :attribute muss :digits Ziffern enthalten.', + 'digits_between' => 'Das Feld :attribute muss zwischen :min und :max Ziffern haben.', + 'dimensions' => 'Das Feld :attribute hat ungültige Bildabmessungen.', + 'distinct' => ':attribute hat einen doppelten Wert.', + 'doesnt_end_with' => 'Das Feld :attribute darf nicht mit einem der folgenden Werte enden: :values.', + 'doesnt_start_with' => 'Das Feld :attribute darf nicht mit einem der folgenden Werte beginnen: :values.', + 'email' => 'Das Feld :attribute muss eine gültige E-Mail-Adresse sein.', + 'ends_with' => 'Das Feld :attribute muss mit einem der folgenden Werte enden: :values.', + 'enum' => 'Auswahl :attribute ist ungültig.', + 'exists' => 'Auswahl :attribute ist ungültig.', + 'extensions' => 'Das Feld :attribute muss eine der folgenden Erweiterungen haben: :values.', + 'file' => 'Das Feld :attribute muss eine Datei sein.', + 'filled' => ':attribute muss einen Wert haben.', + 'gt' => [ + 'array' => 'Das Feld :attribute muss mehr als :value Elemente haben.', + 'file' => 'Das Feld :attribute muss größer als :value Kilobytes sein.', + 'numeric' => 'Das Feld :attribute muss größer als :value sein.', + 'string' => 'Das Feld :attribute muss mehr als :value Zeichen enthalten.', + ], + 'gte' => [ + 'array' => 'Das Feld :attribute muss :value Elemente oder mehr haben.', + 'file' => 'Das Feld :attribute muss größer oder gleich :value Kilobytes sein.', + 'numeric' => 'Das Feld :attribute muss größer oder gleich :value sein.', + 'string' => 'Das Feld :attribute muss größer oder gleich :value Zeichen sein.', + ], + 'hex_color' => 'Das Feld :attribute muss eine gültige hexadezimale Farbe sein.', + 'image' => 'Das Feld :attribute muss ein Bild sein.', 'import_field_empty' => ':fieldname darf nicht leer sein.', - 'in' => 'Auswahl :attribute ist ungültig.', - 'in_array' => 'Das Feld :attribute existiert nicht in :other.', - 'integer' => ':attribute muss eine ganze Zahl sein.', - 'ip' => ':attribute muss eine gültige IP Adresse sein.', - 'ipv4' => ':attribute muss eine gültige IPv4 Adresse sein.', - 'ipv6' => ':attribute muss eine gültige IPv6 Adresse sein.', - 'is_unique_department' => ':attribute muss einzigartig an diesem Standort sein', - 'json' => 'Das Attribut muss eine gültige JSON-Zeichenfolge sein.', - 'max' => [ - 'numeric' => ':attribute darf nicht größer als :max sein.', - 'file' => ':attribute darf nicht größer als :max Kilobyte sein.', - 'string' => ':attribute darf nicht mehr als :max Zeichen sein.', - 'array' => 'Das: -Attribut darf nicht mehr als: maximale Elemente haben.', + 'in' => 'Auswahl :attribute ist ungültig.', + 'in_array' => 'Das Feld :attribute muss in :other existieren.', + 'integer' => 'Das Feld :attribute muss eine Ganzzahl sein.', + 'ip' => 'Das Feld :attribute muss eine gültige IP-Adresse sein.', + 'ipv4' => 'Das Feld :attribute muss eine gültige IPv4-Adresse sein.', + 'ipv6' => 'Das Feld :attribute muss eine gültige IPv6-Adresse sein.', + 'json' => 'Das Feld :attribute muss eine gültige JSON-Zeichenkette sein.', + 'list' => 'Das Feld :attribute muss eine Liste sein.', + 'lowercase' => 'Das Feld :attribute muss in Kleinbuchstaben sein.', + 'lt' => [ + 'array' => 'Das Feld :attribute muss weniger als :value Elemente haben.', + 'file' => 'Das Feld :attribute muss kleiner als :value Kilobytes sein.', + 'numeric' => 'Das Feld :attribute muss kleiner als :value sein.', + 'string' => 'Das Feld :attribute muss weniger als :value Zeichen haben.', ], - 'mimes' => ':attribute muss eine Datei des Typs :values sein.', - 'mimetypes' => ':attribute muss eine Datei vom Typ: :values sein.', - 'min' => [ - 'numeric' => ':attribute muss kleiner als :min sein.', - 'file' => ':attribute muss mindestens :min Kilobyte groß sein.', - 'string' => ':attribute benötigt mindestens :min Zeichen.', - 'array' => ':attribute muss mindestens :min Elemente enthalten.', + 'lte' => [ + 'array' => 'Das Feld :attribute darf nicht mehr als :value Elemente haben.', + 'file' => 'Das Feld :attribute muss kleiner oder gleich :value Kilobytes sein.', + 'numeric' => 'Das Feld :attribute muss kleiner oder gleich :value sein.', + 'string' => 'Das Feld :attribute muss weniger oder gleich :value Zeichen haben.', ], - 'starts_with' => ':attribute muss mit einem der folgenden Werte beginnen: :values.', - 'ends_with' => ':attribute muss mit einem der folgenden Werte enden: :values.', - - 'not_in' => 'Auswahl :attribute ist ungültig.', - 'numeric' => ':attribute muss eine Zahl sein.', - 'present' => ':attribute muss vorhanden sein.', - 'valid_regex' => 'Dies ist kein gültiger Regex-Ausdruck. ', - 'regex' => ':attribute Format ungültig.', - 'required' => ':attribute Feld muss ausgefüllt sein.', - 'required_if' => ':attribute wird benötigt, wenn :other :value entspricht.', - 'required_unless' => ':attribute ist erforderlich, es sei denn :other ist in :values.', - 'required_with' => ':attribute wird benötigt wenn :value ausgewählt ist.', - 'required_with_all' => ':attribute field ist erforderlich, wenn :values vorhanden sind.', - 'required_without' => ':attribute wird benötigt wenn :value nicht ausgewählt ist.', + 'mac_address' => 'Das Feld :attribute muss eine gültige MAC-Adresse sein.', + 'max' => [ + 'array' => 'Das Feld :attribute darf nicht mehr als :max Elemente haben.', + 'file' => 'Das Feld :attribute darf nicht größer als :max Kilobytes sein.', + 'numeric' => 'Das Feld :attribute darf nicht größer als :max sein.', + 'string' => 'Das Feld :attribute darf nicht mehr als :max Zeichen haben.', + ], + 'max_digits' => 'Das Feld :attribute darf nicht mehr als :max Ziffern haben.', + 'mimes' => 'Das Feld :attribute muss eine Datei vom Typ :values sein.', + 'mimetypes' => 'Das Feld :attribute muss eine Datei vom Typ :values sein.', + 'min' => [ + 'array' => 'Das Feld :attribute muss mindestens :min Elemente haben.', + 'file' => 'Das Feld :attribute muss mindestens :min Kilobytes groß sein.', + 'numeric' => 'Das Feld :attribute muss mindestens :min sein.', + 'string' => 'Das Feld :attribute muss mindestens :min Zeichen haben.', + ], + 'min_digits' => 'Das Feld :attribute muss mindestens :min Ziffern haben.', + 'missing' => 'Das Feld :attribute muss fehlen.', + 'missing_if' => 'Das Feld :attribute muss fehlen, wenn :other :value ist.', + 'missing_unless' => 'Das Feld :attribute muss fehlen, es sei denn :other ist :value.', + 'missing_with' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden ist.', + 'missing_with_all' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden sind.', + 'multiple_of' => 'Das Feld :attribute muss ein Vielfaches von :value sein.', + 'not_in' => 'Auswahl :attribute ist ungültig.', + 'not_regex' => 'Das Format des Feldes :attribute ist ungültig.', + 'numeric' => 'Das Feld :attribute muss eine Zahl sein.', + 'password' => [ + 'letters' => 'Das Feld :attribute muss mindestens einen Buchstaben enthalten.', + 'mixed' => 'Das Feld :attribute muss mindestens einen Groß- und einen Kleinbuchstaben enthalten.', + 'numbers' => 'Das Feld :attribute muss mindestens eine Zahl enthalten.', + 'symbols' => 'Das Feld :attribute muss mindestens ein Symbol enthalten.', + 'uncompromised' => 'Das angegebene :attribute ist in einem Datenleck aufgetaucht. Bitte wählen Sie ein anderes :attribute.', + ], + 'present' => ':attribute muss vorhanden sein.', + 'present_if' => 'Das Feld :attribute muss vorhanden sein, wenn :other :value ist.', + 'present_unless' => 'Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.', + 'present_with' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden ist.', + 'present_with_all' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden sind.', + 'prohibited' => 'Das Feld :attribute ist verboten.', + 'prohibited_if' => 'Das Feld :attribute ist verboten, wenn :other :value ist.', + 'prohibited_unless' => 'Das Feld :attribute ist verboten, es sei denn, :other befindet sich in :values.', + 'prohibits' => 'Das Feld :attribute verhindert, dass :other vorhanden ist.', + 'regex' => 'Das Format des Feldes :attribute ist ungültig.', + 'required' => ':attribute Feld muss ausgefüllt sein.', + 'required_array_keys' => 'Das Feld :attribute muss Einträge für folgende Werte enthalten: :values.', + 'required_if' => ':attribute wird benötigt, wenn :other :value entspricht.', + 'required_if_accepted' => 'Das Feld :attribute ist erforderlich, wenn :other akzeptiert wird.', + 'required_if_declined' => 'Das Feld :attribute ist erforderlich, wenn :other abgelehnt wird.', + 'required_unless' => ':attribute ist erforderlich, es sei denn :other ist in :values.', + 'required_with' => ':attribute wird benötigt wenn :value ausgewählt ist.', + 'required_with_all' => 'Das Feld :attribute ist erforderlich, wenn :values vorhanden sind.', + 'required_without' => ':attribute wird benötigt wenn :value nicht ausgewählt ist.', 'required_without_all' => 'Das: Attributfeld ist erforderlich, wenn keine der folgenden Werte vorhanden sind.', - 'same' => ':attribute und :other müssen übereinstimmen.', - 'size' => [ - 'numeric' => ':attribute muss :size groß sein.', - 'file' => ':attribute muss :size Kilobyte groß sein.', - 'string' => ':attribute muss :size Zeichen haben.', - 'array' => 'Das Attribut muss Folgendes enthalten: Größenelemente.', + 'same' => 'Das Feld :attribute muss mit :other übereinstimmen.', + 'size' => [ + 'array' => 'Das Feld :attribute muss :size Elemente enthalten.', + 'file' => 'Das Feld :attribute muss :size Kilobytes groß sein.', + 'numeric' => 'Das Feld :attribute muss :size sein.', + 'string' => 'Das Feld :attribute muss :size Zeichen enthalten.', ], + 'starts_with' => 'Das Feld :attribute muss mit einem der folgenden Werte beginnen: :values.', 'string' => 'Das Attribut muss eine Zeichenfolge sein.', - 'timezone' => ':attribute muss eine gültige Zone sein.', 'two_column_unique_undeleted' => ':attribute muss in :table1 und :table2 einzigartig sein. ', - 'unique' => ':attribute ist bereits vergeben.', - 'uploaded' => ':attribute konnte nicht hochgeladen werden.', - 'url' => ':attribute Format ungültig.', 'unique_undeleted' => 'Die Variable :attribute muss eindeutig sein.', 'non_circular' => 'Das :attribute darf keinen Zirkelbezug ergeben.', 'not_array' => ':attribute darf kein Array sein.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Das Passwort muss mindestens eine Zahl beinhalten.', 'case_diff' => 'Das Passwort muss Groß- und Kleinschreibung beinhalten.', 'symbols' => 'Das Passwort muss Sonderzeichen beinhalten.', - 'gte' => [ - 'numeric' => 'Wert darf nicht negativ sein' - ], - 'checkboxes' => ':attribute enthält ungültige Optionen.', - 'radio_buttons' => ':attribute ist ungültig.', - + 'timezone' => 'Das Feld :attribute muss eine gültige Zeitzone sein.', + 'unique' => ':attribute ist bereits vergeben.', + 'uploaded' => ':attribute konnte nicht hochgeladen werden.', + 'uppercase' => 'Das Feld :attribute muss in Großbuchstaben sein.', + 'url' => 'Das Feld :attribute muss eine gültige URL sein.', + 'ulid' => 'Das Feld :attribute muss eine gültige ULID sein.', + 'uuid' => 'Das Feld :attribute muss eine gültige UUID sein.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', 'last_audit_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT hh:mm:ss sein', 'expiration_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', 'start_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', 'end_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', - - ], - + 'checkboxes' => ':attribute enthält ungültige Optionen.', + 'radio_buttons' => ':attribute ist ungültig.', + 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', + + 'generic' => [ + 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', + 'required' => 'Dieses Feld ist erforderlich', + 'email' => 'Bitte geben Sie eine gültige E-Mail-Adresse ein', + ], + + ]; diff --git a/resources/lang/el-GR/account/general.php b/resources/lang/el-GR/account/general.php index 081eb271c0..11d1132980 100644 --- a/resources/lang/el-GR/account/general.php +++ b/resources/lang/el-GR/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Προσωπικά Κλειδιά Api', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Η βάση url σας API βρίσκεται στο:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Τα API tokens έχουν οριστεί να λήγουν:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/el-GR/admin/accessories/message.php b/resources/lang/el-GR/admin/accessories/message.php index cafc600c66..295f11a455 100644 --- a/resources/lang/el-GR/admin/accessories/message.php +++ b/resources/lang/el-GR/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Το αξεσουάρ δεν έχει ελεγχθεί, δοκιμάστε ξανά', 'success' => 'Το αξεσουάρ ολοκληρώθηκε με επιτυχία.', 'unavailable' => 'Το αξεσουάρ δεν είναι διαθέσιμο για ολοκλήρωση της παραγγελίας. Ελέγξτε την διαθέσιμη ποσότητα', - 'user_does_not_exist' => 'Αυτός ο χρήστης δεν είναι έγκυρος. Παρακαλώ δοκιμάστε ξανά.' + 'user_does_not_exist' => 'Αυτός ο χρήστης δεν είναι έγκυρος. Παρακαλώ δοκιμάστε ξανά.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/el-GR/admin/consumables/general.php b/resources/lang/el-GR/admin/consumables/general.php index f14b68f1f9..dbe705d9d8 100644 --- a/resources/lang/el-GR/admin/consumables/general.php +++ b/resources/lang/el-GR/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Απομένουν', 'total' => 'Σύνολο', 'update' => 'Ενημέρωση αναλώσιμων', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/el-GR/admin/consumables/message.php b/resources/lang/el-GR/admin/consumables/message.php index 4fc714b928..68f64a1a47 100644 --- a/resources/lang/el-GR/admin/consumables/message.php +++ b/resources/lang/el-GR/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Το αναλώσιμο δεν υπάρχει.', 'create' => array( diff --git a/resources/lang/el-GR/admin/custom_fields/message.php b/resources/lang/el-GR/admin/custom_fields/message.php index 5d13f79b92..d76b2d6635 100644 --- a/resources/lang/el-GR/admin/custom_fields/message.php +++ b/resources/lang/el-GR/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Αυτό το πεδίο δεν υπάρχει.', 'already_added' => 'Το πεδίο έχει ήδη προσθέσει', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Το πεδία δεν δημιουργήθηκαν, παρακαλώ προσπαθήστε ξανά.', diff --git a/resources/lang/el-GR/admin/hardware/message.php b/resources/lang/el-GR/admin/hardware/message.php index 0bf485eab1..a248d108d5 100644 --- a/resources/lang/el-GR/admin/hardware/message.php +++ b/resources/lang/el-GR/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: Το περιουσιακό αυτό στοιχείο έχει επισημανθεί ως επί του παρόντος undeployable. - Εάν αυτή η κατάσταση έχει αλλάξει, παρακαλούμε να ενημερώσετε την κατάσταση των περιουσιακών στοιχείων.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'To πάγιο δεν υπάρχει.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Ορισμένα στοιχεία δεν έχουν εισαχθεί σωστά.', 'errorDetail' => 'Τα παρακάτω στοιχεία δεν εισήχθησαν εξαιτίας σφαλμάτων.', 'success' => 'Το αρχείο σας έχει εισαχθεί', diff --git a/resources/lang/el-GR/admin/licenses/general.php b/resources/lang/el-GR/admin/licenses/general.php index cb2691ea62..8adfd56466 100644 --- a/resources/lang/el-GR/admin/licenses/general.php +++ b/resources/lang/el-GR/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Πληροφορίες άδειας', 'license_seats' => 'Άδειες Θέσεις', 'seat' => 'Εδρα', + 'seat_count' => 'Seat :count', 'seats' => 'Καθίσματα', 'software_licenses' => 'Άδειες λογισμικού', 'user' => 'Χρήστης', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Checkin Όλα Τα Καθίσματα', - 'modal' => 'Αυτό θα ενεργοποιήσει τον έλεγχο μιας θέσης. "Αυτή η ενέργεια θα ελέγξει όλα τα :checkedout_seats_count καθίσματα για αυτήν την άδεια.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Checkin ΟΛΕΣ τις θέσεις για αυτή την άδεια χρήσης τόσο από τους χρήστες όσο και από τα περιουσιακά στοιχεία', 'disabled_tooltip' => 'Αυτό είναι απενεργοποιημένο, επειδή δεν υπάρχουν καθίσματα επί του παρόντος ελεγμένο', 'disabled_tooltip_reassignable' => 'Αυτό είναι απενεργοποιημένο επειδή η Άδεια δεν είναι επανασχεδιασμένη', 'success' => 'Η άδεια ελέγχθηκε με επιτυχία! "Όλες οι άδειες ελέγχθηκαν επιτυχώς!', - 'log_msg' => 'Έγινε έλεγχος μέσω μαζικού checkout άδειας χρήσης στο GUI άδειας', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/el-GR/admin/licenses/message.php b/resources/lang/el-GR/admin/licenses/message.php index e6790e0b1c..4b999e298e 100644 --- a/resources/lang/el-GR/admin/licenses/message.php +++ b/resources/lang/el-GR/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Παρουσιάστηκε πρόβλημα κατά την εξακρίβωση της άδειας. ΠΑΡΑΚΑΛΩ προσπαθησε ξανα.', 'success' => 'Η άδεια εκτυπώθηκε με επιτυχία', 'not_enough_seats' => 'Δεν υπάρχουν αρκετές θέσεις άδειας χρήσης για ολοκλήρωση της παραγγελίας', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/el-GR/admin/models/message.php b/resources/lang/el-GR/admin/models/message.php index 48af07b2d2..af43cc2162 100644 --- a/resources/lang/el-GR/admin/models/message.php +++ b/resources/lang/el-GR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ΠΡΟΣΟΧΗ! Το μοντέλο στοιχείων ενεργητικού για αυτό το στοιχείο δεν είναι έγκυρο ή λείπει!', 'no_association_fix' => 'Αυτό θα σπάσει τα πράγματα με περίεργους και φρικτούς τρόπους. Επεξεργαστείτε αυτό το στοιχείο τώρα για να το αντιστοιχίσετε ένα μοντέλο.', 'assoc_users' => 'Αυτό το μοντέλο συσχετίζεται επί του παρόντος με ένα ή περισσότερα στοιχεία και δεν μπορεί να διαγραφεί. Διαγράψτε τα στοιχεία και, στη συνέχεια, δοκιμάστε ξανά τη διαγραφή.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Το μοντέλο δεν δημιουργήθηκε, παρακαλώ προσπαθήστε ξανά.', diff --git a/resources/lang/el-GR/admin/settings/general.php b/resources/lang/el-GR/admin/settings/general.php index 1049dda49d..17e0b7cb90 100644 --- a/resources/lang/el-GR/admin/settings/general.php +++ b/resources/lang/el-GR/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Αυτό ελέγχει μόνο ότι το LDAP μπορεί να συγχρονιστεί σωστά. Εάν το Authentication στο LDAP δεν είναι σωστό, οι χρήστες ενδέχεται να μην μπορούν να συνδεθούν. ΠΡΩΤΑ ΑΠΟΘΗΚΕΥΣΤΕ ΤΙΣ ΡΥΘΜΙΣΕΙΣ ΣΑΣ ΣΤΟ LDAP.', 'ldap_manager' => 'Διαχειριστής LDAP', 'ldap_server' => 'LDAP Server', - 'ldap_server_help' => 'Αυτό θα πρέπει να ξεκινά με το ldap: // (για μη κρυπτογραφημένο ή TLS) ή ldaps: // (για SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Πιστοποίηση πιστοποιητικού SSL για LDAP', 'ldap_server_cert_ignore' => 'Να επιτρέπεται η μη έγκυρη πιστοποίηση SSL', 'ldap_server_cert_help' => 'Επιλέξτε αυτό το πλαίσιο ελέγχου εάν χρησιμοποιείτε έναν αυτόματο έλεγχο SSL και θέλετε να αποδεχτείτε ένα μη έγκυρο πιστοποιητικό SSL.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Δοκιμή LDAP', 'ldap_test_sync' => 'Δοκιμή Συγχρονισμού Ldap', 'license' => 'Άδειες λογισμικού', - 'load_remote' => 'Χρήση Gravatar', - 'load_remote_help_text' => 'Απενεργοποιήστε αυτό το πλαίσιο αν η εγκατάστασή σας δεν μπορεί να φορτώσει δέσμες ενεργειών από το εξωτερικό internet. Αυτό θα αποτρέψει το Snipe-IT από το να προσπαθήσει να φορτώσει εικόνες από το Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Προσπάθειες Σύνδεσης', 'login_attempt' => 'Προσπάθεια Σύνδεσης', 'login_ip' => 'Διεύθυνση IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'προαιρετικός', 'per_page' => 'Αποτελέσματα ανά σελίδα', 'php' => 'Έκδοση PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, σύστημα, πληροφορίες', 'php_overview_help' => 'Πληροφορίες συστήματος PHP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/el-GR/button.php b/resources/lang/el-GR/button.php index ba53e0ceb9..807565475d 100644 --- a/resources/lang/el-GR/button.php +++ b/resources/lang/el-GR/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin Όλων / Διαγραφή Χρήστη', 'delete' => 'Διαγραφή', 'edit' => 'Επεξεργασία', + 'clone' => 'Clone', 'restore' => 'Επαναφορά', 'remove' => 'Αφαίρεση', 'request' => 'Αίτημα', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Προσθήκη Συντήρησης', 'append' => 'Προσάρτηση', 'new' => 'Νεό', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/el-GR/general.php b/resources/lang/el-GR/general.php index fc1b5bf154..6cc291397b 100644 --- a/resources/lang/el-GR/general.php +++ b/resources/lang/el-GR/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Εξαρτήματα |:count Εξαρτήματα', 'consumables' => ':count Αναλώσιμα |:count Αναλώσιμα', 'components' => ':count Εξαρτήματα |:count Εξαρτήματα', - ] + ], + 'more_info' => 'Περισσότερες Πληροφορίες', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Λήξη', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/el-GR/mail.php b/resources/lang/el-GR/mail.php index 044030c28a..fd9951f68f 100644 --- a/resources/lang/el-GR/mail.php +++ b/resources/lang/el-GR/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Έχω διαβάσει και συμφωνώ με τους όρους χρήσης, και έχω λάβει αυτό το στοιχείο.', 'inventory_report' => 'Έκθεση Αποθέματος', 'item' => 'Αντικείμενο:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Υπάρχει :count άδεια που λήγει στις επόμενες :threshold ημέρες."Υπάρχουν :count άδειες που λήγουν στις επόμενες :threshold ημέρες.', 'link_to_update_password' => 'Κάντε κλικ στον παρακάτω σύνδεσμο για να ενημερώσετε τον κωδικό: web:', 'login' => 'Σύνδεση:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Υπάρχει :count περιουσιακό στοιχείο που έρχεται για έλεγχο μέσα σε :threshold days.°C. Υπάρχουν :count περιουσιακά στοιχεία που έρχονται για έλεγχο εντός :threshold ημερών.', 'user' => 'Χρήστης', 'username' => 'Όνομα χρήστη', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Καλώς ήρθατε, %name', 'welcome_to' => 'Καλώς ήλθατε στο!', 'your_assets' => 'Προβολή Των Αντικειμένων Σας', 'your_credentials' => 'Τα διαπιστευτήρια σας Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/el-GR/validation.php b/resources/lang/el-GR/validation.php index 6f631a58f7..fd93f6d971 100644 --- a/resources/lang/el-GR/validation.php +++ b/resources/lang/el-GR/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Το: χαρακτηριστικό πρέπει να γίνει δεκτό.', - 'active_url' => 'Η: το χαρακτηριστικό δεν έχει έγκυρη διεύθυνση URL.', - 'after' => 'Η ιδιότητα: πρέπει να είναι ημερομηνία μετά την ημερομηνία.', - 'after_or_equal' => 'Η ιδιότητα: πρέπει να είναι ημερομηνία μετά ή ίσο με: ημερομηνία.', - 'alpha' => 'Η: το χαρακτηριστικό μπορεί να περιέχει μόνο γράμματα.', - 'alpha_dash' => 'Το χαρακτηριστικό:: μπορεί να περιέχει μόνο γράμματα, αριθμούς και παύλες.', - 'alpha_num' => 'Το χαρακτηριστικό:: μπορεί να περιέχει μόνο γράμματα και αριθμούς.', - 'array' => 'Το χαρακτηριστικό πρέπει να είναι ένας πίνακας.', - 'before' => 'Η ιδιότητα: πρέπει να είναι μια ημερομηνία πριν: η ημερομηνία.', - 'before_or_equal' => 'Η ιδιότητα: πρέπει να είναι ημερομηνία πριν ή ίσο με: ημερομηνία.', - 'between' => [ - 'numeric' => 'Το χαρακτηριστικό πρέπει να είναι μεταξύ: min - :max.', - 'file' => 'Το χαρακτηριστικό πρέπει να είναι μεταξύ: min και: max kilobytes.', - 'string' => 'Η ιδιότητα: πρέπει να είναι μεταξύ: min και max χαρακτήρες.', - 'array' => 'Η ιδιότητα: πρέπει να έχει μεταξύ: min και max στοιχεία.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Το πεδίο ιδιοτήτων πρέπει να είναι αληθές ή ψευδές.', - 'confirmed' => 'Η επιβεβαίωση του χαρακτηριστικού δεν αντιστοιχεί.', - 'date' => 'Το χαρακτηριστικό: δεν είναι έγκυρη.', - 'date_format' => 'Το χαρακτηριστικό: δεν αντιστοιχεί στη μορφή: format.', - 'different' => 'Το χαρακτηριστικό: και: άλλα πρέπει να είναι διαφορετικά.', - 'digits' => 'Το χαρακτηριστικό: πρέπει να είναι: ψηφία ψηφία.', - 'digits_between' => 'Το χαρακτηριστικό: πρέπει να είναι μεταξύ: min και max.', - 'dimensions' => 'Το χαρακτηριστικό:: έχει μη έγκυρες διαστάσεις εικόνας.', - 'distinct' => 'Το πεδίο ιδιοτήτων: έχει διπλή τιμή.', - 'email' => 'Το χαρακτηριστικό: πρέπει να είναι έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου.', - 'exists' => 'Το επιλεγμένο: χαρακτηριστικό δεν είναι έγκυρο.', - 'file' => 'Το χαρακτηριστικό πρέπει να είναι ένα αρχείο.', - 'filled' => 'Το πεδίο ιδιοτήτων πρέπει να έχει τιμή.', - 'image' => 'Το: χαρακτηριστικό πρέπει να είναι μια εικόνα.', + 'boolean' => 'Το πεδίο ιδιοτήτων πρέπει να είναι αληθές ή ψευδές.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Το πεδίο ιδιοτήτων: έχει διπλή τιμή.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Το επιλεγμένο: χαρακτηριστικό δεν είναι έγκυρο.', + 'exists' => 'Το επιλεγμένο: χαρακτηριστικό δεν είναι έγκυρο.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Το πεδίο ιδιοτήτων πρέπει να έχει τιμή.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Η τιμή για :fieldname δεν μπορεί να είναι μηδενική.', - 'in' => 'Το χαρακτηριστικό επιλεγμένο: δεν είναι έγκυρο.', - 'in_array' => 'Το πεδίο ιδιοτήτων: δεν υπάρχει σε: άλλο.', - 'integer' => 'Το χαρακτηριστικό: πρέπει να είναι ένας ακέραιος αριθμός.', - 'ip' => 'Το χαρακτηριστικό: πρέπει να είναι μια έγκυρη διεύθυνση IP.', - 'ipv4' => 'Το χαρακτηριστικό: πρέπει να είναι μια έγκυρη διεύθυνση IPv4.', - 'ipv6' => 'Το χαρακτηριστικό: πρέπει να είναι μια έγκυρη διεύθυνση IPv6.', - 'is_unique_department' => 'Το :attribute πρέπει να είναι μοναδικό σε αυτή την Τοποθεσία Εταιρείας', - 'json' => 'Το χαρακτηριστικό: πρέπει να είναι μια έγκυρη συμβολοσειρά JSON.', - 'max' => [ - 'numeric' => 'Η ιδιότητα: δεν μπορεί να είναι μεγαλύτερη από: max.', - 'file' => 'Η ιδιότητα: δεν μπορεί να είναι μεγαλύτερη από: μέγιστα kilobyte.', - 'string' => 'Το χαρακτηριστικό:: δεν μπορεί να είναι μεγαλύτερο από: max χαρακτήρες.', - 'array' => 'Το χαρακτηριστικό:: δεν μπορεί να έχει περισσότερα από: max στοιχεία.', + 'in' => 'Το χαρακτηριστικό επιλεγμένο: δεν είναι έγκυρο.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Το χαρακτηριστικό: πρέπει να είναι ένα αρχείο τύπου:: τιμές.', - 'mimetypes' => 'Το χαρακτηριστικό: πρέπει να είναι ένα αρχείο τύπου:: τιμές.', - 'min' => [ - 'numeric' => 'Η ιδιότητα: πρέπει να είναι τουλάχιστον: min.', - 'file' => 'Το χαρακτηριστικό πρέπει να είναι τουλάχιστον: min kilobytes.', - 'string' => 'Το χαρακτηριστικό: πρέπει να είναι τουλάχιστον: min χαρακτήρες.', - 'array' => 'Το χαρακτηριστικό: πρέπει να έχει τουλάχιστον: λεπτά στοιχεία.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'Το :attribute πρέπει να ξεκινά με ένα από τα εξής: :values.', - 'ends_with' => 'Το :attribute πρέπει να τελειώνει με ένα από τα εξής: :values.', - - 'not_in' => 'Το επιλεγμένο: χαρακτηριστικό δεν είναι έγκυρο.', - 'numeric' => 'Το χαρακτηριστικό πρέπει να είναι ένας αριθμός.', - 'present' => 'Πρέπει να υπάρχει το πεδίο ιδιοτήτων: attribute.', - 'valid_regex' => 'Μη έγκυρη συμβολοσειρά χαρακτήρων ελέγχου πρότυπου. ', - 'regex' => 'Η μορφή του χαρακτηριστικού είναι μη έγκυρη.', - 'required' => 'Το πεδίο ιδιοτήτων: απαιτείται.', - 'required_if' => 'Το πεδίο ιδιοτήτων: απαιτείται όταν: το άλλο είναι: τιμή.', - 'required_unless' => 'Το πεδίο ιδιοτήτων: απαιτείται εκτός εάν: το άλλο είναι σε: τιμές.', - 'required_with' => 'Το πεδίο ιδιοτήτων: απαιτείται όταν υπάρχουν: τιμές.', - 'required_with_all' => 'Το πεδίο ιδιοτήτων: απαιτείται όταν υπάρχουν: τιμές.', - 'required_without' => 'Το πεδίο ιδιοτήτων: απαιτείται όταν: δεν υπάρχουν τιμές.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Το επιλεγμένο: χαρακτηριστικό δεν είναι έγκυρο.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Πρέπει να υπάρχει το πεδίο ιδιοτήτων: attribute.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Το πεδίο ιδιοτήτων: απαιτείται.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Το πεδίο ιδιοτήτων: απαιτείται όταν: το άλλο είναι: τιμή.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Το πεδίο ιδιοτήτων: απαιτείται εκτός εάν: το άλλο είναι σε: τιμές.', + 'required_with' => 'Το πεδίο ιδιοτήτων: απαιτείται όταν υπάρχουν: τιμές.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Το πεδίο ιδιοτήτων: απαιτείται όταν: δεν υπάρχουν τιμές.', 'required_without_all' => 'Το πεδίο ιδιοτήτων είναι απαραίτητο όταν δεν υπάρχουν καμία από τις τιμές.', - 'same' => 'Το χαρακτηριστικό: και: άλλα πρέπει να ταιριάζουν.', - 'size' => [ - 'numeric' => 'Το χαρακτηριστικό: πρέπει να είναι: μέγεθος.', - 'file' => 'Το χαρακτηριστικό: πρέπει να είναι: kilobytes μεγέθους.', - 'string' => 'Το χαρακτηριστικό: πρέπει να είναι: χαρακτήρες μεγέθους.', - 'array' => 'Το χαρακτηριστικό: πρέπει να περιέχει: στοιχεία μεγέθους.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Το χαρακτηριστικό πρέπει να είναι μια συμβολοσειρά.', - 'timezone' => 'Το χαρακτηριστικό: πρέπει να είναι μια έγκυρη ζώνη.', 'two_column_unique_undeleted' => 'Το :attribute πρέπει να είναι μοναδικό σε :table1 και :table2. ', - 'unique' => 'Το χαρακτηριστικό: έχει ήδη ληφθεί.', - 'uploaded' => 'Το χαρακτηριστικό:: απέτυχε να μεταφορτωθεί.', - 'url' => 'Η μορφή του χαρακτηριστικού είναι μη έγκυρη.', 'unique_undeleted' => 'Το :χαρακτηριστικό πρέπει να είναι μοναδικό.', 'non_circular' => 'Το χαρακτηριστικό: δεν πρέπει να δημιουργήσει μια κυκλική αναφορά.', 'not_array' => ':attribute δεν μπορεί να είναι ένας πίνακας.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον έναν αριθμό.', 'case_diff' => 'Ο κωδικός πρόσβασης πρέπει να χρησιμοποιεί κεφαλαία μικτά.', 'symbols' => 'Ο κωδικός πρόσβασης πρέπει να περιέχει σύμβολα.', - 'gte' => [ - 'numeric' => 'Η τιμή δεν μπορεί να είναι αρνητική' - ], - 'checkboxes' => ':attribute περιέχει μη έγκυρες επιλογές.', - 'radio_buttons' => ':attribute δεν είναι έγκυρο.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Το χαρακτηριστικό: έχει ήδη ληφθεί.', + 'uploaded' => 'Το χαρακτηριστικό:: απέτυχε να μεταφορτωθεί.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'Το χαρακτηριστικό: πρέπει να είναι έγκυρη ημερομηνία σε μορφή YYYY-MM-DD', 'last_audit_date.date_format' => 'Το :attribute πρέπει να είναι έγκυρη ημερομηνία σε μορφή YYYY-MM-DD hh:mm:ss', 'expiration_date.date_format' => 'Το χαρακτηριστικό: πρέπει να είναι έγκυρη ημερομηνία σε μορφή YYYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'Το χαρακτηριστικό: πρέπει να είναι έγκυρη ημερομηνία σε μορφή YYYY-MM-DD', 'start_date.date_format' => 'Το χαρακτηριστικό: πρέπει να είναι έγκυρη ημερομηνία σε μορφή YYYY-MM-DD', 'end_date.date_format' => 'Το χαρακτηριστικό: πρέπει να είναι έγκυρη ημερομηνία σε μορφή YYYY-MM-DD', - - ], - + 'checkboxes' => ':attribute περιέχει μη έγκυρες επιλογές.', + 'radio_buttons' => ':attribute δεν είναι έγκυρο.', + 'invalid_value_in_field' => 'Μη έγκυρη τιμή που περιλαμβάνεται σε αυτό το πεδίο', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Μη έγκυρη τιμή που περιλαμβάνεται σε αυτό το πεδίο', + + 'generic' => [ + 'invalid_value_in_field' => 'Μη έγκυρη τιμή που περιλαμβάνεται σε αυτό το πεδίο', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/en-GB/account/general.php b/resources/lang/en-GB/account/general.php index 556f92db0c..e330546529 100644 --- a/resources/lang/en-GB/account/general.php +++ b/resources/lang/en-GB/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base URL is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/en-GB/admin/accessories/message.php b/resources/lang/en-GB/admin/accessories/message.php index 064dd56cc9..54b0f2dd5c 100644 --- a/resources/lang/en-GB/admin/accessories/message.php +++ b/resources/lang/en-GB/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/en-GB/admin/consumables/general.php b/resources/lang/en-GB/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/en-GB/admin/consumables/general.php +++ b/resources/lang/en-GB/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/en-GB/admin/consumables/message.php b/resources/lang/en-GB/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/en-GB/admin/consumables/message.php +++ b/resources/lang/en-GB/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/en-GB/admin/custom_fields/message.php b/resources/lang/en-GB/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/en-GB/admin/custom_fields/message.php +++ b/resources/lang/en-GB/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/en-GB/admin/hardware/message.php b/resources/lang/en-GB/admin/hardware/message.php index 3af3dbc6e3..9e7410d47d 100644 --- a/resources/lang/en-GB/admin/hardware/message.php +++ b/resources/lang/en-GB/admin/hardware/message.php @@ -52,6 +52,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/en-GB/admin/licenses/general.php b/resources/lang/en-GB/admin/licenses/general.php index cf12a382ad..6feb8de61b 100644 --- a/resources/lang/en-GB/admin/licenses/general.php +++ b/resources/lang/en-GB/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Check In All Seats', - 'modal' => 'This will action check in one seat. | This action will check in all :checkedout_seats_count seats for this licence.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Check in ALL seats for this licence from both users and assets', 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', 'disabled_tooltip_reassignable' => 'This is disabled because the Licence is not re-assignable', 'success' => 'Licence successfully checked in! | All licences were successfully checked in!', - 'log_msg' => 'Checked in via bulk licence checkout in licence GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ @@ -46,6 +47,6 @@ return array( ], ], - 'below_threshold' => 'There are only :remaining_count seats left for this license with a minimum quantity of :min_amt. You may want to consider purchasing more seats.', + 'below_threshold' => 'There are only :remaining_count seats left for this licence with a minimum quantity of :min_amt. You may want to consider purchasing more seats.', 'below_threshold_short' => 'This item is below the minimum required quantity.', ); diff --git a/resources/lang/en-GB/admin/licenses/message.php b/resources/lang/en-GB/admin/licenses/message.php index 2ba5b4952f..02bf499474 100644 --- a/resources/lang/en-GB/admin/licenses/message.php +++ b/resources/lang/en-GB/admin/licenses/message.php @@ -43,7 +43,9 @@ return array( 'checkout' => array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', - 'not_enough_seats' => 'Not enough license seats available for checkout', + 'not_enough_seats' => 'Not enough licence seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/en-GB/admin/models/message.php b/resources/lang/en-GB/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/en-GB/admin/models/message.php +++ b/resources/lang/en-GB/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/en-GB/admin/settings/general.php b/resources/lang/en-GB/admin/settings/general.php index 73cd5493f0..32eb51f298 100644 --- a/resources/lang/en-GB/admin/settings/general.php +++ b/resources/lang/en-GB/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/en-GB/admin/users/message.php b/resources/lang/en-GB/admin/users/message.php index 8bb5f85018..f4e6c0b56d 100644 --- a/resources/lang/en-GB/admin/users/message.php +++ b/resources/lang/en-GB/admin/users/message.php @@ -38,7 +38,7 @@ return array( 'delete' => 'There was an issue deleting the user. Please try again.', 'delete_has_assets' => 'This user has items assigned and could not be deleted.', 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', - 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', + 'delete_has_licenses_var' => 'This user still has a licence seats assigned. Please check it in first.|This user still has :count licence seats assigned. Please check them in first.', 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', diff --git a/resources/lang/en-GB/button.php b/resources/lang/en-GB/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/en-GB/button.php +++ b/resources/lang/en-GB/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index d274e6a54f..9b9197d3e5 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -180,7 +180,7 @@ return [ 'last_name' => 'Last Name', 'license' => 'License', 'license_report' => 'License Report', - 'licenses_available' => 'Licenses available', + 'licenses_available' => 'Licences available', 'licenses' => 'Licenses', 'list_all' => 'List All', 'loading' => 'Loading... please wait....', @@ -206,7 +206,7 @@ return [ 'new_password' => 'New Password', 'next' => 'Next', 'next_audit_date' => 'Next Audit Date', - 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', + 'next_audit_date_help' => 'If you use auditing in your organisation, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', 'no_email' => 'No email address associated with this user', 'last_audit' => 'Last Audit', @@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => 'Permission denied. You cannot update user information for superadmins on the demo.', 'pwd_reset_not_sent' => 'User is not activated, is LDAP synced, or does not have an email address', 'error_sending_email' => 'Error sending email', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Sad panda. You are not authorised to do the thing. Maybe return to the dashboard, or contact your administrator.', 'bulk' => [ 'delete' => [ @@ -545,10 +545,18 @@ return [ 'countable' => [ 'accessories' => ':count Accessory|:count Accessories', 'assets' => ':count Asset|:count Assets', - 'licenses' => ':count License|:count Licenses', - 'license_seats' => ':count License Seat|:count License Seats', + 'licenses' => ':count Licence|:count Licences', + 'license_seats' => ':count Licence Seat|:count Licence Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/en-GB/mail.php b/resources/lang/en-GB/mail.php index 759ff0f5e8..47937a087b 100644 --- a/resources/lang/en-GB/mail.php +++ b/resources/lang/en-GB/mail.php @@ -22,7 +22,7 @@ return [ 'Item_Request_Canceled' => 'Item Request Canceled', 'Item_Requested' => 'Item Requested', 'License_Checkin_Notification' => 'License checked in', - 'License_Checkout_Notification' => 'License checked out', + 'License_Checkout_Notification' => 'Licence checked out', 'Low_Inventory_Report' => 'Low Inventory Report', 'a_user_canceled' => 'A user has canceled an item request on the website', 'a_user_requested' => 'A user has requested an item on the website', @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/en-GB/validation.php b/resources/lang/en-GB/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/en-GB/validation.php +++ b/resources/lang/en-GB/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/en-ID/account/general.php b/resources/lang/en-ID/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/en-ID/account/general.php +++ b/resources/lang/en-ID/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/en-ID/admin/accessories/message.php b/resources/lang/en-ID/admin/accessories/message.php index f939369dd6..d384303573 100644 --- a/resources/lang/en-ID/admin/accessories/message.php +++ b/resources/lang/en-ID/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Aksesori belum diperiksa, silakan coba lagi', 'success' => 'Aksesori berhasil diperiksa.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Pengguna yang tidak valid. Silakan coba lagi.' + 'user_does_not_exist' => 'Pengguna yang tidak valid. Silakan coba lagi.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/en-ID/admin/consumables/general.php b/resources/lang/en-ID/admin/consumables/general.php index 3cc2dcc073..8e81b171b6 100644 --- a/resources/lang/en-ID/admin/consumables/general.php +++ b/resources/lang/en-ID/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Tersisa', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/en-ID/admin/consumables/message.php b/resources/lang/en-ID/admin/consumables/message.php index 61574c9cc2..decfe29c34 100644 --- a/resources/lang/en-ID/admin/consumables/message.php +++ b/resources/lang/en-ID/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable Tidak ada.', 'create' => array( diff --git a/resources/lang/en-ID/admin/custom_fields/message.php b/resources/lang/en-ID/admin/custom_fields/message.php index 5b287a9c04..fc72d7f2d0 100644 --- a/resources/lang/en-ID/admin/custom_fields/message.php +++ b/resources/lang/en-ID/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Bidang tersebut tidak tersedia.', 'already_added' => 'Bidang sudah ditambahkan', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Bidang gagal dibuat, silahkan coba lagi.', diff --git a/resources/lang/en-ID/admin/hardware/message.php b/resources/lang/en-ID/admin/hardware/message.php index 4896695986..4a2b41e575 100644 --- a/resources/lang/en-ID/admin/hardware/message.php +++ b/resources/lang/en-ID/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Peringatan:Aset ini telah ditandai karena saat ini tidak dapat dipasangkan lagi. Jika status ini telah berubah, harap perbarui status aset.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Aset tidak ada.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Beberapa item tidak diimpor dengan benar.', 'errorDetail' => 'Item berikut tidak diimpor karena kesalahan.', 'success' => 'File Anda telah diimpor', diff --git a/resources/lang/en-ID/admin/licenses/general.php b/resources/lang/en-ID/admin/licenses/general.php index d21f79477d..eb004f102a 100644 --- a/resources/lang/en-ID/admin/licenses/general.php +++ b/resources/lang/en-ID/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informasi lisensi', 'license_seats' => 'Lisensi seat', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seat', 'software_licenses' => 'Lisensi perangkat lunak', 'user' => 'Pengguna', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/en-ID/admin/licenses/message.php b/resources/lang/en-ID/admin/licenses/message.php index 05ab8230df..9e7bcfce5d 100644 --- a/resources/lang/en-ID/admin/licenses/message.php +++ b/resources/lang/en-ID/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Terjadi masalah saat menghapus lisensi. Silahkan coba lagi.', 'success' => 'Lisensi berhasil diperiksa', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/en-ID/admin/models/message.php b/resources/lang/en-ID/admin/models/message.php index 146ee18f40..571d203f82 100644 --- a/resources/lang/en-ID/admin/models/message.php +++ b/resources/lang/en-ID/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Model ini saat ini dikaitkan dengan satu atau lebih aset dan tidak dapat dihapus. Harap hapus asetnya, lalu coba hapus lagi. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model tidak dibuat, silahkan dicoba lagi.', diff --git a/resources/lang/en-ID/admin/settings/general.php b/resources/lang/en-ID/admin/settings/general.php index 502316b055..21461862f0 100644 --- a/resources/lang/en-ID/admin/settings/general.php +++ b/resources/lang/en-ID/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ini hanya tes yang bisa dilacak LDAP dengan benar. Jika pengesahan LDAP anda tidak benar, pengguna mungkin masih belum dapat masuk. ANDA HARUS MENYIMPAN PENGATURAN LDAP YANG ANDA PERBARUI PERTAMA.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'Server LDAP', - 'ldap_server_help' => 'Ini harus dimulai dengan ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validasi sertifikat SSL LDAP', 'ldap_server_cert_ignore' => 'Izinkan Sertifikat SSL yang tidak sah', 'ldap_server_cert_help' => 'Pilih kotak centang ini jika anda menggunakan sertifikat SSL yang masuk sendiri dan ingin menerima sertifikat SSL yang tidak sah.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Lisensi perangkat lunak', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'pilihan', 'per_page' => 'Hasil Per Halaman', 'php' => 'Versi PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/en-ID/button.php b/resources/lang/en-ID/button.php index 2d87a1e11b..fcaab0cbfa 100644 --- a/resources/lang/en-ID/button.php +++ b/resources/lang/en-ID/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Hapus', 'edit' => 'Sunting', + 'clone' => 'Clone', 'restore' => 'Kembalikan', 'remove' => 'Remove', 'request' => 'Permintaan', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Baru', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/en-ID/general.php b/resources/lang/en-ID/general.php index d9afdbea23..7a7ba7600c 100644 --- a/resources/lang/en-ID/general.php +++ b/resources/lang/en-ID/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Dapat dikonsumsi', 'country' => 'Negara', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Buat baru', 'created' => 'Item telah dibuat', 'created_asset' => 'buat aset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Aplikasi ini berjalan dalam mode produksi dengan debugging diaktifkan. Hal ini dapat mengekspos data sensitif jika aplikasi Anda dapat diakses oleh dunia luar. Nonaktifkan mode debug dengan menetapkan nilai APP_DEBUG value in your .env file to false.', 'delete' => 'Hapus', 'delete_confirm' => 'Apa Anda yakin untuk menghapus :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Dihapus', 'delete_seats' => 'Tempat dihapus', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Nama Pertama', 'first_name_format' => 'Nama Depan (jane@example.com)', 'files' => 'Berkas', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Hapus Gambar', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Unggah Gambar', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Impor', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Lisensi', 'list_all' => 'Tampilkan semua', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Fitur ini telah dinonaktifkan untuk instalasi demo.', 'location' => 'Lokasi', @@ -193,7 +193,7 @@ return [ 'logout' => 'Keluar', 'lookup_by_tag' => 'Mencari berdasarkan tag aset', 'maintenances' => 'Pemeliharaan', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Pabrikan', 'manufacturers' => 'Pabrikan', 'markdown' => 'Bidang ini mengizinkan penggunaan kode markup milik Github.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Cari', 'select_category' => 'Pilih kategori', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Pilih Departemen', 'select_depreciation' => 'Pilih Jenis Penyusutan', 'select_location' => 'Pilih lokasi', @@ -274,7 +274,7 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Tema', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Beberapa fitur dinonaktifkan untuk penginstalan ini.', 'site_name' => 'Nama Situs', 'state' => 'Negara', @@ -339,16 +339,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Memeriksa', @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Info Lengkap', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Berakhir', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/en-ID/mail.php b/resources/lang/en-ID/mail.php index 8b44a2b3fa..0697ac09f2 100644 --- a/resources/lang/en-ID/mail.php +++ b/resources/lang/en-ID/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Saya sudah baca dan menyetujui syarat penggunaan, dan sudah menerima item ini.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Ada :count lisensi yang masa berlakunya akan habis dalam :threshold hari.|Ada :count lisensi yang masa berlakunya akan habis dalam :threshold hari.', 'link_to_update_password' => 'Silahkan klik pada link berikut untuk memperbarui :web password:', 'login' => 'Masuk:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Pengguna', 'username' => 'Nama Pengguna', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Selamat datang :nama', 'welcome_to' => 'Selamat datang di :Web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Kredensial Snipe-IT Anda', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/en-ID/validation.php b/resources/lang/en-ID/validation.php index 8f562281a1..425b7445fb 100644 --- a/resources/lang/en-ID/validation.php +++ b/resources/lang/en-ID/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Atribut :harus diterima.', - 'active_url' => 'Atribut :bukan URL yang valid.', - 'after' => 'Atribut :harus tanggal setelah: tanggal.', - 'after_or_equal' => 'Atribut :harus tanggal setelah atau sama dengan: tanggal.', - 'alpha' => 'Atribut :hanya boleh berisi huruf.', - 'alpha_dash' => 'Atribut :hanya boleh berisi huruf, angka, dan tanda hubung.', - 'alpha_num' => 'Atribut :hanya boleh berisi huruf dan angka.', - 'array' => 'Atribut :harus berupa array.', - 'before' => 'Atribut :harus tanggal setelah: tanggal.', - 'before_or_equal' => 'Atribut :harus tanggal setelah atau sama dengan: tanggal.', - 'between' => [ - 'numeric' => 'Atribut harus antara :min - : max.', - 'file' => 'Atribut harus antara :min - : max.', - 'string' => 'Atribut harus antara :min - : maks karakter.', - 'array' => 'Atribut :harus antara :min dan : max item.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Atribut: harus benar atau salah.', - 'confirmed' => 'The: konfirmasi atribut tidak cocok.', - 'date' => 'Atribut :bukan Tanggal yang valid.', - 'date_format' => 'The: atribut tidak sesuai format: format.', - 'different' => 'The: atribut dan: lainnya harus berbeda.', - 'digits' => 'Atribut: harus: digit digit.', - 'digits_between' => 'Atribut :harus antara :min dan : max digit.', - 'dimensions' => 'Atribut: atribut memiliki dimensi gambar yang tidak benar.', - 'distinct' => 'The :Bidang atribut memiliki nilai duplikat.', - 'email' => 'Format atribut tidak valid.', - 'exists' => 'Yang dipilih: atribut tidak valid.', - 'file' => 'The: atribut harus berupa file.', - 'filled' => 'Bidang atribut harus memiliki nilai.', - 'image' => 'Atribut: harus berupa gambar.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :Bidang atribut memiliki nilai duplikat.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Yang dipilih: atribut tidak valid.', + 'exists' => 'Yang dipilih: atribut tidak valid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Bidang atribut harus memiliki nilai.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Yang dipilih :atribut tidak valid.', - 'in_array' => 'Bidang atribut :tidak ada di :lainnya.', - 'integer' => 'Atribut harus integer.', - 'ip' => 'Atribut :harus alamat IP yang valid.', - 'ipv4' => 'Atribut :harus alamat IPv4 yang valid.', - 'ipv6' => 'Atribut :harus alamat IPv6 yang valid.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Atribut: harus string JSON yang valid.', - 'max' => [ - 'numeric' => 'Atribut: mungkin tidak lebih besar dari: maks.', - 'file' => 'Atribut :mungkin tidak lebih besar dari :max kilobyte.', - 'string' => 'Atribut :mungkin tidak lebih besar dari :karakter maks.', - 'array' => 'Atribut :mungkin tidak lebih dari :item maks.', + 'in' => 'Yang dipilih :atribut tidak valid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Atribut harus berupa file tipe: :niai.', - 'mimetypes' => 'Atribut harus berupa file tipe: : nilai.', - 'min' => [ - 'numeric' => 'Atribut :minimal harus :min.', - 'file' => 'Atribut :minimal harus :min kilobyte.', - 'string' => 'Atribut :minimal harus :min karakter.', - 'array' => 'Atribut :setidaknya harus memiliki :item min.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Yang dipilih: atribut tidak valid.', - 'numeric' => 'The: atribut harus berupa angka.', - 'present' => 'Bidang atribut harus ada.', - 'valid_regex' => 'Ini bukan regex yang valid. ', - 'regex' => 'Format atribut tidak valid.', - 'required' => 'Bidang :attribute harus diisi.', - 'required_if' => 'Kolom :attribute wajib di-isi ketika :other nya :value.', - 'required_unless' => 'Kolom :attribute wajib di-isi kecuali :other nya :value.', - 'required_with' => 'Kolom :attribute wajib di-isi ketika :values terisi.', - 'required_with_all' => 'Kolom :attribute wajib di-isi ketika :values terisi.', - 'required_without' => 'Kolom :attribute wajib di-isi ketika :values kosong.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Yang dipilih: atribut tidak valid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Bidang atribut harus ada.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Bidang :attribute harus diisi.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Kolom :attribute wajib di-isi ketika :other nya :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Kolom :attribute wajib di-isi kecuali :other nya :value.', + 'required_with' => 'Kolom :attribute wajib di-isi ketika :values terisi.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Kolom :attribute wajib di-isi ketika :values kosong.', 'required_without_all' => 'Kolom :attribute wajib di-isi jika tidak ada :values yang terisi.', - 'same' => ':attribute dan :other harus mirip.', - 'size' => [ - 'numeric' => ':attribute harus :size.', - 'file' => ':attribute harus berukuran :size kilobytes.', - 'string' => ':attribute harus memiliki :size karakter.', - 'array' => ':attribute harus memiliki sebanyak :size item.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute haruslah sebuah string.', - 'timezone' => ':attribute haruslah sebuah zone yang valid.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute sudah pernah digunakan.', - 'uploaded' => ':attribute gagal di-upload.', - 'url' => 'Format :attribute tidaklah benar.', 'unique_undeleted' => ':attribute haruslah unik.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute sudah pernah digunakan.', + 'uploaded' => ':attribute gagal di-upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/en-US/account/general.php b/resources/lang/en-US/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/en-US/account/general.php +++ b/resources/lang/en-US/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/en-US/admin/accessories/message.php b/resources/lang/en-US/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/en-US/admin/accessories/message.php +++ b/resources/lang/en-US/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/en-US/admin/consumables/general.php b/resources/lang/en-US/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/en-US/admin/consumables/general.php +++ b/resources/lang/en-US/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/en-US/admin/consumables/message.php b/resources/lang/en-US/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/en-US/admin/consumables/message.php +++ b/resources/lang/en-US/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/en-US/admin/custom_fields/message.php b/resources/lang/en-US/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/en-US/admin/custom_fields/message.php +++ b/resources/lang/en-US/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/en-US/admin/hardware/message.php b/resources/lang/en-US/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/en-US/admin/hardware/message.php +++ b/resources/lang/en-US/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/en-US/admin/licenses/general.php b/resources/lang/en-US/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/en-US/admin/licenses/general.php +++ b/resources/lang/en-US/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/en-US/admin/licenses/message.php b/resources/lang/en-US/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/en-US/admin/licenses/message.php +++ b/resources/lang/en-US/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/en-US/admin/models/message.php b/resources/lang/en-US/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/en-US/admin/models/message.php +++ b/resources/lang/en-US/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/en-US/admin/settings/general.php b/resources/lang/en-US/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/en-US/admin/settings/general.php +++ b/resources/lang/en-US/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/en-US/button.php b/resources/lang/en-US/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/en-US/button.php +++ b/resources/lang/en-US/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 5b1d0e9b3c..255a1564de 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,7 +274,7 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', @@ -339,16 +339,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/en-US/localizations.php b/resources/lang/en-US/localizations.php index f1232dd138..f335ddc1b3 100644 --- a/resources/lang/en-US/localizations.php +++ b/resources/lang/en-US/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/en-US/mail.php b/resources/lang/en-US/mail.php index 759ff0f5e8..edb1683200 100644 --- a/resources/lang/en-US/mail.php +++ b/resources/lang/en-US/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/en-US/validation.php b/resources/lang/en-US/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/en-US/validation.php +++ b/resources/lang/en-US/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/es-CO/account/general.php b/resources/lang/es-CO/account/general.php index 7e637a3bef..2520857ca1 100644 --- a/resources/lang/es-CO/account/general.php +++ b/resources/lang/es-CO/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Claves API personales', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', - 'api_base_url' => 'La url base de tu API se encuentra en:', + 'personal_access_token' => 'Credencial de acceso personal', + 'personal_api_keys_success' => 'Clave API personal :key creada correctamente', + 'here_is_api_key' => 'Aquí tiene su nueva credencial de acceso personal. Esta es la única vez que se mostrará, así que no la pierda. Ahora puede utilizar esta credencial para realizar solicitudes a la API.', + 'api_key_warning' => 'Al generar una credencial para el API, asegúrese de copiarla inmediatamente, ya que no podrá volver a verla.', + 'api_base_url' => 'La url base de su API se encuentra en:', 'api_base_url_endpoint' => '/<endpoint>', - 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', + 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoints) del API y documentación adicional.', 'profile_updated' => 'Cuenta actualizada exitosamente', + 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', ); diff --git a/resources/lang/es-CO/admin/accessories/general.php b/resources/lang/es-CO/admin/accessories/general.php index a0d9dba96c..12f456686d 100644 --- a/resources/lang/es-CO/admin/accessories/general.php +++ b/resources/lang/es-CO/admin/accessories/general.php @@ -3,8 +3,8 @@ return array( 'accessory_category' => 'Categoría de accesorio', 'accessory_name' => 'Nombre de accesorio', - 'checkout' => 'Retirar Accesorio', - 'checkin' => 'Registrar Accesorio', + 'checkout' => 'Asignar accesorio', + 'checkin' => 'Ingresar accesorio', 'create' => 'Crear Accesorio', 'edit' => 'Editar Accesorio', 'eula_text' => 'Acuerdo de uso de la categoría', @@ -13,10 +13,10 @@ return array( 'no_default_eula' => 'No se encontró el acuerdo de uso predeterminado. Agregue unos en Configuración.', 'total' => 'Total ', 'remaining' => 'Disponibles', - 'update' => 'Actualizar Accesorio', + 'update' => 'Actualizar accesorio', 'use_default_eula' => 'En su lugar, el acuerdo de uso predeterminado.', 'use_default_eula_disabled' => 'En su lugar, use el acuerdo de uso predeterminado. No está configurado el acuerdo de uso predeterminado. Por favor agregue uno en Configuración.', 'clone' => 'Clonar accesorio', - 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos artículos todavía están retirados.', + 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos elementos todavía están asignados.', ); diff --git a/resources/lang/es-CO/admin/accessories/message.php b/resources/lang/es-CO/admin/accessories/message.php index 72c61d52d5..1de15d016c 100644 --- a/resources/lang/es-CO/admin/accessories/message.php +++ b/resources/lang/es-CO/admin/accessories/message.php @@ -4,35 +4,39 @@ return array( 'does_not_exist' => 'El accesorio [:id] no existe.', 'not_found' => 'Ese accesorio no fue encontrado.', - 'assoc_users' => 'Este accesorio actualmente tiene :count entregados a usuarios. Por favor ingrese los accesorios y vuelva a intentar. ', + 'assoc_users' => 'Este accesorio actualmente tiene :count elemento(s) asignado(s) a usuarios. Por favor realice el ingreso de los accesorios y vuelva a intentar. ', 'create' => array( - 'error' => 'Accesorio no fue creado, por favor vuelva a intentarlo.', + 'error' => 'El accesorio no fue creado, por favor inténtelo de nuevo.', 'success' => 'Accesorio creado satisfactoriamente.' ), 'update' => array( - 'error' => 'Accesorio no fue actualizado, por favor, inténtalo de nuevo', + 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'Accesorio creado satisfactoriamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este accesorio?', - 'error' => 'Hubo un problema eliminando el accesorio. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema eliminando el accesorio. Por favor, inténtelo de nuevo.', 'success' => 'El accesorio ha sido borrado con éxito.' ), 'checkout' => array( - 'error' => 'El accesorio no fue retirado, por favor vuelva a intentarlo', - 'success' => 'Accesorio retirado correctamente.', - 'unavailable' => 'El accesorio no está disponible para la compra. Compruebe la cantidad disponible', - 'user_does_not_exist' => 'Este usuario es inválido. Inténtalo de nuevo.' + 'error' => 'El accesorio no fue asignado, por favor vuelva a intentarlo', + 'success' => 'Accesorio asignado correctamente.', + 'unavailable' => 'El accesorio no está disponible para ser asignado. Compruebe la cantidad disponible', + 'user_does_not_exist' => 'Este usuario no es válido. Por favor, inténtelo de nuevo.', + 'checkout_qty' => array( + 'lte' => 'En este momento solo existe un accesorio disponible de este tipo y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.|Existen en total :number_currently_remaining accesorios disponibles y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.', + ), + ), 'checkin' => array( - 'error' => 'El accesorio no fue agregado, favor vuelva a intentarlo', - 'success' => 'Accesorio devuelto correctamente.', - 'user_does_not_exist' => 'Este usuario es inválido. Inténtalo de nuevo.' + 'error' => 'El accesorio no fue recibido, por favor vuelva a intentarlo', + 'success' => 'El accesorio ha sido ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-CO/admin/asset_maintenances/form.php b/resources/lang/es-CO/admin/asset_maintenances/form.php index 5c3956090e..3e06eed488 100644 --- a/resources/lang/es-CO/admin/asset_maintenances/form.php +++ b/resources/lang/es-CO/admin/asset_maintenances/form.php @@ -1,13 +1,13 @@ 'Tipo de Mantenimiento de Equipo', + 'asset_maintenance_type' => 'Tipo de mantenimiento de equipo', 'title' => 'Título', 'start_date' => 'Fecha de inicio', 'completion_date' => 'Fecha de finalización', - 'cost' => 'Precio', + 'cost' => 'Costo', 'is_warranty' => 'Mejora de la Garantía', - 'asset_maintenance_time' => 'Tiempo de mantenimiento de activos (en días)', + 'asset_maintenance_time' => 'Duración del mantenimiento (en días)', 'notes' => 'Notas', 'update' => 'Actualizar Mantenimiento de Equipo', 'create' => 'Crear Mantenimiento de Equipo' diff --git a/resources/lang/es-CO/admin/asset_maintenances/message.php b/resources/lang/es-CO/admin/asset_maintenances/message.php index ba34a18cc5..9ddabb7262 100644 --- a/resources/lang/es-CO/admin/asset_maintenances/message.php +++ b/resources/lang/es-CO/admin/asset_maintenances/message.php @@ -4,15 +4,15 @@ 'not_found' => '¡El mantenimiento del activo que estaba buscando no se encontró!', 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar el mantenimiento de este activo?', - 'error' => 'Hubo un problema al eliminar el mantenimiento del activo. Por favor intentelo nuevamente.', + 'error' => 'Hubo un problema al eliminar el mantenimiento del activo. Por favor inténtelo nuevamente.', 'success' => 'El mantenimiento del activo fue eliminado de manera exitosa.', ], 'create' => [ 'error' => 'Mantenimiento de Activos no fue creado, por favor intentelo de nuevo.', - 'success' => 'Mantenimiento de Activo creado correctamente.', + 'success' => 'El mantenimiento del activo fue creado de manera exitosa.', ], 'edit' => [ - 'error' => 'El mantenimiento de activo no fue editado. Por favor, intenta de nuevo.', + 'error' => 'El mantenimiento del activo no fue editado. Por favor, inténtelo de nuevo.', 'success' => 'Mantenimiento de activo editado con éxito.', ], 'asset_maintenance_incomplete' => 'Sin Completar', diff --git a/resources/lang/es-CO/admin/categories/general.php b/resources/lang/es-CO/admin/categories/general.php index 3e0ddf7eaf..6913375d8b 100644 --- a/resources/lang/es-CO/admin/categories/general.php +++ b/resources/lang/es-CO/admin/categories/general.php @@ -3,8 +3,8 @@ return array( 'asset_categories' => 'Categorías de activos', 'category_name' => 'Nombre de la categoría', - 'checkin_email' => 'Enviar un correo al usuario al devolver/asignar.', - 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al devolver/asignar.', + 'checkin_email' => 'Enviar un correo al usuario al recibir/devolver.', + 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al recibir/devolver.', 'clone' => 'Clonar categoría', 'create' => 'Crear categoría', 'edit' => 'Editar categoría', diff --git a/resources/lang/es-CO/admin/categories/message.php b/resources/lang/es-CO/admin/categories/message.php index 9875a01d88..997487469e 100644 --- a/resources/lang/es-CO/admin/categories/message.php +++ b/resources/lang/es-CO/admin/categories/message.php @@ -3,8 +3,8 @@ return array( 'does_not_exist' => 'La categoría no existe.', - 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no se puede eliminar. Por favor actualice sus modelos para que no hagan referencia a esta categoría e inténtelo de nuevo. ', - 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no se puede eliminar. Por favor actualice su: asset_type para que no haga referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no puede ser eliminada. Actualice los modelos para que ya no hagan referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no puede ser eliminada. Actualice su :asset_type para que ya no haga referencia a esta categoría e inténtelo de nuevo. ', 'create' => array( 'error' => 'La categoría no fue creada, por favor inténtelo de nuevo.', diff --git a/resources/lang/es-CO/admin/categories/table.php b/resources/lang/es-CO/admin/categories/table.php index e3bb551e93..fc18e5ac6f 100644 --- a/resources/lang/es-CO/admin/categories/table.php +++ b/resources/lang/es-CO/admin/categories/table.php @@ -3,7 +3,7 @@ return array( 'eula_text' => 'Acuerdo de uso', 'id' => 'ID', - 'parent' => 'Padre', + 'parent' => 'Ubicación padre', 'require_acceptance' => 'Aceptación', 'title' => 'Nombre de la categoría del activo', diff --git a/resources/lang/es-CO/admin/companies/general.php b/resources/lang/es-CO/admin/companies/general.php index fd18d9f752..8fb72d5b94 100644 --- a/resources/lang/es-CO/admin/companies/general.php +++ b/resources/lang/es-CO/admin/companies/general.php @@ -1,7 +1,7 @@ 'Seleccione una compañía', + 'select_company' => 'Seleccionar una compañía', 'about_companies' => 'Acerca de las compañías', 'about_companies_description' => ' Puede utilizar las compañías como un simple campo informativo, o puede utilizarlas para restringir la visibilidad y la disponibilidad de los activos a los usuarios con una compañía específica habilitando la opción "Soporte completo a múltiples compañías" en "Configuración de administración"', ]; diff --git a/resources/lang/es-CO/admin/companies/message.php b/resources/lang/es-CO/admin/companies/message.php index 7d2441e051..fd4d7c4884 100644 --- a/resources/lang/es-CO/admin/companies/message.php +++ b/resources/lang/es-CO/admin/companies/message.php @@ -3,7 +3,7 @@ return [ 'does_not_exist' => 'La Compañía no existe.', 'deleted' => 'Compañía eliminada', - 'assoc_users' => 'Esta compañía está actualmente asociada con al menos un modelo y no puede ser eliminada. Por favor actualiza tus modelos para no referenciar más esta compañía e inténtalo de nuevo. ', + 'assoc_users' => 'Esta compañía está actualmente asociada con al menos un modelo y no puede ser eliminada. Por favor actualice sus modelos para que no hagan referencia a esta compañía e inténtalo de nuevo. ', 'create' => [ 'error' => 'La compañía no fue creada, por favor, inténtalo de nuevo.', 'success' => 'La compañía fue creada con éxito.', diff --git a/resources/lang/es-CO/admin/components/general.php b/resources/lang/es-CO/admin/components/general.php index 57a21580f6..6235de87d3 100644 --- a/resources/lang/es-CO/admin/components/general.php +++ b/resources/lang/es-CO/admin/components/general.php @@ -2,15 +2,15 @@ return array( 'component_name' => 'Nombre de Componente', - 'checkin' => 'Registrar Componente', - 'checkout' => 'Retirar Componente', + 'checkin' => 'Ingresar componente', + 'checkout' => 'Asignar componente', 'cost' => 'Costo de Compra', 'create' => 'Crear Componente', 'edit' => 'Editar Componente', - 'date' => 'Fecha de Compra', + 'date' => 'Fecha de compra', 'order' => 'Número de orden', 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', - 'checkin_limit' => 'La cantidad devuelta debe ser igual o menor que :assigned_qty' + 'checkin_limit' => 'La cantidad ingresada debe ser igual o menor que :assigned_qty' ); diff --git a/resources/lang/es-CO/admin/components/message.php b/resources/lang/es-CO/admin/components/message.php index ee272f2ad8..6fd88169b6 100644 --- a/resources/lang/es-CO/admin/components/message.php +++ b/resources/lang/es-CO/admin/components/message.php @@ -5,32 +5,32 @@ return array( 'does_not_exist' => 'El componente no existe.', 'create' => array( - 'error' => 'El componente no fue creado, por favor inténtalo de nuevo.', - 'success' => 'Componente creado con éxito.' + 'error' => 'El componente no fue creado, por favor inténtelo de nuevo.', + 'success' => 'El componente se creó satisfactoriamente.' ), 'update' => array( - 'error' => 'El componente no se actualizó, por favor inténtalo de nuevo', + 'error' => 'El componente no se actualizó, por favor inténtelo de nuevo', 'success' => 'Componente actualizado con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este componente?', - 'error' => 'Hubo un problema eliminando el componente. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema eliminando el componente. Por favor, inténtelo de nuevo.', 'success' => 'El componente fue eliminado con éxito.' ), 'checkout' => array( - 'error' => 'El componente no fue retirado, por favor, inténtalo de nuevo', - 'success' => 'Componente retirado con éxito.', - 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.', - 'unavailable' => 'No quedan suficientes componentes: :remaining resting, :requested ', + 'error' => 'El componente no fue asignado, por favor, inténtelo de nuevo', + 'success' => 'El componente se ha asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'No quedan suficientes componentes: :remaining disponibles, :requested solicitados ', ), 'checkin' => array( - 'error' => 'El componente no fue registrado, por favor inténtalo de nuevo', - 'success' => 'Componente registrado con éxito.', - 'user_does_not_exist' => 'El usuario no es válido. Por favor inténtalo de nuevo.' + 'error' => 'No se realizó el ingreso del componente, por favor inténtelo de nuevo', + 'success' => 'Componente ingresado con éxito.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-CO/admin/consumables/general.php b/resources/lang/es-CO/admin/consumables/general.php index e464586323..ea86ba1244 100644 --- a/resources/lang/es-CO/admin/consumables/general.php +++ b/resources/lang/es-CO/admin/consumables/general.php @@ -1,11 +1,12 @@ 'Retirar Consumible al Usuario', + 'checkout' => 'Asignar consumible a usuario', 'consumable_name' => 'Nombre del Consumible', 'create' => 'Crear Consumible', 'item_no' => 'Elemento No.', 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Consumibles', + 'inventory_warning' => 'El inventario de este consumible está por debajo de la cantidad mínima de :min_count', ); diff --git a/resources/lang/es-CO/admin/consumables/message.php b/resources/lang/es-CO/admin/consumables/message.php index 8431f6e370..1230f6281f 100644 --- a/resources/lang/es-CO/admin/consumables/message.php +++ b/resources/lang/es-CO/admin/consumables/message.php @@ -2,15 +2,16 @@ return array( + 'invalid_category_type' => 'La categoría debe ser una categoría para consumibles.', 'does_not_exist' => 'El consumible no existe.', 'create' => array( - 'error' => 'El consumible no fue creado, por favor, inténtalo de nuevo.', + 'error' => 'El consumible no fue creado, por favor inténtelo nuevamente.', 'success' => 'Consumible creado con éxito.' ), 'update' => array( - 'error' => 'El consumible no fue actualizado, por favor, inténtalo de nuevo', + 'error' => 'El consumible no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'Consumible actualizado con éxito.' ), @@ -22,15 +23,15 @@ return array( 'checkout' => array( 'error' => 'El consumible no fue asignado, por favor inténtelo de nuevo', - 'success' => 'Consumible retirado con éxito.', - 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.', - 'unavailable' => 'No hay suficientes consumibles para este pago. Por favor, compruebe la cantidad restante. ', + 'success' => 'Consumible asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'No hay suficientes consumibles para esta asignación. Por favor, compruebe la cantidad disponible. ', ), 'checkin' => array( - 'error' => 'Consumible no fue devuelto, por favor inténtelo de nuevo', - 'success' => 'Consumible fue registrado con éxito.', - 'user_does_not_exist' => 'El usuario no es válido. Por favor inténtalo de nuevo.' + 'error' => 'El consumible no fue ingresado, por favor inténtelo de nuevo', + 'success' => 'El consumible fue ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-CO/admin/custom_fields/general.php b/resources/lang/es-CO/admin/custom_fields/general.php index 5b705a9f79..2f5effd8e8 100644 --- a/resources/lang/es-CO/admin/custom_fields/general.php +++ b/resources/lang/es-CO/admin/custom_fields/general.php @@ -7,9 +7,9 @@ return [ 'about_fieldsets_title' => 'Acerca de los grupos de campos', 'about_fieldsets_text' => 'Los grupos de campos le permiten agrupar campos personalizados que se reutilizan frecuentemente para determinados modelos de activos.', 'custom_format' => 'Formato de Regex personalizado...', - 'encrypt_field' => 'Encriptar el valor de este campo en la base de datos', - 'encrypt_field_help' => 'ADVERTENCIA: Encriptar un campo hace que no se pueda buscar.', - 'encrypted' => 'Encriptado', + 'encrypt_field' => 'Cifrar el valor de este campo en la base de datos', + 'encrypt_field_help' => 'ADVERTENCIA: Cifrar un campo hace que no se pueda buscar.', + 'encrypted' => 'Cifrado', 'fieldset' => 'Grupo de campos', 'qty_fields' => 'Campos de cantidad', 'fieldsets' => 'Grupo de campos', @@ -24,35 +24,35 @@ return [ 'field_custom_format_help' => 'Este campo te permite usar una expresión regex para la validación. Este debe empezar con "regex:" - por ejemplo, para validar que un valor de campo personalizado contiene un IMEI válido (15 dígitos numéricos), podrías usar regex:/^[0-9]{15}$/.', 'required' => 'Obligatorio', 'req' => 'Obl.', - 'used_by_models' => 'Usado por Modelos', + 'used_by_models' => 'Usado por los modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo grupo de campos', 'update_fieldset' => 'Actualizar grupo de campos', 'fieldset_does_not_exist' => 'El grupo de campos :id no existe', - 'fieldset_updated' => 'Conjunto de campos actualizado', - 'create_fieldset_title' => 'Crear un nuevo conjunto de campos', + 'fieldset_updated' => 'Se actualizó el grupo de campos', + 'create_fieldset_title' => 'Crear nuevo grupo de campos', 'create_field' => 'Nuevo Campo Personalizado', 'create_field_title' => 'Crear un nuevo campo personalizado', - 'value_encrypted' => 'El valor de este campo está encriptado en la base de datos. Sólo los administradores pueden ver el valor desencriptado', - 'show_in_email' => '¿Incluye el valor de este campo en los correos de pago enviados al usuario? Los campos cifrados no se pueden incluir en los correos electrónicos', + 'value_encrypted' => 'El valor de este campo está cifrado en la base de datos. Solo los administradores pueden ver el valor descifrado', + 'show_in_email' => '¿Incluir el campo en los correos de asignación enviados al usuario? Los campos cifrados no se pueden incluir en los correos electrónicos', 'show_in_email_short' => 'Incluye en correos electrónicos.', 'help_text' => 'Texto de ayuda', 'help_text_description' => 'Este es un texto opcional que aparecerá debajo de los elementos del formulario mientras se edita un activo para proporcionar contexto en el campo.', 'about_custom_fields_title' => 'Acerca de campos personalizados', 'about_custom_fields_text' => 'Los campos personalizados le permiten añadir atributos arbitrarios a los activos.', - 'add_field_to_fieldset' => 'Añadir campo al conjunto de campos', + 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', 'make_optional' => 'Requerido - haga clic para hacer opcional', 'make_required' => 'Opcional - haga clic para hacer necesario', 'reorder' => 'Reordenar', - 'db_field' => 'Campo DB', + 'db_field' => 'Campo en base de datos', 'db_convert_warning' => 'ADVERTENCIA. Este campo está en la tabla de campos personalizados como :db_column pero debe ser :expected.', 'is_unique' => 'Este valor debe ser único en todos los activos', 'unique' => 'Único', - 'display_in_user_view' => 'Permitir al usuario retirado ver estos valores en su página Ver Recursos asignados', + 'display_in_user_view' => 'Permitir al usuario ver estos valores en la página "Ver elementos asignados"', 'display_in_user_view_table' => 'Visible para el usuario', - 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo conjunto de campos', - 'add_to_preexisting_fieldsets' => 'Añadir a cualquier conjunto de campos existente', - 'show_in_listview' => 'Mostrar por defecto en las vistas de la lista. Los usuarios autorizados podrán mostrar/ocultar a través del selector de columnas', + 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo grupo de campos', + 'add_to_preexisting_fieldsets' => 'Añadir a cualquier grupo de campos existente', + 'show_in_listview' => 'Mostrar por defecto en las consultas. Los usuarios autorizados podrán mostrar/ocultar a través del selector de columnas', 'show_in_listview_short' => 'Mostrar en listas', 'show_in_requestable_list_short' => 'Mostrar en la lista de activos que se pueden solicitar', 'show_in_requestable_list' => 'Mostrar el valor en la lista de activos que se pueden solicitar. Los campos cifrados no se mostrarán', diff --git a/resources/lang/es-CO/admin/custom_fields/message.php b/resources/lang/es-CO/admin/custom_fields/message.php index 653f4c710a..fcfaca8b49 100644 --- a/resources/lang/es-CO/admin/custom_fields/message.php +++ b/resources/lang/es-CO/admin/custom_fields/message.php @@ -5,11 +5,12 @@ return array( 'field' => array( 'invalid' => 'El campo no existe.', 'already_added' => 'El campo ya fue añadido', + 'none_selected' => 'No se ha seleccionado ningún campo', 'create' => array( 'error' => 'El campo no fue creado, por favor, inténtalo de nuevo.', 'success' => 'Campo creado con éxito.', - 'assoc_success' => 'Campo agregado al fieldset con éxito.' + 'assoc_success' => 'Campo correctamente añadido al grupo.' ), 'update' => array( @@ -28,30 +29,30 @@ return array( 'fieldset' => array( - 'does_not_exist' => 'El fieldset no existe', + 'does_not_exist' => 'El grupo de campos no existe', 'create' => array( - 'error' => 'El fieldset no fue creado, por favor inténtalo de nuevo.', - 'success' => 'Fieldset creado con éxito.' + 'error' => 'El grupo de campos no ha sido creado, por favor inténtelo de nuevo.', + 'success' => 'Grupo de campos creado satisfactoriamente.' ), 'update' => array( - 'error' => 'El fieldset no fue actualizado, por favor, inténtalo de nuevo', - 'success' => 'Fieldset actualizado con éxito.' + 'error' => 'El grupo de campos no ha sido actualizado, por favor inténtelo de nuevo', + 'success' => 'Grupo de campos actualizado correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que quiere eliminar este grupo de campos?', - 'error' => 'Hubo un problema al eliminar este fieldset. Por favor inténtalo de nuevo.', - 'success' => 'El fieldset fue eliminado con éxito.', - 'in_use' => 'El fieldset está aún en uso.', + 'error' => 'Hubo un problema al eliminar el grupo de campos. Inténtelo de nuevo.', + 'success' => 'El grupo de campos se eliminó correctamente.', + 'in_use' => 'El grupo de campos está aún en uso.', ) ), 'fieldset_default_value' => array( - 'error' => 'Error al validar los valores por defecto del conjunto de campos.', + 'error' => 'Error al validar los valores por defecto del grupo de campos.', ), diff --git a/resources/lang/es-CO/admin/departments/message.php b/resources/lang/es-CO/admin/departments/message.php index 59f226bea0..515d79d0f4 100644 --- a/resources/lang/es-CO/admin/departments/message.php +++ b/resources/lang/es-CO/admin/departments/message.php @@ -4,18 +4,18 @@ return array( 'does_not_exist' => 'El departamento no existe.', 'department_already_exists' => 'Ya existe un departamento con ese nombre en esta ubicación de la compañía. O elija un nombre más específico para este departamento. ', - 'assoc_users' => 'Este departamento está actualmente asociado con al menos un usuario y no puede ser eliminado. Por favor, actualiza tus usuarios para no referenciar más este departamento e inténtalo de nuevo. ', + 'assoc_users' => 'Este departamento está actualmente asociado con al menos un usuario y no puede ser eliminado. Por favor, actualice sus usuarios para que no hagan referencia a este departamento e inténtelo de nuevo. ', 'create' => array( - 'error' => 'El departamento no fue creado, por favor, inténtalo de nuevo.', + 'error' => 'El departamento no fue creado, por favor, inténtelo de nuevo.', 'success' => 'Departamento fue creado con éxito.' ), 'update' => array( - 'error' => 'El departamento no fue actualizado, por favor inténtalo de nuevo', + 'error' => 'El departamento no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Departamento actualizado con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este departamento?', - 'error' => 'Hubo un problema al eliminar este departamento. Por favor inténtalo de nuevo.', + 'error' => 'Hubo un problema al borrar el departamento. Por favor, inténtelo de nuevo.', 'success' => 'El departamento fue eliminado con éxito.' ) diff --git a/resources/lang/es-CO/admin/depreciations/general.php b/resources/lang/es-CO/admin/depreciations/general.php index a99d8917e7..e347dd8e3a 100644 --- a/resources/lang/es-CO/admin/depreciations/general.php +++ b/resources/lang/es-CO/admin/depreciations/general.php @@ -7,10 +7,10 @@ return [ 'create' => 'Crear depreciación', 'depreciation_name' => 'Nombre de depreciación', 'depreciation_min' => 'Valor del piso de la depreciación', - 'number_of_months' => 'Número de Meses', + 'number_of_months' => 'Número de meses', 'update' => 'Actualizar Depreciación', 'depreciation_min' => 'Valor mínimo después de depreciación', 'no_depreciations_warning' => 'Advertencia: No tiene ninguna depreciación configurada. - Por favor, configure al menos una depreciación para ver el informe de depreciaciones.', + Por favor, configure al menos una depreciación para ver el informe de depreciación.', ]; diff --git a/resources/lang/es-CO/admin/depreciations/message.php b/resources/lang/es-CO/admin/depreciations/message.php index 6009b15fd4..6f2875bbb1 100644 --- a/resources/lang/es-CO/admin/depreciations/message.php +++ b/resources/lang/es-CO/admin/depreciations/message.php @@ -3,22 +3,22 @@ return array( 'does_not_exist' => 'La clase de depreciación no existe.', - 'assoc_users' => 'Esta depreciación está actualmente asociada con uno o mas modelos y no puede ser eliminada. Por favor, elimina los modelos y luego intenta borrarlas de nuevo. ', + 'assoc_users' => 'Esta depreciación está actualmente asociada con uno o más modelos y no puede ser eliminada. Por favor, elimine los modelos y luego intente borrarlas de nuevo. ', 'create' => array( - 'error' => 'La clase de depreciación no fue creada, por favor, inténtalo de nuevo. :(', + 'error' => 'El tipo de depreciación no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'La clase de depreciación fue creada con éxito. :)' ), 'update' => array( - 'error' => 'La clase de depreciación no fue actualizada, por favor, inténtalo de nuevo', + 'error' => 'El tipo de depreciación no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'La clase de depreciación fue creada con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta clase de depreciación?', - 'error' => 'Ha sucedido un error eliminando la clase de depreciación, por favor intente de nuevo.', + 'error' => 'Ha sucedido un error eliminando el tipo de depreciación, por favor intente de nuevo.', 'success' => 'La clase de depreciación fue eliminada con éxito.' ) diff --git a/resources/lang/es-CO/admin/groups/message.php b/resources/lang/es-CO/admin/groups/message.php index b7c1f82a0d..2a5f03555c 100644 --- a/resources/lang/es-CO/admin/groups/message.php +++ b/resources/lang/es-CO/admin/groups/message.php @@ -2,7 +2,7 @@ return array( - 'group_exists' => 'El grupo ya existe!', + 'group_exists' => '!El grupo ya existe!', 'group_not_found' => 'El ID del grupo :id no existe.', 'group_name_required' => 'El campo nombre es requerido', diff --git a/resources/lang/es-CO/admin/hardware/form.php b/resources/lang/es-CO/admin/hardware/form.php index 72ec4f9fd6..d0fdf9d9e7 100644 --- a/resources/lang/es-CO/admin/hardware/form.php +++ b/resources/lang/es-CO/admin/hardware/form.php @@ -1,35 +1,35 @@ 'Confirma la Eliminación Masiva de Equipos', + 'bulk_delete' => 'Confirmar eliminación masiva de activos', 'bulk_restore' => 'Confirmar recuperación masiva de activos', - 'bulk_delete_help' => 'Revisar los equipos para eliminación masiva. Una vez eliminados, esos equipos pueden ser restaurados, pero no volverán a estar asociados a ninguno de los usuarios a los que estén asignados actualmente.', + 'bulk_delete_help' => 'Revise a continuación los activos para eliminación masiva. Una vez eliminados, estos activos se pueden restaurar, pero ya no estarán asociados a ningún usuario al que estén asignados actualmente.', 'bulk_restore_help' => 'Revisar los activos para la restauración en masa a continuación. Una vez restaurados, estos activos no estarán asociados con los usuarios a los que fueron asignados anteriormente.', 'bulk_delete_warn' => 'Va a eliminar :asset_count activos.', 'bulk_restore_warn' => 'Está a punto de restaurar :asset_count activos.', - 'bulk_update' => 'Actualización masiva de Equipos', - 'bulk_update_help' => 'Este formulario te permite actualizar múltiples equipos simultáneamente. Solo debes completar los campos que quieres modificar. Todo campo en blanco permanecerá sin cambios. ', - 'bulk_update_warn' => 'Está a punto de editar las propiedades de un solo recurso.|Está a punto de editar las propiedades de :asset_count activos.', - 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos son :asset_model_count diferentes tipos de modelos.', + 'bulk_update' => 'Actualización masiva de activos', + 'bulk_update_help' => 'Este formulario le permite actualizar varios activos a la vez. Complete solo los campos que necesite modificar. Los campos que se dejen en blanco no se modificarán. ', + 'bulk_update_warn' => 'Está a punto de editar las propiedades de un solo activo.|Está a punto de editar las propiedades de :asset_count activos.', + 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos corresponden a :asset_model_count tipos diferentes de modelos.', 'bulk_update_model_prefix' => 'En modelos', - 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado a granel.', + 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado de forma masiva.', 'checkedout_to' => 'Asignado a', 'checkout_date' => 'Fecha de asignación', - 'checkin_date' => 'Fecha de devolución', + 'checkin_date' => 'Fecha de ingreso', 'checkout_to' => 'Asignar a', 'cost' => 'Precio de compra', - 'create' => 'Creación de Equipo', + 'create' => 'Crear activo', 'date' => 'Fecha de compra', 'depreciation' => 'Depreciación', 'depreciates_on' => 'Se deprecia en', 'default_location' => 'Ubicación predeterminada', 'default_location_phone' => 'Teléfono de ubicación por defecto', 'eol_date' => 'Fecha fin de soporte (EOL)', - 'eol_rate' => 'Vita Útil', + 'eol_rate' => 'Tasa fin de soporte (EOL)', 'expected_checkin' => 'Fecha esperada de devolución', - 'expires' => 'Expira', + 'expires' => 'Vence', 'fully_depreciated' => 'Totalmente Depreciado', - 'help_checkout' => 'Si deseas asignar este equipo inmediatamente, selecciona "Listo para Asignar" de la lista de estados de arriba. ', + 'help_checkout' => 'Si desea asignar este equipo inmediatamente, seleccione "Listo para asignar" de la lista de estados de arriba. ', 'mac_address' => 'Dirección MAC', 'manufacturer' => 'Fabricante', 'model' => 'Modelo', @@ -39,18 +39,18 @@ return [ 'order' => 'Número de orden', 'qr' => 'Código QR', 'requestable' => 'Los usuarios pueden solicitar este elemento', - 'redirect_to_all' => 'Return to all :type', + 'redirect_to_all' => 'Regresar a :type', 'redirect_to_type' => 'Ir a :type', - 'redirect_to_checked_out_to' => 'Go to Checked Out to', - 'select_statustype' => 'Seleccione un tipo de estado', + 'redirect_to_checked_out_to' => 'Ir a elementos asignados', + 'select_statustype' => 'Seleccionar un tipo de estado', 'serial' => 'Número de serie', 'status' => 'Estado', - 'tag' => 'Etiqueta del activo', - 'update' => 'Actualizar Equipo', + 'tag' => 'Placa del activo', + 'update' => 'Actualizar activo', 'warranty' => 'Garantía', - 'warranty_expires' => 'Vencimiento de Garantía', + 'warranty_expires' => 'Vencimiento de la garantía', 'years' => 'años', - 'asset_location' => 'Actualizar ubicación del recurso', + 'asset_location' => 'Actualizar ubicación del activo', 'asset_location_update_default_current' => 'Actualizar ubicación predeterminada y ubicación actual', 'asset_location_update_default' => 'Actualizar sólo la ubicación predeterminada', 'asset_location_update_actual' => 'Actualizar sólo la ubicación actual', diff --git a/resources/lang/es-CO/admin/hardware/general.php b/resources/lang/es-CO/admin/hardware/general.php index 1b4a71d50d..cd77f16264 100644 --- a/resources/lang/es-CO/admin/hardware/general.php +++ b/resources/lang/es-CO/admin/hardware/general.php @@ -1,22 +1,22 @@ 'Acerca de los Equipos', - 'about_assets_text' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.', + 'about_assets_title' => 'Acerca de los activos', + 'about_assets_text' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', 'archived' => 'Archivado', 'asset' => 'Equipo', - 'bulk_checkout' => 'Asignar Equipos', - 'bulk_checkin' => 'Devolver activos', - 'checkin' => 'Devolver activo', - 'checkout' => 'Asignar Equipo', + 'bulk_checkout' => 'Asignar activos', + 'bulk_checkin' => 'Ingresar activos', + 'checkin' => 'Ingresar activo', + 'checkout' => 'Asignar activo', 'clone' => 'Clonar activo', 'deployable' => 'Utilizable', 'deleted' => 'Este activo ha sido borrado.', - 'delete_confirm' => '¿Está seguro de que desea eliminar este recurso?', + 'delete_confirm' => '¿Está seguro de que desea eliminar este activo?', 'edit' => 'Editar activo', - 'model_deleted' => 'El modelo de este activo ha sido borrado. Debe restaurar el modelo antes de restaurar o crear el activo.', + 'model_deleted' => 'Este modelo de activo ha sido eliminado. Debe restaurar este modelo antes de poder restaurar el activo.', 'model_invalid' => 'Este modelo para este activo es inválido.', - 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar asignarlo, devolverlo o auditarlo.', + 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar ingresarlo, asignarlo o auditarlo.', 'requestable' => 'Puede solicitarse', 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', @@ -27,16 +27,16 @@ return [ 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que no es desplegable y no puede ser revisado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Tiene un error en su archivo CSV:', - 'import_text' => '

Sube un archivo CSV que contenga el historial de activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La importación del historial busca activos que coincidan con la etiqueta de activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporciones y los criterios que selecciones a continuación. Si no seleccionas ningún criterio a continuación, el sistema simplemente intentará usar el formato de nombre de usuario que configuraste en Admin > Opciones Generales.

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

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

', - 'csv_import_match_f-l' => 'Intenta emparejar usuarios con formato nombre.lastname (jane.smith)', - 'csv_import_match_initial_last' => 'Intentar emparejar a los usuarios con un formato primer apellido inicial (jsmith)', - 'csv_import_match_first' => 'Intentar emparejar a los usuarios con formato primer nombre (jane)', - 'csv_import_match_email' => 'Intenta emparejar a los usuarios por email como nombre de usuario', - 'csv_import_match_username' => 'Intentar emparejar los usuarios usando la propiedad Usuario', + 'import_text' => '

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

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

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

', + 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', + 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', + 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', + 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor vea abajo para más detalles.', 'custom_export' => 'Exportación personalizada', - 'mfg_warranty_lookup' => ':fabricante Garantía Estado Búsqueda', + 'mfg_warranty_lookup' => 'Búsqueda del estado de garantía para :manufacturer', 'user_department' => 'Departamento de Usuario', ]; diff --git a/resources/lang/es-CO/admin/hardware/message.php b/resources/lang/es-CO/admin/hardware/message.php index cd9b014616..a34ac34186 100644 --- a/resources/lang/es-CO/admin/hardware/message.php +++ b/resources/lang/es-CO/admin/hardware/message.php @@ -2,32 +2,31 @@ return [ - 'undeployable' => 'Atención: Este elemento ha sido marcado como no utilizable. - Si no es correcto, actualice el estado.', + 'undeployable' => 'Advertencia: Este activo actualmente está marcado como no utilizable. Si este estado ha cambiado, por favor, actualice el estado del activo.', 'does_not_exist' => 'El recurso no existe.', - 'does_not_exist_var'=> 'Activo con etiqueta :asset_tag no encontrado.', - 'no_tag' => 'No se ha proporcionado ninguna etiqueta de activo.', + 'does_not_exist_var'=> 'Activo con placa :asset_tag no encontrado.', + 'no_tag' => 'No se ha proporcionado ninguna placa de activo.', 'does_not_exist_or_not_requestable' => 'Ese activo no existe o no es solicitable.', - 'assoc_users' => 'Este activo está actualmente reservado a un usuario y no puede ser eliminado. Por favor, compruebe el activo primero y vuelva a intentarlo. ', + 'assoc_users' => 'Actualmente este activo está asignado a un usuario y no puede ser eliminado. Por favor, primero devuelva o recupere el activo y vuelva a intentarlo. ', 'warning_audit_date_mismatch' => 'La próxima fecha de auditoría de este activo (:next_audit_date) es anterior a la última fecha de auditoría (:last_audit_date). Por favor, actualice la próxima fecha de auditoría.', 'create' => [ 'error' => 'El activo no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'Equipo creado con éxito. :)', - 'success_linked' => 'Activo con etiqueta :tag creado con éxito. Haga clic aquí para ver.', + 'success_linked' => 'Activo con placa :tag creado con éxito. Haga clic aquí para ver.', ], 'update' => [ - 'error' => 'Equipo no actualizado, por favor inténtalo de nuevo', + 'error' => 'El activo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'Equipo actualizado correctamente.', - 'encrypted_warning' => 'Activo actualizado con éxito, pero los campos personalizados cifrados no se debieron a permisos', + 'encrypted_warning' => 'El activo se actualizó correctamente, pero los campos personalizados cifrados no lo hicieron debido a los permisos', 'nothing_updated' => 'No se seleccionaron campos, por lo que no se actualizó nada.', - 'no_assets_selected' => 'Ningún recurso fue seleccionado, por lo que no se actualizó nada.', + 'no_assets_selected' => 'Ningún activo fue seleccionado, por lo que no se actualizó nada.', 'assets_do_not_exist_or_are_invalid' => 'Los activos seleccionados no se pueden actualizar.', ], 'restore' => [ - 'error' => 'Equipo no restaurado, por favor inténtalo de nuevo', + 'error' => 'El activo no fue restaurado, por favor inténtelo nuevamente', 'success' => 'Equipo restaurado con éxito.', 'bulk_success' => 'Equipo restaurado con éxito.', 'nothing_updated' => 'No se seleccionaron activos, por lo que no se restauró nada.', @@ -40,7 +39,7 @@ return [ 'deletefile' => [ - 'error' => 'Archivo no eliminado. Vuelve a intentarlo.', + 'error' => 'Archivo no eliminado. Por favor inténtelo nuevamente.', 'success' => 'Archivo eliminado correctamente.', ], @@ -48,13 +47,14 @@ return [ 'error' => 'Archivo(s) no cargado(s). Por favor, inténtelo nuevamente.', 'success' => 'Archivo(s) cargado(s) exitosamente.', 'nofiles' => 'No seleccionó ningún archivo para ser cargado, o el archivo que está tratando de cargar es demasiado grande', - 'invalidfiles' => 'Uno o más de sus archivos es demasiado grande o es un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ], 'import' => [ + 'import_button' => 'Proceso para importar', 'error' => 'Algunos artículos no importaron correctamente.', 'errorDetail' => 'Los siguientes artículos no fueron importados debido a errores.', - 'success' => 'Tu archivo ha sido importado', + 'success' => 'Su archivo ha sido importado', 'file_delete_success' => 'Su archivo se ha eliminado correctamente', 'file_delete_error' => 'El archivo no pudo ser eliminado', 'file_missing' => 'Falta el archivo seleccionado', @@ -72,23 +72,23 @@ return [ 'checkout' => [ 'error' => 'El activo no fue asignado, por favor inténtelo de nuevo', - 'success' => 'Equipo retirado con éxito.', - 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.', - 'not_available' => '¡Ese equipo no está disponible para asignar!', + 'success' => 'Equipo asignado correctamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'not_available' => '¡Ese equipo no está disponible para ser asignado!', 'no_assets_selected' => 'Debes seleccionar al menos un equipo de la lista', ], 'checkin' => [ - 'error' => 'El equipo no se pudo devolver, por favor inténtelo de nuevo', - 'success' => 'El activo fue devuelto exitosamente.', - 'user_does_not_exist' => 'Es usuario no es correcto, por favor inténtelo de nuevo.', - 'already_checked_in' => 'El equipo ya ha sido devuelto.', + 'error' => 'El activo no se pudo ingresar, por favor inténtelo de nuevo', + 'success' => 'El activo fue ingresado exitosamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'already_checked_in' => 'El equipo ya ha sido recibido.', ], 'requests' => [ - 'error' => 'El equipo no pudo ser solicitado, por favor inténtalo de nuevo', - 'success' => 'El equipos fue solicitado exitosamente.', + 'error' => 'El activo no pudo ser solicitado, por favor inténtelo de nuevo', + 'success' => 'Activo solicitado correctamente.', 'canceled' => 'La solicitud de asignación fue cancelada de forma exitosa', ], diff --git a/resources/lang/es-CO/admin/hardware/table.php b/resources/lang/es-CO/admin/hardware/table.php index 23132cee7a..4d808c0b0f 100644 --- a/resources/lang/es-CO/admin/hardware/table.php +++ b/resources/lang/es-CO/admin/hardware/table.php @@ -2,20 +2,20 @@ return [ - 'asset_tag' => 'Etiqueta de equipo', + 'asset_tag' => 'Placa del activo', 'asset_model' => 'Modelo', 'assigned_to' => 'Asignado a', 'book_value' => 'Valor actual', - 'change' => 'Entrada/Salida', - 'checkout_date' => 'Fecha de devolución', + 'change' => 'Operación', + 'checkout_date' => 'Fecha de asignación', 'checkoutto' => 'Asignado a', 'components_cost' => 'Coste total de componentes', 'current_value' => 'Valor actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', - 'eol' => 'Vida útil', + 'eol' => 'Fin de soporte (EOL)', 'id' => 'ID', - 'last_checkin_date' => 'Última fecha de devolución', + 'last_checkin_date' => 'Última fecha de ingreso', 'location' => 'Ubicación', 'purchase_cost' => 'Precio', 'purchase_date' => 'Comprado', @@ -28,6 +28,6 @@ return [ 'assigned_to' => 'Asignado a', 'requesting_user' => 'Solicitando usuario', 'requested_date' => 'Fecha solicitada', - 'changed' => 'Cambiado', - 'icon' => 'Icono', + 'changed' => 'Cambios', + 'icon' => 'Ícono', ]; diff --git a/resources/lang/es-CO/admin/kits/general.php b/resources/lang/es-CO/admin/kits/general.php index 81d3fae0b0..8a910dbee5 100644 --- a/resources/lang/es-CO/admin/kits/general.php +++ b/resources/lang/es-CO/admin/kits/general.php @@ -2,19 +2,19 @@ return [ 'about_kits_title' => 'Acerca de Kits predefinidos', - 'about_kits_text' => 'Kits predefinidos le permiten revisar rápidamente una colección de elementos (activos, licencias, etc.) a un usuario. Esto puede ser útil cuando su proceso de incorporación es consistente entre muchos usuarios y todos los usuarios reciben los mismos artículos.', - 'checkout' => 'Kit de pago ', + 'about_kits_text' => 'Los kits predefinidos le permiten rápidamente asignar un conjunto de elementos (activos, licencias, etc.) a un usuario. Esto puede ser útil cuando su proceso de incorporación de usuarios es similar para muchos usuarios y todos reciben los mismos elementos.', + 'checkout' => 'Asignar kit ', 'create_success' => 'Kit se ha creado correctamente.', 'create' => 'Crear kit predefinido', 'update' => 'Actualizar kit predefinido', 'delete_success' => 'Kit eliminado correctamente.', 'update_success' => 'Kit se ha actualizado correctamente.', - 'none_models' => 'No hay suficientes recursos disponibles para :model para pagar. :qty son requeridos. ', - 'none_licenses' => 'No hay suficientes asientos disponibles para :license para pagar. :qty son requeridos. ', - 'none_consumables' => 'No hay suficientes unidades disponibles de :consumible para pagar. :qty son requeridas. ', - 'none_accessory' => 'No hay suficientes unidades disponibles de :accesory para pagar. :qty son requeridas. ', + 'none_models' => 'No hay suficientes activos disponibles de :model para asignar. Se requieren :qty. ', + 'none_licenses' => 'No hay suficientes licencias disponibles de :license para asignar. Se requieren :qty. ', + 'none_consumables' => 'No hay suficientes unidades disponibles de :consumable para asignar. Se requieren :qty. ', + 'none_accessory' => 'No hay suficientes unidades disponibles de :accessory para asignar. Se requieren :qty. ', 'append_accessory' => 'Añadir accesorio', - 'update_appended_accessory' => 'Actualizar accesorio adjunto', + 'update_appended_accessory' => 'Actualizar accesorio añadido', 'append_consumable' => 'Añadir consumible', 'update_appended_consumable' => 'Actualizar consumible adjunto', 'append_license' => 'Añadir licencia', @@ -38,8 +38,8 @@ return [ 'accessory_error' => 'El accesorio ya está conectado al kit', 'accessory_deleted' => 'El borrado fue exitoso', 'accessory_none' => 'El accesorio no existe', - 'checkout_success' => 'El pago fue exitoso', - 'checkout_error' => 'Error de pago', + 'checkout_success' => 'Asignación correcta', + 'checkout_error' => 'Error al asignar', 'kit_none' => 'El kit no existe', 'kit_created' => 'Kit creado correctamente', 'kit_updated' => 'Kit actualizado correctamente', diff --git a/resources/lang/es-CO/admin/labels/table.php b/resources/lang/es-CO/admin/labels/table.php index 9831a9551d..055d28c169 100644 --- a/resources/lang/es-CO/admin/labels/table.php +++ b/resources/lang/es-CO/admin/labels/table.php @@ -10,7 +10,7 @@ return [ 'example_supplier' => 'Compañía de prueba limitada', 'labels_per_page' => 'Etiquetas', 'support_fields' => 'Campos', - 'support_asset_tag' => 'Etiqueta', + 'support_asset_tag' => 'Placa', 'support_1d_barcode' => '1D', 'support_2d_barcode' => '2D', 'support_logo' => 'Logo', diff --git a/resources/lang/es-CO/admin/licenses/form.php b/resources/lang/es-CO/admin/licenses/form.php index bf692e7405..98fac63a4f 100644 --- a/resources/lang/es-CO/admin/licenses/form.php +++ b/resources/lang/es-CO/admin/licenses/form.php @@ -2,8 +2,8 @@ return array( - 'asset' => 'Equipo', - 'checkin' => 'Devolver', + 'asset' => 'Activo', + 'checkin' => 'Ingresar', 'create' => 'Crear licencia', 'expiration' => 'Fecha de caducidad', 'license_key' => 'Clave del producto', @@ -12,11 +12,11 @@ return array( 'no_depreciation' => 'No depreciar', 'purchase_order' => 'Número de orden de compra', 'reassignable' => 'Reasignable', - 'remaining_seats' => 'Asientos restantes', - 'seats' => 'Asientos', - 'termination_date' => 'Fecha de Terminación', - 'to_email' => 'Licenciado a Email', - 'to_name' => 'Licenciado a Nombre', + 'remaining_seats' => 'Disponibles', + 'seats' => 'Total de licencias', + 'termination_date' => 'Fecha de finalización', + 'to_email' => 'Correo electrónico asociado a la licencia', + 'to_name' => 'Nombre de la persona asociada a la licencia', 'update' => 'Actualizar Licencia', 'checkout_help' => 'Debe asignar una licencia a un activo de hardware o a una persona. Puede seleccionar ambos, pero el propietario del activo debe coincidir con la persona a la que está asignado el activo.' ); diff --git a/resources/lang/es-CO/admin/licenses/general.php b/resources/lang/es-CO/admin/licenses/general.php index 6b59e92068..be9b58f965 100644 --- a/resources/lang/es-CO/admin/licenses/general.php +++ b/resources/lang/es-CO/admin/licenses/general.php @@ -2,50 +2,51 @@ return array( 'about_licenses_title' => 'Acerca de licencias', - 'about_licenses' => 'Las licencias se utilizan para rastrear software. Tienen un número específico de asientos que pueden ser revisados a individuos', - 'checkin' => 'Comprobar licencia', - 'checkout_history' => 'Historial de pago', - 'checkout' => 'Comprobar licencia Seat', + 'about_licenses' => 'Las licencias se utilizan para hacer un seguimiento del software. Tienen una cantidad determinada que puede ser asignada a individuos', + 'checkin' => 'Ingresar licencia', + 'checkout_history' => 'Historial de asignaciones', + 'checkout' => 'Asignar licencia', 'edit' => 'Editar Licencia', 'filetype_info' => 'Los tipos de archivo permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, y rar.', 'clone' => 'Clonar licencia', 'history_for' => 'Historial para ', 'in_out' => 'Entrada/Salida', 'info' => 'Información de licencia', - 'license_seats' => 'Asientos de licencia', - 'seat' => 'Comer', - 'seats' => 'Asientos', + 'license_seats' => 'Total de licencias', + 'seat' => 'Licencia', + 'seat_count' => 'Licencia :count', + 'seats' => 'Total de licencias', 'software_licenses' => 'Licencias de software', 'user' => 'Usuario', 'view' => 'Ver Licencia', - 'delete_disabled' => 'Esta licencia no se puede eliminar aún porque algunos asientos todavía están retirados.', + 'delete_disabled' => 'Esta licencia no se puede eliminar aún está asignada a algunos usuarios.', 'bulk' => [ 'checkin_all' => [ - 'button' => 'Comprobar todos los asientos', - 'modal' => 'Esto activará el checkin de un asiento. | Esta acción registrará todos los asientos :checkedout_seats_count para esta licencia.', - 'enabled_tooltip' => 'Checkin TODOS los asientos para esta licencia tanto de usuarios como de activos', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos seleccionados actualmente', + 'button' => 'Ingresar todas las licencias', + 'modal' => 'Esta acción ingresará una licencia. | Esta acción ingresará todas las :checkedout_seats_count licencias.', + 'enabled_tooltip' => 'Recibir TODAS las licencias tanto de usuarios como de activos', + 'disabled_tooltip' => 'Esto está deshabilitado porque no hay licencias asignadas actualmente', 'disabled_tooltip_reassignable' => 'Esto está desactivado porque la licencia no es reasignable', - 'success' => '¡Licencia registrada con éxito! | ¡Todas las licencias fueron registradas con éxito!', - 'log_msg' => 'Check-in a través de pago de licencia en licencia GUI', + 'success' => '¡Licencia recibida correctamente! | ¡Todas las licencias fueron recibidas correctamente!', + 'log_msg' => 'Ingresada mediante ingreso masivo en página de licencias', ], 'checkout_all' => [ - 'button' => 'Salir todos los asientos', - 'modal' => 'Esta acción comprobará un asiento para el primer usuario disponible. | Esta acción verificará todos los asientos :available_seats_count para los primeros usuarios disponibles. Se considera que un usuario está disponible para este asiento si aún no tiene esta licencia revisada para ellos, y la propiedad Auto-Asignación de Licencia está habilitada en su cuenta de usuario.', - 'enabled_tooltip' => 'Checkout TODOS los asientos (o tantos como estén disponibles) para TODOS los usuarios', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos disponibles actualmente', - 'success' => '¡Licencia retirada con éxito! | ¡Licencias :count fueron retiradas con éxito!', - 'error_no_seats' => 'No quedan plazas restantes para esta licencia.', - 'warn_not_enough_seats' => ':count usuarios fueron asignados a esta licencia, pero nos quedamos sin plazas de licencia disponibles.', + 'button' => 'Asignar todas las licencias', + 'modal' => 'Esta acción asignará una licencia para el primer usuario disponible. | Esta acción asignará todas las :available_seats_count licencias a los primeros usuarios disponibles. Se considera que un usuario está disponible si aún no tiene esta licencia asignada y la propiedad "Autoasignación de licencia" está habilitada en su cuenta de usuario.', + 'enabled_tooltip' => 'Asignar TODAS las licencias (o tantas como estén disponibles) para TODOS los usuarios', + 'disabled_tooltip' => 'Esto está deshabilitado porque actualmente no hay licencias disponibles', + 'success' => '¡Licencia asignada exitosamente! | ¡Licencias :count asignadas exitosamente!', + 'error_no_seats' => 'No quedan licencias disponibles.', + 'warn_not_enough_seats' => 'Se asignaron :count usuarios a esta licencia, y se agotaron las licencias disponibles.', 'warn_no_avail_users' => 'Nada que hacer. No hay usuarios que no tengan esta licencia asignada.', - 'log_msg' => 'Checado mediante pago masivo de licencia en GUI licencia', + 'log_msg' => 'Asignada vía asignación masiva en página de licencias', ], ], - 'below_threshold' => 'Solo quedan :remaining_count asientos para esta licencia con una cantidad mínima de :min_amt. Puede considerar comprar más asientos.', + 'below_threshold' => 'Solo quedan :remaining_count licencias y su cantidad mínima es de :min_amt. Puede considerar la compra de más licencias.', 'below_threshold_short' => 'Este artículo está por debajo de la cantidad mínima requerida.', ); diff --git a/resources/lang/es-CO/admin/licenses/message.php b/resources/lang/es-CO/admin/licenses/message.php index d8b2666ae8..4cab6208d7 100644 --- a/resources/lang/es-CO/admin/licenses/message.php +++ b/resources/lang/es-CO/admin/licenses/message.php @@ -6,14 +6,14 @@ return array( 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', 'asset_does_not_exist' => 'El activo que está intentando asociar con esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', - 'assoc_users' => 'Esta licencia está actualmente reservada a un usuario y no puede ser eliminada. Por favor, compruebe la licencia en primer lugar y vuelva a intentarlo. ', + 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', 'not_found' => 'Licencia no encontrada', - 'seats_available' => ':seat_count plazas disponibles', + 'seats_available' => ':seat_count disponibles', 'create' => array( - 'error' => 'La licencia no fue creada, por favor inténtalo de nuevo.', + 'error' => 'La licencia no fue creada, por favor inténtelo de nuevo.', 'success' => 'Licencia creada con éxito.' ), @@ -30,25 +30,27 @@ return array( ), 'update' => array( - 'error' => 'La licencia no fue actualizada, por favor inténtalo de nuevo', + 'error' => 'La licencia no fue actualizada, por favor inténtelo de nuevo', 'success' => 'Licencia actualizada correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta licencia?', - 'error' => 'Hubo un problema al eliminar la licencia. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema al eliminar la licencia. Por favor, inténtelo de nuevo.', 'success' => 'La licencia se ha eliminado correctamente.' ), 'checkout' => array( - 'error' => 'Hubo un problema al revisar la licencia. Por favor, inténtalo de nuevo.', - 'success' => 'La licencia fue retirada con éxito', - 'not_enough_seats' => 'No hay suficientes asientos de licencia disponibles para la compra', + 'error' => 'Hubo un problema asignando la licencia. Por favor, inténtelo de nuevo.', + 'success' => 'La licencia fue asignada con éxito', + 'not_enough_seats' => 'No hay suficientes licencias disponibles para asignar', + 'mismatch' => 'La licencia proporcionada no coincide con la licencia seleccionada', + 'unavailable' => 'Esta licencia no está disponible para ser asignada.', ), 'checkin' => array( - 'error' => 'Hubo un problema devolviendo la licencia. Por favor, inténtalo de nuevo.', - 'success' => 'La licencia fue registrada con éxito' + 'error' => 'Hubo un problema ingresando la licencia. Por favor, inténtelo de nuevo.', + 'success' => 'La licencia fue ingresada correctamente' ), ); diff --git a/resources/lang/es-CO/admin/licenses/table.php b/resources/lang/es-CO/admin/licenses/table.php index 575201c9fc..8d3fbc0747 100644 --- a/resources/lang/es-CO/admin/licenses/table.php +++ b/resources/lang/es-CO/admin/licenses/table.php @@ -10,7 +10,7 @@ return array( 'license_name' => 'Licenciado a', 'purchase_date' => 'Fecha de compra', 'purchased' => 'Comprado', - 'seats' => 'Asientos', + 'seats' => 'Total de licencias', 'hardware' => 'Hardware', 'serial' => 'Número de serie', 'title' => 'Licencia', diff --git a/resources/lang/es-CO/admin/locations/message.php b/resources/lang/es-CO/admin/locations/message.php index ab148a54b6..74716ab7c4 100644 --- a/resources/lang/es-CO/admin/locations/message.php +++ b/resources/lang/es-CO/admin/locations/message.php @@ -3,10 +3,10 @@ return array( 'does_not_exist' => 'La ubicación no existe.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', - 'assigned_assets' => 'Recursos asignados', + 'assigned_assets' => 'Activos asignados', 'current_location' => 'Ubicación actual', diff --git a/resources/lang/es-CO/admin/locations/table.php b/resources/lang/es-CO/admin/locations/table.php index 99add9c8e0..19a6fd38fa 100644 --- a/resources/lang/es-CO/admin/locations/table.php +++ b/resources/lang/es-CO/admin/locations/table.php @@ -1,7 +1,7 @@ 'Acerca de Ubicaciones', + 'about_locations_title' => 'Acerca de las ubicaciones', 'about_locations' => 'Las ubicaciones son utilizadas para hacer seguimiento de la información sobre ubicación de usuarios, activos, y otros ítems', 'assets_rtd' => 'Activos', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. 'assets_checkedout' => 'Activos asignados', @@ -24,7 +24,7 @@ return [ 'user_name' => 'Usuario', 'department' => 'Departamento', 'location' => 'Ubicación', - 'asset_tag' => 'Etiqueta de recursos', + 'asset_tag' => 'Placa del activo', 'asset_name' => 'Nombre', 'asset_category' => 'Categoría', 'asset_manufacturer' => 'Fabricante', diff --git a/resources/lang/es-CO/admin/manufacturers/message.php b/resources/lang/es-CO/admin/manufacturers/message.php index a6001d158e..039da22696 100644 --- a/resources/lang/es-CO/admin/manufacturers/message.php +++ b/resources/lang/es-CO/admin/manufacturers/message.php @@ -2,17 +2,17 @@ return array( - 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se puede utilizar en tu URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', + 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se pueden utilizar en su URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', 'does_not_exist' => 'El fabricante no existe.', 'assoc_users' => 'Este fabricante está actualmente asociado con al menos un modelo y no se puede eliminar. Por favor, actualice sus modelos para dejar de hacer referencia a este fabricante y vuelva a intentarlo. ', 'create' => array( - 'error' => 'El fabricante no ha sido creado, por favor inténtelo de nuevo.', + 'error' => 'El fabricante no fue creado, por favor inténtelo de nuevo.', 'success' => 'Fabricante creado con éxito.' ), 'update' => array( - 'error' => 'El fabricante no ha sido actualizado, por favor inténtalo de nuevo', + 'error' => 'El fabricante no fue actualizado, por favor inténtelo de nuevo', 'success' => 'El fabricante se ha actualizado correctamente.' ), @@ -23,7 +23,7 @@ return array( 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este fabricante?', - 'error' => 'Hubo un problema al eliminar el fabricante. Por favor, inténtelo de nuevo.', + 'error' => 'Ocurrió un problema eliminando el fabricante. Por favor, intente nuevamente.', 'success' => 'El fabricante se ha eliminado correctamente.' ) diff --git a/resources/lang/es-CO/admin/manufacturers/table.php b/resources/lang/es-CO/admin/manufacturers/table.php index 2cc8948c3f..737445a60c 100644 --- a/resources/lang/es-CO/admin/manufacturers/table.php +++ b/resources/lang/es-CO/admin/manufacturers/table.php @@ -11,6 +11,6 @@ return array( 'support_phone' => 'Teléfono de soporte', 'support_url' => 'URL de soporte', 'warranty_lookup_url' => 'URL de búsqueda de garantía', - 'update' => 'Actualizar Manufacturer', + 'update' => 'Actualizar fabricante', ); diff --git a/resources/lang/es-CO/admin/models/general.php b/resources/lang/es-CO/admin/models/general.php index 8ba0441f45..5ee81314c1 100644 --- a/resources/lang/es-CO/admin/models/general.php +++ b/resources/lang/es-CO/admin/models/general.php @@ -12,7 +12,7 @@ return array( 'show_mac_address' => 'Mostrar campo de dirección MAC en los activos de este modelo', 'view_deleted' => 'Vista eliminada', 'view_models' => 'Ver modelos', - 'fieldset' => 'Grupos de campo', + 'fieldset' => 'Grupo de campos', 'no_custom_field' => 'No hay campos personalizados', - 'add_default_values' => 'Añadir valores por defecto', + 'add_default_values' => 'Agregar valores predeterminados', ); diff --git a/resources/lang/es-CO/admin/models/message.php b/resources/lang/es-CO/admin/models/message.php index 6b67b03ec3..2ee6384cec 100644 --- a/resources/lang/es-CO/admin/models/message.php +++ b/resources/lang/es-CO/admin/models/message.php @@ -2,21 +2,21 @@ return array( - 'deleted' => 'Modelo de recurso eliminado', + 'deleted' => 'Se eliminó el modelo del activo', 'does_not_exist' => 'Modelo inexistente.', - 'no_association' => '¡ATENCIÓN! ¡El modelo de activo para este artículo no es válido o falta!', + 'no_association' => '¡ADVERTENCIA! ¡El modelo de activo para este artículo no es válido o no existe!', 'no_association_fix' => 'Esto romperá cosas de formas extrañas y horribles. Edite este activo ahora para asignarle un modelo.', - 'assoc_users' => 'Este modelo está asociado a uno o más equipos actualmente, por lo que no puede ser eliminado. Por favor elimina los equipos asociados, e inténtalo de nuevo. ', - + 'assoc_users' => 'Este modelo está asociado a uno o más activos y no puede ser eliminado. Por favor, elimine los activos y vuelva a intentarlo. ', + 'invalid_category_type' => 'Esta categoría debe ser una categoría de activos.', 'create' => array( - 'error' => 'El modelo no fue creado, por favor inténtalo de nuevo.', + 'error' => 'El modelo no fue creado, por favor inténtelo de nuevo.', 'success' => 'El modelo fue creado exitosamente.', 'duplicate_set' => 'Ya existe un modelo de equipo con el mismo nombre, fabricante y número de modelo.', ), 'update' => array( - 'error' => 'El modelo no pudo ser actualizado, por favor inténtalo de nuevo', + 'error' => 'El modelo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'El modelo fue actualizado exitosamente.', ), @@ -27,7 +27,7 @@ return array( ), 'restore' => array( - 'error' => 'El modelo no pudo ser restaurado, por favor inténtalo de nuevo', + 'error' => 'El modelo no fue restaurado, por favor intente nuevamente', 'success' => 'El modelo fue restaurado exitosamente.' ), diff --git a/resources/lang/es-CO/admin/models/table.php b/resources/lang/es-CO/admin/models/table.php index 881b1e463b..12e3078e86 100644 --- a/resources/lang/es-CO/admin/models/table.php +++ b/resources/lang/es-CO/admin/models/table.php @@ -2,15 +2,15 @@ return array( - 'create' => 'Crear Modelo de Equipo', + 'create' => 'Crear modelo de activo', 'created_at' => 'Creado el', - 'eol' => 'Vida útil', - 'modelnumber' => 'Modelo Nro.', + 'eol' => 'Fin de soporte (EOL)', + 'modelnumber' => 'Modelo No.', 'name' => 'Nombre del modelo de activo', - 'numassets' => 'Equipos', - 'title' => 'Modelos de equipo', + 'numassets' => 'Activos', + 'title' => 'Modelos de activos', 'update' => 'Actualizar modelo de activo', - 'view' => 'Ver Modelo de Equipo', + 'view' => 'Ver modelo de activo', 'update' => 'Actualizar modelo de activo', 'clone' => 'Clonar Modelo', 'edit' => 'Editar Modelo', diff --git a/resources/lang/es-CO/admin/reports/general.php b/resources/lang/es-CO/admin/reports/general.php index 8d017d7daa..d2056b1b56 100644 --- a/resources/lang/es-CO/admin/reports/general.php +++ b/resources/lang/es-CO/admin/reports/general.php @@ -1,7 +1,7 @@ 'Seleccione las opciones que desea para su informe de activos.', + 'info' => 'Seleccione las opciones que desea para el informe de activos.', 'deleted_user' => 'Usuario eliminado', 'send_reminder' => 'Enviar recordatorio', 'reminder_sent' => 'Recordatorio enviado', diff --git a/resources/lang/es-CO/admin/settings/general.php b/resources/lang/es-CO/admin/settings/general.php index 4010a7ff39..b0cb984c19 100644 --- a/resources/lang/es-CO/admin/settings/general.php +++ b/resources/lang/es-CO/admin/settings/general.php @@ -3,12 +3,12 @@ return [ 'ad' => 'Directorio activo', 'ad_domain' => 'Dominio de directorio activo', - 'ad_domain_help' => 'Esto es a veces el mismo que tu dominio de correo electrónico, pero no siempre.', + 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Añadir nombre de dominio al campo de nombre de usuario', 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', 'admin_cc_email' => 'Copiar en correo electrónico', - 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de devolución/asignación que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', + 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administración', 'is_ad' => 'Este es un servidor de Active Directory', 'alerts' => 'Alertas', @@ -18,27 +18,27 @@ return [ 'alerts_enabled' => 'Alertas de email habilitadas', 'alert_interval' => 'Umbral de alertas de caducidad (en días)', 'alert_inv_threshold' => 'Umbral de alerta de inventario', - 'allow_user_skin' => 'Permitir Skin de usuario', - 'allow_user_skin_help_text' => 'Marcar esta casilla permitirá a un usuario reemplazar la apariencia de la interfaz de usuario con una diferente.', - 'asset_ids' => 'Asset IDs', + 'allow_user_skin' => 'Permitir al usuario cambiar la apariencia', + 'allow_user_skin_help_text' => 'Si se marca esta casilla, el usuario podrá reemplazar la apariencia de la interfaz con una diferente.', + 'asset_ids' => 'Códigos de los activos', 'audit_interval' => 'Intervalo de auditoría', 'audit_interval_help' => 'Si está obligado a auditar físicamente sus activos con regularidad, introduzca el intervalo en meses que utilice. Si actualiza este valor, se actualizarán todas las "próximas fechas de auditoría" de los activos con una fecha de auditoría próxima.', 'audit_warning_days' => 'Umbral de advertencia de auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación es necesario avisar que se deben auditar los activos?', - 'auto_increment_assets' => 'Generar etiquetas de activos que incrementan automáticamente', + 'auto_increment_assets' => 'Generar placas de activos autoincrementables', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Habilitar etiquetas de activos auto-incrementantes primero para establecer esto', + 'auto_incrementing_help' => 'Habilite primero el incremento automático de las placas de activos antes de configurar esto', 'backups' => 'Copias de seguridad', 'backups_help' => 'Crear, descargar y restaurar copias de seguridad ', 'backups_restoring' => 'Restaurando desde la copia de seguridad', 'backups_upload' => 'Cargar copia de seguridad', 'backups_path' => 'Las copias de seguridad en el servidor se almacenan en :path', - 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker.)

Su base de datos completa de :app_name y cualquier archivo subido será completamente reemplazado por lo que hay en el archivo de copia de seguridad. ', + 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker).

Su base de datos completa de :app_name y cualquier archivo cargado será completamente reemplazado por lo que hay en la copia de seguridad. ', 'backups_logged_out' => 'A todos los usuarios existentes, incluido usted, se le cerrará la sesión una vez que la restauración haya finalizado.', 'backups_large' => 'Las copias de seguridad muy grandes pueden agotar el tiempo de espera en el intento de restauración y todavía pueden necesitar ser ejecutadas a través de la línea de comandos. ', 'barcode_settings' => 'Ajustes de código de barras', 'confirm_purge' => 'Confirmar purga', - 'confirm_purge_help' => 'Introduzca el texto "DELETE" en el cuadro de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados de forma soft. (Primero debes hacer una copia de seguridad, solo para estar seguro).', + 'confirm_purge_help' => 'Introduzca el texto "DELETE" en la casilla de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. Debería hacer primero una copia de seguridad, para estar seguro.', 'custom_css' => 'Custom CSS', 'custom_css_help' => 'Introduzca cualquier CSS personalizado que desee utilizar. No incluya las etiquetas <style></style>.', 'custom_forgot_pass_url' => 'URL de restablecimiento de contraseña personalizada', @@ -46,13 +46,13 @@ return [ 'dashboard_message' => 'Mensaje en el tablero', 'dashboard_message_help' => 'Este texto aparecerá en el panel de control para cualquiera con permiso para ver el tablero.', 'default_currency' => 'Moneda por defecto', - 'default_eula_text' => 'Acuerdo de uso predeterrminado', + 'default_eula_text' => 'Acuerdo de uso predeterminado', 'default_language' => 'Idioma por defecto', 'default_eula_help_text' => 'También puede asociar acuerdos de uso personalizados a categorías específicas.', 'acceptance_note' => 'Añada una nota para su decisión (opcional)', 'display_asset_name' => 'Mostrar nombre del activo', 'display_checkout_date' => 'Mostrar fecha de asignación', - 'display_eol' => 'Mostrar EOL en vista de tabla', + 'display_eol' => 'Mostrar fin de soporte (EOL) en la vista de tabla', 'display_qr' => 'Mostrar códigos cuadrados', 'display_alt_barcode' => 'Mostrar código de barras 1D', 'email_logo' => 'Logo de correo electrónico', @@ -71,7 +71,7 @@ return [ 'general_settings_keywords' => 'soporte de la compañía, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, acuerdo de uso, términos y condiciones, gravatar, términos de servicio, tablero de indicadores, privacidad', 'general_settings_help' => 'Acuerdo de uso predeterminado y más', 'generate_backup' => 'Generar copia de seguridad', - 'google_workspaces' => 'Espacios de trabajo de Google', + 'google_workspaces' => 'Google Workspace', 'header_color' => 'Color de cabecera', 'info' => 'Estos ajustes le permiten personalizar ciertos aspectos de su instalación.', 'label_logo' => 'Logo de etiqueta', @@ -81,20 +81,20 @@ return [ 'ldap_default_group' => 'Grupo de permisos por defecto', 'ldap_default_group_info' => 'Seleccione un grupo para asignar a los usuarios recién sincronizados. Recuerde que un usuario asume los permisos del grupo que le han asignado.', 'no_default_group' => 'Ningún grupo por defecto', - 'ldap_help' => 'Directorio LDAP/Activo', + 'ldap_help' => 'LDAP/Directorio Activo', 'ldap_client_tls_key' => 'Llave TLS del cliente LDAP', 'ldap_client_tls_cert' => 'Certificado LDAP cliente-lado TLS', 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Ajustes LDAP', - 'ldap_client_tls_cert_help' => 'El certificado TLS lateral del cliente y la clave para las conexiones LDAP normalmente sólo son útiles en las configuraciones del espacio de trabajo de Google con "Secure LDAP". Ambas son requeridas.', + 'ldap_client_tls_cert_help' => 'El certificado TLS del cliente y la clave para las conexiones LDAP normalmente solo son útiles en las configuraciones de Google Workspace con "LDAP Seguro". Ambas son requeridas.', 'ldap_location' => 'Ubicación LDAP', 'ldap_location_help' => 'El campo Location (ubicación) de Ldap debe utilizarse si una OU no está siendo utilizada en el Base Bind DN (DN del enlace base). Deje este espacio en blanco si se utiliza una búsqueda OU.', - 'ldap_login_test_help' => 'Introduzca un nombre de usuario y contraseña LDAP válidos del DN base que especificó anteriormente para comprobar si su inicio de sesión LDAP está configurado correctamente. DEBES GUARDAR SUS SETTINGS LDAP ACTUALIZADOS.', - 'ldap_login_sync_help' => 'Esto sólo prueba que LDAP puede sincronizar correctamente. Si su consulta de autenticación LDAP no es correcta, es posible que los usuarios todavía no puedan iniciar sesión. DEBES GUARDAR SUS SETTINGS LDAP ACTUALIZADOS.', + 'ldap_login_test_help' => 'Introduzca un nombre de usuario y una contraseña LDAP válidos del DN base que especificó anteriormente para comprobar si el inicio de sesión LDAP está configurado correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', + 'ldap_login_sync_help' => 'Esto solo comprueba que el LDAP puede sincronizarse correctamente. Si su solicitud de autenticación LDAP no es correcta, los usuarios aún no podrían iniciar sesión. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', 'ldap_manager' => 'Gestor LDAP', 'ldap_server' => 'Servidor LDAP', - 'ldap_server_help' => 'Esto debería comenzar con ldap:// (para no cifrado o TLS) o ldaps:// (para SSL)', + 'ldap_server_help' => 'Esto debería comenzar con ldap:// (sin cifrado) o con ldaps:// (para TLS o SSL)', 'ldap_server_cert' => 'Validación del certificado LDAP SSL', 'ldap_server_cert_ignore' => 'Permitir certificado SSL inválido', 'ldap_server_cert_help' => 'Seleccione esta casilla si está utilizando un certificado SSL autofirmado y desea aceptar un certificado SSL inválido.', @@ -109,7 +109,7 @@ return [ 'ldap_basedn' => 'Base Bind DN', 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de contraseña LDAP', - 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Deshabilitar esto significa que los usuarios pueden no poder iniciar sesión si su servidor LDAP es inaccesible por alguna razón.', + 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', 'ldap_username_field' => 'Campo Usuario', 'ldap_lname_field' => 'Apellidos', 'ldap_fname_field' => 'Nombre LDAP', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Probar LDAP', 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de software', - 'load_remote' => 'Usar Gravatar', - 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar scripts desde el Internet externo. Esto evitará que Snipe-IT intente cargar imágenes desde Gravatar.', + 'load_remote' => 'Cargar avatares remotos', + 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar secuencias de comandos (scripts) desde Internet . Esto evitará que Snipe-IT intente cargar avatares de Gravatar u otras fuentes externas.', 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', @@ -143,18 +143,18 @@ return [ 'login_remote_user_header_name_help' => 'Usar la cabecera especificada en lugar de REMOTE_USER', 'logo' => 'Logo', 'logo_print_assets' => 'Usar en la impresión', - 'logo_print_assets_help' => 'Usar marca en listas de activos imprimibles ', + 'logo_print_assets_help' => 'Utilice la marca de la empresa en las listas de activos imprimibles ', 'full_multiple_companies_support_help_text' => 'Limitar los usuarios asignados a compañías (incluyendo administradores) solo a los activos de esa compañía.', 'full_multiple_companies_support_text' => 'Soporte completo a múltiples compañías', 'show_in_model_list' => 'Mostrar en menús desplegables de modelos', 'optional' => 'opcional', 'per_page' => 'Resultados por página', 'php' => 'Versión PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'Información de PHP', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, sistema, información', 'php_overview_help' => 'Información del sistema PHP', - 'php_gd_info' => 'Debe instalar php-gd para mostrar los códigos QR, ver las instrucciones de instalación.', + 'php_gd_info' => 'Debe instalar php-gd para mostrar códigos QR, consulte las instrucciones de instalación.', 'php_gd_warning' => 'PHP Image Processing y GD plugin NO está instalado.', 'pwd_secure_complexity' => 'Complejidad de contraseña', 'pwd_secure_complexity_help' => 'Seleccione las reglas de complejidad de contraseña que desee aplicar.', @@ -166,9 +166,9 @@ return [ 'pwd_secure_min' => 'Caracteres mínimos de la contraseña', 'pwd_secure_min_help' => 'El valor mínimo permitido es 8', 'pwd_secure_uncommon' => 'Evitar contraseñas comunes', - 'pwd_secure_uncommon_help' => 'Esto impedirá que los usuarios usen contraseñas comunes de los 10.000 mejores contraseñas reportadas en infracciones.', + 'pwd_secure_uncommon_help' => 'Esto impedirá que los usuarios usen contraseñas comunes de las 10,000 contraseñas más usuales reportadas en fugas de datos.', 'qr_help' => 'Habilita primero los códigos QR para establecer esto', - 'qr_text' => 'QR Code Text', + 'qr_text' => 'Texto del código QR', 'saml' => 'SAML', 'saml_title' => 'Actualizar ajustes de SAML', 'saml_help' => 'Configuración SAML', @@ -181,43 +181,43 @@ return [ 'saml_sp_metadata_url' => 'URL de metadatos', 'saml_idp_metadata' => 'Metadatos SAML IdP', 'saml_idp_metadata_help' => 'Puede especificar los metadatos IdP usando un archivo URL o XML.', - 'saml_attr_mapping_username' => 'Mapeo de Atributos - Nombre de Usuario', - 'saml_attr_mapping_username_help' => 'NameID se utilizará si el mapeo de atributos no está especificado o no es válido.', + 'saml_attr_mapping_username' => 'Asociar atributo - Nombre de usuario', + 'saml_attr_mapping_username_help' => 'NameID se utilizará si la asociación de atributos no está especificada o no es válida.', 'saml_forcelogin_label' => 'Forzar inicio de sesión SAML', 'saml_forcelogin' => 'Hacer SAML el inicio de sesión principal', - 'saml_forcelogin_help' => 'Puedes usar \'/login?nosaml\' para llegar a la página de inicio de sesión normal.', + 'saml_forcelogin_help' => 'Puede usar \'/login?nosaml\' para ir a la página de inicio de sesión normal.', 'saml_slo_label' => 'Cerrar sesión única SAML', 'saml_slo' => 'Enviar una solicitud de salida a IdP al cerrar sesión', 'saml_slo_help' => 'Esto causará que el usuario sea redirigido primero a la IdP al cerrar sesión. Dejar desmarcado si el IdP no soporta correctamente SAML SLO iniciado por SL.', 'saml_custom_settings' => 'Configuración personalizada SAML', - 'saml_custom_settings_help' => 'Puedes especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úsalo bajo tu propio riesgo.', + 'saml_custom_settings_help' => 'Puede especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úselo bajo su propio riesgo.', 'saml_download' => 'Descargar metadatos', 'setting' => 'Ajustes', 'settings' => 'Ajustes', 'show_alerts_in_menu' => 'Mostrar alertas en el menú superior', 'show_archived_in_list' => 'Activos archivados', - 'show_archived_in_list_text' => 'Mostrar recursos archivados en el listado de "todos los activos"', + 'show_archived_in_list_text' => 'Mostrar activos archivados en el listado de "todos los activos"', 'show_assigned_assets' => 'Mostrar activos asignados a activos', 'show_assigned_assets_help' => 'Mostrar activos que fueron asignados a otros activos en Ver usuario -> Activos, Ver usuario -> Información -> Imprimir todos los asignados y en Cuenta -> Ver elementos asignados.', - 'show_images_in_email' => 'Mostrar imágenes en emails', - 'show_images_in_email_help' => 'Desmarque esta casilla si su instalación de Snipe-IT está detrás de una VPN o red cerrada y los usuarios fuera de la red no podrán cargar imágenes servidas desde esta instalación en sus correos electrónicos.', + 'show_images_in_email' => 'Mostrar imágenes en correos electrónicos', + 'show_images_in_email_help' => 'Desmarque esta casilla si su instalación de Snipe-IT está detrás de una red privada o VPN y los usuarios fuera de la red no pueden cargar las imágenes publicadas desde este servidor de Snipe-IT en sus correos electrónicos.', 'site_name' => 'Nombre del sitio', 'integrations' => 'Integraciones', 'slack' => 'Slack', 'general_webhook' => 'Webhook general', - 'ms_teams' => 'Equipos Microsoft', + 'ms_teams' => 'Microsoft Teams', 'webhook' => ':app', 'webhook_presave' => 'Probar para guardar', 'webhook_title' => 'Actualizar ajustes de Webhook', 'webhook_help' => 'Ajustes de integración', - 'webhook_botname' => ':app Nombre', - 'webhook_channel' => ':app Canal', - 'webhook_endpoint' => ':app Endpoint', + 'webhook_botname' => 'Nombre de Bot de :app', + 'webhook_channel' => 'Canal de :app', + 'webhook_endpoint' => 'Endpoint de :app', 'webhook_integration' => ':app Ajustes', - 'webhook_test' =>'Probar :app integración', - 'webhook_integration_help' => 'La integración de :app es opcional, sin embargo el extremo y el canal son necesarios si desea usarlo. Para configurar la integración de :app, primero debes crear un webhook entrante en tu cuenta :app. Haga clic en el botón Test :app Integración para confirmar que su configuración es correcta antes de guardar. ', - 'webhook_integration_help_button' => 'Una vez que hayas guardado la información de :app, aparecerá un botón de prueba.', - 'webhook_test_help' => 'Comprueba si tu integración con :app está configurada correctamente. DEBES GUARDAR TU ACTUALIZADO :app SETTINGS FIRST.', + 'webhook_test' =>'Probar integración con :app', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', + 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', 'snipe_version' => 'Versión de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifique quién ve los enlaces a la información de Soporte de Snipe-IT y Manual de Usuarios', @@ -227,14 +227,14 @@ return [ 'update' => 'Actualizar ajustes', 'value' => 'Precio', 'brand' => 'Marca', - 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, cabeza, colores, color, c(debate)', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, apariencia, encabezado, colores, color, css', 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Sobre ajustes', 'about_settings_text' => 'Estos ajustes le permiten personalizar ciertos aspectos de su instalación.', 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de la etiqueta (pulgadas)', - 'next_auto_tag_base' => 'Siguiente autoincremento', + 'next_auto_tag_base' => 'Siguiente incremento automático', 'page_padding' => 'Margen de página (pulgadas)', 'privacy_policy_link' => 'Enlace a la política de privacidad', 'privacy_policy' => 'Política de privacidad', @@ -243,18 +243,18 @@ return [ 'purge_deleted' => 'Purgar eliminados ', 'labels_display_bgutter' => 'Etiqueta inferior gutter', 'labels_display_sgutter' => 'Guiador lateral de etiqueta', - 'labels_fontsize' => 'Label font size', + 'labels_fontsize' => 'Tamaño de letra de la etiqueta', 'labels_pagewidth' => 'Ancho de la hoja de etiqueta', 'labels_pageheight' => 'Altura de la hoja de etiqueta', 'label_gutters' => 'Espacio de etiqueta (pulgadas)', 'page_dimensions' => 'Dimensiones de página (pulgadas)', 'label_fields' => 'Campos visibles de etiqueta', 'inches' => 'pulgadas', - 'width_w' => 'i', - 'height_h' => 'h', + 'width_w' => 'ancho', + 'height_h' => 'alto', 'show_url_in_emails' => 'Enlace a Snipe-IT en correos electrónicos', - 'show_url_in_emails_help_text' => 'Desmarque esta casilla si no desea enlazar de nuevo a su instalación de Snipe-IT en sus pie de página de correo electrónico. Útil si la mayoría de tus usuarios nunca se conectan. ', - 'text_pt' => 'pt', + 'show_url_in_emails_help_text' => 'Desmarque esta casilla si no desea vincular su instalación de Snipe-IT en el pie de página de correo electrónico. Útil si la mayoría de sus usuarios nunca se conectan. ', + 'text_pt' => 'puntos', 'thumbnail_max_h' => 'Altura máxima de la miniatura', 'thumbnail_max_h_help' => 'Altura máxima en píxeles que las miniaturas pueden mostrar en la vista de listado. Mínimo 25, máximo 500.', 'two_factor' => 'Autenticación de dos factores', @@ -272,36 +272,36 @@ return [ 'two_factor_disabled' => 'Deshabilitado', 'two_factor_enter_code' => 'Ingrese el código de verificación de dos factores', 'two_factor_config_complete' => 'Enviar código', - 'two_factor_enabled_edit_not_allowed' => 'Su administrador no le permite editar esta configuración.', + 'two_factor_enabled_edit_not_allowed' => 'El administrador no permite modificar esta configuración.', 'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra su aplicación Google Authenticator y escanee el código QR de abajo para inscribir su dispositivo. Una vez que lo haya inscrito, introduzca el código en la parte inferior", 'require_accept_signature' => 'Solicitar firma', 'require_accept_signature_help_text' => 'Activar esta función requiere que los usuarios firmen físicamente aceptando un elemento.', - 'left' => 'restante', + 'left' => 'izquierda', 'right' => 'derecha', 'top' => 'arriba', 'bottom' => 'abajo', 'vertical' => 'vertical', 'horizontal' => 'horizontal', 'unique_serial' => 'Números de serie únicos', - 'unique_serial_help_text' => 'Marcando esta casilla se aplicará una restricción de singularidad en las publicaciones seriadas de activos', - 'zerofill_count' => 'Longitud de etiquetas de activos, incluyendo zerofill', + 'unique_serial_help_text' => 'Marcando esta casilla se aplicará una restricción de números de serie únicos a los activos', + 'zerofill_count' => 'Longitud de los números en las placas de los activos, incluyendo los ceros de relleno', 'username_format_help' => 'Esta configuración solo será utilizada por el proceso de importación si no se proporciona un nombre de usuario y tenemos que generar un nombre de usuario por usted.', 'oauth_title' => 'Configuración de la API de OAuth', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'Clientes OAuth', 'oauth' => 'OAuth', - 'oauth_help' => 'Configuración de Oauth Endpoint', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', - 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', + 'oauth_help' => 'Configuración del punto final (endpoint) OAuth', + 'oauth_no_clients' => 'Aún no ha creado ningún cliente OAuth.', + 'oauth_secret' => 'Secreto', + 'oauth_authorized_apps' => 'Aplicaciones autorizadas', + 'oauth_redirect_url' => 'URL de redireccionamiento', + 'oauth_name_help' => ' Algo que sus usuarios reconocerán y en lo que confiarán.', 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', - 'asset_tag_title' => 'Actualizar configuración de etiquetas de activos', + 'oauth_callback_url' => 'URL de devolución de llamada de autorización de su aplicación (callback URL).', + 'create_client' => 'Crear cliente', + 'no_scopes' => 'Sin scopes', + 'asset_tag_title' => 'Actualizar la configuración de las placas de activos', 'barcode_title' => 'Actualizar ajustes de código de barras', - 'barcodes' => 'Barcodes', + 'barcodes' => 'Códigos de barras', 'barcodes_help_overview' => 'Configuración de código de barras & QR', 'barcodes_help' => 'Esto intentará eliminar códigos de barras almacenados en caché. Normalmente solo se usa si la configuración del código de barras ha cambiado o si ha cambiado la URL de Snipe-IT. Los códigos de barras se volverán a generar la próxima vez que se acceda a ellos.', 'barcodes_spinner' => 'Intentando eliminar archivos...', @@ -333,7 +333,7 @@ return [ 'ldap_ad' => 'LDAP/AD', 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear un usuario ::', - 'create_admin_success' => '¡Éxito! ¡Tu usuario admin ha sido añadido!', + 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', 'setup_migrations' => 'Migraciones de base de datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', @@ -349,7 +349,7 @@ return [ 'label2_title' => 'Título', 'label2_title_help' => 'El título para mostrar en etiquetas que lo soportan', 'label2_title_help_phold' => 'El marcador de posición {COMPANY} será reemplazado con el nombre de la compañía del activo', - 'label2_asset_logo' => 'Usar Logo de Activos', + 'label2_asset_logo' => 'Usar logo de activos', 'label2_asset_logo_help' => 'Utilice el logotipo de la compañía asignada, en lugar del valor en :setting_name', 'label2_1d_type' => 'Tipo de código de barras 1D', 'label2_1d_type_help' => 'Formato para códigos de barras 1D', @@ -358,7 +358,7 @@ return [ 'label2_2d_target' => 'Apuntamiento del código de barras 2D', 'label2_2d_target_help' => 'La URL a la que apunta el código de barras 2D cuando se escanea', 'label2_fields' => 'Definiciones de campo', - 'label2_fields_help' => 'Los campos pueden ser agregados, eliminados y reordenados en la columna izquierda. Para cada campo, múltiples opciones para Etiqueta y DataSource pueden ser agregadas, eliminadas y reordenadas en la columna derecha.', + 'label2_fields_help' => 'Los campos se pueden añadir, eliminar y reordenar en la columna izquierda. Para cada campo, se pueden agregar, eliminar y reordenar múltiples opciones para etiquetas y para orígenes de datos en la columna derecha.', 'help_asterisk_bold' => 'Texto introducido como **texto** se mostrará como negrita', 'help_blank_to_use' => 'Deje en blanco para usar el valor de :setting_name', 'help_default_will_use' => ':default usará el valor de :setting_name.
Tenga en cuenta que el valor de los códigos de barra debe estar en cumplimiento con la especificación respectiva para que sean generados exitosamente. Por favor lea la documentación para más detalles. ', @@ -367,13 +367,17 @@ return [ 'google_callback_help' => 'Esto debe introducirse como URL de devolución de llamada (callback) en la configuración de su aplicación de Google OAuth en la consola de desarrollador de Google de su organización .', 'google_login' => 'Configuración de inicio de sesión de Google Workspace', 'enable_google_login' => 'Permitir a los usuarios iniciar sesión con Google Workspace', - 'enable_google_login_help' => 'Los usuarios no serán provistos automáticamente. Deben tener una cuenta existente aquí AND en Google Workspace, y su nombre de usuario debe coincidir con su dirección de correo electrónico de Google Workspace. ', + 'enable_google_login_help' => 'Los usuarios no serán creados automáticamente. Deben tener una cuenta existente aquí Y en Google Workspace, y su nombre de usuario aquí debe coincidir con su dirección de correo electrónico de Google Workspace. ', 'mail_reply_to' => 'Dirección de respuesta de correo', 'mail_from' => 'Correo desde la dirección', 'database_driver' => 'Controlador de base de datos', 'bs_table_storage' => 'Almacenamiento de tabla', - 'timezone' => 'Timezone', + 'timezone' => 'Zona horaria', 'profile_edit' => 'Editar perfil', 'profile_edit_help' => 'Permitir que los usuarios editen sus propios perfiles.', + 'default_avatar' => 'Cargar avatar personalizado por defecto', + 'default_avatar_help' => 'Esta imagen se mostrará como la imagen de perfil si el usuario no tiene foto de perfil.', + 'restore_default_avatar' => 'Restaurar avatar original por defecto del sistema', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/es-CO/admin/settings/message.php b/resources/lang/es-CO/admin/settings/message.php index 00d46e012a..2b25da1f53 100644 --- a/resources/lang/es-CO/admin/settings/message.php +++ b/resources/lang/es-CO/admin/settings/message.php @@ -23,11 +23,11 @@ return [ 'sending' => 'Enviando correo electrónico de prueba...', 'success' => '¡Correo enviado!', 'error' => 'El correo no pudo ser enviado.', - 'additional' => 'Ningún mensaje de error adicional proporcionado. Comprueba la configuración de tu correo y el registro de tu aplicación.' + 'additional' => 'No se proporciona ningún mensaje de error adicional. Compruebe la configuración de su correo y el registro de errores de la aplicación.' ], 'ldap' => [ 'testing' => 'Probando conexión LDAP, Binding & Query ...', - '500' => 'Error 500 del servidor. Por favor, compruebe los registros de su servidor para más información.', + '500' => 'Error 500 del servidor. Por favor, compruebe los registros de error de su servidor para más información.', 'error' => 'Algo salió mal :(', 'sync_success' => 'Una muestra de 10 usuarios devueltos desde el servidor LDAP basado en su configuración:', 'testing_authentication' => 'Probando autenticación LDAP...', @@ -36,7 +36,7 @@ return [ 'webhook' => [ 'sending' => 'Enviando mensaje de prueba :app...', 'success' => '¡Su Integración :webhook_name funciona!', - 'success_pt1' => '¡Éxito! Comprueba el ', + 'success_pt1' => '¡Éxito! Compruebe el ', 'success_pt2' => ' para su mensaje de prueba, y asegúrese de hacer clic en GUARDAR abajo para guardar su configuración.', '500' => 'Error 500 del servidor.', 'error' => 'Algo salió mal. :app respondió con: :error_message', diff --git a/resources/lang/es-CO/admin/statuslabels/message.php b/resources/lang/es-CO/admin/statuslabels/message.php index 0474cbea52..c94fb36aba 100644 --- a/resources/lang/es-CO/admin/statuslabels/message.php +++ b/resources/lang/es-CO/admin/statuslabels/message.php @@ -7,7 +7,7 @@ return [ 'assoc_assets' => 'Esta etiqueta de estado está actualmente asociada con al menos un activo y no se puede eliminar. Por favor actualice sus activos para que ya no hagan referencia a este estado e inténtelo de nuevo. ', 'create' => [ - 'error' => 'La etiqueta de estado no pudo ser creada, por favor inténtalo de nuevo.', + 'error' => 'La etiqueta de estado no pudo ser creada, por favor inténtelo de nuevo.', 'success' => 'La etiqueta de estado fue creada exitosamente.', ], @@ -18,7 +18,7 @@ return [ 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar esta etiqueta de estado?', - 'error' => 'Hubo un problema al eliminar la etiqueta de estado. Por favor inténtalo de nuevo.', + 'error' => 'Hubo un problema borrando la etiqueta de estado. Por favor, inténtelo de nuevo.', 'success' => 'La etiqueta de estado fue eliminada de forma exitosa.', ], diff --git a/resources/lang/es-CO/admin/suppliers/message.php b/resources/lang/es-CO/admin/suppliers/message.php index 56673eac51..7ea9253fda 100644 --- a/resources/lang/es-CO/admin/suppliers/message.php +++ b/resources/lang/es-CO/admin/suppliers/message.php @@ -7,22 +7,22 @@ return array( 'create' => array( - 'error' => 'Proveedor no fue creado, por favor inténtelo de nuevo.', + 'error' => 'El proveedor no fue creado, por favor inténtelo de nuevo.', 'success' => 'Proveedor creado con éxito.' ), 'update' => array( - 'error' => 'Proveedor no actualizado, por favor inténtalo de nuevo', + 'error' => 'El proveedor no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Proveedor actualizado correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este proveedor?', - 'error' => 'Hubo un problema al eliminar el proveedor. Inténtalo de nuevo.', + 'error' => 'Hubo un problema al eliminar el proveedor, por favor inténtelo de nuevo.', 'success' => 'Proveedor eliminado correctamente.', - 'assoc_assets' => 'Este proveedor está asociado con :asset_count activo(s) y no puede ser eliminado. Por favor, actualice sus activos para dejar de hacer referencia a este proveedor y vuelva a intentarlo. ', - 'assoc_licenses' => 'Este proveedor está asociado actualmente con :licenses_count licences(s) y no puede ser eliminado. Por favor, actualice sus licencias para dejar de hacer referencia a este proveedor e inténtelo de nuevo. ', - 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintainances_count mantenimiento(s) y no puede ser eliminado. Por favor, actualice el mantenimiento de sus activos para no hacer referencia a este proveedor y vuelva a intentarlo. ', + 'assoc_assets' => 'Este proveedor está actualmente asociado con :asset_count activo(s) y no puede ser eliminado. Actualice sus activos para que ya no hagan referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_licenses' => 'Este proveedor está asociado actualmente con :licenses_count licences(s) y no puede ser eliminado. Actualice sus licencias para que ya no hagan referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintainances_count mantenimiento(s) de activo(s) y no puede ser eliminado. Por favor, actualice el mantenimiento de sus activos para no hacer referencia a este proveedor y vuelva a intentarlo. ', ) ); diff --git a/resources/lang/es-CO/admin/users/general.php b/resources/lang/es-CO/admin/users/general.php index 10c4618798..b584326dea 100644 --- a/resources/lang/es-CO/admin/users/general.php +++ b/resources/lang/es-CO/admin/users/general.php @@ -2,11 +2,11 @@ return [ 'activated_help_text' => 'Este usuario puede iniciar sesión', - 'activated_disabled_help_text' => 'No puedes editar el estado de activación de tu propia cuenta.', - 'assets_user' => 'Recursos asignados a :name', + 'activated_disabled_help_text' => 'No puede editar el estado de activación de su propia cuenta.', + 'assets_user' => 'Activos asignados a :name', 'bulk_update_warn' => 'Está a punto de modificar las propiedades de :user_count usuarios. Por favor, tenga en cuenta que no puede modificar las propiedades de su propio usuario con este formulario, y debe realizar las modificaciones a su propio usuario de forma individual.', - 'bulk_update_help' => 'Este formulario le permite actualizar varios usuarios a la vez. Sólo rellene los campos que necesita cambiar. Cualquier campo que deje en blanco permanecerá sin cambios.', - 'current_assets' => 'Activos reservados a este usuario', + 'bulk_update_help' => 'Este formulario le permite actualizar varios usuarios a la vez. Solo diligencie los campos que necesita modificar. Los campos que queden en blanco no se modificarán.', + 'current_assets' => 'Activos actualmente asignados a este usuario', 'clone' => 'Clonar usuario', 'contact_user' => 'Contacto :name', 'edit' => 'Editar usuario', @@ -18,10 +18,10 @@ return [ 'ldap_config_text' => 'Los ajustes de configuración LDAP se pueden encontrar Admin > Configuración. La ubicación (opcional) seleccionada se establecerá para todos los usuarios importados.', 'print_assigned' => 'Imprimir todos los asignados', 'email_assigned' => 'Enviar correo con todos los asignados', - 'user_notified' => 'El usuario ha sido enviado por correo electrónico a una lista de sus elementos asignados actualmente.', + 'user_notified' => 'Se ha enviado al usuario un correo electrónico con lista de los elementos que tiene asignados actualmente.', 'auto_assign_label' => 'Incluye a este usuario al asignar automáticamente licencias elegibles', 'auto_assign_help' => 'Omitir este usuario en la asignación automática de licencias', - 'software_user' => 'Software comprado a :name', + 'software_user' => 'Software asignado a :name', 'send_email_help' => 'Debe proporcionar una dirección de correo electrónico para este usuario para poder enviarle las credenciales. Únicamente pueden enviarse las credenciales por correo eléctronico durante la creación del usuario. Las contraseñas se almacenan en un hash de un solo sentido y no se pueden recuperar una vez guardadas.', 'view_user' => 'Ver usuario :name', 'usercsv' => 'Archivo CSV', @@ -35,8 +35,8 @@ return [ 'superadmin_permission_warning' => 'Sólo los superadministradores pueden conceder acceso a un usuario superadministrador.', 'admin_permission_warning' => 'Sólo los usuarios con derechos de administrador o mayores pueden conceder acceso de administrador a los usuarios.', 'remove_group_memberships' => 'Eliminar membresías de grupo', - 'warning_deletion_information' => 'Está a punto de devolver TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', - 'update_user_assets_status' => 'Actualizar todos los recursos para estos usuarios a este estado', + 'warning_deletion_information' => 'Está a punto de ingresar TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', + 'update_user_assets_status' => 'Actualizar todos los activos para estos usuarios a este estado', 'checkin_user_properties' => 'Comprobar todas las propiedades asociadas a estos usuarios', 'remote_label' => 'Este es un usuario remoto', 'remote' => 'Remoto', diff --git a/resources/lang/es-CO/admin/users/message.php b/resources/lang/es-CO/admin/users/message.php index d61b278fdf..d9fe92f07f 100644 --- a/resources/lang/es-CO/admin/users/message.php +++ b/resources/lang/es-CO/admin/users/message.php @@ -3,8 +3,8 @@ return array( 'accepted' => 'Ha aceptado este artículo exitosamente.', - 'declined' => 'Ha rechazado este activo con éxito.', - 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada de administrador no fue guardada porque el gerente seleccionado también estaba en la lista de usuarios a ser editada, y los usuarios no pueden ser sus propios gerentes. Vuelva a seleccionar los usuarios, excluyendo al gerente.', + 'declined' => 'Ha rechazado este activo con exitosamente.', + 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada supervisor (manager) no fue guardada porque el supervisor seleccionado también estaba en la lista de usuarios a editar, y los usuarios no pueden ser su propio supervisor. Vuelva a seleccionar los usuarios, excluyendo al supervisor.', 'user_exists' => '¡El usuario ya existe!', 'user_not_found' => 'El usuario no existe.', 'user_login_required' => 'El campo usuario es obligatorio', @@ -16,7 +16,7 @@ return array( 'password_resets_sent' => 'Los usuarios seleccionados que están activados y tienen una dirección de correo electrónico válida han sido enviados un enlace de restablecimiento de contraseña.', 'password_reset_sent' => 'Un enlace para restablecer la contraseña ha sido enviado a :email!', 'user_has_no_email' => 'Este usuario no tiene una dirección de correo electrónico en su perfil.', - 'log_record_not_found' => 'No se pudo encontrar un registro de registro coincidente para este usuario.', + 'log_record_not_found' => 'No se pudo encontrar un registro de eventos que coincida con este usuario.', 'success' => array( @@ -37,12 +37,12 @@ return array( 'update' => 'Hubo un problema al actualizar el usuario. Por favor, inténtelo de nuevo.', 'delete' => 'Hubo un problema al eliminar el usuario. Por favor, inténtelo de nuevo.', 'delete_has_assets' => 'Este usuario tiene elementos asignados y no se ha podido eliminar.', - 'delete_has_assets_var' => 'Este usuario todavía tienen un activo asignado. Por favor devuélvalo primero.| Este usuario todavía tienen :count activos asignados. Por favor devuélvalos primero.', - 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor primero haga su devolución.|Este usuario todavía tiene :count licencias asignadas. Por favor primero haga su devolución.', - 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor primero haga su devolución.|Este usuario todavía tiene :count accesorios asignados. Por favor primero haga su devolución.', - 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor seleccione otro supervisor primero.|Este usuario todavía supervisa :count ubicaciones. Por favor seleccione otro supervisor primero.', + 'delete_has_assets_var' => 'Este usuario todavía tiene un activo asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count activos asignados. Por favor ingréselos primero.', + 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor ingrésela primero.|Este usuario todavía tiene :count licencias asignadas. Por favor ingréselas primero.', + 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count accesorios asignados. Por favor ingréselos primero.', + 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor primero seleccione otro supervisor.|Este usuario todavía supervisa :count ubicaciones. Por favor primero seleccione otro supervisor.', 'delete_has_users_var' => 'Este usuario todavía supervisa a otro usuario. Por favor primero seleccione otro supervisor para ese usuario.|Este usuario todavía supervisa :count usuarios. Por favor primero seleccione otro supervisor para ellos.', - 'unsuspend' => 'Hubo un problema sin suspender al usuario. Por favor, inténtelo de nuevo.', + 'unsuspend' => 'Hubo un problema marcando como no suspendido al usuario. Por favor, inténtelo de nuevo.', 'import' => 'Hubo un problema importando usuarios. Por favor, inténtelo de nuevo.', 'asset_already_accepted' => 'Este activo ya ha sido aceptado.', 'accept_or_decline' => 'Debe aceptar o rechazar este activo.', @@ -56,15 +56,15 @@ return array( ), 'deletefile' => array( - 'error' => 'Archivo no eliminado. Vuelve a intentarlo.', + 'error' => 'El archivo no fue borrado. Por favor, inténtelo de nuevo.', 'success' => 'Archivo eliminado correctamente.', ), 'upload' => array( 'error' => 'Archivo(s) no cargados. Por favor, inténtelo de nuevo.', 'success' => 'Archivo(s) cargados correctamente.', - 'nofiles' => 'No has seleccionado ningún archivo para subir', - 'invalidfiles' => 'Uno o más de sus archivos es demasiado grande o es un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', + 'nofiles' => 'No seleccionó ningún archivo para cargar', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ), 'inventorynotification' => array( diff --git a/resources/lang/es-CO/auth.php b/resources/lang/es-CO/auth.php index 387ea794b6..0c664fc584 100644 --- a/resources/lang/es-CO/auth.php +++ b/resources/lang/es-CO/auth.php @@ -15,6 +15,6 @@ return array( 'failed' => 'Estas credenciales no coinciden con nuestros registros.', 'password' => 'La contraseña proporcionada es incorrecta.', - 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.', + 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtelo de nuevo en :seconds segundos.', ); diff --git a/resources/lang/es-CO/auth/message.php b/resources/lang/es-CO/auth/message.php index 776b526f5b..b954ab0ebb 100644 --- a/resources/lang/es-CO/auth/message.php +++ b/resources/lang/es-CO/auth/message.php @@ -11,21 +11,21 @@ return array( 'two_factor' => array( 'already_enrolled' => 'Su dispositivo ya está inscrito.', - 'success' => 'Has iniciado sesión con éxito.', + 'success' => 'Ha iniciado sesión exitosamente.', 'code_required' => 'El código de doble factor es necesario.', 'invalid_code' => 'El código de doble factor no es válido.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Por favor ingrese su código de autenticación de dos factores.', + 'please_enroll' => 'Por favor inscriba un dispositivo en la autenticación de dos factores.', ), 'signin' => array( 'error' => 'Hubo un problema al intentar iniciar sesión, por favor inténtelo de nuevo.', - 'success' => 'Has iniciado sesión con éxito.', + 'success' => 'Ha iniciado sesión exitosamente.', ), 'logout' => array( 'error' => 'Hubo un problema al intentar cerrar la sesión, por favor inténtelo de nuevo.', - 'success' => 'Has cerrado la sesión con éxito.', + 'success' => 'Ha cerrado la sesión exitosamente.', ), 'signup' => array( diff --git a/resources/lang/es-CO/button.php b/resources/lang/es-CO/button.php index fd86fa36ad..34ab29bdec 100644 --- a/resources/lang/es-CO/button.php +++ b/resources/lang/es-CO/button.php @@ -4,15 +4,16 @@ return [ 'actions' => 'Acciones', 'add' => 'Agregar nuevo', 'cancel' => 'Cancelar', - 'checkin_and_delete' => 'Devolver todo / Eliminar usuario', + 'checkin_and_delete' => 'Ingresar todo / Eliminar usuario', 'delete' => 'Eliminar', 'edit' => 'Editar', + 'clone' => 'Clonar', 'restore' => 'Restaurar', 'remove' => 'Eliminar', 'request' => 'Solicitud', 'submit' => 'Enviar', 'upload' => 'Cargar', - 'select_file' => 'Seleccione un archivo...', + 'select_file' => 'Seleccionar un archivo...', 'select_files' => 'Seleccionar archivos...', 'generate_labels' => '{1} Generar Etiqueta|[2,*] Generar Etiquetas', 'send_password_link' => 'Enviar enlace de restablecimiento de contraseña', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Añadir mantenimiento', 'append' => 'Añadir', 'new' => 'Nuevo', + 'var' => [ + 'clone' => 'Clonar :item_type', + 'edit' => 'Editar :item_type', + 'delete' => 'Eliminar :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Crear nuevo :item_type', + 'checkout' => 'Asignar :item_type', + 'checkin' => 'Ingresar :item_type', + ] ]; diff --git a/resources/lang/es-CO/general.php b/resources/lang/es-CO/general.php index 9659adef9d..b2be8d9e00 100644 --- a/resources/lang/es-CO/general.php +++ b/resources/lang/es-CO/general.php @@ -1,21 +1,21 @@ '2FA reset', + '2FA_reset' => 'Reestablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', - 'accepted_date' => 'Fecha aceptada', + 'accepted_date' => 'Fecha de aceptación', 'accessory' => 'Accesorio', 'accessory_report' => 'Informe de accesorios', 'action' => 'Acción', 'activity_report' => 'Informe de actividad', 'address' => 'Dirección', - 'admin' => 'Admin', + 'admin' => 'Administrador', 'admin_tooltip' => 'Este usuario tiene privilegios de superadministrador', 'superuser' => 'Superusuario', 'superuser_tooltip' => 'Este usuario es superadministrador', 'administrator' => 'Administrador', - 'add_seats' => 'Sitios añadidos', + 'add_seats' => 'Licencias añadidas', 'age' => "Edad", 'all_assets' => 'Todos los activos', 'all' => 'Todo', @@ -23,19 +23,19 @@ return [ 'asset_models' => 'Modelos de activos', 'asset_model' => 'Modelo', 'asset' => 'Activo', - 'asset_report' => 'Reporte de Activos', - 'asset_tag' => 'Etiqueta de activo', - 'asset_tags' => 'Etiquetas de Activos', - 'assets_available' => 'Recursos disponibles', + 'asset_report' => 'Informe de activos', + 'asset_tag' => 'Placa del activo', + 'asset_tags' => 'Placas de activos', + 'assets_available' => 'Activos disponibles', 'accept_assets' => 'Aceptar activos :name', 'accept_assets_menu' => 'Aceptar activos', 'audit' => 'Auditoría', 'audit_report' => 'Registro de auditoría', 'assets' => 'Activos', 'assets_audited' => 'activos auditados', - 'assets_checked_in_count' => 'activos facturados', - 'assets_checked_out_count' => 'activos reservados', - 'asset_deleted_warning' => 'Este recurso ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', + 'assets_checked_in_count' => 'activos ingresados', + 'assets_checked_out_count' => 'activos asignados', + 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', 'assigned_date' => 'Fecha asignada', 'assigned_to' => 'Asignado a :name', 'assignee' => 'Asignado a', @@ -49,7 +49,7 @@ return [ 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Eliminar en masa', 'bulk_actions' => 'Acciones en masa', - 'bulk_checkin_delete' => 'Checkin en masa / Eliminar usuarios', + 'bulk_checkin_delete' => 'Ingresar elementos / Borrar usuarios', 'byod' => 'BYOD', 'byod_help' => 'Este dispositivo es propiedad del usuario', 'bystatus' => 'por Estado', @@ -57,13 +57,13 @@ return [ 'categories' => 'Categorías', 'category' => 'Categoría', 'change' => 'Entrada/Salida', - 'changeemail' => 'Cambiar dirección de email', + 'changeemail' => 'Cambiar dirección de correo electrónico', 'changepassword' => 'Cambiar contraseña', - 'checkin' => 'Devolver', - 'checkin_from' => 'Devolución de', + 'checkin' => 'Ingresar', + 'checkin_from' => 'Ingreso proveniente de', 'checkout' => 'Asignar', 'checkouts_count' => 'Asignaciones', - 'checkins_count' => 'Devoluciones', + 'checkins_count' => 'Ingresos', 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', 'click_here' => 'Haz clic aquí', @@ -91,7 +91,7 @@ return [ 'customize_report' => 'Personalizar informe', 'custom_report' => 'Informe personalizado de activos', 'dashboard' => 'Tablero', - 'days' => 'dias', + 'days' => 'días', 'days_to_next_audit' => 'Días a la siguiente auditoría', 'date' => 'Fecha', 'debug_warning' => '¡Alerta!', @@ -100,7 +100,7 @@ return [ 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', 'deleted' => 'Eliminado', - 'delete_seats' => 'Asientos eliminados', + 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', 'departments' => 'Departamentos', 'department' => 'Departamento', @@ -112,7 +112,7 @@ return [ 'download' => 'Descargar', 'download_all' => 'Descargar todo', 'editprofile' => 'Editar perfil', - 'eol' => 'Vida útil', + 'eol' => 'Fin de soporte (EOL)', 'email_domain' => 'Dominio de Email', 'email_format' => 'Formato de correo electrónico', 'employee_number' => 'Número de empleado', @@ -132,7 +132,7 @@ return [ 'first' => 'Primero', 'firstnamelastname' => 'Nombre y apellido (janesmith@example.com)', 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', - 'firstinitial.lastname' => 'Inicial nombre y apellido (j.smith@ejemplo.com)', + 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', 'first_name' => 'Nombres', @@ -158,17 +158,17 @@ return [ 'image_upload' => 'Cargar imagen', 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido para subir es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo permitido para subir es :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', 'unaccepted_image_type' => 'Este archivo de imagen no fue legible. Los tipos de archivo aceptados son jpg, webp, png, gif y svg. El tipo mimetype de este archivo es: :mimetype.', 'import' => 'Importar', - 'import_this_file' => 'Mapear campos y procesar este archivo', - 'importing' => 'Importando', - 'importing_help' => 'Puede importar activos, accesorios, licencias, componentes, consumibles y usuarios a través del archivo CSV.

El CSV debe estar delimitado por comas y formateado con encabezados que coincidan con los del CSVs de muestra en la documentación.', + 'import_this_file' => 'Asociar campos y procesar este archivo', + 'importing' => 'Importar datos', + 'importing_help' => 'Puede importar activos, accesorios, licencias, componentes, consumibles y usuarios a través del archivo CSV.

El CSV debe estar delimitado por comas y formateado con encabezados que coincidan con los de los archivos CSV de muestra en la documentación.', 'import-history' => 'Importar historial', 'asset_maintenance' => 'Mantenimiento de Activos', 'asset_maintenance_report' => 'Informe mantenimiento de activos', 'asset_maintenances' => 'Mantenimiento de activos', - 'item' => 'Articulo', + 'item' => 'Elemento', 'item_name' => 'Nombre del artículo', 'import_file' => 'importar archivo CSV', 'import_type' => 'Tipo de importación CSV', @@ -191,14 +191,14 @@ return [ 'locations' => 'Ubicaciones', 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del Logo es 50px de alta x 500px. ', 'logout' => 'Cerrar sesión', - 'lookup_by_tag' => 'Buscar etiqueta de activo', + 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimiento', 'manage_api_keys' => 'Administrar claves API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite Github sabor a markdown.', 'min_amt' => 'Cantidad mínima', - 'min_amt_help' => 'Número mínimo de elementos que deberían estar disponibles antes de que se active una alerta. Deja la cantidad mínima en blanco si no quieres recibir alertas para un inventario bajo.', + 'min_amt_help' => 'Número mínimo de elementos que deben estar disponibles antes de que se active una alerta. Deje la cantidad mínima en blanco si no desea recibir alertas de inventario bajo.', 'model_no' => 'Modelo Nro.', 'months' => 'meses', 'moreinfo' => 'Más información', @@ -224,14 +224,14 @@ return [ 'per_page' => 'Resultados por página', 'previous' => 'Anterior', 'processing' => 'Procesando', - 'profile' => 'Tu perfil', + 'profile' => 'Perfil', 'purchase_cost' => 'Precio de compra', 'purchase_date' => 'Fecha de compra', 'qty' => 'Cantidad', 'quantity' => 'Cantidad', 'quantity_minimum' => 'Tiene :count artículos por debajo o casi por debajo de los niveles mínimos de cantidad', - 'quickscan_checkin' => 'Devolución rápida con escaneo', - 'quickscan_checkin_status' => 'Estado de devolución', + 'quickscan_checkin' => 'Ingreso rápido con escaneo', + 'quickscan_checkin_status' => 'Resultado del ingreso', 'ready_to_deploy' => 'Listo para asignar', 'recent_activity' => 'Actividad reciente', 'remaining' => 'Restante', @@ -243,7 +243,7 @@ return [ 'requestable_items' => 'Artículos que se pueden solicitar', 'requested' => 'Solicitado', 'requested_date' => 'Fecha solicitada', - 'requested_assets' => 'Activos solicitados', + 'requested_assets' => 'Elementos solicitados', 'requested_assets_menu' => 'Elementos solicitados', 'request_canceled' => 'Solicitud cancelada', 'request_item' => 'Solicitar este elemento', @@ -253,18 +253,18 @@ return [ 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', - 'select_category' => 'Seleccione una categoría', - 'select_datasource' => 'Seleccione un datoscópico', - 'select_department' => 'Seleccione un departamento', - 'select_depreciation' => 'Seleccione un tipo de depreciación', - 'select_location' => 'Seleccione una ubicación', - 'select_manufacturer' => 'Seleccione un fabricante', - 'select_model' => 'Seleccione un modelo', - 'select_supplier' => 'Seleccione un proveedor', - 'select_user' => 'Seleccione un usuario', + 'select_category' => 'Seleccionar una categoría', + 'select_datasource' => 'Seleccionar un origen de datos', + 'select_department' => 'Seleccionar un departamento', + 'select_depreciation' => 'Seleccionar un tipo de amortización', + 'select_location' => 'Seleccionar una ubicación', + 'select_manufacturer' => 'Seleccionar un fabricante', + 'select_model' => 'Seleccionar un modelo', + 'select_supplier' => 'Seleccionar un proveedor', + 'select_user' => 'Seleccionar un usuario', 'select_date' => 'Seleccione fecha (AAA-MM-DD)', - 'select_statuslabel' => 'Seleccionar estado', - 'select_company' => 'Seleccione una compañía', + 'select_statuslabel' => 'Seleccionar un estado', + 'select_company' => 'Seleccionar una compañía', 'select_asset' => 'Seleccionar activo', 'settings' => 'Ajustes', 'show_deleted' => 'Mostrar eliminados', @@ -272,9 +272,9 @@ return [ 'sign_in' => 'Iniciar sesión', 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', - 'skin' => 'Piel', + 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Oh hai! ¡Parece que tu integración :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', 'some_features_disabled' => 'DEMO MODE: Algunas características están desactivadas para esta instalación.', 'site_name' => 'Nombre del sitio', 'state' => 'Departamento', @@ -283,19 +283,19 @@ return [ 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que desea eliminar', + 'sure_to_delete' => '¿Está seguro que desea eliminar?', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', - 'target' => 'Target', + 'target' => 'Destino', 'time_and_date_display' => 'Mostrar hora y fecha', - 'total_assets' => 'total de activos', + 'total_assets' => 'activos', 'total_licenses' => 'licencias totales', 'total_accessories' => 'accesorios totales', 'total_consumables' => 'consumibles totales', 'type' => 'Tipo', 'undeployable' => 'No utilizable', - 'unknown_admin' => 'Admin desconocido', + 'unknown_admin' => 'Administrador desconocido', 'username_format' => 'Formato de nombre de usuario', 'username' => 'Nombre de usuario', 'update' => 'Actualizar', @@ -322,12 +322,12 @@ return [ 'no_files_uploaded' => '¡Archivo cargado exitosamente!', 'token_expired' => 'Su sesión ha caducado. Por favor, inténtelo de nuevo.', 'login_enabled' => 'Inicio de sesión activado', - 'audit_due' => 'Vence la auditoría', + 'audit_due' => 'Próximas auditorías', 'audit_due_days' => 'Activos pendientes para auditoría dentro de :days día|Activos pendientes para auditoría dentro de :days días', - 'checkin_due' => 'Pendiente por devolver', - 'checkin_overdue' => 'Atrasado por devolver', - 'checkin_due_days' => 'Activos que deben ser devueltos dentro de :days día|Activos que deben ser devueltos dentro de :days días', - 'audit_overdue' => 'Atrasado para la auditoría', + 'checkin_due' => 'Próximos a ingresar', + 'checkin_overdue' => 'Devolución atrasada', + 'checkin_due_days' => 'Activos próximos a ingresar dentro de :days día|Activos próximos a ingresar dentro de :days días', + 'audit_overdue' => 'Auditoría atrasada', 'accept' => 'Aceptar :asset', 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', @@ -348,16 +348,16 @@ return [ 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear Usuario Admin', + 'setup_create_admin' => 'Crear usuario Administrador', 'setup_done' => '¡Terminado!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado a', - 'checked_out_to' => 'Comprobado a', + 'checked_out_to' => 'Asignado a', 'fields' => 'Campos', 'last_checkout' => 'Último pedido', - 'due_to_checkin' => 'Los siguientes :count artículos deben ser chequeados pronto:', - 'expected_checkin' => 'Checkin Esperado', - 'reminder_checked_out_items' => 'Este es un recordatorio de los elementos que se te han comprobado actualmente. Si usted siente que esta lista es incorrecta (falta algo o algo que usted cree que nunca ha recibido), por favor envíe un correo electrónico a :reply_to_name a :reply_to_address.', + 'due_to_checkin' => 'Los siguientes :count elementos están pendientes por ingresar pronto:', + 'expected_checkin' => 'Fecha esperada de devolución', + 'reminder_checked_out_items' => 'Este es un recordatorio de los elementos que se le han asignado actualmente. Si usted cree que esta lista es incorrecta (falta algo o aparece algo que usted cree que nunca ha recibido), por favor envíe un correo electrónico a :reply_to_name a :reply_to_address.', 'changed' => 'Cambiado', 'to' => 'A', 'report_fields_info' => '

Seleccione los campos que desea incluir en su informe personalizado y haga clic en Generar. El archivo (custom-asset-report-YYYY-mm-dd.csv) se descargará automáticamente y puede abrirlo en Excel.

@@ -371,11 +371,11 @@ return [ 'export' => 'Exportar', 'ldap_sync' => 'Sincronización LDAP', 'ldap_user_sync' => 'Sincronización de usuario LDAP', - 'synchronize' => 'Synchronize', + 'synchronize' => 'Sincronizar', 'sync_results' => 'Resultados de sincronización', 'license_serial' => 'Clave de Serial/Producto', 'invalid_category' => 'Categoría no válida o ausente', - 'invalid_item_category_single' => 'Falta o no válida :type categoría. Por favor actualiza la categoría de este :type para incluir una categoría válida antes de salir.', + 'invalid_item_category_single' => 'Falta o no es válida una categoría de tipo :type. Actualice la categoría de tipo :type para incluir una categoría válida antes de asignar.', 'dashboard_info' => 'Este es su panel de control. Hay muchos similares, pero este es suyo.', '60_percent_warning' => '60% completo (advertencia)', 'dashboard_empty' => 'Parece que aún no ha añadido nada, así que no tenemos nada impresionante que mostrar. ¡Comience añadiendo algunos activos, accesorios, consumibles o licencias ahora!', @@ -391,12 +391,12 @@ return [ 'components_count' => 'Número de componentes', 'licenses_count' => 'Número de licencias', 'notification_error' => 'Error', - 'notification_error_hint' => 'Por favor revise si hay errores en el siguiente formulario', + 'notification_error_hint' => 'Por favor compruebe si hay errores en el siguiente formulario', 'notification_bulk_error_hint' => 'Los siguientes campos tenían errores de validación y no fueron editados:', 'notification_success' => 'Éxito', 'notification_warning' => 'Advertencia', - 'notification_info' => 'Info', - 'asset_information' => 'Información del recurso', + 'notification_info' => 'Información', + 'asset_information' => 'Información del activo', 'model_name' => 'Nombre del modelo', 'asset_name' => 'Nombre del activo', 'consumable_information' => 'Información Consumible:', @@ -405,9 +405,9 @@ return [ 'accessory_name' => 'Nombre de accesorio:', 'clone_item' => 'Clonar objeto', 'checkout_tooltip' => 'Asignar este elemento', - 'checkin_tooltip' => 'Devuelva este elemento para que esté disponible para resignar, borrar, etc.', + 'checkin_tooltip' => 'Ingrese este elemento para que esté disponible para resignar, borrar, etc.', 'checkout_user_tooltip' => 'Asignar este elemento a un usuario', - 'checkin_to_diff_location' => 'Puede optar por asignar este activo a una ubicación distinta a la predeterminada :default_location, si es que existe una configurada', + 'checkin_to_diff_location' => 'Puede elegir ingresar este activo a una ubicación distinta de la predeterminada :default_location, si es que se ha definido una', 'maintenance_mode' => 'El servicio no está disponible temporalmente para actualizaciones del sistema. Por favor, vuelva más tarde.', 'maintenance_mode_title' => 'Sistema temporalmente no disponible', 'ldap_import' => 'La contraseña del usuario no debe ser administrada por LDAP. (Esto le permite enviar solicitudes de contraseña olvidadas.)', @@ -416,8 +416,8 @@ return [ 'additional_files' => 'Archivos adicionales', 'shitty_browser' => 'No se ha detectado ninguna firma. Si está utilizando un navegador más antiguo, por favor utilice un navegador más moderno para completar la aceptación del elemento.', 'bulk_soft_delete' =>'También borra suavemente estos usuarios. Su historial de activos permanecerá intacto a menos/hasta que purgue los registros borrados en la Configuración de administración.', - 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y sus elementos han sido registrados.', - 'bulk_checkin_success' => 'Los elementos para los usuarios seleccionados han sido registrados.', + 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y sus activos han sido ingresados.', + 'bulk_checkin_success' => 'Los elementos para los usuarios seleccionados han sido ingresados.', 'set_to_null' => 'Eliminar valores para este activo|Borrar valores para todos los activos :asset_count ', 'set_users_field_to_null' => 'Eliminar :field values for this user|Eliminar :field values for all :user_count users ', 'na_no_purchase_date' => 'N/A - No se proporcionó fecha de compra', @@ -425,7 +425,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tienes :count elementos que requieren aceptación. Haz clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -439,9 +439,9 @@ return [ 'alerts' => 'Alertas', 'tasks_view_all' => 'Ver todas las tareas', 'true' => 'Verdadero', - 'false' => 'False', + 'false' => 'Falso', 'integration_option' => 'Opción de integración', - 'log_does_not_exist' => 'No existe ningún registro de registro coincidente.', + 'log_does_not_exist' => 'No existe ningún registro de eventos que coincida.', 'merge_users' => 'Combinar usuarios', 'merge_information' => 'Esto fusionará a los usuarios :count en un solo usuario. Seleccione el usuario en el que desea fusionar a los demás a continuación, y los activos asociados, licencias, etc se moverá al usuario seleccionado y los otros usuarios serán marcados como eliminados.', 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', @@ -453,8 +453,8 @@ return [ 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y guardar', 'update_existing_values' => '¿Actualizar valores existentes?', - 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Generar etiquetas de activos auto-incrementantes está desactivado, por lo que todas las filas necesitan tener la columna "Tag de activo" rellenada.', - 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: Generar etiquetas de activos que incrementan automáticamente está habilitado, por lo que se crearán recursos para registros que no tengan "Tag de activo" poblado. Las filas que tengan "Etiqueta de activos" pobladas serán actualizadas con la información proporcionada.', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generación autoincrementable de las placas de activos está desactivada, por lo que todas las filas deben tener la columna "Asset Tag" con información.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: La generación autoincrementable de las placas de activos está activada, por lo que se crearán activos para las filas sin información en la columna "Asset Tag". Las filas que sí tengan informacióin en la columna "Asset Tag" se actualizarán con la información proporcionada.', 'send_welcome_email_to_users' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', 'send_email' => 'Enviar Email', 'call' => 'Número de llamada', @@ -474,9 +474,9 @@ return [ 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero debería confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', - 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la interfaz de usuario o herramientas de cli asignadas a granel.', - 'autoassign_licenses_help_long' => 'Esto permite que un usuario tenga licencias asignadas a través de la interfaz de usuario o las herramientas de cli asignadas a granel. (Por ejemplo, puede que no desee que los contratistas sean asignados automáticamente a una licencia que proporcione sólo a los miembros del personal. Todavía puede asignar licencias individualmente a esos usuarios, pero no se incluirán en la licencia de pago a las funciones de todos los usuarios.)', - 'no_autoassign_licenses_help' => 'No incluya al usuario para asignar a granel a través de la licencia UI o las herramientas de cli.', + 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', + 'autoassign_licenses_help_long' => 'Esto permite asignar licencias a un usuario a través de la asignación masiva en la interfaz de usuario o de las herramientas de línea de comandos (CLI). (Por ejemplo, es posible que no desee que a los contratistas se les asigne automáticamente una licencia que usted proporcionaría sólo a los miembros del personal. Puede seguir asignando licencias individualmente a esos usuarios, pero no se incluirán en las funciones de "Asignación de licencias a todos los usuarios").', + 'no_autoassign_licenses_help' => 'No incluir al usuario en la asignación masiva de licencias en la interfaz de usuario o en las herramientas de línea de comandos (CLI).', 'modal_confirm_generic' => '¿Está seguro?', 'cannot_be_deleted' => 'Este elemento no puede ser eliminado', 'cannot_be_edited' => 'Este elemento no puede ser editado.', @@ -487,48 +487,48 @@ return [ 'error_user_company' => 'La compañía destino de la asignación y la compañía del activo no coinciden', 'error_user_company_accept_view' => 'Un activo asignado a usted pertenece a una compañía diferente por lo que no puede aceptarlo ni rechazarlo, por favor verifique con su supervisor', 'importer' => [ - 'checked_out_to_fullname' => 'Pagado a: Nombre Completo', - 'checked_out_to_first_name' => 'Pagado a: Nombre', - 'checked_out_to_last_name' => 'Pagado a: Apellido', - 'checked_out_to_username' => 'Pagado a: Usuario', - 'checked_out_to_email' => 'Checkout a: Email', - 'checked_out_to_tag' => 'Checked Out a: Tag de Activos', - 'manager_first_name' => 'Nombre del administrador', - 'manager_last_name' => 'Apellido del administrador', - 'manager_full_name' => 'Nombre completo del administrador', - 'manager_username' => 'Usuario Administrador', - 'checkout_type' => 'Tipo de pago', - 'checkout_location' => 'Pagar a la ubicación', - 'image_filename' => 'Nombre de imagen', + 'checked_out_to_fullname' => 'Asignado a: Nombre completo', + 'checked_out_to_first_name' => 'Asignado a: Nombre', + 'checked_out_to_last_name' => 'Asignado a: Apellido', + 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_email' => 'Asignado a: correo electrónico', + 'checked_out_to_tag' => 'Asignado a: Placa de activo', + 'manager_first_name' => 'Nombre del supervisor', + 'manager_last_name' => 'Apellido del supervisor', + 'manager_full_name' => 'Nombre completo del supervisor', + 'manager_username' => 'Nombre de usuario del supervisor', + 'checkout_type' => 'Tipo de asignación', + 'checkout_location' => 'Asignar a la ubicación', + 'image_filename' => 'Nombre del archivo de la imagen', 'do_not_import' => 'No importar', 'vip' => 'VIP', 'avatar' => 'Avatar', - 'gravatar' => 'Gravatar Email', + 'gravatar' => 'Correo electrónico Gravatar', 'currency' => 'Moneda', 'address2' => 'Dirección línea 2', 'import_note' => 'Importado usando el importador de csv', ], 'remove_customfield_association' => 'Elimine este campo del grupo de campos. Esto no eliminará el campo personalizado, solo la asociación de este campo con este grupo de campos.', 'checked_out_to_fields' => 'Campos sobre quién tiene asignado el elemento', - 'percent_complete' => '% complete', + 'percent_complete' => '% completo', 'uploading' => 'Subiendo... ', 'upload_error' => 'Error al cargar el archivo. Por favor, compruebe que no hay filas vacías y que no hay nombres de columna duplicados.', 'copy_to_clipboard' => 'Copiar al portapapeles', 'copied' => '¡Copiado!', 'status_compatibility' => 'Si los activos ya están asignados, no se pueden cambiar a un tipo de estado no utilizable y este cambio de valor se omitirá.', - 'rtd_location_help' => 'Esta es la ubicación del recurso cuando no está seleccionado', + 'rtd_location_help' => 'Esta es la ubicación del activo cuando no está asignado', 'item_not_found' => ':item_type ID :id no existe o ha sido eliminado', 'action_permission_denied' => 'No tiene permiso para :action :item_type ID :id', 'action_permission_generic' => 'No tiene permiso para :action this :item_type', 'edit' => 'editar', - 'action_source' => 'Fuente de acción', + 'action_source' => 'Origen de la acción', 'or' => 'o', 'url' => 'URL', 'edit_fieldset' => 'Editar campos y opciones de grupos de campos', 'permission_denied_superuser_demo' => 'Permiso denegado. No puede actualizar la información de usuario para superadministradores en la demo.', 'pwd_reset_not_sent' => 'El usuario no está activado, está sincronizado con LDAP o no tiene una dirección de correo electrónico', 'error_sending_email' => 'Error al enviar email', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'No está autorizado a realizar esta acción. Puede regresar al tablero, o ponerse en contacto con su administrador.', 'bulk' => [ 'delete' => [ @@ -546,9 +546,17 @@ return [ 'accessories' => ':count Accesorio|:count Accesorios', 'assets' => ':count Activos|:count Activos', 'licenses' => ':count Licencia|:count Licencias', - 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'license_seats' => ':count licencia|:count licencias', 'consumables' => ':count Consumible|:count Consumibles', 'components' => ':count component|:count componentes', - ] + ], + 'more_info' => 'Más información', + 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'whoops' => '¡Uy!', + 'something_went_wrong' => 'Algo falló en su solicitud.', + 'close' => 'Cerrar', + 'expires' => 'Vence', + 'map_fields'=> 'Asociar el campo :item_type', + 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-CO/help.php b/resources/lang/es-CO/help.php index 92cce3855f..e766a4f358 100644 --- a/resources/lang/es-CO/help.php +++ b/resources/lang/es-CO/help.php @@ -15,11 +15,11 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente se notará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo está desprotegido, no cambiará la ubicación de la persona, el activo o la ubicación en la que está verificado.', + 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', - 'assets' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.', + 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', - 'categories' => 'Las categorías te ayudan a organizar tus elementos. Unos ejemplos de categorías podrían ser: "Pc Escritorios", "Portátiles", "Móviles", "Tabletas", etc.', + 'categories' => 'Las categorías le ayudan a organizar sus elementos. Unos ejemplos de categorías podrían ser: "PC Escritorios", "Portátiles", "Móviles", "Tabletas", etc.', 'accessories' => 'Los accesorios son cualquier cosa que se le asigne a los usuarios pero que no tenga numero de serie (o no importe realizarle el seguimiento en forma unica). Por ejemplo, mouse o teclados.', @@ -27,7 +27,7 @@ return [ 'components' => 'Los componentes son elementos que son parte de un activo, por ejemplo HDD, RAM, etc.', - 'consumables' => 'Los consumibles son cualquier cosa comprada que se usará con el tiempo. Por ejemplo, tinta de impresora o papel copiador.', + 'consumables' => 'Los consumibles son todo aquello que se compra y que se agota con el tiempo. Por ejemplo, tinta de impresora o papel de fotocopiadora.', 'depreciations' => 'Puede configurar la depreciación de activos usando un método de línea recta.', diff --git a/resources/lang/es-CO/localizations.php b/resources/lang/es-CO/localizations.php index be0ac5f74d..88e7bbe1f3 100644 --- a/resources/lang/es-CO/localizations.php +++ b/resources/lang/es-CO/localizations.php @@ -2,7 +2,7 @@ return [ - 'select_language' => 'Seleccione un idioma', + 'select_language' => 'Seleccionar un idioma', 'languages' => [ 'en-US'=> 'Inglés, EEUU', 'en-GB'=> 'Inglés, Reino Unido', @@ -49,7 +49,7 @@ return [ 'ru-RU'=> 'Ruso', 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Eslovaco', - 'sl-SI'=> 'Slovenian', + 'sl-SI'=> 'Esloveno', 'so-SO'=> 'Somali', 'es-ES'=> 'Español', 'es-CO'=> 'Español, Colombia', @@ -66,7 +66,7 @@ return [ 'zu-ZA'=> 'Zulu', ], - 'select_country' => 'Seleccione un país', + 'select_country' => 'Seleccionar un país', 'countries' => [ 'AC'=>'Isla de Ascensión', @@ -93,7 +93,7 @@ return [ 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', 'BG'=>'Bulgaria', - 'BH'=>'Bahrain', + 'BH'=>'Baréin', 'BI'=>'Burundi', 'BJ'=>'Benin', 'BM'=>'Bermuda', @@ -287,11 +287,11 @@ return [ 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', 'TI'=>'Timor Oriental', - 'TM'=>'Turkmenistan', - 'TN'=>'Tunisia', + 'TM'=>'Turkmenistán', + 'TN'=>'Túnez', 'TO'=>'Tonga', 'TP'=>'Timor Oriental (código antiguo)', - 'TR'=>'Pavo', + 'TR'=>'Turquía', 'TT'=>'Trinidad y Tobago', 'TV'=>'Tuvalu', 'TW'=>'Taiwán', diff --git a/resources/lang/es-CO/mail.php b/resources/lang/es-CO/mail.php index 2f597d88c9..870e555efb 100644 --- a/resources/lang/es-CO/mail.php +++ b/resources/lang/es-CO/mail.php @@ -2,30 +2,30 @@ return [ - 'Accessory_Checkin_Notification' => 'Accesorio devuelto', - 'Accessory_Checkout_Notification' => 'Accesorio reservado', - 'Asset_Checkin_Notification' => 'Activo devuelto', - 'Asset_Checkout_Notification' => 'Recurso reservado', - 'Confirm_Accessory_Checkin' => 'Confirmación de registro de accesorio', - 'Confirm_Asset_Checkin' => 'Confirmación de devolución de activo', + 'Accessory_Checkin_Notification' => 'Accesorio ingresado', + 'Accessory_Checkout_Notification' => 'Accesorio asignado', + 'Asset_Checkin_Notification' => 'Activo ingresado', + 'Asset_Checkout_Notification' => 'Activo asignado', + 'Confirm_Accessory_Checkin' => 'Confirmación de ingreso de accesorio', + 'Confirm_Asset_Checkin' => 'Confirmación de ingreso de activo', 'Confirm_accessory_delivery' => 'Confirmación de entrega de accesorio', 'Confirm_asset_delivery' => 'Confirmación de entrega de activo', 'Confirm_consumable_delivery' => 'Confirmación de entrega de consumible', 'Confirm_license_delivery' => 'Confirmación de entrega de licencia', - 'Consumable_checkout_notification' => 'Consumible comprobado', - 'Days' => 'Dias', - 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto en :date', + 'Consumable_checkout_notification' => 'Consumible asignado', + 'Days' => 'Días', + 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto el :date', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', - 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', - 'Expiring_Assets_Report' => 'Informe de activos caducados.', + 'Expected_Checkin_Report' => 'Informe de próximas devoluciones de activos', + 'Expiring_Assets_Report' => 'Informe de activos con garantía próxima a vencer.', 'Expiring_Licenses_Report' => 'Informe de licencias caducando.', 'Item_Request_Canceled' => 'Solicitud de cancelación de requerimiento', 'Item_Requested' => 'Artículo solicitado', 'License_Checkin_Notification' => 'Licencia devuelta', - 'License_Checkout_Notification' => 'Licencia reservada', - 'Low_Inventory_Report' => 'Baja informe de inventario', - 'a_user_canceled' => 'El usuario ha cancelado el item solicitado en la pagina Web', - 'a_user_requested' => 'Un usuario a solicitado un item en la pagina Web', + 'License_Checkout_Notification' => 'Licencia asignada', + 'Low_Inventory_Report' => 'Informe sobre inventario bajo', + 'a_user_canceled' => 'El usuario ha cancelado el elemento solicitado en la página web', + 'a_user_requested' => 'Un usuario ha solicitado un elemento en la página web', 'acceptance_asset_accepted' => 'Un usuario ha aceptado un elemento', 'acceptance_asset_declined' => 'Un usuario ha rechazado un elemento', 'accessory_name' => 'Nombre de accesorio:', @@ -34,33 +34,34 @@ return [ 'asset' => 'Activo:', 'asset_name' => 'Nombre del activo:', 'asset_requested' => 'Activo solicitado', - 'asset_tag' => 'Etiqueta de equipo', + 'asset_tag' => 'Placa del activo', 'assets_warrantee_alert' => 'Hay :count activo con una garantía que expira en los próximos :threshold days.|Hay :count activos con garantías que expiran en los siguientes :threshold days.', 'assigned_to' => 'Asignado a', 'best_regards' => 'Saludos cordiales,', 'canceled' => 'Cancelado:', 'checkin_date' => 'Fecha de devolución:', 'checkout_date' => 'Fecha de asignación:', - 'checkedout_from' => 'Salido de', - 'checkedin_from' => 'Registrado desde', - 'checked_into' => 'Registrado en', + 'checkedout_from' => 'Asignado desde', + 'checkedin_from' => 'Devuelto desde', + 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', 'click_to_confirm' => 'Por favor, haga clic en el siguiente enlace para confirmar su cuenta :web:', 'current_QTY' => 'Cantidad actual', - 'days' => 'Dias', + 'days' => 'Días', 'expecting_checkin_date' => 'Fecha esperada de devolución:', - 'expires' => 'Caduca', + 'expires' => 'Vence', 'hello' => 'Hola', - 'hi' => 'Hi', + 'hi' => 'Hola', 'i_have_read' => 'He leído y aceptado los términos de uso, y he recibido este artículo.', 'inventory_report' => 'Informe de inventario', - 'item' => 'Articulo:', + 'item' => 'Elemento:', + 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', 'link_to_update_password' => 'Haga clic en el siguiente enlace para actualizar su: contraseña de la web:', 'login' => 'Entrar:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', - 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto estará debajo.|Hay :count elementos que están por debajo del inventario mínimo o que pronto serán bajos.', + 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo ha sido asignado a su nombre, los detalles están a continuación.', @@ -70,24 +71,26 @@ return [ 'read_the_terms' => 'Por favor lea los términos de uso a continuación.', 'read_the_terms_and_click' => 'Por favor lea los términos de uso a continuación y haga clic en el enlace en la parte inferior para confirmar que usted leyó los términos de uso y los acepta, y que ha recibido el activo.', 'requested' => 'Solicitado:', - 'reset_link' => 'Enlace de restablecimiento de contraseña', + 'reset_link' => 'Su enlace de restablecimiento de contraseña', 'reset_password' => 'Haga Clic aquí para restablecer su contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Número de serie', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', 'snipe_webhook_summary' => 'Resumen de la prueba de integración de Snipe-IT', 'supplier' => 'Proveedor', - 'tag' => 'Etiqueta', + 'tag' => 'Placa', 'test_email' => 'Email de prueba de Snipe-IT', - 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', + 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', - 'upcoming-audits' => 'Hay :count activo que se está preparando para auditoría dentro de :threshold days.|Hay :count activos que se están preparando para auditoría en :threshold days.', + 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', 'user' => 'Usuario', 'username' => 'Nombre de usuario', + 'unaccepted_asset_reminder' => 'Tiene activos pendientes por aceptar.', 'welcome' => 'Bienvenido, :name', 'welcome_to' => '¡Bienvenido a: web!', - 'your_assets' => 'Ver tus activos', - 'your_credentials' => 'Tus credenciales de Snipe-IT', + 'your_assets' => 'Ver sus activos', + 'your_credentials' => 'Sus credenciales de Snipe-IT', + 'mail_sent' => '¡Correo enviado exitosamente!.', ]; diff --git a/resources/lang/es-CO/passwords.php b/resources/lang/es-CO/passwords.php index f337c2c967..75469d1121 100644 --- a/resources/lang/es-CO/passwords.php +++ b/resources/lang/es-CO/passwords.php @@ -3,7 +3,7 @@ return [ 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', 'user' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', - 'token' => 'Este token de restablecimiento de contraseña no es válido o ha caducado, o no coincide con el nombre de usuario proporcionado.', - 'reset' => '¡Tu contraseña ha sido restablecida!', + 'token' => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', + 'reset' => '¡Su contraseña ha sido restablecida!', 'password_change' => '¡Su contraseña ha sido actualizada!', ]; diff --git a/resources/lang/es-CO/reminders.php b/resources/lang/es-CO/reminders.php index 565dcdf12c..2269768b6b 100644 --- a/resources/lang/es-CO/reminders.php +++ b/resources/lang/es-CO/reminders.php @@ -13,9 +13,9 @@ return array( | */ - "password" => "Los passwords deben tener mínimo 6 caracteres y coincidir.", + "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", "user" => "Usuario o E-Mail incorrectos", - "token" => 'Este token de restablecimiento de contraseña no es válido o ha caducado, o no coincide con el nombre de usuario proporcionado.', + "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', ); diff --git a/resources/lang/es-CO/table.php b/resources/lang/es-CO/table.php index f9a2b34e43..dea24233f7 100644 --- a/resources/lang/es-CO/table.php +++ b/resources/lang/es-CO/table.php @@ -5,7 +5,7 @@ return array( 'actions' => 'Acciones', 'action' => 'Acción', 'by' => 'Por', - 'item' => 'Articulo', - 'no_matching_records' => 'No se encontraron registros coincidentes', + 'item' => 'Elemento', + 'no_matching_records' => 'No se encontraron registros que coincidan', ); diff --git a/resources/lang/es-CO/validation.php b/resources/lang/es-CO/validation.php index 902d647c8b..4b7afeb422 100644 --- a/resources/lang/es-CO/validation.php +++ b/resources/lang/es-CO/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'El :attribute debe ser aceptado.', - 'active_url' => 'El campo :atribute no es una URL válida.', - 'after' => 'El campo :atribute debe ser una fecha posterior a :date.', - 'after_or_equal' => 'El campo :atribute debe ser una fecha posterior o igual a :date.', - 'alpha' => ':attribute solo acepta letras.', - 'alpha_dash' => ':attribute solo acepta letras, números y guiones.', - 'alpha_num' => ':attribute solo acepta letras y números.', - 'array' => 'El: atributo debe ser una matriz.', - 'before' => ':attribute debe ser anterior a :date.', - 'before_or_equal' => 'El atributo: debe ser una fecha anterior o igual a: fecha.', - 'between' => [ - 'numeric' => ':attribute debe estar entre :min - :max.', - 'file' => ':attribute debe estar entre :min - :max kilobytes.', - 'string' => ':attribute debe estar entre :min - :max caracteres.', - 'array' => 'El atributo: debe tener entre: min y: elementos máximos.', + 'accepted' => 'El campo :attribute debe ser aceptado.', + 'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other es :value.', + 'active_url' => 'El campo :attribute debe ser una dirección URL válida.', + 'after' => 'El campo :attribute debe ser una fecha posterior a :date.', + 'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.', + 'alpha' => 'El campo :attribute debe contener únicamente letras.', + 'alpha_dash' => 'El campo :attribute debe contener únicamente letras, números, guiones y guiones bajos.', + 'alpha_num' => 'El campo :attribute debe contener únicamente letras y números.', + 'array' => 'El campo :attribute debe ser un arreglo.', + 'ascii' => 'El campo :attribute debe contener únicamente caracteres y símbolos alfanuméricos de un byte.', + 'before' => 'El campo :attribute debe ser una fecha anterior a :date.', + 'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.', + 'between' => [ + 'array' => 'El campo :attribute debe tener elementos entre :min y :max.', + 'file' => 'El campo :attribute debe tener entre :min y :max kilobytes.', + 'numeric' => 'El campo :attribute debe estar entre :min y :max.', + 'string' => 'El campo :attribute debe tener entre :min y :max caracteres.', ], - 'boolean' => ':attribute debe ser verdadero o falso.', - 'confirmed' => ':attribute la confirmación no coincide.', - 'date' => ':attribute no es una fecha correcta.', - 'date_format' => ':attribute no cumple el formato :format.', - 'different' => ':attribute y :other deben ser diferentes.', - 'digits' => ':attribute debe tener :digits dígitos.', - 'digits_between' => ':attribute debe tener entre :min y :max dígitos.', - 'dimensions' => 'El atributo: tiene dimensiones de imagen no válidas.', - 'distinct' => 'El campo: atributo tiene un valor duplicado.', - 'email' => ':attribute formato incorrecto.', - 'exists' => 'El :attribute seleccionado no es correcto.', - 'file' => 'El: atributo debe ser un archivo.', - 'filled' => 'El campo: atributo debe tener un valor.', - 'image' => ':attribute debe ser una imagen.', + 'boolean' => 'El campo :attribute debe ser verdadero o falso.', + 'can' => 'El campo :attribute contiene un valor no autorizado.', + 'confirmed' => 'La confirmación del campo :attribute no coincide.', + 'contains' => 'Falta un valor obligatorio en el campo :attribute.', + 'current_password' => 'La contraseña es incorrecta.', + 'date' => 'El campo :attribute debe contener una fecha válida.', + 'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.', + 'date_format' => 'El campo :attribute debe coincidir con el formato :format.', + 'decimal' => 'El campo :attribute debe tener :decimal lugares decimales.', + 'declined' => 'El campo :attribute debe ser rechazado.', + 'declined_if' => 'El campo :attribute debe ser rechazado cuando :other es :value.', + 'different' => 'Los campos :attribute y :other deben ser diferentes.', + 'digits' => 'El campo :attribute debe tener :digits dígitos.', + 'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.', + 'dimensions' => 'El campo :attribute tiene dimensiones de imagen no válidas.', + 'distinct' => 'El campo: atributo tiene un valor duplicado.', + 'doesnt_end_with' => 'El campo :attribute no debe finalizar con uno de los siguientes :values.', + 'doesnt_start_with' => 'El campo :attribute no debe iniciar con uno de los siguientes :values.', + 'email' => 'El campo :attribute debe ser una dirección de correo válida.', + 'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes :values.', + 'enum' => 'El :attribute seleccionado no es correcto.', + 'exists' => 'El :attribute seleccionado no es correcto.', + 'extensions' => 'El campo :attribute debe tener una de las siguientes extensiones :values.', + 'file' => 'El campo :attribute debe ser un archivo.', + 'filled' => 'El campo: atributo debe tener un valor.', + 'gt' => [ + 'array' => 'El campo :attribute debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser mayor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que :value.', + 'string' => 'El campo :attribute debe ser mayor que :value caracteres.', + ], + 'gte' => [ + 'array' => 'El campo :attribute debe tener :value elementos o más.', + 'file' => 'El campo :attribute debe ser mayor que o igual a :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que o igual a :value.', + 'string' => 'El campo :attribute debe ser mayor que o igual a :value caracteres.', + ], + 'hex_color' => 'El campo :attribute debe ser un color hexadecimal válido.', + 'image' => 'El campo :attribute debe ser una imagen.', 'import_field_empty' => 'El valor para :fieldname no puede ser nulo.', - 'in' => 'El :attribute seleccionado no es correcto.', - 'in_array' => 'El campo: atributo no existe en: otro.', - 'integer' => ':attribute debe ser un número entero.', - 'ip' => ':attribute debe ser una dirección IP correcta.', - 'ipv4' => 'El atributo: debe ser una dirección IPv4 válida.', - 'ipv6' => 'El atributo: debe ser una dirección IPv6 válida.', - 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la compañía', - 'json' => 'El atributo: debe ser una cadena JSON válida.', - 'max' => [ - 'numeric' => ':attribute no debe ser mayor que :max.', - 'file' => ':attribute no debe ser mayor que :max kilobytes.', - 'string' => ':attribute no debe tener como máximo :max caracteres.', - 'array' => 'El atributo: puede no tener más que: elementos máximos.', + 'in' => 'El :attribute seleccionado no es correcto.', + 'in_array' => 'El campo :attribute debe existir en :other.', + 'integer' => 'El campo :attribute debe ser un valor entero.', + 'ip' => 'El campo :attribute debe ser una dirección IP válida.', + 'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.', + 'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.', + 'json' => 'El campo :attribute debe ser una cadena de texto JSON válida.', + 'list' => 'The campo :attribute debe ser una lista.', + 'lowercase' => 'El campo :attribute debe estar en minúsculas.', + 'lt' => [ + 'array' => 'El campo :attribute debe tener menos que :value elementos.', + 'file' => 'El campo :attribute debe ser menor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser menor que :value.', + 'string' => 'El campo :attribute debe ser menor que :value caracteres.', ], - 'mimes' => ':attribute debe ser un archivo del tipo: :values.', - 'mimetypes' => 'El atributo: debe ser un archivo de tipo:: valores.', - 'min' => [ - 'numeric' => ':attribute debe ser como mínimo :min.', - 'file' => ':attribute debe ser como mínimo de :min kilobytes.', - 'string' => ':attribute debe contener como mínimo :min caracteres.', - 'array' => 'El atributo: debe tener al menos: elementos min.', + 'lte' => [ + 'array' => 'El campo :attribute no debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser menor que o igual a :value kylobytes.', + 'numeric' => 'El campo :attribute debe ser menor que o igual a :value.', + 'string' => 'El campo :attribute debe ser menor que o igual a :value caracteres.', ], - 'starts_with' => 'El :attribute debe comenzar con uno de los siguientes: :values.', - 'ends_with' => 'El campo :attribute debe terminar con uno de los siguientes: :values.', - - 'not_in' => 'El :attribute seleccionado no es correcto.', - 'numeric' => ':attribute debe ser un número.', - 'present' => 'El campo: atributo debe estar presente.', - 'valid_regex' => 'Este no es un regex válido. ', - 'regex' => ':attribute formato incorrecto.', - 'required' => 'El campo :attribute es obligatorio.', - 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', - 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', - 'required_with' => ':attribute es obligatrio cuando :values es present.', - 'required_with_all' => 'El campo: atributo se requiere cuando: los valores están presentes.', - 'required_without' => ':attribute es obligatrio cuando :values es not present.', - 'required_without_all' => 'El campo: atributo es necesario cuando ninguno de: valores están presentes.', - 'same' => ':attribute y :other deben coincidir.', - 'size' => [ - 'numeric' => ':attribute debe tener :size.', - 'file' => ':attribute debe tener :size kilobytes.', - 'string' => ':attribute debe tener :size caracteres.', - 'array' => 'El atributo: debe contener: elementos de tamaño.', + 'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.', + 'max' => [ + 'array' => 'El campo :attribute no debe tener más de :max elementos.', + 'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.', + 'numeric' => 'El campo :attribute no debe ser mayor que :max.', + 'string' => 'El campo :attribute no debe ser mayor que :max caracteres.', ], + 'max_digits' => 'El campo :attribute no debe tener más de :max dígitos.', + 'mimes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'mimetypes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'min' => [ + 'array' => 'El campo :attribute debe tener al menos :min elementos.', + 'file' => 'El campo :attribute debe ser de al menos :min kilobytes.', + 'numeric' => 'El campo :attribute debe ser al menos :min.', + 'string' => 'El campo :attribute debe contener como mínimo :min caracteres.', + ], + 'min_digits' => 'El campo :attribute debe contener como mínimo :min dígitos.', + 'missing' => 'El campo :attribute debe estar vacío.', + 'missing_if' => 'El campo :attribute debe estar vacío cuando :other sea :value.', + 'missing_unless' => 'El campo :attribute debe estar vacío a menos que :other sea :value.', + 'missing_with' => 'El campo :attribute debe estar vacío cuando :values esté presente.', + 'missing_with_all' => 'El campo :attribute debe estar vacío cuando :values estén presentes.', + 'multiple_of' => 'El campo :attribute debe ser un múltiplo de :value.', + 'not_in' => 'El :attribute seleccionado no es correcto.', + 'not_regex' => 'El campo :attribute no es válido.', + 'numeric' => 'El campo :attribute debe ser un número.', + 'password' => [ + 'letters' => 'El cammpo :attribute debe contener al menos una letra.', + 'mixed' => 'El campo :attribute debe contener al menos una letra minúscula y una mayúscula.', + 'numbers' => 'El campo :attribute debe contener al menos un número.', + 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', + 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', + ], + 'present' => 'El campo: atributo debe estar presente.', + 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', + 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', + 'present_with' => 'El campo :attribute debe estar presente cuando :values esté presente.', + 'present_with_all' => 'El campo :attribute debe estar presente cuando :values estén presentes.', + 'prohibited' => 'El campo :attribute está prohibido.', + 'prohibited_if' => 'El campo :attribute está prohibido cuando :other sea :value.', + 'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other esté en :values.', + 'prohibits' => 'El campo :attribute prohíbe la presencia de :other.', + 'regex' => 'El formato del campo :attribute no es válido.', + 'required' => 'El campo :attribute es obligatorio.', + 'required_array_keys' => 'El campo :attribute debe contener valores para: :values.', + 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_if_accepted' => 'El campo :attribute es obligatorio cuando se acepta :other.', + 'required_if_declined' => 'El campo :attribute es requerido cuando :other es rechazado.', + 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', + 'required_with' => ':attribute es obligatrio cuando :values es present.', + 'required_with_all' => 'El campo :attribute es requerido cuando :values están presentes.', + 'required_without' => ':attribute es obligatrio cuando :values es not present.', + 'required_without_all' => 'El campo :attribute es obligatorio cuando no está presente ninguno de los :values.', + 'same' => 'El campo :attribute debe coincidir con :other.', + 'size' => [ + 'array' => 'El campo :attribute debe contenter :size elementos.', + 'file' => 'El campo :attribute debe ser de :size kilobytes.', + 'numeric' => 'El campo :attribute debe ser :size.', + 'string' => 'El campo :attribute debe ser de :size caracteres.', + ], + 'starts_with' => 'El campo :attribute debe iniciar con uno de los siguientes: :values.', 'string' => 'El atributo: debe ser una cadena.', - 'timezone' => 'El atributo: debe ser una zona válida.', 'two_column_unique_undeleted' => ':attribute debe ser único a través de :table1 y :table2. ', - 'unique' => ':attribute ya ha sido introducido.', - 'uploaded' => 'El atributo: no se pudo cargar.', - 'url' => ':attribute formato incorrecto.', 'unique_undeleted' => 'El :atrribute debe ser único.', 'non_circular' => ':attribute no debe crear una referencia circular.', 'not_array' => ':attribute no puede ser una matriz.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'La contraseña debe contener al menos un número.', 'case_diff' => 'La contraseña debe usar mayúsculas y minúsculas.', 'symbols' => 'La contraseña debe contener símbolos.', - 'gte' => [ - 'numeric' => 'El valor no puede ser negativo' - ], - 'checkboxes' => ':attribute contiene opciones no válidas.', - 'radio_buttons' => ':attribute no es válido.', - + 'timezone' => 'El campo :attribute debe ser una zona horaria válida.', + 'unique' => ':attribute ya ha sido introducido.', + 'uploaded' => 'El atributo: no se pudo cargar.', + 'uppercase' => 'El campo :attribute debe estar en mayúsculas.', + 'url' => 'El campo :attribute debe ser una URL válida.', + 'ulid' => 'El campo :attribute debe ser un ULID válido.', + 'uuid' => 'El campo :attribute debe ser un UUID válido.', /* |-------------------------------------------------------------------------- @@ -123,13 +185,13 @@ return [ 'custom' => [ 'alpha_space' => 'El campo: atributo contiene un carácter que no está permitido.', 'email_array' => 'Una o más direcciones de correo electrónico no es válida.', - 'hashed_pass' => 'Tu contraseña actual es incorrecta', + 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', 'last_audit_date.date_format' => 'El campo :attribute debe ser una fecha válida en formato AAA-MM-DD hh:mm:ss', 'expiration_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', 'start_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', 'end_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', - - ], - + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => 'El valor de :attribute no es válido.', + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + + 'generic' => [ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + 'required' => 'El campo es obligatorio', + 'email' => 'Por favor, ingrese una dirección de correo electrónico válida.', + ], + + ]; diff --git a/resources/lang/es-ES/account/general.php b/resources/lang/es-ES/account/general.php index 3303787c2e..cb208da05f 100644 --- a/resources/lang/es-ES/account/general.php +++ b/resources/lang/es-ES/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Claves API personales', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', - 'api_base_url' => 'La url base de tu API es:', + 'personal_access_token' => 'Credencial de acceso personal', + 'personal_api_keys_success' => 'Clave API personal :key creada correctamente', + 'here_is_api_key' => 'Aquí tiene su nueva credencial de acceso personal. Esta es la única vez que se mostrará, así que no la pierda. Ahora puede utilizar esta credencial para realizar solicitudes a la API.', + 'api_key_warning' => 'Al generar una credencial para el API, asegúrese de copiarla inmediatamente, ya que no podrá volver a verla.', + 'api_base_url' => 'La url base de su API se encuentra en:', 'api_base_url_endpoint' => '/<endpoint>', - 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', + 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoins) del API y documentación adicional.', 'profile_updated' => 'Cuenta actualizada exitosamente', + 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', ); diff --git a/resources/lang/es-ES/admin/accessories/general.php b/resources/lang/es-ES/admin/accessories/general.php index 02beea6a09..12f456686d 100644 --- a/resources/lang/es-ES/admin/accessories/general.php +++ b/resources/lang/es-ES/admin/accessories/general.php @@ -3,8 +3,8 @@ return array( 'accessory_category' => 'Categoría de accesorio', 'accessory_name' => 'Nombre de accesorio', - 'checkout' => 'Checkout Accesorio', - 'checkin' => 'Checkin Accesorio', + 'checkout' => 'Asignar accesorio', + 'checkin' => 'Ingresar accesorio', 'create' => 'Crear Accesorio', 'edit' => 'Editar Accesorio', 'eula_text' => 'Acuerdo de uso de la categoría', @@ -13,10 +13,10 @@ return array( 'no_default_eula' => 'No se encontró el acuerdo de uso predeterminado. Agregue unos en Configuración.', 'total' => 'Total ', 'remaining' => 'Disponibles', - 'update' => 'Actualizar Accesorio', + 'update' => 'Actualizar accesorio', 'use_default_eula' => 'En su lugar, el acuerdo de uso predeterminado.', 'use_default_eula_disabled' => 'En su lugar, use el acuerdo de uso predeterminado. No está configurado el acuerdo de uso predeterminado. Por favor agregue uno en Configuración.', 'clone' => 'Clonar accesorio', - 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos elementos todavía están retirados.', + 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos elementos todavía están asignados.', ); diff --git a/resources/lang/es-ES/admin/accessories/message.php b/resources/lang/es-ES/admin/accessories/message.php index cfad604dcd..cfdae3f3e0 100644 --- a/resources/lang/es-ES/admin/accessories/message.php +++ b/resources/lang/es-ES/admin/accessories/message.php @@ -4,35 +4,39 @@ return array( 'does_not_exist' => 'El accesorio [:id] no existe.', 'not_found' => 'Ese accesorio no fue encontrado.', - 'assoc_users' => 'Este accesorio actualmente tiene :count entregados a usuarios. Por favor ingrese los accesorios y vuelva a intentar. ', + 'assoc_users' => 'Este accesorio actualmente tiene :count elemento(s) asignado(s) a usuarios. Por favor realice el ingreso de los accesorios y vuelva a intentar. ', 'create' => array( - 'error' => 'El accesorio no fue creado, por favor, inténtalo de nuevo.', + 'error' => 'El accesorio no fue creado, por favor inténtelo de nuevo.', 'success' => 'Accesorio creado correctamente.' ), 'update' => array( - 'error' => 'El accesorio no fue actualizado, por favor, inténtalo de nuevo', + 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'Accesorio actualizado correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este accesorio?', - 'error' => 'Ha habido un problema eliminando este accesorio. Intentalo de nuevo.', + 'error' => 'Hubo un problema eliminando el accesorio. Por favor, inténtelo de nuevo.', 'success' => 'El accesorio fue borrado con éxito.' ), 'checkout' => array( - 'error' => 'El accesorio no fue retirado, por favor vuelva a intentarlo', - 'success' => 'Accesorio retirado correctamente.', - 'unavailable' => 'El accesorio no está disponible para su retirada. Compruebe la cantidad disponible', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + 'error' => 'El accesorio no fue asignado, por favor vuelva a intentarlo', + 'success' => 'Accesorio asignado correctamente.', + 'unavailable' => 'El accesorio no está disponible para ser asignado. Compruebe la cantidad disponible', + 'user_does_not_exist' => 'Este usuario no es válido. Por favor, inténtelo de nuevo.', + 'checkout_qty' => array( + 'lte' => 'En este momento solo existe un accesorio disponible de este tipo y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.|Existen en total :number_currently_remaining accesorios disponibles y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.', + ), + ), 'checkin' => array( - 'error' => 'El accesorio no fue agregado, favor vuelva a intentarlo', - 'success' => 'Accesorio devuelto correctamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + 'error' => 'El accesorio no fue recibido, por favor vuelva a intentarlo', + 'success' => 'El accesorio ha sido ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-ES/admin/asset_maintenances/form.php b/resources/lang/es-ES/admin/asset_maintenances/form.php index 1318740d0f..b7257fc864 100644 --- a/resources/lang/es-ES/admin/asset_maintenances/form.php +++ b/resources/lang/es-ES/admin/asset_maintenances/form.php @@ -1,13 +1,13 @@ 'Tipo de Mantenimiento de Equipo', + 'asset_maintenance_type' => 'Tipo de mantenimiento de equipo', 'title' => 'Título', 'start_date' => 'Fecha de inicio', 'completion_date' => 'Fecha de Terminación', 'cost' => 'Costo', 'is_warranty' => 'Mejora de la Garantía', - 'asset_maintenance_time' => 'Tiempo de Mantenimiento de Equipo (en días)', + 'asset_maintenance_time' => 'Duración del mantenimiento (en días)', 'notes' => 'Notas', 'update' => 'Actualizar Mantenimiento de Equipo', 'create' => 'Crear Mantenimiento de Equipo' diff --git a/resources/lang/es-ES/admin/asset_maintenances/general.php b/resources/lang/es-ES/admin/asset_maintenances/general.php index 9a495cd785..bb01dbbe84 100644 --- a/resources/lang/es-ES/admin/asset_maintenances/general.php +++ b/resources/lang/es-ES/admin/asset_maintenances/general.php @@ -10,7 +10,7 @@ 'upgrade' => 'Mejora', 'calibration' => 'Calibrar', 'software_support' => 'Servicio de software', - 'hardware_support' => 'Servicio de software', + 'hardware_support' => 'Soporte de hardware', 'configuration_change' => 'Cambio de configuración', 'pat_test' => 'Prueba PAT', ]; diff --git a/resources/lang/es-ES/admin/asset_maintenances/message.php b/resources/lang/es-ES/admin/asset_maintenances/message.php index 2a7e98f38b..91745603a2 100644 --- a/resources/lang/es-ES/admin/asset_maintenances/message.php +++ b/resources/lang/es-ES/admin/asset_maintenances/message.php @@ -4,15 +4,15 @@ 'not_found' => '¡El mantenimiento del activo que estaba buscando no se encontró!', 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar el mantenimiento de este activo?', - 'error' => 'Hubo un problema al eliminar el mantenimiento de equipo. Por favor intente nuevamente.', + 'error' => 'Hubo un problema al eliminar el mantenimiento del activo. Por favor inténtelo nuevamente.', 'success' => 'El mantenimiento de equipo fue eliminado de manera exitosa.', ], 'create' => [ 'error' => 'El Mantenimiento de Equipo no fue creado, por favor intente nuevamente.', - 'success' => 'El Mantenimiento de Equipo fue creado de manera exitosa.', + 'success' => 'El mantenimiento del activo fue creado de manera exitosa.', ], 'edit' => [ - 'error' => 'El mantenimiento de activo no fue editado. Por favor, intenta de nuevo.', + 'error' => 'El mantenimiento del activo no fue editado. Por favor, inténtelo de nuevo.', 'success' => 'Mantenimiento de activo editado con éxito.', ], 'asset_maintenance_incomplete' => 'Sin Completar', diff --git a/resources/lang/es-ES/admin/categories/general.php b/resources/lang/es-ES/admin/categories/general.php index 0a94acd238..5637cd2438 100644 --- a/resources/lang/es-ES/admin/categories/general.php +++ b/resources/lang/es-ES/admin/categories/general.php @@ -3,15 +3,15 @@ return array( 'asset_categories' => 'Categorías de activos', 'category_name' => 'Nombre de la categoría', - 'checkin_email' => 'Enviar un correo al usuario al devolver/asignar.', - 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al devolver/asignar.', + 'checkin_email' => 'Enviar un correo al usuario al recibir/devolver.', + 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al recibir/devolver.', 'clone' => 'Clonar categoría', 'create' => 'Crear categoría', 'edit' => 'Editar Categoría', 'email_will_be_sent_due_to_global_eula' => 'Se enviará un correo electrónico al usuario porque se está utilizando el acuerdo de uso global.', 'email_will_be_sent_due_to_category_eula' => 'Se enviará un correo electrónico al usuario porque se ha establecido un acuerdo de uso para esta categoría.', 'eula_text' => 'Acuerdo de uso de la categoría', - 'eula_text_help' => 'Este campo permite personalizar el acuerdo de uso para tipos específicos de activos. Si solo tiene un acuerdo de uso para todos sus activos, puede seleccionar la siguiente opción para usar la definición predeterminada.', + 'eula_text_help' => 'Este campo permite personalizar los términos y condiciones para tipos específicos de activos. Si solo tiene unos términos y condiciones para todos sus activos, puede seleccionar la siguiente opción para usar la definición por defecto.', 'name' => 'Nombre de la categoría', 'require_acceptance' => 'Requerir a los usuarios que confirmen la aceptación de los elementos en esta categoría.', 'required_acceptance' => 'Este usuario recibirá un correo con un enlace para confirmar la aceptación de este elemento.', diff --git a/resources/lang/es-ES/admin/categories/message.php b/resources/lang/es-ES/admin/categories/message.php index 9875a01d88..997487469e 100644 --- a/resources/lang/es-ES/admin/categories/message.php +++ b/resources/lang/es-ES/admin/categories/message.php @@ -3,8 +3,8 @@ return array( 'does_not_exist' => 'La categoría no existe.', - 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no se puede eliminar. Por favor actualice sus modelos para que no hagan referencia a esta categoría e inténtelo de nuevo. ', - 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no se puede eliminar. Por favor actualice su: asset_type para que no haga referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no puede ser eliminada. Actualice los modelos para que ya no hagan referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no puede ser eliminada. Actualice su :asset_type para que ya no haga referencia a esta categoría e inténtelo de nuevo. ', 'create' => array( 'error' => 'La categoría no fue creada, por favor inténtelo de nuevo.', diff --git a/resources/lang/es-ES/admin/categories/table.php b/resources/lang/es-ES/admin/categories/table.php index e3bb551e93..fc18e5ac6f 100644 --- a/resources/lang/es-ES/admin/categories/table.php +++ b/resources/lang/es-ES/admin/categories/table.php @@ -3,7 +3,7 @@ return array( 'eula_text' => 'Acuerdo de uso', 'id' => 'ID', - 'parent' => 'Padre', + 'parent' => 'Ubicación padre', 'require_acceptance' => 'Aceptación', 'title' => 'Nombre de la categoría del activo', diff --git a/resources/lang/es-ES/admin/companies/general.php b/resources/lang/es-ES/admin/companies/general.php index fd18d9f752..8fb72d5b94 100644 --- a/resources/lang/es-ES/admin/companies/general.php +++ b/resources/lang/es-ES/admin/companies/general.php @@ -1,7 +1,7 @@ 'Seleccione una compañía', + 'select_company' => 'Seleccionar una compañía', 'about_companies' => 'Acerca de las compañías', 'about_companies_description' => ' Puede utilizar las compañías como un simple campo informativo, o puede utilizarlas para restringir la visibilidad y la disponibilidad de los activos a los usuarios con una compañía específica habilitando la opción "Soporte completo a múltiples compañías" en "Configuración de administración"', ]; diff --git a/resources/lang/es-ES/admin/companies/message.php b/resources/lang/es-ES/admin/companies/message.php index 5a3cbffa1d..b4e744a8ea 100644 --- a/resources/lang/es-ES/admin/companies/message.php +++ b/resources/lang/es-ES/admin/companies/message.php @@ -3,7 +3,7 @@ return [ 'does_not_exist' => 'La compañía no existe.', 'deleted' => 'Compañía eliminada', - 'assoc_users' => 'Esta compañía ya está asociada con al menos un modelo y no puede eliminarse. Por favor, actualiza tus modelos para no referenciar esta compañía de nuevo y prueba otra vez. ', + 'assoc_users' => 'Esta compañía está actualmente asociada con al menos un modelo y no puede ser eliminada. Por favor actualice sus modelos para que no hagan referencia a esta compañía e inténtalo de nuevo. ', 'create' => [ 'error' => 'Esta compañía no ha sido creada, por favor pruebe de nuevo.', 'success' => 'Compañía creada satisfactoriamente.', diff --git a/resources/lang/es-ES/admin/components/general.php b/resources/lang/es-ES/admin/components/general.php index d047e56c14..e4d9184ef4 100644 --- a/resources/lang/es-ES/admin/components/general.php +++ b/resources/lang/es-ES/admin/components/general.php @@ -2,8 +2,8 @@ return array( 'component_name' => 'Nombre de Componente', - 'checkin' => 'Checkin Componente', - 'checkout' => 'Checkout Componente', + 'checkin' => 'Ingresar componente', + 'checkout' => 'Asignar componente', 'cost' => 'Costo de compra', 'create' => 'Crear componente', 'edit' => 'Editar componente', @@ -12,5 +12,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', - 'checkin_limit' => 'La cantidad devuelta debe ser igual o menor que :assigned_qty' + 'checkin_limit' => 'La cantidad ingresada debe ser igual o menor que :assigned_qty' ); diff --git a/resources/lang/es-ES/admin/components/message.php b/resources/lang/es-ES/admin/components/message.php index 56a3562862..1f68cf977d 100644 --- a/resources/lang/es-ES/admin/components/message.php +++ b/resources/lang/es-ES/admin/components/message.php @@ -5,32 +5,32 @@ return array( 'does_not_exist' => 'El componente no existe.', 'create' => array( - 'error' => 'El componente no fuè creado, intentalo de nuevo.', - 'success' => 'El componente se creò satisfactoriamente.' + 'error' => 'El componente no fue creado, por favor inténtelo de nuevo.', + 'success' => 'El componente se creó satisfactoriamente.' ), 'update' => array( - 'error' => 'El componente no se actualizò, intentalo de nuevo', + 'error' => 'El componente no se actualizó, por favor inténtelo de nuevo', 'success' => 'Componente actualizado satisfactoriamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este componente?', - 'error' => 'Hubo un problema al querer borrar el componente, intentalo de nuevo.', + 'error' => 'Hubo un problema eliminando el componente. Por favor, inténtelo de nuevo.', 'success' => 'El componente fue borrado satisfactoriamente.' ), 'checkout' => array( - 'error' => 'El componente no hizo check out, intentalo de nuevo', - 'success' => 'Check out del componente satisfactorio.', - 'user_does_not_exist' => 'El usuario es invalido, intentalo de nuevo.', - 'unavailable' => 'No quedan suficientes componentes: :remaining resting, :requested ', + 'error' => 'El componente no fue asignado, por favor, inténtelo de nuevo', + 'success' => 'El componente se ha asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'No quedan suficientes componentes: :remaining disponibles, :requested solicitados ', ), 'checkin' => array( - 'error' => 'El componente no fue checked in, intentalo de nuevo', - 'success' => 'Check in de componente satisfactorio.', - 'user_does_not_exist' => 'Es usuario es invalido, intentalo de nuevo.' + 'error' => 'No se realizó el ingreso del componente, por favor inténtelo de nuevo', + 'success' => 'Componente ingresado con éxito.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-ES/admin/consumables/general.php b/resources/lang/es-ES/admin/consumables/general.php index 3b2249f8af..f1a2debb72 100644 --- a/resources/lang/es-ES/admin/consumables/general.php +++ b/resources/lang/es-ES/admin/consumables/general.php @@ -1,11 +1,12 @@ 'Checkout de consumible a usuario', + 'checkout' => 'Asignar consumible a usuario', 'consumable_name' => 'Nombre del Consumible', 'create' => 'Crear Consumible', 'item_no' => 'Artículo núm.', 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Consumible', + 'inventory_warning' => 'El inventario de este consumible está por debajo de la cantidad mínima de :min_count', ); diff --git a/resources/lang/es-ES/admin/consumables/message.php b/resources/lang/es-ES/admin/consumables/message.php index e23ddbd9ab..21d88657da 100644 --- a/resources/lang/es-ES/admin/consumables/message.php +++ b/resources/lang/es-ES/admin/consumables/message.php @@ -2,15 +2,16 @@ return array( + 'invalid_category_type' => 'La categoría debe ser una categoría para consumibles.', 'does_not_exist' => 'El consumible no existe.', 'create' => array( - 'error' => 'El consumible no fue creado, por favor intente nuevamente.', + 'error' => 'El consumible no fue creado, por favor inténtelo nuevamente.', 'success' => 'Consumible creado con éxito.' ), 'update' => array( - 'error' => 'El consumible no fue actualizado, por favor, inténtalo de nuevo', + 'error' => 'El consumible no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'El consumible fue subido con éxito.' ), @@ -22,15 +23,15 @@ return array( 'checkout' => array( 'error' => 'El consumible no fue asignado, por favor inténtelo de nuevo', - 'success' => 'Consumible fue retirado satisfactoriamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.', - 'unavailable' => 'No hay suficientes consumibles para este pago. Por favor, compruebe la cantidad restante. ', + 'success' => 'Consumible asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'No hay suficientes consumibles para esta asignación. Por favor, compruebe la cantidad disponible. ', ), 'checkin' => array( - 'error' => 'Consumible no fue devuelto, por favor inténtelo de nuevo', - 'success' => 'Consumible fue ingresado satisfactoriamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + 'error' => 'El consumible no fue ingresado, por favor inténtelo de nuevo', + 'success' => 'El consumible fue ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-ES/admin/custom_fields/general.php b/resources/lang/es-ES/admin/custom_fields/general.php index c11f6e3399..512bab7cda 100644 --- a/resources/lang/es-ES/admin/custom_fields/general.php +++ b/resources/lang/es-ES/admin/custom_fields/general.php @@ -7,9 +7,9 @@ return [ 'about_fieldsets_title' => 'Acerca de los grupos de campos', 'about_fieldsets_text' => 'Los grupos de campos le permiten agrupar campos personalizados que se reutilizan frecuentemente para determinados modelos de activos.', 'custom_format' => 'Expresión regular personalizada...', - 'encrypt_field' => 'Encriptar el valor de este campo en la base de datos', - 'encrypt_field_help' => 'CUIDADO: Encriptar un campo hace que no se pueda buscar por él.', - 'encrypted' => 'Encriptado', + 'encrypt_field' => 'Cifrar el valor de este campo en la base de datos', + 'encrypt_field_help' => 'ADVERTENCIA: Cifrar un campo hace que no se pueda buscar.', + 'encrypted' => 'Cifrado', 'fieldset' => 'Grupo de campos', 'qty_fields' => 'Campos de cantidad', 'fieldsets' => 'Grupo de campos', @@ -24,35 +24,35 @@ return [ 'field_custom_format_help' => 'Este campo te permite usar una expresión regex para la validación. Debería empezar con "regex:" - por ejemplo, para validar que un valor de campo personalizado contiene un IMEI válido (15 dígitos numéricos), podrías usar regex:/^[0-9]{15}$/.', 'required' => 'Obligatorio', 'req' => 'Obl.', - 'used_by_models' => 'Usado Por Modelos', + 'used_by_models' => 'Usado por los modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo grupo de campos', 'update_fieldset' => 'Actualizar grupo de campos', 'fieldset_does_not_exist' => 'El grupo de campos :id no existe', - 'fieldset_updated' => 'Grupo de campos actualizado', + 'fieldset_updated' => 'Se actualizó el grupo de campos', 'create_fieldset_title' => 'Crear nuevo grupo de campos', 'create_field' => 'Nuevo campo personalizado', 'create_field_title' => 'Crear nuevo campo personalizado', - 'value_encrypted' => 'El valor de este campo está encriptado en la base de datos. Solo los administradores pueden ver el valor desencriptado', - 'show_in_email' => '¿Incluye el valor de este campo en los correos de pago enviados al usuario? Los campos cifrados no se pueden incluir en los correos electrónicos', + 'value_encrypted' => 'El valor de este campo está cifrado en la base de datos. Solo los administradores pueden ver el valor descifrado', + 'show_in_email' => '¿Incluir el campo en los correos de asignación enviados al usuario? Los campos cifrados no se pueden incluir en los correos electrónicos', 'show_in_email_short' => 'Incluye en correos electrónicos.', 'help_text' => 'Texto de ayuda', 'help_text_description' => 'Un texto opcional que aparecerá debajo de los campos del formulario cuando se edite un activo para proporcionar contexto adicional.', 'about_custom_fields_title' => 'Acerca de los Campos Personalizados', 'about_custom_fields_text' => 'Los campos personalizados le permiten añadir atributos arbitrarios a los activos.', - 'add_field_to_fieldset' => 'Añadir campo al grupo', + 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', 'make_optional' => 'Requerido - clic para hacerlo opcional', 'make_required' => 'Opcional - clic para hacerlo requerido', 'reorder' => 'Reordenar', - 'db_field' => 'Campo de BD', + 'db_field' => 'Campo en base de datos', 'db_convert_warning' => 'ADVERTENCIA. Este campo aparece en la tabla de campos personalizados como :db_column, pero se esperaba :expected.', 'is_unique' => 'Este valor debe ser único dentro de los activos', 'unique' => 'Único', - 'display_in_user_view' => 'Permitir al usuario ver estos valores en su página Ver Recursos asignados', + 'display_in_user_view' => 'Permitir al usuario ver estos valores en la página "Ver elementos asignados"', 'display_in_user_view_table' => 'Visible para el usuario', - 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo conjunto de campos', - 'add_to_preexisting_fieldsets' => 'Añadir a cualquier conjunto de campos existente', - 'show_in_listview' => 'Mostrar por defecto en las vistas de la lista. Los usuarios autorizados podrán mostrar/ocultar a través del selector de columnas', + 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo grupo de campos', + 'add_to_preexisting_fieldsets' => 'Añadir a cualquier grupo de campos existente', + 'show_in_listview' => 'Mostrar por defecto en las consultas. Los usuarios autorizados podrán mostrar/ocultar a través del selector de columnas', 'show_in_listview_short' => 'Mostrar en listas', 'show_in_requestable_list_short' => 'Mostrar en la lista de activos que se pueden solicitar', 'show_in_requestable_list' => 'Mostrar el valor en la lista de activos que se pueden solicitar. Los campos cifrados no se mostrarán', diff --git a/resources/lang/es-ES/admin/custom_fields/message.php b/resources/lang/es-ES/admin/custom_fields/message.php index 4b568c4bb9..dcb56133bf 100644 --- a/resources/lang/es-ES/admin/custom_fields/message.php +++ b/resources/lang/es-ES/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'El campo no existe.', 'already_added' => 'El campo ya fue añadido', + 'none_selected' => 'No se ha seleccionado ningún campo', 'create' => array( 'error' => 'Campo no creado, por favor, inténtalo de nuevo.', @@ -28,7 +29,7 @@ return array( 'fieldset' => array( - 'does_not_exist' => 'El conjunto de campos no existe', + 'does_not_exist' => 'El grupo de campos no existe', 'create' => array( 'error' => 'El grupo de campos no ha sido creado, por favor inténtelo de nuevo.', @@ -36,7 +37,7 @@ return array( ), 'update' => array( - 'error' => 'El Grupo de campos no ha sido actualizado, por favor inténtelo de nuevo', + 'error' => 'El grupo de campos no ha sido actualizado, por favor inténtelo de nuevo', 'success' => 'Grupo de campos actualizado correctamente.' ), diff --git a/resources/lang/es-ES/admin/departments/message.php b/resources/lang/es-ES/admin/departments/message.php index 6f10cf0eae..2a7001ad3a 100644 --- a/resources/lang/es-ES/admin/departments/message.php +++ b/resources/lang/es-ES/admin/departments/message.php @@ -4,18 +4,18 @@ return array( 'does_not_exist' => 'El departamento no existe.', 'department_already_exists' => 'Ya existe un departamento con ese nombre en esta ubicación de la compañía. O elija un nombre más específico para este departamento. ', - 'assoc_users' => 'Esta localización está actualmente asociada con al menos un usuario y no puede ser eliminada, Por favor verifique que ningún usuario haga referencia a esta localización e intente de nuevo. ', + 'assoc_users' => 'Este departamento está actualmente asociado con al menos un usuario y no puede ser eliminado. Por favor, actualice sus usuarios para que no hagan referencia a este departamento e inténtelo de nuevo. ', 'create' => array( - 'error' => 'El departamento no fue creado, por favor intente de nuevo.', + 'error' => 'El departamento no fue creado, por favor, inténtelo de nuevo.', 'success' => 'Departamento creado con éxito.' ), 'update' => array( - 'error' => 'El departamento no se actualizó, por favor intente de nuevo', + 'error' => 'El departamento no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Departamento actualizado con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este departamento?', - 'error' => 'Hubo un problema al eliminar el departamento. Inténtalo de nuevo.', + 'error' => 'Hubo un problema al borrar el departamento. Por favor, inténtelo de nuevo.', 'success' => 'El departamento ha sido borrado exitosamente' ) diff --git a/resources/lang/es-ES/admin/departments/table.php b/resources/lang/es-ES/admin/departments/table.php index b24a16d3ae..89216f1727 100644 --- a/resources/lang/es-ES/admin/departments/table.php +++ b/resources/lang/es-ES/admin/departments/table.php @@ -2,7 +2,7 @@ return array( - 'id' => 'CARNÉ DE IDENTIDAD', + 'id' => 'ID', 'name' => 'Nombre de Departamento', 'manager' => 'Supervisor', 'location' => 'Ubicación', diff --git a/resources/lang/es-ES/admin/depreciations/general.php b/resources/lang/es-ES/admin/depreciations/general.php index 8cbf9c1b93..b30fe7e077 100644 --- a/resources/lang/es-ES/admin/depreciations/general.php +++ b/resources/lang/es-ES/admin/depreciations/general.php @@ -3,14 +3,14 @@ return [ 'about_asset_depreciations' => 'Sobre amortización de activos', 'about_depreciations' => 'Puede configurar la depreciación de activos usando un método de línea recta.', - 'asset_depreciations' => 'Amortizaciones', + 'asset_depreciations' => 'Depreciación de activos', 'create' => 'Crear amortización', 'depreciation_name' => 'Nombre amortización', 'depreciation_min' => 'Valor mínimo de amortización', - 'number_of_months' => 'Meses', + 'number_of_months' => 'Número de meses', 'update' => 'Actualizar Amortización', 'depreciation_min' => 'Valor mínimo después de la depreciación', 'no_depreciations_warning' => 'Advertencia: - No tiene ninguna amortización configurada. - Por favor, configure al menos una amortización para ver el informe de amortizaciones.', + No tiene ninguna depreciación configurada. + Por favor, configure al menos una depreciación para ver el informe de depreciaciones.', ]; diff --git a/resources/lang/es-ES/admin/depreciations/message.php b/resources/lang/es-ES/admin/depreciations/message.php index 024b1ee6e3..6532eb38e3 100644 --- a/resources/lang/es-ES/admin/depreciations/message.php +++ b/resources/lang/es-ES/admin/depreciations/message.php @@ -3,22 +3,22 @@ return array( 'does_not_exist' => 'Clase de amortización inexistente.', - 'assoc_users' => 'Esta amortización está asociada a uno o más modelos y no puede ser eliminada.', + 'assoc_users' => 'Esta depreciación está actualmente asociada con uno o más modelos y no puede ser eliminada. Por favor, elimine los modelos y luego intente borrarlas de nuevo. ', 'create' => array( - 'error' => 'Amortización no creada, intentalo de nuevo. :(', + 'error' => 'El tipo de depreciación no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'Amortización creada correctamente. :)' ), 'update' => array( - 'error' => 'Amortización no actualizada, intentalo de nuevo.', + 'error' => 'El tipo de depreciación no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'Amortización actualizada correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta clase de depreciación?', - 'error' => 'Amortización no eliminada, intentalo de nuevo.', + 'error' => 'Ha sucedido un error eliminando el tipo de depreciación, por favor intente de nuevo.', 'success' => 'Amortización eliminada correctamente.' ) diff --git a/resources/lang/es-ES/admin/groups/message.php b/resources/lang/es-ES/admin/groups/message.php index 7f312625a6..3ef844ae44 100644 --- a/resources/lang/es-ES/admin/groups/message.php +++ b/resources/lang/es-ES/admin/groups/message.php @@ -2,7 +2,7 @@ return array( - 'group_exists' => 'El grupo ya existe!', + 'group_exists' => '!El grupo ya existe!', 'group_not_found' => 'El ID del grupo :id no existe.', 'group_name_required' => 'El campo nombre es obligatorio', @@ -14,8 +14,8 @@ return array( 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este grupo?', - 'create' => 'Ha habido un problema creando el grupo. Vuelve a intentarlo.', - 'update' => 'Ha habido un problema actualizando el grupo. Vuelve a intentarlo.', + 'create' => 'Hubo un problema creando el grupo. Por favor intente nuevamente.', + 'update' => 'Hubo un problema actualizando el grupo. Por favor, intente nuevamente.', 'delete' => 'Ha habido un problema eliminando el grupo. Vuelve a intentarlo.', ), diff --git a/resources/lang/es-ES/admin/hardware/form.php b/resources/lang/es-ES/admin/hardware/form.php index d344f88fa3..2efbfc5bd8 100644 --- a/resources/lang/es-ES/admin/hardware/form.php +++ b/resources/lang/es-ES/admin/hardware/form.php @@ -1,36 +1,36 @@ 'Confirmar eliminación masiva de bienes', + 'bulk_delete' => 'Confirmar eliminación masiva de activos', 'bulk_restore' => 'Confirmar recuperación masiva de activos', - 'bulk_delete_help' => 'Revisar los bienes para eliminación masiva. Una vez eliminados, esos bienes pueden ser restaurados, pero no volverán a estar asociados con ningún usuario a los que esté asignado.', + 'bulk_delete_help' => 'Revise a continuación los activos para eliminación masiva. Una vez eliminados, estos activos se pueden restaurar, pero ya no estarán asociados a ningún usuario al que estén asignados actualmente.', 'bulk_restore_help' => 'Revisar los activos para la restauración en masa a continuación. Una vez restaurados, estos activos no estarán asociados con los usuarios a los que fueron asignados anteriormente.', 'bulk_delete_warn' => 'Va a eliminar :asset_count activos.', 'bulk_restore_warn' => 'Está a punto de restaurar :asset_count activos.', - 'bulk_update' => 'Actualización masiva de Equipos', - 'bulk_update_help' => 'Este formulario le permite actualizar múltiples Equipos simultáneamente. Solo complete los campos que quiere modificar. Todo campo en blanco permanecerá sin cambios. ', + 'bulk_update' => 'Actualización masiva de activos', + 'bulk_update_help' => 'Este formulario le permite actualizar varios activos a la vez. Complete solo los campos que necesite modificar. Los campos que se dejen en blanco no se modificarán. ', 'bulk_update_warn' => 'Está a punto de editar las propiedades de un solo activo.|Está a punto de editar las propiedades de :asset_count activos.', - 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos son :asset_model_count diferentes tipos de modelos.', + 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos corresponden a :asset_model_count tipos diferentes de modelos.', 'bulk_update_model_prefix' => 'En modelos', - 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado a granel.', + 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado de forma masiva.', 'checkedout_to' => 'Asignado a', 'checkout_date' => 'Fecha de asignación', - 'checkin_date' => 'Fecha de devolución', + 'checkin_date' => 'Fecha de ingreso', 'checkout_to' => 'Asignar a', - 'cost' => 'Precio Compra', - 'create' => 'Crear Equipo', + 'cost' => 'Precio de compra', + 'create' => 'Crear activo', 'date' => 'Fecha de compra', 'depreciation' => 'Depreciación', 'depreciates_on' => 'Se deprecia en', 'default_location' => 'Ubicación predeterminada', 'default_location_phone' => 'Teléfono de ubicación por defecto', 'eol_date' => 'Fecha fin de soporte (EOL)', - 'eol_rate' => 'Tasa de EOL', + 'eol_rate' => 'Tasa fin de soporte (EOL)', 'expected_checkin' => 'Fecha esperada de devolución', - 'expires' => 'Expira', + 'expires' => 'Vence', 'fully_depreciated' => 'Totalmente amortizado', - 'help_checkout' => 'Si desea asignar este equipo inmediatamente, seleccione "Listo para Asignar" de la lista de estados de arriba. ', - 'mac_address' => 'MAC Dirección', + 'help_checkout' => 'Si desea asignar este equipo inmediatamente, seleccione "Listo para asignar" de la lista de estados de arriba. ', + 'mac_address' => 'Dirección MAC', 'manufacturer' => 'Fabricante', 'model' => 'Modelo', 'months' => 'meses', @@ -39,18 +39,18 @@ return [ 'order' => 'Número de orden', 'qr' => 'Código QR', 'requestable' => 'Los usuarios pueden solicitar este elemento', - 'redirect_to_all' => 'Return to all :type', + 'redirect_to_all' => 'Regresar a :type', 'redirect_to_type' => 'Ir a :type', - 'redirect_to_checked_out_to' => 'Go to Checked Out to', - 'select_statustype' => 'Seleccione un tipo de estado', - 'serial' => 'N. Serie', + 'redirect_to_checked_out_to' => 'Ir a elementos asignados', + 'select_statustype' => 'Seleccionar un tipo de estado', + 'serial' => 'Número de serie', 'status' => 'Estado', - 'tag' => 'Etiqueta del activo', - 'update' => 'Actualizar Equipo', + 'tag' => 'Placa del activo', + 'update' => 'Actualizar activo', 'warranty' => 'Garantía', - 'warranty_expires' => 'Vencimiento de la Garantía', + 'warranty_expires' => 'Vencimiento de la garantía', 'years' => 'años', - 'asset_location' => 'Actualizar ubicación del recurso', + 'asset_location' => 'Actualizar ubicación del activo', 'asset_location_update_default_current' => 'Actualizar ubicación predeterminada y ubicación actual', 'asset_location_update_default' => 'Actualizar sólo la ubicación predeterminada', 'asset_location_update_actual' => 'Actualizar sólo la ubicación actual', diff --git a/resources/lang/es-ES/admin/hardware/general.php b/resources/lang/es-ES/admin/hardware/general.php index 78632185b4..6fb958d5fe 100644 --- a/resources/lang/es-ES/admin/hardware/general.php +++ b/resources/lang/es-ES/admin/hardware/general.php @@ -1,22 +1,22 @@ 'Acerca de Activos', - 'about_assets_text' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.', + 'about_assets_title' => 'Acerca de los activos', + 'about_assets_text' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', 'archived' => 'Archivado', 'asset' => 'Equipo', - 'bulk_checkout' => 'Activos Asignados', - 'bulk_checkin' => 'Devolver activos', - 'checkin' => 'Devolver activo', - 'checkout' => 'Activo de pago', + 'bulk_checkout' => 'Asignar activos', + 'bulk_checkin' => 'Ingresar activos', + 'checkin' => 'Ingresar activo', + 'checkout' => 'Asignar activo', 'clone' => 'Clonar activo', 'deployable' => 'Utilizable', 'deleted' => 'Este activo fue eliminado.', - 'delete_confirm' => '¿Está seguro de que desea eliminar este recurso?', + 'delete_confirm' => '¿Está seguro de que desea eliminar este activo?', 'edit' => 'Editar activo', - 'model_deleted' => 'Este Modelo de activo fue eliminado. Debes restaurar este modelo antes de poder restaurar el Activo.', + 'model_deleted' => 'Este modelo de activo ha sido eliminado. Debe restaurar este modelo antes de poder restaurar el activo.', 'model_invalid' => 'Este modelo para este activo es inválido.', - 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar asignarlo, devolverlo o auditarlo.', + 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar ingresarlo, asignarlo o auditarlo.', 'requestable' => 'Puede solicitarse', 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', @@ -27,16 +27,16 @@ return [ 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que es no utilizable y no puede ser asignado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Tiene un error en su archivo CSV:', - 'import_text' => '

Cargue un archivo CSV que contenga el historial de activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La importación del historial busca activos que coincidan con la etiqueta de activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Admin > Opciones Generales.

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

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

', - 'csv_import_match_f-l' => 'Intenta emparejar usuarios con formato nombre.lastname (jane.smith)', - 'csv_import_match_initial_last' => 'Intentar emparejar a los usuarios con un formato primer apellido inicial (jsmith)', - 'csv_import_match_first' => 'Intentar emparejar a los usuarios con formato primer nombre (jane)', - 'csv_import_match_email' => 'Intenta emparejar a los usuarios por email como nombre de usuario', - 'csv_import_match_username' => 'Intentar coincidir usuarios por nombre de usuario', + 'import_text' => '

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

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

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

', + 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', + 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', + 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', + 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor vea abajo para más detalles.', 'custom_export' => 'Personalizar exportación', - 'mfg_warranty_lookup' => 'Búsqueda del estado de Garantía para :manufacturer', + 'mfg_warranty_lookup' => 'Búsqueda del estado de garantía para :manufacturer', 'user_department' => 'Departamento de Usuario', ]; diff --git a/resources/lang/es-ES/admin/hardware/message.php b/resources/lang/es-ES/admin/hardware/message.php index 1d3c459c28..fe3a087649 100644 --- a/resources/lang/es-ES/admin/hardware/message.php +++ b/resources/lang/es-ES/admin/hardware/message.php @@ -2,32 +2,31 @@ return [ - 'undeployable' => 'Atención: Este elemento ha sido marcado como no utilizable. - Si no es correcto, actualice el estado.', - 'does_not_exist' => 'Equipo inexistente.', - 'does_not_exist_var'=> 'Activo con etiqueta :asset_tag no encontrado.', - 'no_tag' => 'No se ha proporcionado ninguna etiqueta de activo.', + 'undeployable' => 'Advertencia: Este activo actualmente está marcado como no utilizable. Si este estado ha cambiado, por favor, actualice el estado del activo.', + 'does_not_exist' => 'El activo no existe.', + 'does_not_exist_var'=> 'Activo con placa :asset_tag no encontrado.', + 'no_tag' => 'No se ha proporcionado ninguna placa de activo.', 'does_not_exist_or_not_requestable' => 'Ese activo no existe o no puede ser solicitado.', - 'assoc_users' => 'Equipo asignado a un usuario, no se puede eliminar.', + 'assoc_users' => 'Actualmente este activo está asignado a un usuario y no puede ser eliminado. Por favor, primero devuelva o recupere el activo y vuelva a intentarlo. ', 'warning_audit_date_mismatch' => 'La próxima fecha de auditoría de este activo (:next_audit_date) es anterior a la última fecha de auditoría (:last_audit_date). Por favor, actualice la próxima fecha de auditoría.', 'create' => [ 'error' => 'El activo no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'Equipo creado. :)', - 'success_linked' => 'Activo con etiqueta :tag creado con éxito. Haga clic aquí para ver.', + 'success_linked' => 'Activo con placa :tag creado con éxito. Haga clic aquí para ver.', ], 'update' => [ - 'error' => 'Equipo no actualizado, intentalo de nuevo', + 'error' => 'El activo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'Equipo actualizado.', - 'encrypted_warning' => 'Activo actualizado con éxito, pero los campos personalizados cifrados no se debieron a permisos', + 'encrypted_warning' => 'El activo se actualizó correctamente, pero los campos personalizados cifrados no lo hicieron debido a los permisos', 'nothing_updated' => 'Ningún campo fue seleccionado, por lo que nada ha sido actualizado.', - 'no_assets_selected' => 'Ningún recurso fue seleccionado, por lo que no se actualizó nada.', + 'no_assets_selected' => 'Ningún activo fue seleccionado, por lo que no se actualizó nada.', 'assets_do_not_exist_or_are_invalid' => 'Los activos seleccionados no se pueden actualizar.', ], 'restore' => [ - 'error' => 'El equipo no fue restaurado, por favor intente nuevamente', + 'error' => 'El activo no fue restaurado, por favor inténtelo nuevamente', 'success' => 'Equipo restaurado correctamente.', 'bulk_success' => 'Equipo restaurado correctamente.', 'nothing_updated' => 'No se seleccionaron activos, por lo que no se restauró nada.', @@ -40,7 +39,7 @@ return [ 'deletefile' => [ - 'error' => 'Archivo no eliminado. Por favor, vuelva a intentarlo.', + 'error' => 'Archivo no eliminado. Por favor inténtelo nuevamente.', 'success' => 'Archivo eliminado correctamente.', ], @@ -48,14 +47,15 @@ return [ 'error' => 'Archivo(s) no cargado(s). Por favor, inténtelo nuevamente.', 'success' => 'Archivo(s) cargado(s) exitosamente.', 'nofiles' => 'No seleccionó ningún archivo para ser cargado, o el archivo que está tratando de cargar es demasiado grande', - 'invalidfiles' => 'Uno o más sus archivos es demasiado grande o es de un tipo no permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ], 'import' => [ + 'import_button' => 'Proceso para importar', 'error' => 'Algunos elementos no se pudieron importar correctamente.', 'errorDetail' => 'Estos elementos no pudieron importarse debido a errores.', - 'success' => 'Tu archivo ha sido importado', - 'file_delete_success' => 'Tu archivo ha sido eliminado con éxito', + 'success' => 'Su archivo ha sido importado', + 'file_delete_success' => 'Su archivo se ha eliminado correctamente', 'file_delete_error' => 'No pudimos eliminar tu archivo', 'file_missing' => 'Falta el archivo seleccionado', 'header_row_has_malformed_characters' => 'Uno o más atributos en la fila del encabezado contienen caracteres UTF-8 mal formados', @@ -65,31 +65,31 @@ return [ 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar este activo?', - 'error' => 'Equipo no eliminado, intentalo de nuevo.', + 'error' => 'Hubo un problema al eliminar el activo. Por favor, inténtelo de nuevo.', 'nothing_updated' => 'No se seleccionaron los activos, por lo que no se eliminó nada.', 'success' => 'Equipo eliminado.', ], 'checkout' => [ 'error' => 'El activo no fue asignado, por favor inténtelo de nuevo', - 'success' => 'Equipo asignado.', - 'user_does_not_exist' => 'Este usuario no es correcto. Intentalo de nuevo.', - 'not_available' => '¡Ese artículo no está disponible para retirada!', + 'success' => 'Equipo asignado correctamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'not_available' => '¡Ese equipo no está disponible para ser asignado!', 'no_assets_selected' => 'Debes seleccionar al menos un elemento de la lista', ], 'checkin' => [ - 'error' => 'El equipo no se pudo devolver, por favor inténtelo de nuevo', - 'success' => 'El activo fue devuelto exitosamente.', - 'user_does_not_exist' => 'Es usuario no es correcto, por favor inténtelo de nuevo.', - 'already_checked_in' => 'El equipo ya ha sido devuelto.', + 'error' => 'El activo no se pudo ingresar, por favor inténtelo de nuevo', + 'success' => 'El activo fue ingresado exitosamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'already_checked_in' => 'El equipo ya ha sido recibido.', ], 'requests' => [ - 'error' => 'Bien no solicitado, por favor inténtelo de nuevo', - 'success' => 'Bien solicitado correctamente.', - 'canceled' => 'Solicitud de retirada cancelada con éxito', + 'error' => 'El activo no pudo ser solicitado, por favor inténtelo de nuevo', + 'success' => 'Activo solicitado correctamente.', + 'canceled' => 'La solicitud de asignación fue cancelada de forma exitosa', ], ]; diff --git a/resources/lang/es-ES/admin/hardware/table.php b/resources/lang/es-ES/admin/hardware/table.php index 9b9e60f6a2..744e2c5aae 100644 --- a/resources/lang/es-ES/admin/hardware/table.php +++ b/resources/lang/es-ES/admin/hardware/table.php @@ -2,32 +2,32 @@ return [ - 'asset_tag' => 'Etiqueta', + 'asset_tag' => 'Placa del activo', 'asset_model' => 'Modelo', 'assigned_to' => 'Asignado a', 'book_value' => 'Valor Actual', 'change' => 'Operación', 'checkout_date' => 'Fecha de asignación', - 'checkoutto' => 'Asignado', + 'checkoutto' => 'Asignado a', 'components_cost' => 'Coste total de componentes', 'current_value' => 'Valor actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', - 'eol' => 'EOL', + 'eol' => 'Fin de soporte (EOL)', 'id' => 'ID', - 'last_checkin_date' => 'Última fecha de devolución', + 'last_checkin_date' => 'Última fecha de ingreso', 'location' => 'Ubicación', 'purchase_cost' => 'Costo', 'purchase_date' => 'Comprado', - 'serial' => 'N. Serie', + 'serial' => 'Número de serie', 'status' => 'Estado', - 'title' => 'Equipo ', + 'title' => 'Activo ', 'image' => 'Imagen de dispositivo', 'days_without_acceptance' => 'Días sin aceptación', 'monthly_depreciation' => 'Depreciación mensual', 'assigned_to' => 'Asignado a', 'requesting_user' => 'Solicitando usuario', 'requested_date' => 'Fecha solicitada', - 'changed' => 'Cambiado', + 'changed' => 'Cambios', 'icon' => 'Ícono', ]; diff --git a/resources/lang/es-ES/admin/kits/general.php b/resources/lang/es-ES/admin/kits/general.php index c1d2e00115..cb2f817c23 100644 --- a/resources/lang/es-ES/admin/kits/general.php +++ b/resources/lang/es-ES/admin/kits/general.php @@ -2,19 +2,19 @@ return [ 'about_kits_title' => 'Acerca de kits predefinidos', - 'about_kits_text' => 'Los Kits predefinidos le permiten rápidamente entregar un conjunto de elementos (assets, licencias, etc) a un usuario. Esto puede ser útil cuando su proceso de aprovisionar a usuarios nuevos es consistente para varios usuarios y todos reciben los mismos ítems.', + 'about_kits_text' => 'Los kits predefinidos le permiten rápidamente asignar un conjunto de elementos (activos, licencias, etc.) a un usuario. Esto puede ser útil cuando su proceso de incorporación de usuarios es similar para muchos usuarios y todos reciben los mismos elementos.', 'checkout' => 'Asignar kit ', 'create_success' => 'El kit se ha creado correctamente.', 'create' => 'Crear kit predefinido', 'update' => 'Actualizar kit predefinido', 'delete_success' => 'Kit eliminado correctamente.', 'update_success' => 'El kit se ha actualizado correctamente.', - 'none_models' => 'No hay suficientes recursos disponibles para :model para asignar. :qty son requeridos. ', - 'none_licenses' => 'No hay suficientes licencias disponibles de :license para entregar. Se requieren :qty . ', - 'none_consumables' => 'No hay suficientes unidades disponibles de :consumable para entregar. Se requieren :qty . ', - 'none_accessory' => 'No hay suficientes unidades disponibles de :accessory para entregar. Se necesitan :qty . ', + 'none_models' => 'No hay suficientes activos disponibles de :model para asignar. Se requieren :qty. ', + 'none_licenses' => 'No hay suficientes licencias disponibles de :license para asignar. Se requieren :qty. ', + 'none_consumables' => 'No hay suficientes unidades disponibles de :consumable para asignar. Se requieren :qty. ', + 'none_accessory' => 'No hay suficientes unidades disponibles de :accessory para asignar. Se requieren :qty. ', 'append_accessory' => 'Vincular Accesorio', - 'update_appended_accessory' => 'Actualizar Accesorio vinculado', + 'update_appended_accessory' => 'Actualizar accesorio añadido', 'append_consumable' => 'Vincular Consumible', 'update_appended_consumable' => 'Actualizar Consumible vinculado', 'append_license' => 'Vincular licencia', diff --git a/resources/lang/es-ES/admin/labels/table.php b/resources/lang/es-ES/admin/labels/table.php index 9831a9551d..055d28c169 100644 --- a/resources/lang/es-ES/admin/labels/table.php +++ b/resources/lang/es-ES/admin/labels/table.php @@ -10,7 +10,7 @@ return [ 'example_supplier' => 'Compañía de prueba limitada', 'labels_per_page' => 'Etiquetas', 'support_fields' => 'Campos', - 'support_asset_tag' => 'Etiqueta', + 'support_asset_tag' => 'Placa', 'support_1d_barcode' => '1D', 'support_2d_barcode' => '2D', 'support_logo' => 'Logo', diff --git a/resources/lang/es-ES/admin/licenses/form.php b/resources/lang/es-ES/admin/licenses/form.php index b1d1d180d9..37234d8d24 100644 --- a/resources/lang/es-ES/admin/licenses/form.php +++ b/resources/lang/es-ES/admin/licenses/form.php @@ -2,8 +2,8 @@ return array( - 'asset' => 'Equipo', - 'checkin' => 'Devolver', + 'asset' => 'Activo', + 'checkin' => 'Ingresar', 'create' => 'Crear licencia', 'expiration' => 'Fecha de vencimiento', 'license_key' => 'Clave de producto', @@ -12,11 +12,11 @@ return array( 'no_depreciation' => 'No Amortizar', 'purchase_order' => 'Número de orden de compra', 'reassignable' => 'Reasignable', - 'remaining_seats' => 'Posiciones Restantes', - 'seats' => 'Instalaciones', - 'termination_date' => 'Fecha de Fin', - 'to_email' => 'Registrado a Email', - 'to_name' => 'Registrado a Nombre', + 'remaining_seats' => 'Disponibles', + 'seats' => 'Total de licencias', + 'termination_date' => 'Fecha de finalización', + 'to_email' => 'Correo electrónico asociado a la licencia', + 'to_name' => 'Nombre de la persona asociada a la licencia', 'update' => 'Actualizar Licencia', 'checkout_help' => 'Debe asignar una licencia a un activo de hardware o a una persona. Puede seleccionar ambos, pero el propietario del activo debe coincidir con la persona a la que está asignado el activo.' ); diff --git a/resources/lang/es-ES/admin/licenses/general.php b/resources/lang/es-ES/admin/licenses/general.php index d571d80114..847e64d75e 100644 --- a/resources/lang/es-ES/admin/licenses/general.php +++ b/resources/lang/es-ES/admin/licenses/general.php @@ -2,50 +2,51 @@ return array( 'about_licenses_title' => 'Acerca de licencias', - 'about_licenses' => 'Las licencias son para identificar software. Tienen un número específico de asientos que pueden ser asignados a individuos', - 'checkin' => 'Quitar Instalación', - 'checkout_history' => 'Historial Asignaciones', - 'checkout' => 'Asignar Instalación', + 'about_licenses' => 'Las licencias se utilizan para hacer un seguimiento del software. Tienen una cantidad determinada que puede ser asignada a individuos', + 'checkin' => 'Ingresar licencia', + 'checkout_history' => 'Historial de asignaciones', + 'checkout' => 'Asignar licencia', 'edit' => 'Editar Usuario', 'filetype_info' => 'Tipos de archivos permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, y rar.', 'clone' => 'Clonar Usuario', 'history_for' => 'Historial para ', 'in_out' => 'Quita/Asigna', 'info' => 'Info Licencia', - 'license_seats' => 'Num. Instalaciones', - 'seat' => 'Instalación', - 'seats' => 'Instalaciones', + 'license_seats' => 'Total de licencias', + 'seat' => 'Licencia', + 'seat_count' => 'Licencia :count', + 'seats' => 'Total de licencias', 'software_licenses' => 'Licencias Software', 'user' => 'Usuario', 'view' => 'Ver Licencias', - 'delete_disabled' => 'Esta licencia no se puede eliminar aún porque algunos asientos todavía están retirados.', + 'delete_disabled' => 'Esta licencia no se puede eliminar aún está asignada a algunos usuarios.', 'bulk' => [ 'checkin_all' => [ - 'button' => 'Comprobar todos los asientos', - 'modal' => 'Esto activará el checkin de un asiento. | Esta acción registrará todos los asientos :checkedout_seats_count para esta licencia.', - 'enabled_tooltip' => 'Checkin TODOS los asientos para esta licencia tanto de usuarios como de activos', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos seleccionados actualmente', + 'button' => 'Ingresar todas las licencias', + 'modal' => 'Esta acción ingresará una licencia. | Esta acción ingresará todas las :checkedout_seats_count licencias.', + 'enabled_tooltip' => 'Recibir TODAS las licencias tanto de usuarios como de activos', + 'disabled_tooltip' => 'Esto está deshabilitado porque no hay licencias asignadas actualmente', 'disabled_tooltip_reassignable' => 'Esto está desactivado porque la licencia no es reasignable', - 'success' => '¡Licencia registrada con éxito! | ¡Todas las licencias fueron registradas con éxito!', - 'log_msg' => 'Check-in a través de pago de licencia en licencia GUI', + 'success' => '¡Licencia recibida correctamente! | ¡Todas las licencias fueron recibidas correctamente!', + 'log_msg' => 'Ingresada mediante ingreso masivo en página de licencias', ], 'checkout_all' => [ - 'button' => 'Salir todos los asientos', - 'modal' => 'Esta acción comprobará un asiento para el primer usuario disponible. | Esta acción verificará todos los asientos :available_seats_count para los primeros usuarios disponibles. Se considera que un usuario está disponible para este asiento si aún no tiene esta licencia revisada para ellos, y la propiedad Auto-Asignación de Licencia está habilitada en su cuenta de usuario.', - 'enabled_tooltip' => 'Checkout TODOS los asientos (o tantos como estén disponibles) para TODOS los usuarios', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos disponibles actualmente', - 'success' => '¡Licencia retirada con éxito! | ¡Licencias :count fueron retiradas con éxito!', - 'error_no_seats' => 'No quedan plazas restantes para esta licencia.', - 'warn_not_enough_seats' => ':count usuarios fueron asignados a esta licencia, pero nos quedamos sin plazas de licencia disponibles.', + 'button' => 'Asignar todas las licencias', + 'modal' => 'Esta acción asignará una licencia para el primer usuario disponible. | Esta acción asignará todas las :available_seats_count licencias a los primeros usuarios disponibles. Se considera que un usuario está disponible si aún no tiene esta licencia asignada y la propiedad "Autoasignación de licencia" está habilitada en su cuenta de usuario.', + 'enabled_tooltip' => 'Asignar TODAS las licencias (o tantas como estén disponibles) para TODOS los usuarios', + 'disabled_tooltip' => 'Esto está deshabilitado porque actualmente no hay licencias disponibles', + 'success' => '¡Licencia asignada exitosamente! | ¡Licencias :count asignadas exitosamente!', + 'error_no_seats' => 'No quedan licencias disponibles.', + 'warn_not_enough_seats' => 'Se asignaron :count usuarios a esta licencia, y se agotaron las licencias disponibles.', 'warn_no_avail_users' => 'Nada que hacer. No hay usuarios que no tengan esta licencia asignada.', - 'log_msg' => 'Checado mediante pago masivo de licencia en GUI licencia', + 'log_msg' => 'Asignada vía asignación masiva en página de licencias', ], ], - 'below_threshold' => 'Solo quedan :remaining_count asientos para esta licencia con una cantidad mínima de :min_amt. Puede considerar comprar más asientos.', + 'below_threshold' => 'Solo quedan :remaining_count licencias y su cantidad mínima es de :min_amt. Puede considerar la compra de más licencias.', 'below_threshold_short' => 'Este artículo está por debajo de la cantidad mínima requerida.', ); diff --git a/resources/lang/es-ES/admin/licenses/message.php b/resources/lang/es-ES/admin/licenses/message.php index ec6597c7b0..d9cf95f16d 100644 --- a/resources/lang/es-ES/admin/licenses/message.php +++ b/resources/lang/es-ES/admin/licenses/message.php @@ -6,14 +6,14 @@ return array( 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', 'asset_does_not_exist' => 'El equipo que intentas asignar a esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', - 'assoc_users' => 'Esta categoría está asignada al menos a un modelo y no puede ser eliminada.', + 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', 'not_found' => 'Licencia no encontrada', - 'seats_available' => ':seat_count plazas disponibles', + 'seats_available' => ':seat_count disponibles', 'create' => array( - 'error' => 'La categoría no se ha creado, intentalo de nuevo.', + 'error' => 'La licencia no fue creada, por favor inténtelo de nuevo.', 'success' => 'Categoría creada correctamente.' ), @@ -26,29 +26,31 @@ return array( 'error' => 'Archivo(s) no cargado. Por favor, vuelva a intentarlo.', 'success' => 'Archivo(s) cargado correctamente.', 'nofiles' => 'No seleccionó ningún archivo para ser cargado, o el archivo que seleccionó es demasiado grande', - 'invalidfiles' => 'Uno o más de tus ficheros son demasiado grandes o de un tipo no permitido. Los tipos permitidos son png, gif, jpg, doc, docx, pdf, txt, zip, rar, rtf, xml y lic.', + 'invalidfiles' => 'Uno o más de sus archivos es demasiado grande o es un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, rar, rtf, xml y lic.', ), 'update' => array( - 'error' => 'La categoría no se ha actualizado, intentalo de nuevo.', + 'error' => 'La licencia no fue actualizada, por favor inténtelo de nuevo', 'success' => 'Categoría actualizada correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta licencia?', - 'error' => 'Ha habido un problema eliminando la categoría. Intentalo de nuevo.', + 'error' => 'Hubo un problema al eliminar la licencia. Por favor, inténtelo de nuevo.', 'success' => 'Categoría eliminada.' ), 'checkout' => array( - 'error' => 'Equipo no asignado, intentalo de nuevo', - 'success' => 'Equipo asignado.', + 'error' => 'Hubo un problema asignando la licencia. Por favor, inténtelo de nuevo.', + 'success' => 'La licencia fue asignada con éxito', 'not_enough_seats' => 'No hay suficientes asientos de licencia disponibles para la compra', + 'mismatch' => 'La licencia proporcionada no coincide con la licencia seleccionada', + 'unavailable' => 'Esta licencia no está disponible para ser asignada.', ), 'checkin' => array( - 'error' => 'Hubo un problema devolviendo la licencia. Por favor, inténtalo de nuevo.', - 'success' => 'Equipo quitado correctamente.' + 'error' => 'Hubo un problema ingresando la licencia. Por favor, inténtelo de nuevo.', + 'success' => 'La licencia fue ingresada correctamente' ), ); diff --git a/resources/lang/es-ES/admin/licenses/table.php b/resources/lang/es-ES/admin/licenses/table.php index 2d5286e577..571199dd07 100644 --- a/resources/lang/es-ES/admin/licenses/table.php +++ b/resources/lang/es-ES/admin/licenses/table.php @@ -3,14 +3,14 @@ return array( 'assigned_to' => 'Asignada a', - 'checkout' => 'Quita/Asigna', + 'checkout' => 'Entrada/Salida', 'deleted_at' => 'Eliminado el', 'id' => 'ID', 'license_email' => 'Email de licencia', 'license_name' => 'Licenciado a', 'purchase_date' => 'Fecha de compra', - 'purchased' => 'Comprada', - 'seats' => 'Instalaciones', + 'purchased' => 'Comprado', + 'seats' => 'Total de licencias', 'hardware' => 'Equipo', 'serial' => 'N. Serie', 'title' => 'Categoría de equipo', diff --git a/resources/lang/es-ES/admin/locations/message.php b/resources/lang/es-ES/admin/locations/message.php index 733f9e76c4..06956564e5 100644 --- a/resources/lang/es-ES/admin/locations/message.php +++ b/resources/lang/es-ES/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'La ubicación no existe.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assigned_assets' => 'Activos asignados', @@ -11,7 +11,7 @@ return array( 'create' => array( - 'error' => 'Localización no creada, Intentalo de nuevo.', + 'error' => 'La ubicación no pudo ser creada, por favor inténtelo de nuevo.', 'success' => 'La ubicación fue creada exitosamente.' ), diff --git a/resources/lang/es-ES/admin/locations/table.php b/resources/lang/es-ES/admin/locations/table.php index 038d7752e7..95f048d9ec 100644 --- a/resources/lang/es-ES/admin/locations/table.php +++ b/resources/lang/es-ES/admin/locations/table.php @@ -17,21 +17,21 @@ return [ 'address' => 'Dirección', 'address2' => 'Dirección (línea 2)', 'zip' => 'Código postal', - 'locations' => 'Localizaciones', + 'locations' => 'Ubicaciones', 'parent' => 'Ubicación padre', 'currency' => 'Divisa de la ubicación', 'ldap_ou' => 'Búsqueda LDAP OU', 'user_name' => 'Nombre de usuario', 'department' => 'Departamento', 'location' => 'Ubicación', - 'asset_tag' => 'Etiqueta de activo', + 'asset_tag' => 'Placa del activo', 'asset_name' => 'Nombre', 'asset_category' => 'Categoría', 'asset_manufacturer' => 'Fabricante', 'asset_model' => 'Modelo', 'asset_serial' => 'Número de serie', 'asset_location' => 'Ubicación', - 'asset_checked_out' => 'Asignado', + 'asset_checked_out' => 'Asignado a', 'asset_expected_checkin' => 'Fecha esperada de devolución', 'date' => 'Fecha:', 'phone' => 'Teléfono ubicación', diff --git a/resources/lang/es-ES/admin/manufacturers/message.php b/resources/lang/es-ES/admin/manufacturers/message.php index 5632d048ea..85dee8043f 100644 --- a/resources/lang/es-ES/admin/manufacturers/message.php +++ b/resources/lang/es-ES/admin/manufacturers/message.php @@ -2,17 +2,17 @@ return array( - 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se puede utilizar en tu URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', + 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se pueden utilizar en su URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', 'does_not_exist' => 'Fabricante inexistente.', - 'assoc_users' => 'Este Fabricante está asociado al menos a un modelo y no puede ser eliminado', + 'assoc_users' => 'Este fabricante está actualmente asociado con al menos un modelo y no se puede eliminar. Por favor, actualice sus modelos para dejar de hacer referencia a este fabricante y vuelva a intentarlo. ', 'create' => array( - 'error' => 'Fabricante no creado, Intentalo de nuevo.', + 'error' => 'El fabricante no fue creado, por favor inténtelo de nuevo.', 'success' => 'Fabricante creado.' ), 'update' => array( - 'error' => 'Fabricante no actualizado, Intentalo de nuevo', + 'error' => 'El fabricante no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Fabricante actualizado.' ), @@ -23,8 +23,8 @@ return array( 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este fabricante?', - 'error' => 'Hubo un problema eliminando el fabricante. Por favor, inténtalo de nuevo.', - 'success' => 'Fabricante Eliminado.' + 'error' => 'Ocurrió un problema eliminando el fabricante. Por favor, intente nuevamente.', + 'success' => 'El fabricante se ha eliminado correctamente.' ) ); diff --git a/resources/lang/es-ES/admin/manufacturers/table.php b/resources/lang/es-ES/admin/manufacturers/table.php index f06114aa48..87607feb2a 100644 --- a/resources/lang/es-ES/admin/manufacturers/table.php +++ b/resources/lang/es-ES/admin/manufacturers/table.php @@ -4,13 +4,13 @@ return array( 'about_manufacturers_title' => 'Sobre fabricantes', 'about_manufacturers_text' => 'Los fabricantes son las empresas que crean sus activos. Aquí puede almacenar importante información de contacto para soporte, la cual se mostrará en las páginas de detalle de sus activos.', 'asset_manufacturers' => 'Fabricantes de activos', - 'create' => 'Crear Fabricante', + 'create' => 'Crear fabricante', 'id' => 'ID', 'name' => 'Nombre', 'support_email' => 'Email de soporte', 'support_phone' => 'Teléfono de soporte', 'support_url' => 'URL de soporte', 'warranty_lookup_url' => 'URL de búsqueda de garantía', - 'update' => 'Actualizar Fabricante', + 'update' => 'Actualizar fabricante', ); diff --git a/resources/lang/es-ES/admin/models/general.php b/resources/lang/es-ES/admin/models/general.php index 9170dae593..245c0774a8 100644 --- a/resources/lang/es-ES/admin/models/general.php +++ b/resources/lang/es-ES/admin/models/general.php @@ -7,12 +7,12 @@ return array( 'bulk_delete' => 'Borrar Grandes Modelos de Activos', 'bulk_delete_help' => 'Usa las casillas de verificación para confirmar la eliminación de los modelos de activos. Los modelos de activos tienen activos asociados que no pueden ser eliminados hasta que los activos sean asociados con un modelo diferente.', 'bulk_delete_warn' => 'Está a punto de eliminar un modelo de activo.|Está a punto de eliminar :model_count modelos de activos.', - 'restore' => 'Restaurar Modelo', + 'restore' => 'Restaurar modelo', 'requestable' => 'Los usuarios pueden solicitar este modelo', 'show_mac_address' => 'Mostrar el campo de la dirección MAC en los equipos de este modelo', 'view_deleted' => 'Ver Borrados', 'view_models' => 'Ver modelos', - 'fieldset' => 'Grupos de campo', + 'fieldset' => 'Grupo de campos', 'no_custom_field' => 'No hay campos personalizados', 'add_default_values' => 'Agregar valores predeterminados', ); diff --git a/resources/lang/es-ES/admin/models/message.php b/resources/lang/es-ES/admin/models/message.php index cf905ac939..eb48d3f81f 100644 --- a/resources/lang/es-ES/admin/models/message.php +++ b/resources/lang/es-ES/admin/models/message.php @@ -2,21 +2,21 @@ return array( - 'deleted' => 'Modelo del activo eliminado', + 'deleted' => 'Se eliminó el modelo del activo', 'does_not_exist' => 'Modelo inexistente.', - 'no_association' => 'ADVERTENCIA! El modelo del activo para este ítem es inválido o no existe!', + 'no_association' => '¡ADVERTENCIA! ¡El modelo de activo para este artículo no es válido o no existe!', 'no_association_fix' => 'Esto romperá cosas de formas extrañas y horribles. Edite este activo ahora para asignarle un modelo.', - 'assoc_users' => 'Este modelo está asignado a uno o más equipos y no puede ser eliminado', - + 'assoc_users' => 'Este modelo está asociado a uno o más activos y no puede ser eliminado. Por favor, elimine los activos y vuelva a intentarlo. ', + 'invalid_category_type' => 'Esta categoría debe ser una categoría de activos.', 'create' => array( - 'error' => 'Modelo no creado, Intentalo de nuevo.', - 'success' => 'Modelo creado.', + 'error' => 'El modelo no fue creado, por favor inténtelo de nuevo.', + 'success' => 'El modelo fue creado exitosamente.', 'duplicate_set' => 'Ya existe un modelo de equipo con el mismo nombre, fabricante y número de modelo.', ), 'update' => array( - 'error' => 'Modelo no actualizado, Intentalo de nuevo', + 'error' => 'El modelo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'Modelo actualizado.', ), diff --git a/resources/lang/es-ES/admin/models/table.php b/resources/lang/es-ES/admin/models/table.php index e3ef797e2f..12e3078e86 100644 --- a/resources/lang/es-ES/admin/models/table.php +++ b/resources/lang/es-ES/admin/models/table.php @@ -2,15 +2,15 @@ return array( - 'create' => 'Crear Modelo Equipo', + 'create' => 'Crear modelo de activo', 'created_at' => 'Creado el', - 'eol' => 'EOL', + 'eol' => 'Fin de soporte (EOL)', 'modelnumber' => 'Modelo No.', 'name' => 'Nombre del modelo de activo', - 'numassets' => 'Equipos', - 'title' => 'Modelos Equipos', + 'numassets' => 'Activos', + 'title' => 'Modelos de activos', 'update' => 'Actualizar modelo de activo', - 'view' => 'Ver Modelo', + 'view' => 'Ver modelo de activo', 'update' => 'Actualizar modelo de activo', 'clone' => 'Clonar Modelo', 'edit' => 'Editar Modelo', diff --git a/resources/lang/es-ES/admin/reports/general.php b/resources/lang/es-ES/admin/reports/general.php index 90e07caee4..d2056b1b56 100644 --- a/resources/lang/es-ES/admin/reports/general.php +++ b/resources/lang/es-ES/admin/reports/general.php @@ -1,7 +1,7 @@ 'Selecciona las opciones de tu informe de Equipos.', + 'info' => 'Seleccione las opciones que desea para el informe de activos.', 'deleted_user' => 'Usuario eliminado', 'send_reminder' => 'Enviar recordatorio', 'reminder_sent' => 'Recordatorio enviado', diff --git a/resources/lang/es-ES/admin/reports/message.php b/resources/lang/es-ES/admin/reports/message.php index a8f61aa993..dcd9c52741 100644 --- a/resources/lang/es-ES/admin/reports/message.php +++ b/resources/lang/es-ES/admin/reports/message.php @@ -1,5 +1,5 @@ 'Debes seleccionar al menos UNA opción.' + 'error' => 'Debe seleccionar al menos UNA opción.' ); diff --git a/resources/lang/es-ES/admin/settings/general.php b/resources/lang/es-ES/admin/settings/general.php index 646575556d..c4f8200b2a 100644 --- a/resources/lang/es-ES/admin/settings/general.php +++ b/resources/lang/es-ES/admin/settings/general.php @@ -3,12 +3,12 @@ return [ 'ad' => 'Directorio Activo', 'ad_domain' => 'Dominio del Directorio Activo', - 'ad_domain_help' => 'Esto es a veces el mismo que su correo electrónico de dominio, pero no siempre.', + 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Añadir nombre de dominio al campo de nombre de usuario', 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', 'admin_cc_email' => 'Copiar en correo electrónico', - 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de devolución/asignación que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', + 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administrador', 'is_ad' => 'Este es un servidor de Directorio Activo', 'alerts' => 'Alertas', @@ -18,29 +18,29 @@ return [ 'alerts_enabled' => 'Alertas habilitadas', 'alert_interval' => 'Limite de alertas de expiración (en días)', 'alert_inv_threshold' => 'Umbral de alerta del inventario', - 'allow_user_skin' => 'Permitir skin del usuario', - 'allow_user_skin_help_text' => 'Marcar esta casilla permitirá al usuario reemplazar la apariencia de la interfaz con una diferente.', - 'asset_ids' => 'IDs de Recurso', + 'allow_user_skin' => 'Permitir al usuario cambiar la apariencia', + 'allow_user_skin_help_text' => 'Si se marca esta casilla, el usuario podrá reemplazar la apariencia de la interfaz con una diferente.', + 'asset_ids' => 'Códigos de los activos', 'audit_interval' => 'Intervalo de auditoría', 'audit_interval_help' => 'Si está obligado a auditar físicamente sus activos con regularidad, introduzca el intervalo en meses que utilice. Si actualiza este valor, se actualizarán todas las "próximas fechas de auditoría" de los activos con una fecha de auditoría próxima.', 'audit_warning_days' => 'Umbral de advertencia de auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación es necesario avisar que se deben auditar los activos?', - 'auto_increment_assets' => 'Generar etiquetas de activos autoincrementales', + 'auto_increment_assets' => 'Generar placas de activos autoincrementables', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Habilitar etiquetas de activos autoincrementales primero para establecer esto', + 'auto_incrementing_help' => 'Habilite primero el incremento automático de las placas de activos antes de configurar esto', 'backups' => 'Copias de seguridad', 'backups_help' => 'Crear, descargar y restaurar copias de seguridad ', 'backups_restoring' => 'Restaurar desde copia de seguridad', 'backups_upload' => 'Cargar copia de seguridad', 'backups_path' => 'Las copias de seguridad en el servidor se almacenan en :path', - 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker.

Su base de datos completa de :app_name y cualquier archivo subido será completamente reemplazado por lo que hay en el archivo de copia de seguridad. ', + 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker).

Su base de datos completa de :app_name y cualquier archivo cargado será completamente reemplazado por lo que hay en la copia de seguridad. ', 'backups_logged_out' => 'A todos los usuarios existentes, incluido usted, se le cerrará la sesión una vez que la restauración haya finalizado.', 'backups_large' => 'Las copias de seguridad muy grandes pueden agotar el tiempo de espera en el intento de restauración y todavía pueden necesitar ser ejecutadas a través de la línea de comandos. ', 'barcode_settings' => 'Configuración de Código de Barras', 'confirm_purge' => 'Confirmar la purga', - 'confirm_purge_help' => 'Introduzca el texto "DELETE" en el cuadro de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. (Se recomienda hacer una copia de seguridad previamente, para estar seguro.)', + 'confirm_purge_help' => 'Introduzca el texto "DELETE" en la casilla de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. Debería hacer primero una copia de seguridad, para estar seguro.', 'custom_css' => 'CSS Personalizado', - 'custom_css_help' => 'Ingrese cualquier CSS personalizado que desee utilizar. No incluya tags como: <style></style>.', + 'custom_css_help' => 'Introduzca cualquier CSS personalizado que desee utilizar. No incluya las etiquetas <style></style>.', 'custom_forgot_pass_url' => 'Reestablecer URL de Contraseña Personalizada', 'custom_forgot_pass_url_help' => 'Esto remplaza la URL incorporada para las contraseñas olvidadas en la pantalla de inicio, útil para dirigir a las personas a una funcionalidad de restablecimiento de contraseña LDAP interna o alojada. Esto efectivamente desactivará la funcionalidad local de olvido de contraseña.', 'dashboard_message' => 'Mensaje en el tablero', @@ -52,7 +52,7 @@ return [ 'acceptance_note' => 'Añada una nota para su decisión (opcional)', 'display_asset_name' => 'Mostrar nombre del activo', 'display_checkout_date' => 'Mostrar fecha de asignación', - 'display_eol' => 'Mostrar EOL', + 'display_eol' => 'Mostrar fin de soporte (EOL) en la vista de tabla', 'display_qr' => 'Mostrar Códigos QR', 'display_alt_barcode' => 'Mostrar códigos de barras en 1D', 'email_logo' => 'Logo de correo electrónico', @@ -71,7 +71,7 @@ return [ 'general_settings_keywords' => 'soporte de la compañía, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, acuerdo de uso, términos y condiciones, gravatar, términos de servicio, tablero de indicadores, privacidad', 'general_settings_help' => 'Acuerdo de uso predeterminado y más', 'generate_backup' => 'Generar Respaldo', - 'google_workspaces' => 'Espacios de trabajo de Google', + 'google_workspaces' => 'Google Workspace', 'header_color' => 'Color de encabezado', 'info' => 'Estos parámetros permirten personalizar ciertos aspectos de la aplicación.', 'label_logo' => 'Logo de etiqueta', @@ -87,14 +87,14 @@ return [ 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Ajustes LDAP', - 'ldap_client_tls_cert_help' => 'El certificado TLS del cliente y la clave para las conexiones LDAP normalmente sólo son útiles en las configuraciones de Google Workspace con "LDAP Seguro". Ambas son requeridas.', + 'ldap_client_tls_cert_help' => 'El certificado TLS del cliente y la clave para las conexiones LDAP normalmente solo son útiles en las configuraciones de Google Workspace con "LDAP Seguro". Ambas son requeridas.', 'ldap_location' => 'Ubicación LDAP', 'ldap_location_help' => 'El campo Location (ubicación) de Ldap debe utilizarse si una OU no está siendo utilizada en el Base Bind DN (DN del enlace base). Deje este espacio en blanco si se utiliza una búsqueda OU.', - 'ldap_login_test_help' => 'Introduce un nombre de usuario LDAP válido y una contraseña de la DN base que especificaste anteriormente para probar si tu inicio de sesión LDAP está configurado correctamente. DEBES GUARDAR TUS CONFIGURACIONES LDAP ACTUALIZADAS PRIMERO.', - 'ldap_login_sync_help' => 'Esto sólo prueba que LDAP puede sincronizarse correctamente. Si tu solicitud de Autenticación LDAP no es correcta, los usuarios aún no podrían iniciar sesión. DEBES GUARDAR TUS CONFIGURACIONES LDAP ACTUALIZADAS PRIMERO.', + 'ldap_login_test_help' => 'Introduzca un nombre de usuario y una contraseña LDAP válidos del DN base que especificó anteriormente para comprobar si el inicio de sesión LDAP está configurado correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', + 'ldap_login_sync_help' => 'Esto solo comprueba que el LDAP puede sincronizarse correctamente. Si su solicitud de autenticación LDAP no es correcta, los usuarios aún no podrían iniciar sesión. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', 'ldap_manager' => 'Gestor LDAP', 'ldap_server' => 'Servidor LDAP', - 'ldap_server_help' => 'Esto debería empezar con ldap:// (sin codificar o TLS) o ldaps:// (para SSL)', + 'ldap_server_help' => 'Esto debería comenzar con ldap:// (sin cifrado) o con ldaps:// (para TLS o SSL)', 'ldap_server_cert' => 'Certificado de validación SSL LDAP', 'ldap_server_cert_ignore' => 'Permitir certificados SSL inválidos', 'ldap_server_cert_help' => 'Seleccione esta casilla si está utilizando un certificado SSL autofirmado y desea aceptar un certificado SSL inválido.', @@ -109,21 +109,21 @@ return [ 'ldap_basedn' => 'Enlazar base DN', 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de Contraseña LDAP', - 'ldap_pw_sync_help' => 'Desmarca esta casilla si no quieres mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Desactivar esto significa que tus usuarios no podrán acceder si tu servidor LDAP no está disponible por algún motivo.', + 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', 'ldap_username_field' => 'Campo de usuario', 'ldap_lname_field' => 'Apellido', 'ldap_fname_field' => 'Nombre LDAP', 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles items, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

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

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', 'ldap_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'Email LDAP', 'ldap_test' => 'Probar LDAP', 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de Software', - 'load_remote' => 'Usar Gravatar', - 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar scripts desde el Internet externo. Esto evitará que Snipe-IT intente cargar imágenes desde Gravatar.', + 'load_remote' => 'Cargar avatares remotos', + 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar secuencias de comandos (scripts) desde Internet . Esto evitará que Snipe-IT intente cargar avatares de Gravatar u otras fuentes externas.', 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', @@ -143,18 +143,18 @@ return [ 'login_remote_user_header_name_help' => 'Usar la cabecera especificada en lugar de REMOTE_USER', 'logo' => 'Logo', 'logo_print_assets' => 'Utilizar en impresión', - 'logo_print_assets_help' => 'Utilice la marca en las listas de activos imprimibles ', + 'logo_print_assets_help' => 'Utilice la marca de la empresa en las listas de activos imprimibles ', 'full_multiple_companies_support_help_text' => 'Limitar los usuarios asignados a compañías (incluyendo administradores) solo a los activos de esa compañía.', 'full_multiple_companies_support_text' => 'Soporte completo a múltiples compañías', 'show_in_model_list' => 'Mostrar en menús desplegables de modelos', 'optional' => 'opcional', 'per_page' => 'Resultados por página', 'php' => 'Versión de PHP', - 'php_info' => 'Información PHP', + 'php_info' => 'Información de PHP', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, sistema, información', 'php_overview_help' => 'PHP Información del sistema', - 'php_gd_info' => 'Debes instalar php-gd para mostrar Códigos QR, ver instrucciones de instalación en .', + 'php_gd_info' => 'Debe instalar php-gd para mostrar códigos QR, consulte las instrucciones de instalación.', 'php_gd_warning' => 'PHP Image Processing y GD plugin NO instalados.', 'pwd_secure_complexity' => 'Complejidad de la contraseña', 'pwd_secure_complexity_help' => 'Seleccione las reglas de complejidad de las contraseñas que desee aplicar.', @@ -168,7 +168,7 @@ return [ 'pwd_secure_uncommon' => 'Evitar contraseñas comunes', 'pwd_secure_uncommon_help' => 'Esto impedirá que los usuarios usen contraseñas comunes de las 10,000 contraseñas principales que se notifican en las infracciones.', 'qr_help' => 'Activa Códigos QR antes para poder ver esto', - 'qr_text' => 'Texto Código QR', + 'qr_text' => 'Texto del código QR', 'saml' => 'SAML', 'saml_title' => 'Actualizar ajustes de SAML', 'saml_help' => 'Configuración SAML', @@ -181,16 +181,16 @@ return [ 'saml_sp_metadata_url' => 'URL de los metadatos', 'saml_idp_metadata' => 'Metadatos SAML IdP', 'saml_idp_metadata_help' => 'Puede especificar los metadatos IdP usando un archivo URL o XML.', - 'saml_attr_mapping_username' => 'Mapeo de Atributos - Nombre de Usuario', - 'saml_attr_mapping_username_help' => 'NameID se utilizará si el mapeo de atributos no está especificado o no es válido.', + 'saml_attr_mapping_username' => 'Asociar atributo - Nombre de usuario', + 'saml_attr_mapping_username_help' => 'NameID se utilizará si la asociación de atributos no está especificada o no es válida.', 'saml_forcelogin_label' => 'Forzar inicio de sesión SAML', 'saml_forcelogin' => 'Hacer SAML el método de inicio de sesión principal', - 'saml_forcelogin_help' => 'Puedes usar \'/login?nosaml\' para ir a la página de inicio de sesión normal.', + 'saml_forcelogin_help' => 'Puede usar \'/login?nosaml\' para ir a la página de inicio de sesión normal.', 'saml_slo_label' => 'Cerrar sesión única SAML', 'saml_slo' => 'Enviar una solicitud de salida a IdP al cerrar sesión', 'saml_slo_help' => 'Esto causará que el usuario sea redirigido primero a la IdP al cerrar sesión. Dejar desmarcado si el IdP no soporta correctamente SP-initiated SAML SLO.', 'saml_custom_settings' => 'Ajustes personalizados de SAML', - 'saml_custom_settings_help' => 'Puedes especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úsalo bajo tu propio riesgo.', + 'saml_custom_settings_help' => 'Puede especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úselo bajo su propio riesgo.', 'saml_download' => 'Descargar metadatos', 'setting' => 'Parámetro', 'settings' => 'Configuración', @@ -199,25 +199,25 @@ return [ 'show_archived_in_list_text' => 'Mostrar activos archivados en el listado de "todos los activos"', 'show_assigned_assets' => 'Mostrar activos asignados a activos', 'show_assigned_assets_help' => 'Mostrar activos que fueron asignados a otros activos en Ver usuario -> Activos, Ver usuario -> Información -> Imprimir todos los asignados y en Cuenta -> Ver elementos asignados.', - 'show_images_in_email' => 'Mostrar imágenes en emails', - 'show_images_in_email_help' => 'Desmarca esta casilla si tu instalación de Snipe-IT está detrás de una red privada o VPN y los usuarios fuera de la red no pueden cargar las imágenes servidas desde este servidor en sus correos electrónicos.', + 'show_images_in_email' => 'Mostrar imágenes en correos electrónicos', + 'show_images_in_email_help' => 'Desmarque esta casilla si su instalación de Snipe-IT está detrás de una red privada o VPN y los usuarios fuera de la red no pueden cargar las imágenes publicadas desde este servidor de Snipe-IT en sus correos electrónicos.', 'site_name' => 'Nombre del sitio', 'integrations' => 'Integraciones', 'slack' => 'Slack', 'general_webhook' => 'Webhook general', - 'ms_teams' => 'Equipos Microsoft', + 'ms_teams' => 'Microsoft Teams', 'webhook' => ':app', 'webhook_presave' => 'Probar para guardar', 'webhook_title' => 'Actualizar ajustes de Webhook', 'webhook_help' => 'Ajustes de integración', - 'webhook_botname' => 'Nombre de bot de :app', + 'webhook_botname' => 'Nombre de Bot de :app', 'webhook_channel' => 'Canal de :app', 'webhook_endpoint' => 'Endpoint de :app', 'webhook_integration' => 'Ajustes de :app', - 'webhook_test' =>'Probar integración de :app', - 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el endpoint y el canal son requeridos si desea usarlo. Para configurar la integración de :app, primero debe crear un webhook entrante en su cuenta de :app. Haga clic en el botón Probar Integración :app para confirmar que su configuración es correcta antes de guardar. ', - 'webhook_integration_help_button' => 'Una vez que hayas guardado la información de :app, aparecerá un botón de prueba.', - 'webhook_test_help' => 'Comprueba si tu integración con :app está configurada correctamente. PRIMERO DEBES GUARDAR TU CONFIGURACION ACTUALIZADA DE :app.', + 'webhook_test' =>'Probar integración con :app', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', + 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifica quien ve los enlaces de información de Soporte y Manual de Usuarios de Snipe-IT', @@ -227,12 +227,12 @@ return [ 'update' => 'Actualizar Parámetros', 'value' => 'Valor', 'brand' => 'Marca', - 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, encabezado, colores, color, css', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, apariencia, encabezado, colores, color, css', 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Acerca de Ajustes', 'about_settings_text' => 'Estos ajustes te permiten personalizar ciertos aspectos de tu instalación.', - 'labels_per_page' => 'Etiquetas por pàgina', + 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)', 'next_auto_tag_base' => 'Siguiente incremento automático', 'page_padding' => 'Margenès de pàgina (pulgadas)', @@ -243,7 +243,7 @@ return [ 'purge_deleted' => 'Purgar eliminados ', 'labels_display_bgutter' => 'Borde inferior de la Etiqueta', 'labels_display_sgutter' => 'Borde lateral de la Etiqueta', - 'labels_fontsize' => 'Tamaño de fuente de la etiqueta', + 'labels_fontsize' => 'Tamaño de letra de la etiqueta', 'labels_pagewidth' => 'Ancho de la hoja de etiqueta', 'labels_pageheight' => 'Altura de la hoja de etiqueta', 'label_gutters' => 'Espaciamiento de etiqueta (pulgadas)', @@ -251,10 +251,10 @@ return [ 'label_fields' => 'Campos visibles de la etiqueta', 'inches' => 'pulgadas', 'width_w' => 'an', - 'height_h' => 'al', + 'height_h' => 'alto', 'show_url_in_emails' => 'Enlace a Snipe-IT en correos electrónicos', - 'show_url_in_emails_help_text' => 'Desmarca esta casilla si no deseas volver a vincular tu instalación de Snipe-IT en tus pies de página de correo electrónico. Útil si la mayoría de sus usuarios nunca inician sesión.', - 'text_pt' => 'pt', + 'show_url_in_emails_help_text' => 'Desmarque esta casilla si no desea vincular su instalación de Snipe-IT en el pie de página de correo electrónico. Útil si la mayoría de sus usuarios nunca se conectan. ', + 'text_pt' => 'puntos', 'thumbnail_max_h' => 'Altura máxima de la miniatura', 'thumbnail_max_h_help' => 'Altura máxima en píxeles que las miniaturas pueden mostrar en la vista de listado. Mín. 25, máximo 500.', 'two_factor' => 'Autenticación de dos factores', @@ -267,7 +267,7 @@ return [ 'two_factor_reset_error' => 'Falló la Verificación en dos pasos del dispositivo', 'two_factor_enabled_warning' => 'Al activar el doble factor si no está activado, se le obligará inmediatamente a autenticarse con un dispositivo registrado en Google Auth. Tendrá la posibilidad de inscribir su dispositivo si uno no está inscrito actualmente.', 'two_factor_enabled_help' => 'Esto activará la autenticación de dos factores usando Google Authenticator.', - 'two_factor_optional' => 'Selectiva (los usuarios pueden activar o desactivar si está permitido)', + 'two_factor_optional' => 'Selectivo (los usuarios pueden activar o desactivar si está permitido)', 'two_factor_required' => 'Requerido para todos los usuarios', 'two_factor_disabled' => 'Desactivado', 'two_factor_enter_code' => 'Ingrese el código de verificación de dos factores', @@ -283,23 +283,23 @@ return [ 'vertical' => 'vertical', 'horizontal' => 'horizontal', 'unique_serial' => 'Números de serie únicos', - 'unique_serial_help_text' => 'Al marcar esta casilla se forzarán números de serie únicos a los activos', - 'zerofill_count' => 'Longitud de etiquetas de activos, incluyendo relleno de ceros', + 'unique_serial_help_text' => 'Marcando esta casilla se aplicará una restricción de números de serie únicos a los activos', + 'zerofill_count' => 'Longitud de los números en las placas de los activos, incluyendo los ceros de relleno', 'username_format_help' => 'Esta configuración solo será utilizada por el proceso de importación si no se proporciona un nombre de usuario y tenemos que generar un nombre de usuario por usted.', 'oauth_title' => 'Configuración de la API de OAuth', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'Clientes OAuth', 'oauth' => 'OAuth', - 'oauth_help' => 'Configuración de Endpoint Oauth', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', - 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', + 'oauth_help' => 'Configuración del punto final (endpoint) OAuth', + 'oauth_no_clients' => 'Aún no ha creado ningún cliente OAuth.', + 'oauth_secret' => 'Secreto', + 'oauth_authorized_apps' => 'Aplicaciones autorizadas', + 'oauth_redirect_url' => 'URL de redireccionamiento', + 'oauth_name_help' => ' Algo que sus usuarios reconocerán y en lo que confiarán.', 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', - 'asset_tag_title' => 'Actualizar configuración de etiquetas de activos', + 'oauth_callback_url' => 'URL de devolución de llamada de autorización de su aplicación (callback URL).', + 'create_client' => 'Crear cliente', + 'no_scopes' => 'Sin scopes', + 'asset_tag_title' => 'Actualizar la configuración de las placas de activos', 'barcode_title' => 'Actualizar ajustes de código de barras', 'barcodes' => 'Códigos de barras', 'barcodes_help_overview' => 'Ajustes de Código de barras & QR', @@ -333,7 +333,7 @@ return [ 'ldap_ad' => 'LDAP/AD', 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear Usuario ::', - 'create_admin_success' => '¡Éxito! ¡Tu usuario admin ha sido añadido!', + 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', 'setup_migrations' => 'Migraciones de base de datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', @@ -349,7 +349,7 @@ return [ 'label2_title' => 'Título', 'label2_title_help' => 'El título para mostrar en etiquetas que lo soportan', 'label2_title_help_phold' => 'El marcador de posición {COMPANY} será reemplazado con el nombre de la compañía del activo', - 'label2_asset_logo' => 'Usar Logo de Activos', + 'label2_asset_logo' => 'Usar logo de activos', 'label2_asset_logo_help' => 'Utilice el logotipo de la compañía asignada, en lugar del valor en :setting_name', 'label2_1d_type' => 'Tipo de código de barras 1D', 'label2_1d_type_help' => 'Formato para códigos de barras 1D', @@ -358,7 +358,7 @@ return [ 'label2_2d_target' => 'Apuntamiento del código de barras 2D', 'label2_2d_target_help' => 'La URL a la que apunta el código de barras 2D cuando se escanea', 'label2_fields' => 'Definiciones de campo', - 'label2_fields_help' => 'Los campos pueden ser agregados, eliminados y reordenados en la columna izquierda. Para cada campo, múltiples opciones para Etiqueta y DataSource pueden ser agregadas, eliminadas y reordenadas en la columna derecha.', + 'label2_fields_help' => 'Los campos se pueden añadir, eliminar y reordenar en la columna izquierda. Para cada campo, se pueden agregar, eliminar y reordenar múltiples opciones para etiquetas y para orígenes de datos en la columna derecha.', 'help_asterisk_bold' => 'Texto introducido como **texto** se mostrará como negrita', 'help_blank_to_use' => 'Deje en blanco para usar el valor de :setting_name', 'help_default_will_use' => ':default usará el valor de :setting_name.
Tenga en cuenta que el valor de los códigos de barra debe estar en cumplimiento con la especificación respectiva para que sean generados exitosamente. Por favor lea la documentación para más detalles. ', @@ -367,13 +367,17 @@ return [ 'google_callback_help' => 'Esto debe introducirse como URL de devolución de llamada (callback) en la configuración de su aplicación de Google OAuth en la consola de desarrollador de Google de su organización .', 'google_login' => 'Configuración de inicio de sesión de Google Workspace', 'enable_google_login' => 'Permitir a los usuarios iniciar sesión con Google Workspace', - 'enable_google_login_help' => 'Los usuarios no serán provistos automáticamente. Deben tener una cuenta existente aquí AND en Google Workspace, y su nombre de usuario debe coincidir con su dirección de correo electrónico de Google Workspace. ', + 'enable_google_login_help' => 'Los usuarios no serán creados automáticamente. Deben tener una cuenta existente aquí Y en Google Workspace, y su nombre de usuario aquí debe coincidir con su dirección de correo electrónico de Google Workspace. ', 'mail_reply_to' => 'Dirección de respuesta de correo', 'mail_from' => 'Correo desde la dirección', 'database_driver' => 'Controlador de base de datos', 'bs_table_storage' => 'Almacenamiento de tabla', - 'timezone' => 'Timezone', + 'timezone' => 'Zona horaria', 'profile_edit' => 'Editar perfil', 'profile_edit_help' => 'Permitir que los usuarios editen sus propios perfiles.', + 'default_avatar' => 'Cargar avatar personalizado por defecto', + 'default_avatar_help' => 'Esta imagen se mostrará como la imagen de perfil si el usuario no tiene foto de perfil.', + 'restore_default_avatar' => 'Restaurar avatar original por defecto del sistema', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/es-ES/admin/settings/message.php b/resources/lang/es-ES/admin/settings/message.php index ab8bb87992..8db2dbee63 100644 --- a/resources/lang/es-ES/admin/settings/message.php +++ b/resources/lang/es-ES/admin/settings/message.php @@ -23,11 +23,11 @@ return [ 'sending' => 'Enviando correo electrónico...', 'success' => '¡Correo enviado!', 'error' => 'El correo no pudo ser enviado.', - 'additional' => 'Ningún mensaje de error adicional proporcionado. Comprueba la configuración de tu correo y el registro de tu aplicación.' + 'additional' => 'No se proporciona ningún mensaje de error adicional. Compruebe la configuración de su correo y el registro de errores de la aplicación.' ], 'ldap' => [ 'testing' => 'Probando conexión LDAP, Binding & Query ...', - '500' => 'Error 500 del servidor. Por favor, compruebe los registros de su servidor para más información.', + '500' => 'Error 500 del servidor. Por favor, compruebe los registros de error de su servidor para más información.', 'error' => 'Algo salió mal :(', 'sync_success' => 'Una muestra de 10 usuarios devueltos desde el servidor LDAP basado en su configuración:', 'testing_authentication' => 'Probando autenticación LDAP...', @@ -36,7 +36,7 @@ return [ 'webhook' => [ 'sending' => 'Enviando mensaje de prueba de :app...', 'success' => '¡Su Integración :webhook_name funciona!', - 'success_pt1' => '¡Éxito! Comprueba el ', + 'success_pt1' => '¡Éxito! Compruebe el ', 'success_pt2' => ' para su mensaje de prueba, y asegúrese de hacer clic en GUARDAR abajo para guardar su configuración.', '500' => 'Error 500 del servidor.', 'error' => 'Algo salió mal. :app respondió con: :error_message', diff --git a/resources/lang/es-ES/admin/statuslabels/message.php b/resources/lang/es-ES/admin/statuslabels/message.php index 932c8225a0..607e9f6a50 100644 --- a/resources/lang/es-ES/admin/statuslabels/message.php +++ b/resources/lang/es-ES/admin/statuslabels/message.php @@ -7,7 +7,7 @@ return [ 'assoc_assets' => 'Esta etiqueta de estado está actualmente asociada con al menos un activo y no se puede eliminar. Por favor actualice sus activos para que ya no hagan referencia a este estado e inténtelo de nuevo. ', 'create' => [ - 'error' => 'Etiqueta de estado no fue creada, por favor, inténtelo de nuevo.', + 'error' => 'La etiqueta de estado no pudo ser creada, por favor inténtelo de nuevo.', 'success' => 'Etiqueta de estado fue creada exitosamente.', ], @@ -23,7 +23,7 @@ return [ ], 'help' => [ - 'undeployable' => 'Estos activos no pueden asignarse a nadie.', + 'undeployable' => 'Estos equipos no pueden ser asignados.', 'deployable' => 'Estos activos pueden ser asignados. Una vez estén asignados, asumirán el meta estado de Asignado.', 'archived' => 'Estos equipos no pueden ser asignados y solo se mostrarán en la vista de Archivados. Esto es útil para mantener información de activos por razones de presupuesto o de revisión histórica y al mismo tiempo se excluyen de los activos que se pueden usar en el día a día.', 'pending' => 'Estos activos aún no pueden asignarse, y suelen utilizarse para elementos que están en reparación, pero que se espera que regresen a circulación.', diff --git a/resources/lang/es-ES/admin/suppliers/message.php b/resources/lang/es-ES/admin/suppliers/message.php index d6f1924481..06f1a00c43 100644 --- a/resources/lang/es-ES/admin/suppliers/message.php +++ b/resources/lang/es-ES/admin/suppliers/message.php @@ -3,26 +3,26 @@ return array( 'deleted' => 'Proveedor eliminado', - 'does_not_exist' => 'Proveedor does not exist.', + 'does_not_exist' => 'El proveedor no existe.', 'create' => array( - 'error' => 'Proveedor no creado, Intentalo de nuevo.', + 'error' => 'El proveedor no fue creado, por favor inténtelo de nuevo.', 'success' => 'Proveedor creado.' ), 'update' => array( - 'error' => 'Proveedor no actualizado, Intentalo de nuevo', + 'error' => 'El proveedor no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Proveedor actualizado.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este proveedor?', - 'error' => 'Ha habido un problema eliminando el Proveedor. Intentalo de nuevo.', + 'error' => 'Hubo un problema al eliminar el proveedor, por favor inténtelo de nuevo.', 'success' => 'Proveedor eliminado.', - 'assoc_assets' => 'Este proveedor esta asociado a uno o más modelos y no puede ser eliminado. ', - 'assoc_licenses' => 'Este proveedor está actualmente asociado con :licenses_count licencia(s) y no puede ser eliminado. Por favor, actualiza tus licencias para no referenciar este proveedor e inténtalo de nuevo. ', - 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintenances_count mantenedor(es) de activo y no puede ser eliminado. Por favor, actualiza tus mantenedores de activo para no referenciar este proveedor e inténtalo de nuevo. ', + 'assoc_assets' => 'Este proveedor está actualmente asociado con :asset_count activo(s) y no puede ser eliminado. Actualice sus activos para que ya no hagan referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_licenses' => 'Este proveedor está asociado actualmente con :licenses_count licences(s) y no puede ser eliminado. Actualice sus licencias para que ya no hagan referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintainances_count mantenimiento(s) de activo(s) y no puede ser eliminado. Por favor, actualice el mantenimiento de sus activos para no hacer referencia a este proveedor y vuelva a intentarlo. ', ) ); diff --git a/resources/lang/es-ES/admin/users/general.php b/resources/lang/es-ES/admin/users/general.php index 6581c8f5c1..0f437d2c1b 100644 --- a/resources/lang/es-ES/admin/users/general.php +++ b/resources/lang/es-ES/admin/users/general.php @@ -1,12 +1,12 @@ 'Este usuario puede ingresar', - 'activated_disabled_help_text' => 'No puedes editar el estado de activación de tu propia cuenta.', - 'assets_user' => 'Equipos asignados a :name', + 'activated_help_text' => 'Este usuario puede iniciar sesión', + 'activated_disabled_help_text' => 'No puede editar el estado de activación de su propia cuenta.', + 'assets_user' => 'Activos asignados a :name', 'bulk_update_warn' => 'Está a punto de modificar las propiedades de :user_count usuarios. Por favor, tenga en cuenta que no puede modificar las propiedades de su propio usuario con este formulario, y debe realizar las modificaciones a su propio usuario de forma individual.', - 'bulk_update_help' => 'Este formulario permite actualizar múltiples usuarios simultáneamente. Rellena únicamente los campos que necesites cambiar. Cualquier campo que quede en blanco no se actualizará.', - 'current_assets' => 'Equipos checked out a este usuario', + 'bulk_update_help' => 'Este formulario le permite actualizar varios usuarios a la vez. Solo diligencie los campos que necesita modificar. Los campos que queden en blanco no se modificarán.', + 'current_assets' => 'Activos actualmente asignados a este usuario', 'clone' => 'Clonar Usuario', 'contact_user' => 'Contacta con :name', 'edit' => 'Editar Usuario', @@ -18,7 +18,7 @@ return [ 'ldap_config_text' => 'Las configuraciones de LDAP estàn en: Admin -> Settings. La ubicaciòn seleccionadada sera asignada a todos los usuarios importados.', 'print_assigned' => 'Imprimir todos los asignados', 'email_assigned' => 'Enviar correo con todos los asignados', - 'user_notified' => 'Se ha enviado un correo al usuario con sus artículos actualmente asignados.', + 'user_notified' => 'Se ha enviado al usuario un correo electrónico con lista de los elementos que tiene asignados actualmente.', 'auto_assign_label' => 'Incluir a este usuario al asignar automáticamente licencias elegibles', 'auto_assign_help' => 'Omitir este usuario en la asignación automática de licencias', 'software_user' => 'Software asignado a :name', @@ -35,9 +35,9 @@ return [ 'superadmin_permission_warning' => 'Sólo los superadministradores pueden conceder acceso a un usuario superadministrador.', 'admin_permission_warning' => 'Sólo los usuarios con derechos de administrador o mayores pueden conceder acceso de administrador a los usuarios.', 'remove_group_memberships' => 'Eliminar pertenencias a grupo', - 'warning_deletion_information' => 'Está a punto de devolver TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', + 'warning_deletion_information' => 'Está a punto de ingresar TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', 'update_user_assets_status' => 'Actualizar todos los activos para estos usuarios a este estado', - 'checkin_user_properties' => 'Disponibilizar todas las propiedades asociadas a estos usuarios', + 'checkin_user_properties' => 'Comprobar todas las propiedades asociadas a estos usuarios', 'remote_label' => 'Este es un usuario remoto', 'remote' => 'Remoto', 'remote_help' => 'Esto puede ser útil si necesita filtrar por usuarios remotos que nunca o raramente asisten a sus ubicaciones físicas.', diff --git a/resources/lang/es-ES/admin/users/message.php b/resources/lang/es-ES/admin/users/message.php index 5097396266..11fb5d93cb 100644 --- a/resources/lang/es-ES/admin/users/message.php +++ b/resources/lang/es-ES/admin/users/message.php @@ -3,8 +3,8 @@ return array( 'accepted' => 'Ha aceptado este artículo exitosamente.', - 'declined' => 'Ha declinado con éxito este equipo.', - 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada de administrador no fue guardada porque el gerente seleccionado también estaba en la lista de usuarios a ser editada, y los usuarios no pueden ser sus propios gerentes. Vuelva a seleccionar los usuarios, excluyendo al gerente.', + 'declined' => 'Ha rechazado este activo con exitosamente.', + 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada supervisor (manager) no fue guardada porque el supervisor seleccionado también estaba en la lista de usuarios a editar, y los usuarios no pueden ser su propio supervisor. Vuelva a seleccionar los usuarios, excluyendo al supervisor.', 'user_exists' => 'El Usuario ya existe!', 'user_not_found' => 'Usuario inexistente.', 'user_login_required' => 'El campo usuario es obligatorio', @@ -16,7 +16,7 @@ return array( 'password_resets_sent' => 'A los usuarios seleccionados que están activados y tienen una dirección de correo electrónico válida se les ha enviado un enlace de restablecimiento de contraseña.', 'password_reset_sent' => '¡Se ha enviado un enlace de restablecimiento de contraseña a :email!', 'user_has_no_email' => 'Este usuario no tiene una dirección de correo electrónico en su perfil.', - 'log_record_not_found' => 'No se pudo encontrar un registro de registro coincidente para este usuario.', + 'log_record_not_found' => 'No se pudo encontrar un registro de eventos que coincida con este usuario.', 'success' => array( @@ -33,16 +33,16 @@ return array( ), 'error' => array( - 'create' => 'Ha habido un problema creando el Usuario. Intentalo de nuevo.', - 'update' => 'Ha habido un problema actualizando el Usuario. Intentalo de nuevo.', - 'delete' => 'Ha habido un problema eliminando el Usuario. Intentalo de nuevo.', + 'create' => 'Hubo un problema al crear el usuario. Por favor, inténtelo de nuevo.', + 'update' => 'Hubo un problema al actualizar el usuario. Por favor, inténtelo de nuevo.', + 'delete' => 'Hubo un problema al eliminar el usuario. Por favor, inténtelo de nuevo.', 'delete_has_assets' => 'Este usuario tiene elementos asignados y no se pueden eliminar.', - 'delete_has_assets_var' => 'Este usuario todavía tienen un activo asignado. Por favor devuélvalo primero.| Este usuario todavía tienen :count activos asignados. Por favor devuélvalos primero.', - 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor primero haga su devolución.|Este usuario todavía tiene :count licencias asignadas. Por favor primero haga su devolución.', - 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor primero haga su devolución.|Este usuario todavía tiene :count accesorios asignados. Por favor primero haga su devolución.', - 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor seleccione otro supervisor primero.|Este usuario todavía supervisa :count ubicaciones. Por favor seleccione otro supervisor primero.', + 'delete_has_assets_var' => 'Este usuario todavía tiene un activo asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count activos asignados. Por favor ingréselos primero.', + 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor ingrésela primero.|Este usuario todavía tiene :count licencias asignadas. Por favor ingréselas primero.', + 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count accesorios asignados. Por favor ingréselos primero.', + 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor primero seleccione otro supervisor.|Este usuario todavía supervisa :count ubicaciones. Por favor primero seleccione otro supervisor.', 'delete_has_users_var' => 'Este usuario todavía supervisa a otro usuario. Por favor primero seleccione otro supervisor para ese usuario.|Este usuario todavía supervisa :count usuarios. Por favor primero seleccione otro supervisor para ellos.', - 'unsuspend' => 'Ha habido un problema marcando como no suspendido el Usuario. Intentalo de nuevo.', + 'unsuspend' => 'Hubo un problema marcando como no suspendido al usuario. Por favor, inténtelo de nuevo.', 'import' => 'Ha habido un problema importando los usuarios. Por favor intente nuevamente.', 'asset_already_accepted' => 'Este equipo ya ha sido aceptado.', 'accept_or_decline' => 'Debe aceptar o rechazar este equipo.', @@ -56,15 +56,15 @@ return array( ), 'deletefile' => array( - 'error' => 'Archivo no eliminado. Por favor, vuelva a intentarlo.', + 'error' => 'El archivo no fue borrado. Por favor, inténtelo de nuevo.', 'success' => 'Archivo eliminado correctamente.', ), 'upload' => array( 'error' => 'Archivo(s) no cargado. Por favor, vuelva a intentarlo.', 'success' => 'Archivo(s) cargado correctamente.', - 'nofiles' => 'No ha seleccionado ningún archivo para subir', - 'invalidfiles' => 'Uno o más sus archivos es demasiado grande o es de un tipo no permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', + 'nofiles' => 'No seleccionó ningún archivo para cargar', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ), 'inventorynotification' => array( diff --git a/resources/lang/es-ES/admin/users/table.php b/resources/lang/es-ES/admin/users/table.php index d448f5d66e..3a6a7c866d 100644 --- a/resources/lang/es-ES/admin/users/table.php +++ b/resources/lang/es-ES/admin/users/table.php @@ -11,7 +11,7 @@ return array( 'employee_num' => 'No. Empleado', 'first_name' => 'Nombre', 'groupnotes' => 'Seleccione un grupo para asignar al usuario, recuerde que un usuario asume los permisos del grupo al que se le asigna. Use ctrl+click (o cmd+click en MacOS) para anular la selección de grupos.', - 'id' => 'ID', + 'id' => 'Id', 'inherit' => 'Hereda de', 'job' => 'Cargo', 'last_login' => 'Ultimo Login', @@ -21,7 +21,7 @@ return array( 'manager' => 'Supervisor', 'managed_locations' => 'Ubicaciones gestionadas', 'managed_users' => 'Usuarios gestionados', - 'name' => 'Usuario', + 'name' => 'Nombre', 'nogroup' => 'Aún no se han creado grupos. Para añadir uno, visite: ', 'notes' => 'Notas', 'password_confirm' => 'Confirmar Password', diff --git a/resources/lang/es-ES/auth.php b/resources/lang/es-ES/auth.php index 387ea794b6..0c664fc584 100644 --- a/resources/lang/es-ES/auth.php +++ b/resources/lang/es-ES/auth.php @@ -15,6 +15,6 @@ return array( 'failed' => 'Estas credenciales no coinciden con nuestros registros.', 'password' => 'La contraseña proporcionada es incorrecta.', - 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.', + 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtelo de nuevo en :seconds segundos.', ); diff --git a/resources/lang/es-ES/auth/message.php b/resources/lang/es-ES/auth/message.php index c89da8182b..bbc9528ef8 100644 --- a/resources/lang/es-ES/auth/message.php +++ b/resources/lang/es-ES/auth/message.php @@ -11,21 +11,21 @@ return array( 'two_factor' => array( 'already_enrolled' => 'Su dispositivo ya está inscrito.', - 'success' => 'Usted inició sesión correctamente.', + 'success' => 'Ha iniciado sesión exitosamente.', 'code_required' => 'Se requiere el código de 2FA(Autenticación en dos pasos) .', 'invalid_code' => 'El código de doble factor es inválido.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Por favor ingrese su código de autenticación de dos factores.', + 'please_enroll' => 'Por favor inscriba un dispositivo en la autenticación de dos factores.', ), 'signin' => array( 'error' => 'Ha habido un problema al iniciar sesión. Por favor, vuelve a intentarlo.', - 'success' => 'has iniciado sesión correctamente.', + 'success' => 'Ha iniciado sesión exitosamente.', ), 'logout' => array( 'error' => 'Hubo un problema al intentar cerrar la sesión, por favor inténtelo de nuevo.', - 'success' => 'Has cerrado la sesión con éxito.', + 'success' => 'Ha cerrado la sesión exitosamente.', ), 'signup' => array( @@ -39,8 +39,8 @@ return array( ), 'forgot-password-confirm' => array( - 'error' => 'Ha habido un problema al intentar resetear el password. Por favor, vuelve a intentarlo.', - 'success' => 'El password ha sido reseteado correctamente.', + 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor inténtelo de nuevo.', + 'success' => 'Su contraseña se ha restablecido correctamente.', ), diff --git a/resources/lang/es-ES/button.php b/resources/lang/es-ES/button.php index 5ae77fa7eb..efd8b667c3 100644 --- a/resources/lang/es-ES/button.php +++ b/resources/lang/es-ES/button.php @@ -4,15 +4,16 @@ return [ 'actions' => 'Acciones', 'add' => 'Agregar nuevo', 'cancel' => 'Cancelar', - 'checkin_and_delete' => 'Devolver todo / Eliminar usuario', + 'checkin_and_delete' => 'Ingresar todo / Eliminar usuario', 'delete' => 'Borrar', 'edit' => 'Editar', + 'clone' => 'Clonar', 'restore' => 'Restaurar', 'remove' => 'Eliminar', 'request' => 'Solicitud', 'submit' => 'Enviar', 'upload' => 'Cargar', - 'select_file' => 'Seleccione un archivo...', + 'select_file' => 'Seleccionar un archivo...', 'select_files' => 'Seleccionar archivos...', 'generate_labels' => '{1} Generar Etiqueta|[2,*] Generar Etiquetas', 'send_password_link' => 'Enviar enlace de restablecimiento de contraseña', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Añadir mantenimiento', 'append' => 'Añadir', 'new' => 'Nuevo', + 'var' => [ + 'clone' => 'Clonar :item_type', + 'edit' => 'Editar :item_type', + 'delete' => 'Eliminar :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Crear nuevo :item_type', + 'checkout' => 'Asignar :item_type', + 'checkin' => 'Ingresar :item_type', + ] ]; diff --git a/resources/lang/es-ES/general.php b/resources/lang/es-ES/general.php index 0a115572dc..7154025f28 100644 --- a/resources/lang/es-ES/general.php +++ b/resources/lang/es-ES/general.php @@ -1,21 +1,21 @@ '2FA reset', + '2FA_reset' => 'Reestablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', - 'accepted_date' => 'Fecha aceptada', + 'accepted_date' => 'Fecha de aceptación', 'accessory' => 'Accesorio', 'accessory_report' => 'Informe de accesorios', 'action' => 'Acción', 'activity_report' => 'Informe de actividad', 'address' => 'Dirección', - 'admin' => 'Admin', + 'admin' => 'Administrador', 'admin_tooltip' => 'Este usuario tiene privilegios de superadministrador', 'superuser' => 'Superusuario', 'superuser_tooltip' => 'Este usuario es superadministrador', 'administrator' => 'Administrador', - 'add_seats' => 'Sitios añadidos', + 'add_seats' => 'Licencias añadidas', 'age' => "Edad", 'all_assets' => 'Todos los Equipos', 'all' => 'Todos los', @@ -23,19 +23,19 @@ return [ 'asset_models' => 'Modelos', 'asset_model' => 'Modelo', 'asset' => 'Equipo', - 'asset_report' => 'Reporte de Equipos', - 'asset_tag' => 'Etiqueta de activo', - 'asset_tags' => 'Etiquetas de activos', - 'assets_available' => 'Equipos disponibles', + 'asset_report' => 'Informe de activos', + 'asset_tag' => 'Placa del activo', + 'asset_tags' => 'Placas de activos', + 'assets_available' => 'Activos disponibles', 'accept_assets' => 'Aceptar activos :name', 'accept_assets_menu' => 'Aceptar activos', 'audit' => 'Auditoría', 'audit_report' => 'Registro de auditoría', - 'assets' => 'Equipos', + 'assets' => 'Activos', 'assets_audited' => 'activos auditados', - 'assets_checked_in_count' => 'activos devueltos', - 'assets_checked_out_count' => 'activos devueltos', - 'asset_deleted_warning' => 'Este recurso ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', + 'assets_checked_in_count' => 'activos ingresados', + 'assets_checked_out_count' => 'activos asignados', + 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', 'assigned_date' => 'Fecha asignada', 'assigned_to' => 'Asignado a :name', 'assignee' => 'Asignado a', @@ -49,7 +49,7 @@ return [ 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Borrado masivo', 'bulk_actions' => 'Acciones masivas', - 'bulk_checkin_delete' => 'Checkin en masa / Eliminar usuarios', + 'bulk_checkin_delete' => 'Ingresar elementos / Borrar usuarios', 'byod' => 'BYOD', 'byod_help' => 'Este dispositivo es propiedad del usuario', 'bystatus' => 'por Estado', @@ -57,13 +57,13 @@ return [ 'categories' => 'Categorías', 'category' => 'Categoría', 'change' => 'Entrada / salida', - 'changeemail' => 'Cambiar Email', - 'changepassword' => 'Cambiar Password', - 'checkin' => 'Devolver', - 'checkin_from' => 'Devolución de', + 'changeemail' => 'Cambiar dirección de correo electrónico', + 'changepassword' => 'Cambiar contraseña', + 'checkin' => 'Ingresar', + 'checkin_from' => 'Ingreso proveniente de', 'checkout' => 'Asignar', 'checkouts_count' => 'Asignaciones', - 'checkins_count' => 'Devoluciones', + 'checkins_count' => 'Ingresos', 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', 'click_here' => 'Pulsa aquí', @@ -93,14 +93,14 @@ return [ 'dashboard' => 'Tablero', 'days' => 'días', 'days_to_next_audit' => 'Días a la próxima auditoría', - 'date' => 'Fecha Compra', + 'date' => 'Fecha', 'debug_warning' => '¡Advertencia!', 'debug_warning_text' => 'Esta aplicación esta corriendo en modo producción con debugging activado. Esto puede exponer datos sensibles si su aplicación es accesible desde el exterior. Desactive el modo debug cambiando el valor APP_DEBUG en su archivo .env a false.', 'delete' => 'Borrar', 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', 'deleted' => 'Borrado', - 'delete_seats' => 'Asientos eliminados', + 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', 'departments' => 'Departamentos', 'department' => 'Departamento', @@ -112,7 +112,7 @@ return [ 'download' => 'Descargar', 'download_all' => 'Descargar todo', 'editprofile' => 'Editar perfil', - 'eol' => 'EOL', + 'eol' => 'Fin de soporte (EOL)', 'email_domain' => 'Dominio de correo electrónico', 'email_format' => 'Formato de correo electrónico', 'employee_number' => 'Número de empleado', @@ -132,7 +132,7 @@ return [ 'first' => 'Primero', 'firstnamelastname' => 'Nombre y apellido (janesmith@example.com)', 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', - 'firstinitial.lastname' => 'Inicial nombre y apellido (j.smith@ejemplo.com)', + 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', 'first_name' => 'Nombre', @@ -158,17 +158,17 @@ return [ 'image_upload' => 'Cargar imagen', 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', 'unaccepted_image_type' => 'No se pudo leer este archivo de imagen. Los tipos de archivo aceptados son jpg, webp, png, gif y svg. El tipo mimetype de este archivo es: :mimetype.', 'import' => 'Importar', - 'import_this_file' => 'Mapear campos y procesar este archivo', - 'importing' => 'Importando', - 'importing_help' => 'Puedes importar activos, accesorios, licencias, componentes, insumos y usuarios vía archivos CSV.

El CSV debe estar delimitado por comas y formateado con encabezados que coincidan con aquellos definidos en los CSVs de muestra en la documentación.', + 'import_this_file' => 'Asociar campos y procesar este archivo', + 'importing' => 'Importar datos', + 'importing_help' => 'Puede importar activos, accesorios, licencias, componentes, consumibles y usuarios a través del archivo CSV.

El CSV debe estar delimitado por comas y formateado con encabezados que coincidan con los de los archivos CSV de muestra en la documentación.', 'import-history' => 'Importar historial', 'asset_maintenance' => 'Mantenimiento de Equipo', 'asset_maintenance_report' => 'Informe mantenimiento de activos', 'asset_maintenances' => 'Mantenimiento de activos', - 'item' => 'Item', + 'item' => 'Elemento', 'item_name' => 'Nombre del ítem', 'import_file' => 'importar archivo CSV', 'import_type' => 'Tipo de importación CSV', @@ -188,10 +188,10 @@ return [ 'feature_disabled' => 'Esta característica se ha desactivado para la versión de demostración.', 'location' => 'Ubicación', 'location_plural' => 'Ubicación|Ubicaciones', - 'locations' => 'Localizaciones', + 'locations' => 'Ubicaciones', 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del logo es 50px de altura x 500px de ancho. ', 'logout' => 'Desconexión', - 'lookup_by_tag' => 'Buscar etiqueta de activo', + 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimientos', 'manage_api_keys' => 'Administrar API Keys', 'manufacturer' => 'Fabricante', @@ -225,13 +225,13 @@ return [ 'previous' => 'Previo', 'processing' => 'Procesando', 'profile' => 'Perfil', - 'purchase_cost' => 'Precio Compra', + 'purchase_cost' => 'Precio de compra', 'purchase_date' => 'Fecha de compra', 'qty' => 'Cant', 'quantity' => 'Cantidad', 'quantity_minimum' => 'Tiene :con elementos por debajo o casi por debajo de los niveles mínimos de cantidad', - 'quickscan_checkin' => 'Devolución rápida con escaneo', - 'quickscan_checkin_status' => 'Estado de devolución', + 'quickscan_checkin' => 'Ingreso rápido con escaneo', + 'quickscan_checkin_status' => 'Resultado del ingreso', 'ready_to_deploy' => 'Listo para asignar', 'recent_activity' => 'Actividad Reciente', 'remaining' => 'Restante', @@ -253,49 +253,49 @@ return [ 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', - 'select_category' => 'Seleccione una categoría', - 'select_datasource' => 'Seleccione un origen de datos', - 'select_department' => 'Seleccione un departamento', + 'select_category' => 'Seleccionar una categoría', + 'select_datasource' => 'Seleccionar un origen de datos', + 'select_department' => 'Seleccionar un departamento', 'select_depreciation' => 'Seleccionar un tipo de amortización', - 'select_location' => 'Seleccione una ubicación', - 'select_manufacturer' => 'Seleccione un fabricante', - 'select_model' => 'Seleccione un modelo', - 'select_supplier' => 'Seleccione un proveedor', - 'select_user' => 'Seleccione un usuario', + 'select_location' => 'Seleccionar una ubicación', + 'select_manufacturer' => 'Seleccionar un fabricante', + 'select_model' => 'Seleccionar un modelo', + 'select_supplier' => 'Seleccionar un proveedor', + 'select_user' => 'Seleccionar un usuario', 'select_date' => 'Seleccione fecha (AAAA-MM-DD)', - 'select_statuslabel' => 'Seleccione un estado', - 'select_company' => 'Seleccione una compañía', + 'select_statuslabel' => 'Seleccionar un estado', + 'select_company' => 'Seleccionar una compañía', 'select_asset' => 'Seleccionar activo', 'settings' => 'Opciones', 'show_deleted' => 'Mostrar Eliminado', 'show_current' => 'Mostrar actual', - 'sign_in' => 'Entrar', + 'sign_in' => 'Iniciar sesión', 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', - 'skin' => 'Tema', + 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Parece que tu integración de :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', 'some_features_disabled' => 'MODO DE DEMOSTRACIÓN: Algunas funciones estan desactivadas para esta instalación.', 'site_name' => 'Sitio', 'state' => 'Provincia', 'status_labels' => 'Etiquetas de estado', - 'status' => 'Estados', + 'status' => 'Estado', 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que desea eliminar', + 'sure_to_delete' => '¿Está seguro que desea eliminar?', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', - 'target' => 'Objetivo', + 'target' => 'Destino', 'time_and_date_display' => 'Hora y fecha', - 'total_assets' => 'Equipos', + 'total_assets' => 'activos', 'total_licenses' => 'licencias totales', 'total_accessories' => 'total de accesorios', 'total_consumables' => 'total de consumibles', 'type' => 'Tipo', 'undeployable' => 'No utilizable', - 'unknown_admin' => 'Admin Desconocido', + 'unknown_admin' => 'Administrador desconocido', 'username_format' => 'Formato del nombre de usuario', 'username' => 'Usuario', 'update' => 'Actualizar', @@ -322,12 +322,12 @@ return [ 'no_files_uploaded' => '¡Archivo cargado exitosamente!', 'token_expired' => 'Su sesión ha caducado. Por favor, inténtelo de nuevo.', 'login_enabled' => 'Inicio de sesión habilitado', - 'audit_due' => 'Vence la auditoría', + 'audit_due' => 'Próximas auditorías', 'audit_due_days' => 'Activos pendientes para auditoría dentro de :days día|Activos pendientes para auditoría dentro de :days días', - 'checkin_due' => 'Pendiente por devolver', - 'checkin_overdue' => 'Atrasado por devolver', - 'checkin_due_days' => 'Activos que deben ser devueltos dentro de :days día|Activos que deben ser devueltos dentro de :days días', - 'audit_overdue' => 'Auditoría retrasada', + 'checkin_due' => 'Próximos a ingresar', + 'checkin_overdue' => 'Devolución atrasada', + 'checkin_due_days' => 'Activos próximos a ingresar dentro de :days día|Activos próximos a ingresar dentro de :days días', + 'audit_overdue' => 'Auditoría atrasada', 'accept' => 'Aceptar :asset', 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', @@ -348,15 +348,15 @@ return [ 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear Usuario Admin', + 'setup_create_admin' => 'Crear usuario Administrador', 'setup_done' => '¡Terminado!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado', 'checked_out_to' => 'Asignado a', 'fields' => 'Campos', 'last_checkout' => 'Última Asignación', - 'due_to_checkin' => 'Se espera la entrada de los siguientes :count activos pronto:', - 'expected_checkin' => 'Fecha Esperada de Devolución', + 'due_to_checkin' => 'Los siguientes :count elementos están pendientes por ingresar pronto:', + 'expected_checkin' => 'Fecha esperada de devolución', 'reminder_checked_out_items' => 'Este es un recordatorio de los elementos que se le han asignado actualmente. Si usted cree que esta lista es incorrecta (falta algo o aparece algo que usted cree que nunca ha recibido), por favor envíe un correo electrónico a :reply_to_name a :reply_to_address.', 'changed' => 'Cambiado', 'to' => 'A', @@ -375,7 +375,7 @@ return [ 'sync_results' => 'Resultados de sincronización', 'license_serial' => 'Número de Serie/Clave de Producto', 'invalid_category' => 'Categoría no válida o ausente', - 'invalid_item_category_single' => 'Falta o no válida :type categoría. Por favor actualiza la categoría de este :type para incluir una categoría válida antes de salir.', + 'invalid_item_category_single' => 'Falta o no es válida una categoría de tipo :type. Actualice la categoría de tipo :type para incluir una categoría válida antes de asignar.', 'dashboard_info' => 'Este es su panel de control. Hay muchos similares, pero este es suyo.', '60_percent_warning' => '60% completo (advertencia)', 'dashboard_empty' => 'Parece que aún no ha añadido nada, así que no tenemos nada impresionante que mostrar. ¡Comience añadiendo algunos activos, accesorios, consumibles o licencias ahora!', @@ -391,7 +391,7 @@ return [ 'components_count' => 'Recuento de componentes', 'licenses_count' => 'Recuento de licencias', 'notification_error' => 'Error', - 'notification_error_hint' => 'Por favor revise si hay errores en el siguiente formulario', + 'notification_error_hint' => 'Por favor compruebe si hay errores en el siguiente formulario', 'notification_bulk_error_hint' => 'Los siguientes campos tenían errores de validación y no han sido editados:', 'notification_success' => 'Éxito', 'notification_warning' => 'Advertencia', @@ -405,9 +405,9 @@ return [ 'accessory_name' => 'Nombre de accesorio:', 'clone_item' => 'Clonar objeto', 'checkout_tooltip' => 'Asignar este elemento', - 'checkin_tooltip' => 'Devuelva este elemento para que esté disponible para resignar, borrar, etc.', + 'checkin_tooltip' => 'Ingrese este elemento para que esté disponible para resignar, borrar, etc.', 'checkout_user_tooltip' => 'Asignar este elemento a un usuario', - 'checkin_to_diff_location' => 'Puede optar por asignar este activo a una ubicación distinta a la predeterminada :default_location, si es que existe una configurada', + 'checkin_to_diff_location' => 'Puede elegir ingresar este activo a una ubicación distinta de la predeterminada :default_location, si es que se ha definido una', 'maintenance_mode' => 'El servicio no está disponible temporalmente debido por actualizaciones del sistema. Por favor, vuelva más tarde.', 'maintenance_mode_title' => 'Sistema temporalmente no disponible', 'ldap_import' => 'La contraseña de usuario no debe ser administrada por LDAP. (Esto le permite enviar solicitudes de contraseña olvidada.)', @@ -416,8 +416,8 @@ return [ 'additional_files' => 'Archivos adicionales', 'shitty_browser' => 'No se ha detectado ninguna firma. Si está utilizando un navegador más antiguo, por favor utilice un navegador más moderno para completar la aceptación del elemento.', 'bulk_soft_delete' =>'También, elimine temporalmente a estos usuarios. Su historial de activos permanecerá intacto a menos que purgue los registros eliminados en la Configuración de administración.', - 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y sus activos han sido registrados.', - 'bulk_checkin_success' => 'Los elementos para los usuarios seleccionados han sido registrados.', + 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y sus activos han sido ingresados.', + 'bulk_checkin_success' => 'Los elementos para los usuarios seleccionados han sido ingresados.', 'set_to_null' => 'Eliminar valores para este activo|Eliminar valores para todos los :asset_count activos ', 'set_users_field_to_null' => 'Eliminar valores de :field para este usuario|Eliminar valores de :field para todos los :user_count usuarios ', 'na_no_purchase_date' => 'N/A - No se proporcionó fecha de compra', @@ -425,7 +425,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tienes :count elementos que requieren aceptación. Haz clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -441,7 +441,7 @@ return [ 'true' => 'Verdadero', 'false' => 'Falso', 'integration_option' => 'Opción de integración', - 'log_does_not_exist' => 'No existe ningún registro de eventos coincidente.', + 'log_does_not_exist' => 'No existe ningún registro de eventos que coincida.', 'merge_users' => 'Fusionar usuarios', 'merge_information' => 'Esto fusionará a los :count usuarios en un solo usuario. Seleccione el usuario que desee fusionar con los otros más abajo, y los activos asociados, licencias, etc se trasladarán al usuario seleccionado y los otros usuarios serán marcados como eliminados.', 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', @@ -453,8 +453,8 @@ return [ 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y Guardar', 'update_existing_values' => '¿Actualizar valores existentes?', - 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Generar etiquetas de activos auto-incrementantes está desactivado, por lo que todas las filas necesitan tener la columna "Tag de activo" rellenada.', - 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: Generar etiquetas de activos que incrementan automáticamente está habilitado, por lo que se crearán recursos para registros que no tengan "Tag de activo" poblado. Las filas que tengan "Etiqueta de activos" pobladas serán actualizadas con la información proporcionada.', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generación autoincrementable de las placas de activos está desactivada, por lo que todas las filas deben tener la columna "Asset Tag" con información.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: La generación autoincrementable de las placas de activos está activada, por lo que se crearán activos para las filas sin información en la columna "Asset Tag". Las filas que sí tengan informacióin en la columna "Asset Tag" se actualizarán con la información proporcionada.', 'send_welcome_email_to_users' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', 'send_email' => 'Enviar Email', 'call' => 'Número de llamada', @@ -474,11 +474,11 @@ return [ 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero debería confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', - 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la interfaz de usuario o herramientas de cli asignadas a granel.', - 'autoassign_licenses_help_long' => 'Esto permite que un usuario tenga licencias asignadas a través de la interfaz de usuario o las herramientas de cli asignadas a granel. (Por ejemplo, puede que no desee que los contratistas sean asignados automáticamente a una licencia que proporcione sólo a los miembros del personal. Todavía puede asignar licencias individualmente a esos usuarios, pero no se incluirán en la licencia de pago a las funciones de todos los usuarios.)', - 'no_autoassign_licenses_help' => 'No incluya al usuario para asignar a granel a través de la licencia UI o las herramientas de cli.', + 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', + 'autoassign_licenses_help_long' => 'Esto permite asignar licencias a un usuario a través de la asignación masiva en la interfaz de usuario o de las herramientas de línea de comandos (CLI). (Por ejemplo, es posible que no desee que a los contratistas se les asigne automáticamente una licencia que usted proporcionaría sólo a los miembros del personal. Puede seguir asignando licencias individualmente a esos usuarios, pero no se incluirán en las funciones de "Asignación de licencias a todos los usuarios").', + 'no_autoassign_licenses_help' => 'No incluir al usuario en la asignación masiva de licencias en la interfaz de usuario o en las herramientas de línea de comandos (CLI).', 'modal_confirm_generic' => '¿Está seguro?', - 'cannot_be_deleted' => 'Este articulo no se puede eliminar', + 'cannot_be_deleted' => 'Este elemento no puede ser eliminado', 'cannot_be_edited' => 'Este elemento no puede ser editado.', 'undeployable_tooltip' => 'Este artículo no puede ser asignado. Compruebe la cantidad restante.', 'serial_number' => 'Número de serie', @@ -487,25 +487,25 @@ return [ 'error_user_company' => 'La compañía destino de la asignación y la compañía del activo no coinciden', 'error_user_company_accept_view' => 'Un activo asignado a usted pertenece a una compañía diferente por lo que no puede aceptarlo ni rechazarlo, por favor verifique con su supervisor', 'importer' => [ - 'checked_out_to_fullname' => 'Pagado a: Nombre Completo', - 'checked_out_to_first_name' => 'Pagado a: Nombre', - 'checked_out_to_last_name' => 'Pagado a: Apellido', - 'checked_out_to_username' => 'Pagado a: Usuario', - 'checked_out_to_email' => 'Checkout a: Email', - 'checked_out_to_tag' => 'Checked Out a: Tag de Activos', - 'manager_first_name' => 'Nombre del administrador', - 'manager_last_name' => 'Apellido del administrador', - 'manager_full_name' => 'Nombre completo del administrador', - 'manager_username' => 'Apellido del administrador', - 'checkout_type' => 'Tipo de pago', - 'checkout_location' => 'Pagar a la ubicación', - 'image_filename' => 'Nombre de imagen', + 'checked_out_to_fullname' => 'Asignado a: Nombre completo', + 'checked_out_to_first_name' => 'Asignado a: Nombre', + 'checked_out_to_last_name' => 'Asignado a: Apellido', + 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_email' => 'Asignado a: correo electrónico', + 'checked_out_to_tag' => 'Asignado a: Placa de activo', + 'manager_first_name' => 'Nombre del supervisor', + 'manager_last_name' => 'Apellido del supervisor', + 'manager_full_name' => 'Nombre completo del supervisor', + 'manager_username' => 'Nombre de usuario del supervisor', + 'checkout_type' => 'Tipo de asignación', + 'checkout_location' => 'Asignar a la ubicación', + 'image_filename' => 'Nombre del archivo de la imagen', 'do_not_import' => 'No importar', 'vip' => 'VIP', 'avatar' => 'Avatar', - 'gravatar' => 'Gravatar Email', + 'gravatar' => 'Correo electrónico Gravatar', 'currency' => 'Moneda', - 'address2' => 'Dirección (línea 2)', + 'address2' => 'Dirección línea 2', 'import_note' => 'Importado usando el importador de csv', ], 'remove_customfield_association' => 'Elimine este campo del grupo de campos. Esto no eliminará el campo personalizado, solo la asociación de este campo con este grupo de campos.', @@ -516,19 +516,19 @@ return [ 'copy_to_clipboard' => 'Copiar al portapapeles', 'copied' => '¡Copiado!', 'status_compatibility' => 'Si los activos ya están asignados, no se pueden cambiar a un tipo de estado no utilizable y este cambio de valor se omitirá.', - 'rtd_location_help' => 'Esta es la ubicación del recurso cuando no está seleccionado', + 'rtd_location_help' => 'Esta es la ubicación del activo cuando no está asignado', 'item_not_found' => ':item_type ID :id no existe o ha sido eliminado', 'action_permission_denied' => 'No tiene permiso para :action :item_type ID :id', 'action_permission_generic' => 'No tiene permiso para :action this :item_type', 'edit' => 'editar', - 'action_source' => 'Fuente de acción', + 'action_source' => 'Origen de la acción', 'or' => 'o', 'url' => 'URL', 'edit_fieldset' => 'Editar campos y opciones de grupos de campos', 'permission_denied_superuser_demo' => 'Permiso denegado. No puede actualizar la información de usuario para superadministradores en la demo.', 'pwd_reset_not_sent' => 'El usuario no está activado, está sincronizado con LDAP o no tiene una dirección de correo electrónico', 'error_sending_email' => 'Error al enviar email', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'No está autorizado a realizar esta acción. Puede regresar al tablero, o ponerse en contacto con su administrador.', 'bulk' => [ 'delete' => [ @@ -546,9 +546,17 @@ return [ 'accessories' => ':count Accesorio|:count Accesorios', 'assets' => ':count Activos|:count Activos', 'licenses' => ':count Licencia|:count Licencias', - 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'license_seats' => ':count licencia|:count licencias', 'consumables' => ':count Consumible|:count Consumibles', 'components' => ':count component|:count componentes', - ] + ], + 'more_info' => 'Más información', + 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'whoops' => '¡Uy!', + 'something_went_wrong' => 'Algo falló en su solicitud.', + 'close' => 'Cerrar', + 'expires' => 'Vence', + 'map_fields'=> 'Asociar el campo :item_type', + 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-ES/help.php b/resources/lang/es-ES/help.php index 92cce3855f..e766a4f358 100644 --- a/resources/lang/es-ES/help.php +++ b/resources/lang/es-ES/help.php @@ -15,11 +15,11 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente se notará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo está desprotegido, no cambiará la ubicación de la persona, el activo o la ubicación en la que está verificado.', + 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', - 'assets' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.', + 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', - 'categories' => 'Las categorías te ayudan a organizar tus elementos. Unos ejemplos de categorías podrían ser: "Pc Escritorios", "Portátiles", "Móviles", "Tabletas", etc.', + 'categories' => 'Las categorías le ayudan a organizar sus elementos. Unos ejemplos de categorías podrían ser: "PC Escritorios", "Portátiles", "Móviles", "Tabletas", etc.', 'accessories' => 'Los accesorios son cualquier cosa que se le asigne a los usuarios pero que no tenga numero de serie (o no importe realizarle el seguimiento en forma unica). Por ejemplo, mouse o teclados.', @@ -27,7 +27,7 @@ return [ 'components' => 'Los componentes son elementos que son parte de un activo, por ejemplo HDD, RAM, etc.', - 'consumables' => 'Los consumibles son cualquier cosa comprada que se usará con el tiempo. Por ejemplo, tinta de impresora o papel copiador.', + 'consumables' => 'Los consumibles son todo aquello que se compra y que se agota con el tiempo. Por ejemplo, tinta de impresora o papel de fotocopiadora.', 'depreciations' => 'Puede configurar la depreciación de activos usando un método de línea recta.', diff --git a/resources/lang/es-ES/localizations.php b/resources/lang/es-ES/localizations.php index 7a9161e375..91d7c339fe 100644 --- a/resources/lang/es-ES/localizations.php +++ b/resources/lang/es-ES/localizations.php @@ -2,7 +2,7 @@ return [ - 'select_language' => 'Seleccione un idioma', + 'select_language' => 'Seleccionar un idioma', 'languages' => [ 'en-US'=> 'Inglés, EEUU', 'en-GB'=> 'Inglés, Reino Unido', @@ -66,7 +66,7 @@ return [ 'zu-ZA'=> 'Zulú', ], - 'select_country' => 'Seleccione un país', + 'select_country' => 'Seleccionar un país', 'countries' => [ 'AC'=>'Isla de Ascensión', @@ -93,7 +93,7 @@ return [ 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', 'BG'=>'Bulgaria', - 'BH'=>'Bahréin', + 'BH'=>'Baréin', 'BI'=>'Burundi', 'BJ'=>'Benín', 'BM'=>'Bermuda', @@ -287,8 +287,8 @@ return [ 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', 'TI'=>'Timor Oriental', - 'TM'=>'Turkmenistan', - 'TN'=>'Tunisia', + 'TM'=>'Turkmenistán', + 'TN'=>'Túnez', 'TO'=>'Tonga', 'TP'=>'Timor Oriental (código antiguo)', 'TR'=>'Turquía', diff --git a/resources/lang/es-ES/mail.php b/resources/lang/es-ES/mail.php index d307a8e610..438b750522 100644 --- a/resources/lang/es-ES/mail.php +++ b/resources/lang/es-ES/mail.php @@ -2,30 +2,30 @@ return [ - 'Accessory_Checkin_Notification' => 'Accesorio devuelto', - 'Accessory_Checkout_Notification' => 'Accesorio reservado', - 'Asset_Checkin_Notification' => 'Activo devuelto', + 'Accessory_Checkin_Notification' => 'Accesorio ingresado', + 'Accessory_Checkout_Notification' => 'Accesorio asignado', + 'Asset_Checkin_Notification' => 'Activo ingresado', 'Asset_Checkout_Notification' => 'Activo asignado', - 'Confirm_Accessory_Checkin' => 'Confirmación de devolución de accesorio', - 'Confirm_Asset_Checkin' => 'Confirmación de devolución de activo', + 'Confirm_Accessory_Checkin' => 'Confirmación de ingreso de accesorio', + 'Confirm_Asset_Checkin' => 'Confirmación de ingreso de activo', 'Confirm_accessory_delivery' => 'Confirmación de entrega de accesorio', 'Confirm_asset_delivery' => 'Confirmación de entrega de activo', 'Confirm_consumable_delivery' => 'Confirmación de entrega de consumible', 'Confirm_license_delivery' => 'Confirmación de entrega de licencia', - 'Consumable_checkout_notification' => 'Consumible comprobado', + 'Consumable_checkout_notification' => 'Consumible asignado', 'Days' => 'Días', - 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto en :date', + 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto el :date', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', - 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', - 'Expiring_Assets_Report' => 'Informe de activos que expiran.', + 'Expected_Checkin_Report' => 'Informe de próximas devoluciones de activos', + 'Expiring_Assets_Report' => 'Informe de activos con garantía próxima a vencer.', 'Expiring_Licenses_Report' => 'Informe de licencias que expiran.', 'Item_Request_Canceled' => 'Solicitud de cancelación de requerimiento', 'Item_Requested' => 'Artículo solicitado', 'License_Checkin_Notification' => 'Licencia devuelta', - 'License_Checkout_Notification' => 'Licencia reservada', - 'Low_Inventory_Report' => 'Reporte de inventario bajo', - 'a_user_canceled' => 'El usuario ha cancelado el item solicitado en la pagina Web', - 'a_user_requested' => 'Un usuario a solicitado un item en la pagina Web', + 'License_Checkout_Notification' => 'Licencia asignada', + 'Low_Inventory_Report' => 'Informe sobre inventario bajo', + 'a_user_canceled' => 'El usuario ha cancelado el elemento solicitado en la página web', + 'a_user_requested' => 'Un usuario ha solicitado un elemento en la página web', 'acceptance_asset_accepted' => 'Un usuario ha aceptado un elemento', 'acceptance_asset_declined' => 'Un usuario ha rechazado un elemento', 'accessory_name' => 'Nombre de accesorio:', @@ -34,33 +34,34 @@ return [ 'asset' => 'Activo:', 'asset_name' => 'Nombre del activo:', 'asset_requested' => 'Activo solicitado', - 'asset_tag' => 'Etiqueta de activo', + 'asset_tag' => 'Placa del activo', 'assets_warrantee_alert' => 'Hay :count activo con una garantía que expira en los próximos :threshold days.|Hay :count activos con garantías que expiran en los siguientes :threshold days.', 'assigned_to' => 'Asignado a', 'best_regards' => 'Cordialmente,', 'canceled' => 'Cancelado:', 'checkin_date' => 'Fecha de devolución:', 'checkout_date' => 'Fecha de asignación:', - 'checkedout_from' => 'Salido de', - 'checkedin_from' => 'Registrado desde', - 'checked_into' => 'Registrado en', + 'checkedout_from' => 'Asignado desde', + 'checkedin_from' => 'Devuelto desde', + 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', 'click_to_confirm' => 'Por favor, pulsa en el siguiente enlace para verificar tu cuenta de :web:', 'current_QTY' => 'Cantidad actual', 'days' => 'Días', 'expecting_checkin_date' => 'Fecha esperada de devolución:', - 'expires' => 'Expira', + 'expires' => 'Vence', 'hello' => 'Hola', 'hi' => 'Hola', 'i_have_read' => 'He leído y aceptado los términos de uso, y he recibido este artículo.', 'inventory_report' => 'Informe de inventario', - 'item' => 'Articulo:', + 'item' => 'Elemento:', + 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', 'link_to_update_password' => 'Haga clic en el siguiente enlace para actualizar su: contraseña de la web:', 'login' => 'Entrar:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', - 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto estará debajo.|Hay :count elementos que están por debajo del inventario mínimo o que pronto serán bajos.', + 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo ha sido asignado a su nombre, los detalles están a continuación.', @@ -70,24 +71,26 @@ return [ 'read_the_terms' => 'Por favor lea los términos de uso a continuación.', 'read_the_terms_and_click' => 'Por favor lea los términos de uso a continuación y haga clic en el enlace en la parte inferior para confirmar que usted leyó los términos de uso y los acepta, y que ha recibido el activo.', 'requested' => 'Solicitado:', - 'reset_link' => 'Tu enlace de restablecimiento de contraseña', + 'reset_link' => 'Su enlace de restablecimiento de contraseña', 'reset_password' => 'Haga Clic aquí para restablecer su contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Número de serie', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', 'snipe_webhook_summary' => 'Resumen de la prueba de integración de Snipe-IT', 'supplier' => 'Proveedor', - 'tag' => 'Etiqueta', + 'tag' => 'Placa', 'test_email' => 'Email de prueba de Snipe-IT', - 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', + 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', - 'upcoming-audits' => 'Hay :count activo que se está preparando para auditoría dentro de :threshold days.|Hay :count activos que se están preparando para auditoría en :threshold days.', + 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', 'user' => 'Usuario', 'username' => 'Nombre de usuario', + 'unaccepted_asset_reminder' => 'Tiene activos pendientes por aceptar.', 'welcome' => 'Bienvenido, :name', 'welcome_to' => '¡Bienvenido a: web!', - 'your_assets' => 'Ver tus activos', - 'your_credentials' => 'Tus credenciales de Snipe-IT', + 'your_assets' => 'Ver sus activos', + 'your_credentials' => 'Sus credenciales de Snipe-IT', + 'mail_sent' => '¡Correo enviado exitosamente!.', ]; diff --git a/resources/lang/es-ES/passwords.php b/resources/lang/es-ES/passwords.php index f337c2c967..75469d1121 100644 --- a/resources/lang/es-ES/passwords.php +++ b/resources/lang/es-ES/passwords.php @@ -3,7 +3,7 @@ return [ 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', 'user' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', - 'token' => 'Este token de restablecimiento de contraseña no es válido o ha caducado, o no coincide con el nombre de usuario proporcionado.', - 'reset' => '¡Tu contraseña ha sido restablecida!', + 'token' => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', + 'reset' => '¡Su contraseña ha sido restablecida!', 'password_change' => '¡Su contraseña ha sido actualizada!', ]; diff --git a/resources/lang/es-ES/reminders.php b/resources/lang/es-ES/reminders.php index 4b781311da..2269768b6b 100644 --- a/resources/lang/es-ES/reminders.php +++ b/resources/lang/es-ES/reminders.php @@ -13,9 +13,9 @@ return array( | */ - "password" => "Los passwords deben tener mínimo 6 caracteres y coincidir.", + "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", "user" => "Usuario o E-Mail incorrectos", - "token" => 'Este token de restablecimiento de contraseña es inválido o ha caducado, o no coincide con el nombre de usuario proporcionado.', + "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', ); diff --git a/resources/lang/es-ES/table.php b/resources/lang/es-ES/table.php index 75bdd56a6b..dea24233f7 100644 --- a/resources/lang/es-ES/table.php +++ b/resources/lang/es-ES/table.php @@ -5,7 +5,7 @@ return array( 'actions' => 'Acciones', 'action' => 'Acción', 'by' => 'Por', - 'item' => 'Item', + 'item' => 'Elemento', 'no_matching_records' => 'No se encontraron registros que coincidan', ); diff --git a/resources/lang/es-ES/validation.php b/resources/lang/es-ES/validation.php index d90b07236f..93ef1d546e 100644 --- a/resources/lang/es-ES/validation.php +++ b/resources/lang/es-ES/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute debe ser aceptado.', - 'active_url' => ':attribute no es una URL correcta.', - 'after' => ':attribute debe ser posterior a :date.', - 'after_or_equal' => 'El atributo: debe ser una fecha posterior o igual a: fecha.', - 'alpha' => ':attribute solo acepta letras.', - 'alpha_dash' => ':attribute solo acepta letras, números y guiones.', - 'alpha_num' => ':attribute solo acepta letras y números.', - 'array' => 'El: atributo debe ser una matriz.', - 'before' => ':attribute debe ser anterior a :date.', - 'before_or_equal' => 'El atributo: debe ser una fecha anterior o igual a: fecha.', - 'between' => [ - 'numeric' => ':attribute debe estar entre :min - :max.', - 'file' => ':attribute debe estar entre :min - :max kilobytes.', - 'string' => ':attribute debe estar entre :min - :max caracteres.', - 'array' => 'El atributo: debe tener entre: min y: elementos máximos.', + 'accepted' => 'El campo :attribute debe ser aceptado.', + 'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other es :value.', + 'active_url' => 'El campo :attribute debe ser una dirección URL válida.', + 'after' => 'El campo :attribute debe ser una fecha posterior a :date.', + 'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.', + 'alpha' => 'El campo :attribute debe contener únicamente letras.', + 'alpha_dash' => 'El campo :attribute debe contener únicamente letras, números, guiones y guiones bajos.', + 'alpha_num' => 'El campo :attribute debe contener únicamente letras y números.', + 'array' => 'El campo :attribute debe ser un arreglo.', + 'ascii' => 'El campo :attribute debe contener únicamente caracteres y símbolos alfanuméricos de un byte.', + 'before' => 'El campo :attribute debe ser una fecha anterior a :date.', + 'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.', + 'between' => [ + 'array' => 'El campo :attribute debe tener elementos entre :min y :max.', + 'file' => 'El campo :attribute debe tener entre :min y :max kilobytes.', + 'numeric' => 'El campo :attribute debe estar entre :min y :max.', + 'string' => 'El campo :attribute debe tener entre :min y :max caracteres.', ], - 'boolean' => ':attribute debe ser verdadero o falso.', - 'confirmed' => ':attribute la confirmación no coincide.', - 'date' => ':attribute no es una fecha correcta.', - 'date_format' => ':attribute no cumple el formato :format.', - 'different' => ':attribute y :other deben ser diferentes.', - 'digits' => ':attribute debe tener :digits dígitos.', - 'digits_between' => ':attribute debe tener entre :min y :max dígitos.', - 'dimensions' => 'El atributo: tiene dimensiones de imagen no válidas.', - 'distinct' => 'El campo: atributo tiene un valor duplicado.', - 'email' => ':attribute formato incorrecto.', - 'exists' => 'El :attribute seleccionado no es correcto.', - 'file' => 'El: atributo debe ser un archivo.', - 'filled' => 'El campo: atributo debe tener un valor.', - 'image' => ':attribute debe ser una imagen.', + 'boolean' => 'El campo :attribute debe ser verdadero o falso.', + 'can' => 'El campo :attribute contiene un valor no autorizado.', + 'confirmed' => 'La confirmación del campo :attribute no coincide.', + 'contains' => 'Falta un valor obligatorio en el campo :attribute.', + 'current_password' => 'La contraseña es incorrecta.', + 'date' => 'El campo :attribute debe contener una fecha válida.', + 'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.', + 'date_format' => 'El campo :attribute debe coincidir con el formato :format.', + 'decimal' => 'El campo :attribute debe tener :decimal lugares decimales.', + 'declined' => 'El campo :attribute debe ser rechazado.', + 'declined_if' => 'El campo :attribute debe ser rechazado cuando :other es :value.', + 'different' => 'Los campos :attribute y :other deben ser diferentes.', + 'digits' => 'El campo :attribute debe tener :digits dígitos.', + 'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.', + 'dimensions' => 'El campo :attribute tiene dimensiones de imagen no válidas.', + 'distinct' => 'El campo: atributo tiene un valor duplicado.', + 'doesnt_end_with' => 'El campo :attribute no debe finalizar con uno de los siguientes :values.', + 'doesnt_start_with' => 'El campo :attribute no debe iniciar con uno de los siguientes :values.', + 'email' => 'El campo :attribute debe ser una dirección de correo válida.', + 'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes :values.', + 'enum' => 'El :attribute seleccionado no es correcto.', + 'exists' => 'El :attribute seleccionado no es correcto.', + 'extensions' => 'El campo :attribute debe tener una de las siguientes extensiones :values.', + 'file' => 'El campo :attribute debe ser un archivo.', + 'filled' => 'El campo: atributo debe tener un valor.', + 'gt' => [ + 'array' => 'El campo :attribute debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser mayor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que :value.', + 'string' => 'El campo :attribute debe ser mayor que :value caracteres.', + ], + 'gte' => [ + 'array' => 'El campo :attribute debe tener :value elementos o más.', + 'file' => 'El campo :attribute debe ser mayor que o igual a :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que o igual a :value.', + 'string' => 'El campo :attribute debe ser mayor que o igual a :value caracteres.', + ], + 'hex_color' => 'El campo :attribute debe ser un color hexadecimal válido.', + 'image' => 'El campo :attribute debe ser una imagen.', 'import_field_empty' => 'El valor para :fieldname no puede ser nulo.', - 'in' => 'El :attribute seleccionado no es correcto.', - 'in_array' => 'El campo: atributo no existe en: otro.', - 'integer' => ':attribute debe ser un número entero.', - 'ip' => ':attribute debe ser una dirección IP correcta.', - 'ipv4' => 'El atributo: debe ser una dirección IPv4 válida.', - 'ipv6' => 'El atributo: debe ser una dirección IPv6 válida.', - 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la compañía', - 'json' => 'El atributo: debe ser una cadena JSON válida.', - 'max' => [ - 'numeric' => ':attribute no debe ser mayor que :max.', - 'file' => ':attribute no debe ser mayor que :max kilobytes.', - 'string' => ':attribute no debe tener como máximo :max caracteres.', - 'array' => 'El atributo: puede no tener más que: elementos máximos.', + 'in' => 'El :attribute seleccionado no es correcto.', + 'in_array' => 'El campo :attribute debe existir en :other.', + 'integer' => 'El campo :attribute debe ser un valor entero.', + 'ip' => 'El campo :attribute debe ser una dirección IP válida.', + 'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.', + 'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.', + 'json' => 'El campo :attribute debe ser una cadena de texto JSON válida.', + 'list' => 'The campo :attribute debe ser una lista.', + 'lowercase' => 'El campo :attribute debe estar en minúsculas.', + 'lt' => [ + 'array' => 'El campo :attribute debe tener menos que :value elementos.', + 'file' => 'El campo :attribute debe ser menor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser menor que :value.', + 'string' => 'El campo :attribute debe ser menor que :value caracteres.', ], - 'mimes' => ':attribute debe ser un archivo del tipo: :values.', - 'mimetypes' => 'El atributo: debe ser un archivo de tipo:: valores.', - 'min' => [ - 'numeric' => ':attribute debe ser como mínimo :min.', - 'file' => ':attribute debe ser como mínimo de :min kilobytes.', - 'string' => ':attribute debe contener como mínimo :min caracteres.', - 'array' => 'El atributo: debe tener al menos: elementos min.', + 'lte' => [ + 'array' => 'El campo :attribute no debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser menor que o igual a :value kylobytes.', + 'numeric' => 'El campo :attribute debe ser menor que o igual a :value.', + 'string' => 'El campo :attribute debe ser menor que o igual a :value caracteres.', ], - 'starts_with' => 'El :attribute debe comenzar con uno de los siguientes: :values.', - 'ends_with' => 'El campo :attribute debe terminar con uno de los siguientes: :values.', - - 'not_in' => 'El :attribute seleccionado no es correcto.', - 'numeric' => ':attribute debe ser un número.', - 'present' => 'El campo: atributo debe estar presente.', - 'valid_regex' => 'Este no es un regex válido. ', - 'regex' => ':attribute formato incorrecto.', - 'required' => 'El campo :attribute es obligatorio.', - 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', - 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', - 'required_with' => ':attribute es obligatrio cuando :values es present.', - 'required_with_all' => 'El campo: atributo se requiere cuando: los valores están presentes.', - 'required_without' => ':attribute es obligatrio cuando :values es not present.', - 'required_without_all' => 'El campo: atributo es necesario cuando ninguno de: valores están presentes.', - 'same' => ':attribute y :other deben coincidir.', - 'size' => [ - 'numeric' => ':attribute debe tener :size.', - 'file' => ':attribute debe tener :size kilobytes.', - 'string' => ':attribute debe tener :size caracteres.', - 'array' => 'El atributo: debe contener: elementos de tamaño.', + 'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.', + 'max' => [ + 'array' => 'El campo :attribute no debe tener más de :max elementos.', + 'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.', + 'numeric' => 'El campo :attribute no debe ser mayor que :max.', + 'string' => 'El campo :attribute no debe ser mayor que :max caracteres.', ], + 'max_digits' => 'El campo :attribute no debe tener más de :max dígitos.', + 'mimes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'mimetypes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'min' => [ + 'array' => 'El campo :attribute debe tener al menos :min elementos.', + 'file' => 'El campo :attribute debe ser de al menos :min kilobytes.', + 'numeric' => 'El campo :attribute debe ser al menos :min.', + 'string' => 'El campo :attribute debe contener como mínimo :min caracteres.', + ], + 'min_digits' => 'El campo :attribute debe contener como mínimo :min dígitos.', + 'missing' => 'El campo :attribute debe estar vacío.', + 'missing_if' => 'El campo :attribute debe estar vacío cuando :other sea :value.', + 'missing_unless' => 'El campo :attribute debe estar vacío a menos que :other sea :value.', + 'missing_with' => 'El campo :attribute debe estar vacío cuando :values esté presente.', + 'missing_with_all' => 'El campo :attribute debe estar vacío cuando :values estén presentes.', + 'multiple_of' => 'El campo :attribute debe ser un múltiplo de :value.', + 'not_in' => 'El :attribute seleccionado no es correcto.', + 'not_regex' => 'El campo :attribute no es válido.', + 'numeric' => 'El campo :attribute debe ser un número.', + 'password' => [ + 'letters' => 'El cammpo :attribute debe contener al menos una letra.', + 'mixed' => 'El campo :attribute debe contener al menos una letra minúscula y una mayúscula.', + 'numbers' => 'El campo :attribute debe contener al menos un número.', + 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', + 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', + ], + 'present' => 'El campo: atributo debe estar presente.', + 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', + 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', + 'present_with' => 'El campo :attribute debe estar presente cuando :values esté presente.', + 'present_with_all' => 'El campo :attribute debe estar presente cuando :values estén presentes.', + 'prohibited' => 'El campo :attribute está prohibido.', + 'prohibited_if' => 'El campo :attribute está prohibido cuando :other sea :value.', + 'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other esté en :values.', + 'prohibits' => 'El campo :attribute prohíbe la presencia de :other.', + 'regex' => 'El formato del campo :attribute no es válido.', + 'required' => 'El campo :attribute es obligatorio.', + 'required_array_keys' => 'El campo :attribute debe contener valores para: :values.', + 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_if_accepted' => 'El campo :attribute es obligatorio cuando se acepta :other.', + 'required_if_declined' => 'El campo :attribute es requerido cuando :other es rechazado.', + 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', + 'required_with' => ':attribute es obligatrio cuando :values es present.', + 'required_with_all' => 'El campo :attribute es requerido cuando :values están presentes.', + 'required_without' => ':attribute es obligatrio cuando :values es not present.', + 'required_without_all' => 'El campo :attribute es obligatorio cuando no está presente ninguno de los :values.', + 'same' => 'El campo :attribute debe coincidir con :other.', + 'size' => [ + 'array' => 'El campo :attribute debe contenter :size elementos.', + 'file' => 'El campo :attribute debe ser de :size kilobytes.', + 'numeric' => 'El campo :attribute debe ser :size.', + 'string' => 'El campo :attribute debe ser de :size caracteres.', + ], + 'starts_with' => 'El campo :attribute debe iniciar con uno de los siguientes: :values.', 'string' => 'El atributo: debe ser una cadena.', - 'timezone' => 'El atributo: debe ser una zona válida.', 'two_column_unique_undeleted' => ':attribute debe ser único a través de :table1 y :table2. ', - 'unique' => ':attribute ya ha sido introducido.', - 'uploaded' => 'El atributo: no se pudo cargar.', - 'url' => ':attribute formato incorrecto.', 'unique_undeleted' => 'El :atrribute debe ser único.', 'non_circular' => ':attribute no debe crear una referencia circular.', 'not_array' => ':attribute no puede ser una matriz.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'La contraseña debe contener al menos un número.', 'case_diff' => 'La contraseña debe usar mayúsculas y minúsculas.', 'symbols' => 'La contraseña debe contener símbolos.', - 'gte' => [ - 'numeric' => 'El valor no puede ser negativo' - ], - 'checkboxes' => ':attribute contiene opciones no válidas.', - 'radio_buttons' => ':attribute no es válido.', - + 'timezone' => 'El campo :attribute debe ser una zona horaria válida.', + 'unique' => ':attribute ya ha sido introducido.', + 'uploaded' => 'El atributo: no se pudo cargar.', + 'uppercase' => 'El campo :attribute debe estar en mayúsculas.', + 'url' => 'El campo :attribute debe ser una URL válida.', + 'ulid' => 'El campo :attribute debe ser un ULID válido.', + 'uuid' => 'El campo :attribute debe ser un UUID válido.', /* |-------------------------------------------------------------------------- @@ -123,13 +185,13 @@ return [ 'custom' => [ 'alpha_space' => 'El campo: atributo contiene un carácter que no está permitido.', 'email_array' => 'Una o más direcciones de correo electrónico no es válida.', - 'hashed_pass' => 'Tu contraseña actual es incorrecta', + 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD', 'last_audit_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD hh:mm:ss', 'expiration_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', 'start_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD', 'end_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD', - - ], - + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => 'El valor de :attribute no es válido.', + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + + 'generic' => [ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + 'required' => 'El campo es obligatorio', + 'email' => 'Por favor, ingrese una dirección de correo electrónico válida.', + ], + + ]; diff --git a/resources/lang/es-MX/account/general.php b/resources/lang/es-MX/account/general.php index 7e637a3bef..2520857ca1 100644 --- a/resources/lang/es-MX/account/general.php +++ b/resources/lang/es-MX/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Claves API personales', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', - 'api_base_url' => 'La url base de tu API se encuentra en:', + 'personal_access_token' => 'Credencial de acceso personal', + 'personal_api_keys_success' => 'Clave API personal :key creada correctamente', + 'here_is_api_key' => 'Aquí tiene su nueva credencial de acceso personal. Esta es la única vez que se mostrará, así que no la pierda. Ahora puede utilizar esta credencial para realizar solicitudes a la API.', + 'api_key_warning' => 'Al generar una credencial para el API, asegúrese de copiarla inmediatamente, ya que no podrá volver a verla.', + 'api_base_url' => 'La url base de su API se encuentra en:', 'api_base_url_endpoint' => '/<endpoint>', - 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', + 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoints) del API y documentación adicional.', 'profile_updated' => 'Cuenta actualizada exitosamente', + 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', ); diff --git a/resources/lang/es-MX/admin/accessories/general.php b/resources/lang/es-MX/admin/accessories/general.php index 057dd76613..12f456686d 100644 --- a/resources/lang/es-MX/admin/accessories/general.php +++ b/resources/lang/es-MX/admin/accessories/general.php @@ -3,8 +3,8 @@ return array( 'accessory_category' => 'Categoría de accesorio', 'accessory_name' => 'Nombre de accesorio', - 'checkout' => 'Checkout Accesorio', - 'checkin' => 'Checkin Accesorio', + 'checkout' => 'Asignar accesorio', + 'checkin' => 'Ingresar accesorio', 'create' => 'Crear Accesorio', 'edit' => 'Editar Accesorio', 'eula_text' => 'Acuerdo de uso de la categoría', @@ -13,10 +13,10 @@ return array( 'no_default_eula' => 'No se encontró el acuerdo de uso predeterminado. Agregue unos en Configuración.', 'total' => 'Total ', 'remaining' => 'Disponibles', - 'update' => 'Actualizar Accesorio', + 'update' => 'Actualizar accesorio', 'use_default_eula' => 'En su lugar, el acuerdo de uso predeterminado.', 'use_default_eula_disabled' => 'En su lugar, use el acuerdo de uso predeterminado. No está configurado el acuerdo de uso predeterminado. Por favor agregue uno en Configuración.', 'clone' => 'Clonar accesorio', - 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos artículos todavía están asignados.', + 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos elementos todavía están asignados.', ); diff --git a/resources/lang/es-MX/admin/accessories/message.php b/resources/lang/es-MX/admin/accessories/message.php index 3b120a643c..cfdae3f3e0 100644 --- a/resources/lang/es-MX/admin/accessories/message.php +++ b/resources/lang/es-MX/admin/accessories/message.php @@ -4,35 +4,39 @@ return array( 'does_not_exist' => 'El accesorio [:id] no existe.', 'not_found' => 'Ese accesorio no fue encontrado.', - 'assoc_users' => 'Este accesorio actualmente tiene :count entregados a usuarios. Por favor ingrese los accesorios y vuelva a intentar. ', + 'assoc_users' => 'Este accesorio actualmente tiene :count elemento(s) asignado(s) a usuarios. Por favor realice el ingreso de los accesorios y vuelva a intentar. ', 'create' => array( - 'error' => 'El accesorio no fue creado, por favor, inténtalo de nuevo.', + 'error' => 'El accesorio no fue creado, por favor inténtelo de nuevo.', 'success' => 'Accesorio creado correctamente.' ), 'update' => array( - 'error' => 'El accesorio no fue actualizado, por favor, inténtalo de nuevo', + 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'Accesorio actualizado correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este accesorio?', - 'error' => 'Ha habido un problema eliminando este accesorio. Intentalo de nuevo.', + 'error' => 'Hubo un problema eliminando el accesorio. Por favor, inténtelo de nuevo.', 'success' => 'El accesorio fue borrado con éxito.' ), 'checkout' => array( - 'error' => 'El accesorio no fue retirado, por favor vuelva a intentarlo', - 'success' => 'Accesorio retirado correctamente.', - 'unavailable' => 'El accesorio no está disponible para la asignación. Compruebe la cantidad disponible', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + 'error' => 'El accesorio no fue asignado, por favor vuelva a intentarlo', + 'success' => 'Accesorio asignado correctamente.', + 'unavailable' => 'El accesorio no está disponible para ser asignado. Compruebe la cantidad disponible', + 'user_does_not_exist' => 'Este usuario no es válido. Por favor, inténtelo de nuevo.', + 'checkout_qty' => array( + 'lte' => 'En este momento solo existe un accesorio disponible de este tipo y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.|Existen en total :number_currently_remaining accesorios disponibles y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.', + ), + ), 'checkin' => array( - 'error' => 'El accesorio no fue agregado, favor vuelva a intentarlo', - 'success' => 'Accesorio devuelto correctamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + 'error' => 'El accesorio no fue recibido, por favor vuelva a intentarlo', + 'success' => 'El accesorio ha sido ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-MX/admin/asset_maintenances/form.php b/resources/lang/es-MX/admin/asset_maintenances/form.php index 32a148765c..c78a733032 100644 --- a/resources/lang/es-MX/admin/asset_maintenances/form.php +++ b/resources/lang/es-MX/admin/asset_maintenances/form.php @@ -1,13 +1,13 @@ 'Tipo de Mantenimiento de Activo', + 'asset_maintenance_type' => 'Tipo de mantenimiento de equipo', 'title' => 'Título', 'start_date' => 'Fecha de inicio', 'completion_date' => 'Fecha de finalización', 'cost' => 'Costo', 'is_warranty' => 'Mejora de la Garantía', - 'asset_maintenance_time' => 'Tiempo de Mantenimiento del Activo (en días)', + 'asset_maintenance_time' => 'Duración del mantenimiento (en días)', 'notes' => 'Notas', 'update' => 'Actualizar Mantenimiento de Activo', 'create' => 'Crear Mantenimiento de Activo' diff --git a/resources/lang/es-MX/admin/asset_maintenances/message.php b/resources/lang/es-MX/admin/asset_maintenances/message.php index 2a7e98f38b..91745603a2 100644 --- a/resources/lang/es-MX/admin/asset_maintenances/message.php +++ b/resources/lang/es-MX/admin/asset_maintenances/message.php @@ -4,15 +4,15 @@ 'not_found' => '¡El mantenimiento del activo que estaba buscando no se encontró!', 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar el mantenimiento de este activo?', - 'error' => 'Hubo un problema al eliminar el mantenimiento de equipo. Por favor intente nuevamente.', + 'error' => 'Hubo un problema al eliminar el mantenimiento del activo. Por favor inténtelo nuevamente.', 'success' => 'El mantenimiento de equipo fue eliminado de manera exitosa.', ], 'create' => [ 'error' => 'El Mantenimiento de Equipo no fue creado, por favor intente nuevamente.', - 'success' => 'El Mantenimiento de Equipo fue creado de manera exitosa.', + 'success' => 'El mantenimiento del activo fue creado de manera exitosa.', ], 'edit' => [ - 'error' => 'El mantenimiento de activo no fue editado. Por favor, intenta de nuevo.', + 'error' => 'El mantenimiento del activo no fue editado. Por favor, inténtelo de nuevo.', 'success' => 'Mantenimiento de activo editado con éxito.', ], 'asset_maintenance_incomplete' => 'Sin Completar', diff --git a/resources/lang/es-MX/admin/categories/general.php b/resources/lang/es-MX/admin/categories/general.php index 3ad20360b5..bd99e59d2e 100644 --- a/resources/lang/es-MX/admin/categories/general.php +++ b/resources/lang/es-MX/admin/categories/general.php @@ -3,8 +3,8 @@ return array( 'asset_categories' => 'Categorías de activos', 'category_name' => 'Nombre de la categoría', - 'checkin_email' => 'Enviar un correo al usuario al devolver/asignar.', - 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al devolver/asignar.', + 'checkin_email' => 'Enviar un correo al usuario al recibir/devolver.', + 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al recibir/devolver.', 'clone' => 'Clonar categoría', 'create' => 'Crear categoría', 'edit' => 'Editar categoría', diff --git a/resources/lang/es-MX/admin/categories/message.php b/resources/lang/es-MX/admin/categories/message.php index 9875a01d88..997487469e 100644 --- a/resources/lang/es-MX/admin/categories/message.php +++ b/resources/lang/es-MX/admin/categories/message.php @@ -3,8 +3,8 @@ return array( 'does_not_exist' => 'La categoría no existe.', - 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no se puede eliminar. Por favor actualice sus modelos para que no hagan referencia a esta categoría e inténtelo de nuevo. ', - 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no se puede eliminar. Por favor actualice su: asset_type para que no haga referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no puede ser eliminada. Actualice los modelos para que ya no hagan referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no puede ser eliminada. Actualice su :asset_type para que ya no haga referencia a esta categoría e inténtelo de nuevo. ', 'create' => array( 'error' => 'La categoría no fue creada, por favor inténtelo de nuevo.', diff --git a/resources/lang/es-MX/admin/categories/table.php b/resources/lang/es-MX/admin/categories/table.php index e3bb551e93..fc18e5ac6f 100644 --- a/resources/lang/es-MX/admin/categories/table.php +++ b/resources/lang/es-MX/admin/categories/table.php @@ -3,7 +3,7 @@ return array( 'eula_text' => 'Acuerdo de uso', 'id' => 'ID', - 'parent' => 'Padre', + 'parent' => 'Ubicación padre', 'require_acceptance' => 'Aceptación', 'title' => 'Nombre de la categoría del activo', diff --git a/resources/lang/es-MX/admin/companies/general.php b/resources/lang/es-MX/admin/companies/general.php index fd18d9f752..8fb72d5b94 100644 --- a/resources/lang/es-MX/admin/companies/general.php +++ b/resources/lang/es-MX/admin/companies/general.php @@ -1,7 +1,7 @@ 'Seleccione una compañía', + 'select_company' => 'Seleccionar una compañía', 'about_companies' => 'Acerca de las compañías', 'about_companies_description' => ' Puede utilizar las compañías como un simple campo informativo, o puede utilizarlas para restringir la visibilidad y la disponibilidad de los activos a los usuarios con una compañía específica habilitando la opción "Soporte completo a múltiples compañías" en "Configuración de administración"', ]; diff --git a/resources/lang/es-MX/admin/companies/message.php b/resources/lang/es-MX/admin/companies/message.php index 5a3cbffa1d..b4e744a8ea 100644 --- a/resources/lang/es-MX/admin/companies/message.php +++ b/resources/lang/es-MX/admin/companies/message.php @@ -3,7 +3,7 @@ return [ 'does_not_exist' => 'La compañía no existe.', 'deleted' => 'Compañía eliminada', - 'assoc_users' => 'Esta compañía ya está asociada con al menos un modelo y no puede eliminarse. Por favor, actualiza tus modelos para no referenciar esta compañía de nuevo y prueba otra vez. ', + 'assoc_users' => 'Esta compañía está actualmente asociada con al menos un modelo y no puede ser eliminada. Por favor actualice sus modelos para que no hagan referencia a esta compañía e inténtalo de nuevo. ', 'create' => [ 'error' => 'Esta compañía no ha sido creada, por favor pruebe de nuevo.', 'success' => 'Compañía creada satisfactoriamente.', diff --git a/resources/lang/es-MX/admin/components/general.php b/resources/lang/es-MX/admin/components/general.php index d047e56c14..e4d9184ef4 100644 --- a/resources/lang/es-MX/admin/components/general.php +++ b/resources/lang/es-MX/admin/components/general.php @@ -2,8 +2,8 @@ return array( 'component_name' => 'Nombre de Componente', - 'checkin' => 'Checkin Componente', - 'checkout' => 'Checkout Componente', + 'checkin' => 'Ingresar componente', + 'checkout' => 'Asignar componente', 'cost' => 'Costo de compra', 'create' => 'Crear componente', 'edit' => 'Editar componente', @@ -12,5 +12,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', - 'checkin_limit' => 'La cantidad devuelta debe ser igual o menor que :assigned_qty' + 'checkin_limit' => 'La cantidad ingresada debe ser igual o menor que :assigned_qty' ); diff --git a/resources/lang/es-MX/admin/components/message.php b/resources/lang/es-MX/admin/components/message.php index 6b0911a9ed..1f68cf977d 100644 --- a/resources/lang/es-MX/admin/components/message.php +++ b/resources/lang/es-MX/admin/components/message.php @@ -5,32 +5,32 @@ return array( 'does_not_exist' => 'El componente no existe.', 'create' => array( - 'error' => 'El componente no fuè creado, intentalo de nuevo.', - 'success' => 'El componente se creò satisfactoriamente.' + 'error' => 'El componente no fue creado, por favor inténtelo de nuevo.', + 'success' => 'El componente se creó satisfactoriamente.' ), 'update' => array( - 'error' => 'El componente no se actualizò, intentalo de nuevo', + 'error' => 'El componente no se actualizó, por favor inténtelo de nuevo', 'success' => 'Componente actualizado satisfactoriamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este componente?', - 'error' => 'Hubo un problema al querer borrar el componente, intentalo de nuevo.', + 'error' => 'Hubo un problema eliminando el componente. Por favor, inténtelo de nuevo.', 'success' => 'El componente fue borrado satisfactoriamente.' ), 'checkout' => array( - 'error' => 'El componente no hizo check out, intentalo de nuevo', - 'success' => 'Check out del componente satisfactorio.', - 'user_does_not_exist' => 'El usuario es invalido, intentalo de nuevo.', + 'error' => 'El componente no fue asignado, por favor, inténtelo de nuevo', + 'success' => 'El componente se ha asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', 'unavailable' => 'No quedan suficientes componentes: :remaining disponibles, :requested solicitados ', ), 'checkin' => array( - 'error' => 'El componente no fue checked in, intentalo de nuevo', - 'success' => 'Check in de componente satisfactorio.', - 'user_does_not_exist' => 'Es usuario es invalido, intentalo de nuevo.' + 'error' => 'No se realizó el ingreso del componente, por favor inténtelo de nuevo', + 'success' => 'Componente ingresado con éxito.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-MX/admin/consumables/general.php b/resources/lang/es-MX/admin/consumables/general.php index 3b2249f8af..f1a2debb72 100644 --- a/resources/lang/es-MX/admin/consumables/general.php +++ b/resources/lang/es-MX/admin/consumables/general.php @@ -1,11 +1,12 @@ 'Checkout de consumible a usuario', + 'checkout' => 'Asignar consumible a usuario', 'consumable_name' => 'Nombre del Consumible', 'create' => 'Crear Consumible', 'item_no' => 'Artículo núm.', 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Consumible', + 'inventory_warning' => 'El inventario de este consumible está por debajo de la cantidad mínima de :min_count', ); diff --git a/resources/lang/es-MX/admin/consumables/message.php b/resources/lang/es-MX/admin/consumables/message.php index a37dbaf545..21d88657da 100644 --- a/resources/lang/es-MX/admin/consumables/message.php +++ b/resources/lang/es-MX/admin/consumables/message.php @@ -2,15 +2,16 @@ return array( + 'invalid_category_type' => 'La categoría debe ser una categoría para consumibles.', 'does_not_exist' => 'El consumible no existe.', 'create' => array( - 'error' => 'El consumible no fue creado, por favor intente nuevamente.', + 'error' => 'El consumible no fue creado, por favor inténtelo nuevamente.', 'success' => 'Consumible creado con éxito.' ), 'update' => array( - 'error' => 'El consumible no fue actualizado, por favor, inténtalo de nuevo', + 'error' => 'El consumible no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'El consumible fue subido con éxito.' ), @@ -22,15 +23,15 @@ return array( 'checkout' => array( 'error' => 'El consumible no fue asignado, por favor inténtelo de nuevo', - 'success' => 'Consumible fue retirado satisfactoriamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.', - 'unavailable' => 'No hay suficientes consumibles para esta asignación. Por favor, compruebe la cantidad restante. ', + 'success' => 'Consumible asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'No hay suficientes consumibles para esta asignación. Por favor, compruebe la cantidad disponible. ', ), 'checkin' => array( - 'error' => 'Consumible no fue devuelto, por favor inténtelo de nuevo', - 'success' => 'Consumible fue ingresado satisfactoriamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + 'error' => 'El consumible no fue ingresado, por favor inténtelo de nuevo', + 'success' => 'El consumible fue ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-MX/admin/custom_fields/general.php b/resources/lang/es-MX/admin/custom_fields/general.php index 51d9f8e36e..93239def89 100644 --- a/resources/lang/es-MX/admin/custom_fields/general.php +++ b/resources/lang/es-MX/admin/custom_fields/general.php @@ -7,9 +7,9 @@ return [ 'about_fieldsets_title' => 'Acerca de los grupos de campos', 'about_fieldsets_text' => 'Los grupos de campos le permiten agrupar campos personalizados que se reutilizan frecuentemente para determinados modelos de activos.', 'custom_format' => 'Expresión regular personalizada...', - 'encrypt_field' => 'Encriptar el valor de este campo en la base de datos', - 'encrypt_field_help' => 'CUIDADO: Encriptar un campo hace que no se pueda buscar por él.', - 'encrypted' => 'Encriptado', + 'encrypt_field' => 'Cifrar el valor de este campo en la base de datos', + 'encrypt_field_help' => 'ADVERTENCIA: Cifrar un campo hace que no se pueda buscar.', + 'encrypted' => 'Cifrado', 'fieldset' => 'Grupo de campos', 'qty_fields' => 'Campos de cantidad', 'fieldsets' => 'Grupo de campos', @@ -24,35 +24,35 @@ return [ 'field_custom_format_help' => 'Este campo te permite usar una expresión regex para la validación. Debería empezar con "regex:" - por ejemplo, para validar que un valor de campo personalizado contiene un IMEI válido (15 dígitos numéricos), podrías usar regex:/^[0-9]{15}$/.', 'required' => 'Obligatorio', 'req' => 'Obl.', - 'used_by_models' => 'Usado Por Modelos', + 'used_by_models' => 'Usado por los modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo grupo de campos', 'update_fieldset' => 'Actualizar grupo de campos', 'fieldset_does_not_exist' => 'El grupo de campos :id no existe', - 'fieldset_updated' => 'Se ha actualizado el Grupo de Campos', - 'create_fieldset_title' => 'Crear un nuevo conjunto de campos', + 'fieldset_updated' => 'Se actualizó el grupo de campos', + 'create_fieldset_title' => 'Crear nuevo grupo de campos', 'create_field' => 'Nuevo campo personalizado', 'create_field_title' => 'Crear un nuevo campo personalizado', - 'value_encrypted' => 'El valor de este campo está encriptado en la base de datos. Solo los administradores pueden ver el valor desencriptado', - 'show_in_email' => 'Include the value of this field in checkout emails sent to the user? Encrypted fields cannot be included in emails', + 'value_encrypted' => 'El valor de este campo está cifrado en la base de datos. Solo los administradores pueden ver el valor descifrado', + 'show_in_email' => '¿Incluir el campo en los correos de asignación enviados al usuario? Los campos cifrados no se pueden incluir en los correos electrónicos', 'show_in_email_short' => 'Incluye en correos electrónicos.', 'help_text' => 'Texto de ayuda', 'help_text_description' => 'Esto es un texto opcional que se mostrará debajo de los elementos del formulario cuando se este editando un activo para proporcionar contexto adicional del campo.', 'about_custom_fields_title' => 'Acerca de los Campos Personalizados', 'about_custom_fields_text' => 'Los campos personalizados te permiten agregar atributos arbritarios a los activos.', - 'add_field_to_fieldset' => 'Añadir campo al conjunto de campos', + 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', 'make_optional' => 'Requerido - haz clic para hacerlo opcional', 'make_required' => 'Opcional - haz clic para hacerlo requerido', 'reorder' => 'Reordenar', - 'db_field' => 'Campo de Base de Datos', + 'db_field' => 'Campo en base de datos', 'db_convert_warning' => 'ADVERTENCIA. Este campo está en la tabla de campos personalizados como :db_column pero debe ser :expected.', 'is_unique' => 'Este valor debe ser único a través de todos los activos', 'unique' => 'Único', - 'display_in_user_view' => 'Permitir al usuario asignado ver estos valores en su página Ver Recursos asignados', + 'display_in_user_view' => 'Permitir al usuario ver estos valores en la página "Ver elementos asignados"', 'display_in_user_view_table' => 'Visible al Usuario', - 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo conjunto de campos', - 'add_to_preexisting_fieldsets' => 'Añadir a cualquier conjunto de campos existente', - 'show_in_listview' => 'Mostrar por defecto en las vistas de lista. Los usuarios autorizados aún podrán mostrar/ocultar a través del selector de columnas', + 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo grupo de campos', + 'add_to_preexisting_fieldsets' => 'Añadir a cualquier grupo de campos existente', + 'show_in_listview' => 'Mostrar por defecto en las consultas. Los usuarios autorizados podrán mostrar/ocultar a través del selector de columnas', 'show_in_listview_short' => 'Mostrar en listas', 'show_in_requestable_list_short' => 'Mostrar en la lista de activos que se pueden solicitar', 'show_in_requestable_list' => 'Mostrar el valor en la lista de activos que se pueden solicitar. Los campos cifrados no se mostrarán', diff --git a/resources/lang/es-MX/admin/custom_fields/message.php b/resources/lang/es-MX/admin/custom_fields/message.php index 3d9d33010c..dcb56133bf 100644 --- a/resources/lang/es-MX/admin/custom_fields/message.php +++ b/resources/lang/es-MX/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'El campo no existe.', 'already_added' => 'El campo ya fue añadido', + 'none_selected' => 'No se ha seleccionado ningún campo', 'create' => array( 'error' => 'Campo no creado, por favor, inténtalo de nuevo.', @@ -28,7 +29,7 @@ return array( 'fieldset' => array( - 'does_not_exist' => 'El conjunto de campos no existe', + 'does_not_exist' => 'El grupo de campos no existe', 'create' => array( 'error' => 'El grupo de campos no ha sido creado, por favor inténtelo de nuevo.', @@ -36,7 +37,7 @@ return array( ), 'update' => array( - 'error' => 'El Grupo de campos no ha sido actualizado, por favor inténtelo de nuevo', + 'error' => 'El grupo de campos no ha sido actualizado, por favor inténtelo de nuevo', 'success' => 'Grupo de campos actualizado correctamente.' ), @@ -51,7 +52,7 @@ return array( 'fieldset_default_value' => array( - 'error' => 'Error al validar los valores predeterminados del conjunto de campos.', + 'error' => 'Error al validar los valores por defecto del grupo de campos.', ), diff --git a/resources/lang/es-MX/admin/departments/message.php b/resources/lang/es-MX/admin/departments/message.php index 6f10cf0eae..2a7001ad3a 100644 --- a/resources/lang/es-MX/admin/departments/message.php +++ b/resources/lang/es-MX/admin/departments/message.php @@ -4,18 +4,18 @@ return array( 'does_not_exist' => 'El departamento no existe.', 'department_already_exists' => 'Ya existe un departamento con ese nombre en esta ubicación de la compañía. O elija un nombre más específico para este departamento. ', - 'assoc_users' => 'Esta localización está actualmente asociada con al menos un usuario y no puede ser eliminada, Por favor verifique que ningún usuario haga referencia a esta localización e intente de nuevo. ', + 'assoc_users' => 'Este departamento está actualmente asociado con al menos un usuario y no puede ser eliminado. Por favor, actualice sus usuarios para que no hagan referencia a este departamento e inténtelo de nuevo. ', 'create' => array( - 'error' => 'El departamento no fue creado, por favor intente de nuevo.', + 'error' => 'El departamento no fue creado, por favor, inténtelo de nuevo.', 'success' => 'Departamento creado con éxito.' ), 'update' => array( - 'error' => 'El departamento no se actualizó, por favor intente de nuevo', + 'error' => 'El departamento no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Departamento actualizado con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este departamento?', - 'error' => 'Hubo un problema al eliminar el departamento. Inténtalo de nuevo.', + 'error' => 'Hubo un problema al borrar el departamento. Por favor, inténtelo de nuevo.', 'success' => 'El departamento ha sido borrado exitosamente' ) diff --git a/resources/lang/es-MX/admin/departments/table.php b/resources/lang/es-MX/admin/departments/table.php index b24a16d3ae..89216f1727 100644 --- a/resources/lang/es-MX/admin/departments/table.php +++ b/resources/lang/es-MX/admin/departments/table.php @@ -2,7 +2,7 @@ return array( - 'id' => 'CARNÉ DE IDENTIDAD', + 'id' => 'ID', 'name' => 'Nombre de Departamento', 'manager' => 'Supervisor', 'location' => 'Ubicación', diff --git a/resources/lang/es-MX/admin/depreciations/general.php b/resources/lang/es-MX/admin/depreciations/general.php index 86e175aeb4..1df875daaf 100644 --- a/resources/lang/es-MX/admin/depreciations/general.php +++ b/resources/lang/es-MX/admin/depreciations/general.php @@ -2,12 +2,12 @@ return [ 'about_asset_depreciations' => 'Sobre amortización de activos', - 'about_depreciations' => 'Puede configurar la amortización de activos usando un método de línea recta.', - 'asset_depreciations' => 'Amortizaciones', + 'about_depreciations' => 'Puede configurar la depreciación de activos usando un método de línea recta.', + 'asset_depreciations' => 'Depreciación de activos', 'create' => 'Crear amortización', 'depreciation_name' => 'Nombre amortización', 'depreciation_min' => 'Valor mínimo de depreciación', - 'number_of_months' => 'Meses', + 'number_of_months' => 'Número de meses', 'update' => 'Actualizar Amortización', 'depreciation_min' => 'Valor mínimo después de depreciado', 'no_depreciations_warning' => 'Advertencia: diff --git a/resources/lang/es-MX/admin/depreciations/message.php b/resources/lang/es-MX/admin/depreciations/message.php index 024b1ee6e3..6532eb38e3 100644 --- a/resources/lang/es-MX/admin/depreciations/message.php +++ b/resources/lang/es-MX/admin/depreciations/message.php @@ -3,22 +3,22 @@ return array( 'does_not_exist' => 'Clase de amortización inexistente.', - 'assoc_users' => 'Esta amortización está asociada a uno o más modelos y no puede ser eliminada.', + 'assoc_users' => 'Esta depreciación está actualmente asociada con uno o más modelos y no puede ser eliminada. Por favor, elimine los modelos y luego intente borrarlas de nuevo. ', 'create' => array( - 'error' => 'Amortización no creada, intentalo de nuevo. :(', + 'error' => 'El tipo de depreciación no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'Amortización creada correctamente. :)' ), 'update' => array( - 'error' => 'Amortización no actualizada, intentalo de nuevo.', + 'error' => 'El tipo de depreciación no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'Amortización actualizada correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta clase de depreciación?', - 'error' => 'Amortización no eliminada, intentalo de nuevo.', + 'error' => 'Ha sucedido un error eliminando el tipo de depreciación, por favor intente de nuevo.', 'success' => 'Amortización eliminada correctamente.' ) diff --git a/resources/lang/es-MX/admin/groups/message.php b/resources/lang/es-MX/admin/groups/message.php index d7cfbb1f18..3b39197138 100644 --- a/resources/lang/es-MX/admin/groups/message.php +++ b/resources/lang/es-MX/admin/groups/message.php @@ -2,7 +2,7 @@ return array( - 'group_exists' => 'El grupo ya existe!', + 'group_exists' => '!El grupo ya existe!', 'group_not_found' => 'El ID de grupo :id no existe.', 'group_name_required' => 'El campo nombre es obligatorio', @@ -13,9 +13,9 @@ return array( ), 'delete' => array( - 'confirm' => 'Seguroq que quieres Eliminar grupo?', - 'create' => 'Ha habido un problema creando el grupo. Vuelve a intentarlo.', - 'update' => 'Ha habido un problema actualizando el grupo. Vuelve a intentarlo.', + 'confirm' => '¿Está seguro de que desea eliminar este grupo?', + 'create' => 'Hubo un problema creando el grupo. Por favor intente nuevamente.', + 'update' => 'Hubo un problema actualizando el grupo. Por favor, intente nuevamente.', 'delete' => 'Ha habido un problema eliminando el grupo. Vuelve a intentarlo.', ), diff --git a/resources/lang/es-MX/admin/hardware/form.php b/resources/lang/es-MX/admin/hardware/form.php index 94b3730d59..85879521d6 100644 --- a/resources/lang/es-MX/admin/hardware/form.php +++ b/resources/lang/es-MX/admin/hardware/form.php @@ -1,36 +1,36 @@ 'Confirmar eliminación masiva de bienes', + 'bulk_delete' => 'Confirmar eliminación masiva de activos', 'bulk_restore' => 'Confirmar recuperación masiva de activos', - 'bulk_delete_help' => 'Revisar los bienes para eliminación masiva. Una vez eliminados, esos bienes pueden ser restaurados, pero no volverán a estar asociados con ningún usuario a los que esté asignado.', + 'bulk_delete_help' => 'Revise a continuación los activos para eliminación masiva. Una vez eliminados, estos activos se pueden restaurar, pero ya no estarán asociados a ningún usuario al que estén asignados actualmente.', 'bulk_restore_help' => 'Revisar los activos para la restauración en masa a continuación. Una vez restaurados, estos activos no estarán asociados con los usuarios a los que fueron asignados anteriormente.', 'bulk_delete_warn' => 'Va a eliminar :asset_count activos.', 'bulk_restore_warn' => 'Está a punto de restaurar :asset_count activos.', - 'bulk_update' => 'Actualización masiva de Equipos', - 'bulk_update_help' => 'Este formulario le permite actualizar múltiples Equipos simultáneamente. Solo complete los campos que quiere modificar. Todo campo en blanco permanecerá sin cambios. ', - 'bulk_update_warn' => 'Está a punto de editar las propiedades de un solo recurso.|Está a punto de editar las propiedades de :asset_count activos.', - 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos son :asset_model_count diferentes tipos de modelos.', + 'bulk_update' => 'Actualización masiva de activos', + 'bulk_update_help' => 'Este formulario le permite actualizar varios activos a la vez. Complete solo los campos que necesite modificar. Los campos que se dejen en blanco no se modificarán. ', + 'bulk_update_warn' => 'Está a punto de editar las propiedades de un solo activo.|Está a punto de editar las propiedades de :asset_count activos.', + 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos corresponden a :asset_model_count tipos diferentes de modelos.', 'bulk_update_model_prefix' => 'En modelos', - 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado a granel.', + 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado de forma masiva.', 'checkedout_to' => 'Asignado a', 'checkout_date' => 'Fecha de asignación', - 'checkin_date' => 'Fecha de devolución', + 'checkin_date' => 'Fecha de ingreso', 'checkout_to' => 'Asignar a', - 'cost' => 'Precio Compra', - 'create' => 'Crear Equipo', + 'cost' => 'Precio de compra', + 'create' => 'Crear activo', 'date' => 'Fecha de compra', 'depreciation' => 'Depreciación', 'depreciates_on' => 'Se deprecia en', 'default_location' => 'Ubicación predeterminada', 'default_location_phone' => 'Teléfono de ubicación por defecto', 'eol_date' => 'Fecha fin de soporte (EOL)', - 'eol_rate' => 'Tasa de EOL', + 'eol_rate' => 'Tasa fin de soporte (EOL)', 'expected_checkin' => 'Fecha esperada de devolución', - 'expires' => 'Expira', + 'expires' => 'Vence', 'fully_depreciated' => 'Totalmente amortizado', - 'help_checkout' => 'Si desea asignar este equipo inmediatamente, seleccione "Listo para Asignar" de la lista de estados de arriba. ', - 'mac_address' => 'MAC Dirección', + 'help_checkout' => 'Si desea asignar este equipo inmediatamente, seleccione "Listo para asignar" de la lista de estados de arriba. ', + 'mac_address' => 'Dirección MAC', 'manufacturer' => 'Fabricante', 'model' => 'Modelo', 'months' => 'meses', @@ -39,18 +39,18 @@ return [ 'order' => 'Número de orden', 'qr' => 'Código QR', 'requestable' => 'Los usuarios pueden solicitar este elemento', - 'redirect_to_all' => 'Return to all :type', + 'redirect_to_all' => 'Regresar a :type', 'redirect_to_type' => 'Ir a :type', - 'redirect_to_checked_out_to' => 'Go to Checked Out to', + 'redirect_to_checked_out_to' => 'Ir a elementos asignados', 'select_statustype' => 'Seleccione un tipo de estado', - 'serial' => 'N. Serie', + 'serial' => 'Número de serie', 'status' => 'Estado', - 'tag' => 'Etiqueta del activo', - 'update' => 'Actualizar Equipo', + 'tag' => 'Placa del activo', + 'update' => 'Actualizar activo', 'warranty' => 'Garantía', - 'warranty_expires' => 'Vencimiento de la Garantía', + 'warranty_expires' => 'Vencimiento de la garantía', 'years' => 'años', - 'asset_location' => 'Actualizar ubicación del Activo', + 'asset_location' => 'Actualizar ubicación del activo', 'asset_location_update_default_current' => 'Actualizar ubicación predeterminada y ubicación actual', 'asset_location_update_default' => 'Actualizar sólo la ubicación predeterminada', 'asset_location_update_actual' => 'Actualizar sólo la ubicación actual', diff --git a/resources/lang/es-MX/admin/hardware/general.php b/resources/lang/es-MX/admin/hardware/general.php index 0e77368048..14ebf57131 100644 --- a/resources/lang/es-MX/admin/hardware/general.php +++ b/resources/lang/es-MX/admin/hardware/general.php @@ -1,22 +1,22 @@ 'Acerca de Activos', - 'about_assets_text' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.', + 'about_assets_title' => 'Acerca de los activos', + 'about_assets_text' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', 'archived' => 'Archivado', 'asset' => 'Equipo', - 'bulk_checkout' => 'Checkout Assets', - 'bulk_checkin' => 'Devolver activos', - 'checkin' => 'Devolver activo', - 'checkout' => 'Activo de pago', + 'bulk_checkout' => 'Asignar activos', + 'bulk_checkin' => 'Ingresar activos', + 'checkin' => 'Ingresar activo', + 'checkout' => 'Asignar activo', 'clone' => 'Clonar activo', 'deployable' => 'Utilizable', 'deleted' => 'Este activo ha sido eliminado.', - 'delete_confirm' => '¿Está seguro de que desea eliminar este recurso?', + 'delete_confirm' => '¿Está seguro de que desea eliminar este activo?', 'edit' => 'Editar activo', - 'model_deleted' => 'Este modelo de equipo fue eliminado. Debes restaurar el moldelo antes de restaurar el activo.', + 'model_deleted' => 'Este modelo de activo ha sido eliminado. Debe restaurar este modelo antes de poder restaurar el activo.', 'model_invalid' => 'Este modelo para este activo es inválido.', - 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar asignarlo, devolverlo o auditarlo.', + 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar ingresarlo, asignarlo o auditarlo.', 'requestable' => 'Puede solicitarse', 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', @@ -27,16 +27,16 @@ return [ 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que es no utilizable y no puede ser asignado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Hay un error en su archivo CSV:', - 'import_text' => '

Cargue un archivo CSV que contenga el historial de activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La importación del historial busca activos que coincidan con la etiqueta de activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Admin > Opciones Generales.

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

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

', - 'csv_import_match_f-l' => 'Intenta emparejar usuarios con formato nombre.lastname (jane.smith)', - 'csv_import_match_initial_last' => 'Intentar emparejar a los usuarios con un formato primer apellido inicial (jsmith)', - 'csv_import_match_first' => 'Intentar emparejar a los usuarios con formato primer nombre (jane)', - 'csv_import_match_email' => 'Intenta emparejar a los usuarios por email como nombre de usuario', - 'csv_import_match_username' => 'Intentar hacer coincidir los usuarios usando la propiedad Usuario', + 'import_text' => '

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

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

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

', + 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', + 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', + 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', + 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor, vea abajo para más detalles.', 'custom_export' => 'Exportación personalizada', - 'mfg_warranty_lookup' => 'Búsqueda del estado de Garantía para :manufacturer', + 'mfg_warranty_lookup' => 'Búsqueda del estado de garantía para :manufacturer', 'user_department' => 'Departamento', ]; diff --git a/resources/lang/es-MX/admin/hardware/message.php b/resources/lang/es-MX/admin/hardware/message.php index 31f614cd8d..6d75025b95 100644 --- a/resources/lang/es-MX/admin/hardware/message.php +++ b/resources/lang/es-MX/admin/hardware/message.php @@ -2,32 +2,31 @@ return [ - 'undeployable' => 'Atención: Este elemento ha sido marcado como no utilizable. - Si no es correcto, actualice el estado.', + 'undeployable' => 'Advertencia: Este activo actualmente está marcado como no utilizable. Si este estado ha cambiado, por favor, actualice el estado del activo.', 'does_not_exist' => 'Equipo inexistente.', - 'does_not_exist_var'=> 'Activo con etiqueta :asset_tag no encontrado.', - 'no_tag' => 'No se ha proporcionado ninguna etiqueta de activo.', + 'does_not_exist_var'=> 'Activo con placa :asset_tag no encontrado.', + 'no_tag' => 'No se ha proporcionado ninguna placa de activo.', 'does_not_exist_or_not_requestable' => 'Ese activo no existe o no puede ser solicitado.', - 'assoc_users' => 'Equipo asignado a un usuario, no se puede eliminar.', + 'assoc_users' => 'Actualmente este activo está asignado a un usuario y no puede ser eliminado. Por favor, primero compruebe el activo y vuelva a intentarlo. ', 'warning_audit_date_mismatch' => 'La próxima fecha de auditoría de este activo (:next_audit_date) es anterior a la última fecha de auditoría (:last_audit_date). Por favor, actualice la próxima fecha de auditoría.', 'create' => [ 'error' => 'El activo no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'Equipo creado. :)', - 'success_linked' => 'Activo con etiqueta :tag creado con éxito. Haga clic aquí para ver.', + 'success_linked' => 'Activo con placa :tag creado con éxito. Haga clic aquí para ver.', ], 'update' => [ - 'error' => 'Equipo no actualizado, intentalo de nuevo', + 'error' => 'El activo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'Equipo actualizado.', - 'encrypted_warning' => 'Activo actualizado con éxito, pero los campos personalizados cifrados no se actualizaron debido a permisos', + 'encrypted_warning' => 'El activo se actualizó correctamente, pero los campos personalizados cifrados no lo hicieron debido a los permisos', 'nothing_updated' => 'Ningún campo fue seleccionado, por lo que nada ha sido actualizado.', - 'no_assets_selected' => 'Ningún recurso fue seleccionado, por lo que no se actualizó nada.', + 'no_assets_selected' => 'Ningún activo fue seleccionado, por lo que no se actualizó nada.', 'assets_do_not_exist_or_are_invalid' => 'Los activos seleccionados no se pueden actualizar.', ], 'restore' => [ - 'error' => 'El equipo no fue restaurado, por favor intente nuevamente', + 'error' => 'El activo no fue restaurado, por favor inténtelo nuevamente', 'success' => 'Equipo restaurado correctamente.', 'bulk_success' => 'Activo restaurado con éxito.', 'nothing_updated' => 'No se seleccionaron activos, por lo que no se restauró nada.', @@ -40,7 +39,7 @@ return [ 'deletefile' => [ - 'error' => 'Archivo no eliminado. Por favor, vuelva a intentarlo.', + 'error' => 'Archivo no eliminado. Por favor inténtelo nuevamente.', 'success' => 'Archivo eliminado correctamente.', ], @@ -48,14 +47,15 @@ return [ 'error' => 'Archivo(s) no cargado(s). Por favor, inténtelo nuevamente.', 'success' => 'Archivo(s) cargado(s) exitosamente.', 'nofiles' => 'No seleccionó ningún archivo para ser cargado, o el archivo que está tratando de cargar es demasiado grande', - 'invalidfiles' => 'Uno o más sus archivos es demasiado grande o es de un tipo no permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ], 'import' => [ + 'import_button' => 'Proceso para importar', 'error' => 'Algunos elementos no se pudieron importar correctamente.', 'errorDetail' => 'Estos elementos no pudieron importarse debido a errores.', - 'success' => 'Tu archivo ha sido importado', - 'file_delete_success' => 'Tu archivo ha sido eliminado con éxito', + 'success' => 'Su archivo ha sido importado', + 'file_delete_success' => 'Su archivo se ha eliminado correctamente', 'file_delete_error' => 'No pudimos eliminar tu archivo', 'file_missing' => 'Falta el archivo seleccionado', 'header_row_has_malformed_characters' => 'Uno o más atributos de la fila de encabezado contiene caracteres UTF-8 mal formados', @@ -65,31 +65,31 @@ return [ 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar este activo?', - 'error' => 'Equipo no eliminado, intentalo de nuevo.', + 'error' => 'Hubo un problema al eliminar el activo. Por favor, inténtelo de nuevo.', 'nothing_updated' => 'No se seleccionaron los activos, por lo que no se eliminó nada.', 'success' => 'Equipo eliminado.', ], 'checkout' => [ 'error' => 'El activo no fue asignado, por favor inténtelo de nuevo', - 'success' => 'Equipo asignado.', - 'user_does_not_exist' => 'Este usuario no es correcto. Intentalo de nuevo.', - 'not_available' => '¡Ese artículo no está disponible para retirada!', + 'success' => 'Equipo asignado correctamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'not_available' => '¡Ese equipo no está disponible para ser asignado!', 'no_assets_selected' => 'Debes seleccionar al menos un elemento de la lista', ], 'checkin' => [ - 'error' => 'El equipo no se pudo devolver, por favor inténtelo de nuevo', - 'success' => 'El activo fue devuelto exitosamente.', - 'user_does_not_exist' => 'Es usuario no es correcto, por favor inténtelo de nuevo.', - 'already_checked_in' => 'El equipo ya ha sido devuelto.', + 'error' => 'El activo no se pudo ingresar, por favor inténtelo de nuevo', + 'success' => 'El activo fue ingresado exitosamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'already_checked_in' => 'El equipo ya ha sido recibido.', ], 'requests' => [ - 'error' => 'Bien no solicitado, por favor inténtelo de nuevo', - 'success' => 'Bien solicitado correctamente.', - 'canceled' => 'Solicitud de retirada cancelada con éxito', + 'error' => 'El activo no pudo ser solicitado, por favor inténtelo de nuevo', + 'success' => 'Activo solicitado correctamente.', + 'canceled' => 'La solicitud de asignación fue cancelada de forma exitosa', ], ]; diff --git a/resources/lang/es-MX/admin/hardware/table.php b/resources/lang/es-MX/admin/hardware/table.php index 0881c20af7..a68a3de87c 100644 --- a/resources/lang/es-MX/admin/hardware/table.php +++ b/resources/lang/es-MX/admin/hardware/table.php @@ -2,32 +2,32 @@ return [ - 'asset_tag' => 'Etiqueta', + 'asset_tag' => 'Placa del activo', 'asset_model' => 'Modelo', 'assigned_to' => 'Asignado a', 'book_value' => 'Valor Actual', 'change' => 'Operación', 'checkout_date' => 'Fecha de asignación', - 'checkoutto' => 'Asignado', + 'checkoutto' => 'Asignado a', 'components_cost' => 'Coste total de componentes', 'current_value' => 'Valor actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', - 'eol' => 'EOL', + 'eol' => 'Fin de soporte (EOL)', 'id' => 'ID', - 'last_checkin_date' => 'Last Checkin Date', + 'last_checkin_date' => 'Última fecha de ingreso', 'location' => 'Ubicación', 'purchase_cost' => 'Costo', 'purchase_date' => 'Comprado', - 'serial' => 'N. Serie', + 'serial' => 'Número de serie', 'status' => 'Estado', - 'title' => 'Equipo ', + 'title' => 'Activo ', 'image' => 'Imagen de dispositivo', - 'days_without_acceptance' => 'Días Sin Aceptación', + 'days_without_acceptance' => 'Días sin aceptación', 'monthly_depreciation' => 'Depreciación Mensual', 'assigned_to' => 'Asignado a', 'requesting_user' => 'Usuario Solicitante', 'requested_date' => 'Fecha solicitada', - 'changed' => 'Cambiado', + 'changed' => 'Cambios', 'icon' => 'Ícono', ]; diff --git a/resources/lang/es-MX/admin/kits/general.php b/resources/lang/es-MX/admin/kits/general.php index c9d6a5e7b6..229130f42e 100644 --- a/resources/lang/es-MX/admin/kits/general.php +++ b/resources/lang/es-MX/admin/kits/general.php @@ -2,19 +2,19 @@ return [ 'about_kits_title' => 'Acerca de kits predefinidos', - 'about_kits_text' => 'Kits predefinidos le permiten revisar rápidamente un conjunto de elementos (activos, licencias, etc.) a un usuario. Esto puede ser útil cuando su proceso de incorporación es consistente entre muchos usuarios y todos los usuarios reciben los mismos artículos.', + 'about_kits_text' => 'Los kits predefinidos le permiten rápidamente asignar un conjunto de elementos (activos, licencias, etc.) a un usuario. Esto puede ser útil cuando su proceso de incorporación de usuarios es similar para muchos usuarios y todos reciben los mismos elementos.', 'checkout' => 'Asignar kit ', 'create_success' => 'El kit se ha creado correctamente.', 'create' => 'Crear kit predefinido', 'update' => 'Actualizar kit predefinido', 'delete_success' => 'Kit eliminado correctamente.', 'update_success' => 'El kit se ha actualizado correctamente.', - 'none_models' => 'No hay suficientes activos disponibles para :model para asignar. :qty son requeridos. ', - 'none_licenses' => 'No hay suficientes licencias disponibles para :license para asignar. :qty son requeridos. ', - 'none_consumables' => 'No hay suficientes unidades disponibles de :consumable para asignar. :qty son requeridas. ', - 'none_accessory' => 'No hay suficientes unidades disponibles de :accesory para asignar. :qty son requeridas. ', + 'none_models' => 'No hay suficientes activos disponibles de :model para asignar. Se requieren :qty. ', + 'none_licenses' => 'No hay suficientes licencias disponibles de :license para asignar. Se requieren :qty. ', + 'none_consumables' => 'No hay suficientes unidades disponibles de :consumable para asignar. Se requieren :qty. ', + 'none_accessory' => 'No hay suficientes unidades disponibles de :accessory para asignar. Se requieren :qty. ', 'append_accessory' => 'Añadir accesorio', - 'update_appended_accessory' => 'Actualizar accesorio adjunto', + 'update_appended_accessory' => 'Actualizar accesorio añadido', 'append_consumable' => 'Añadir consumible', 'update_appended_consumable' => 'Actualizar consumible adjunto', 'append_license' => 'Añadir licencia', diff --git a/resources/lang/es-MX/admin/labels/table.php b/resources/lang/es-MX/admin/labels/table.php index af028753b2..055d28c169 100644 --- a/resources/lang/es-MX/admin/labels/table.php +++ b/resources/lang/es-MX/admin/labels/table.php @@ -10,7 +10,7 @@ return [ 'example_supplier' => 'Compañía de prueba limitada', 'labels_per_page' => 'Etiquetas', 'support_fields' => 'Campos', - 'support_asset_tag' => 'Tag', + 'support_asset_tag' => 'Placa', 'support_1d_barcode' => '1D', 'support_2d_barcode' => '2D', 'support_logo' => 'Logo', diff --git a/resources/lang/es-MX/admin/licenses/form.php b/resources/lang/es-MX/admin/licenses/form.php index b1d1d180d9..37234d8d24 100644 --- a/resources/lang/es-MX/admin/licenses/form.php +++ b/resources/lang/es-MX/admin/licenses/form.php @@ -2,8 +2,8 @@ return array( - 'asset' => 'Equipo', - 'checkin' => 'Devolver', + 'asset' => 'Activo', + 'checkin' => 'Ingresar', 'create' => 'Crear licencia', 'expiration' => 'Fecha de vencimiento', 'license_key' => 'Clave de producto', @@ -12,11 +12,11 @@ return array( 'no_depreciation' => 'No Amortizar', 'purchase_order' => 'Número de orden de compra', 'reassignable' => 'Reasignable', - 'remaining_seats' => 'Posiciones Restantes', - 'seats' => 'Instalaciones', - 'termination_date' => 'Fecha de Fin', - 'to_email' => 'Registrado a Email', - 'to_name' => 'Registrado a Nombre', + 'remaining_seats' => 'Disponibles', + 'seats' => 'Total de licencias', + 'termination_date' => 'Fecha de finalización', + 'to_email' => 'Correo electrónico asociado a la licencia', + 'to_name' => 'Nombre de la persona asociada a la licencia', 'update' => 'Actualizar Licencia', 'checkout_help' => 'Debe asignar una licencia a un activo de hardware o a una persona. Puede seleccionar ambos, pero el propietario del activo debe coincidir con la persona a la que está asignado el activo.' ); diff --git a/resources/lang/es-MX/admin/licenses/general.php b/resources/lang/es-MX/admin/licenses/general.php index 5ba9041b4a..847e64d75e 100644 --- a/resources/lang/es-MX/admin/licenses/general.php +++ b/resources/lang/es-MX/admin/licenses/general.php @@ -2,50 +2,51 @@ return array( 'about_licenses_title' => 'Acerca de licencias', - 'about_licenses' => 'Las licencias son para identificar software. Tienen un número específico de asientos que pueden ser asignados a individuos', - 'checkin' => 'Quitar Instalación', - 'checkout_history' => 'Historial Asignaciones', - 'checkout' => 'Asignar Instalación', + 'about_licenses' => 'Las licencias se utilizan para hacer un seguimiento del software. Tienen una cantidad determinada que puede ser asignada a individuos', + 'checkin' => 'Ingresar licencia', + 'checkout_history' => 'Historial de asignaciones', + 'checkout' => 'Asignar licencia', 'edit' => 'Editar Usuario', 'filetype_info' => 'Tipos de archivos permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, y rar.', 'clone' => 'Clonar Usuario', 'history_for' => 'Historial para ', 'in_out' => 'Quita/Asigna', 'info' => 'Info Licencia', - 'license_seats' => 'Num. Instalaciones', - 'seat' => 'Instalación', - 'seats' => 'Instalaciones', + 'license_seats' => 'Total de licencias', + 'seat' => 'Licencia', + 'seat_count' => 'Licencia :count', + 'seats' => 'Total de licencias', 'software_licenses' => 'Licencias Software', 'user' => 'Usuario', 'view' => 'Ver Licencias', - 'delete_disabled' => 'Esta licencia no se puede eliminar aún porque algunos asientos todavía están asignados.', + 'delete_disabled' => 'Esta licencia no se puede eliminar aún está asignada a algunos usuarios.', 'bulk' => [ 'checkin_all' => [ - 'button' => 'Desasignar todos los asientos', - 'modal' => 'Esto activará la desasignación de un asiento. | Esta acción desasignará todos los asientos :checkedout_seats_count para esta licencia.', - 'enabled_tooltip' => 'Desasignar TODOS los asientos para esta licencia tanto de usuarios como de activos', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos asignados actualmente', + 'button' => 'Ingresar todas las licencias', + 'modal' => 'Esta acción ingresará una licencia. | Esta acción ingresará todas las :checkedout_seats_count licencias.', + 'enabled_tooltip' => 'Recibir TODAS las licencias tanto de usuarios como de activos', + 'disabled_tooltip' => 'Esto está deshabilitado porque no hay licencias asignadas actualmente', 'disabled_tooltip_reassignable' => 'Esto está desactivado porque la licencia no es reasignable', - 'success' => '¡Licencia asignada con éxito! | ¡Todas las licencias fueron asignadas con éxito!', - 'log_msg' => 'Asignación a través de asignación masiva en la interfaz de licencia', + 'success' => '¡Licencia recibida correctamente! | ¡Todas las licencias fueron recibidas correctamente!', + 'log_msg' => 'Ingresada mediante ingreso masivo en página de licencias', ], 'checkout_all' => [ - 'button' => 'Asignar todos los asientos', - 'modal' => 'Esta acción asignará un asiento para el primer usuario disponible. | Esta acción asignará todos los asientos :available_seats_count para los primeros usuarios disponibles. Se considera que un usuario está disponible para este asiento si aún no tiene esta licencia asignada a ellos, y la propiedad Auto-Asignación de Licencia está habilitada en su cuenta de usuario.', - 'enabled_tooltip' => 'Asignar TODOS los asientos (o tantos como estén disponibles) para TODOS los usuarios', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos disponibles actualmente', - 'success' => '¡Licencia asignada con éxito! | ¡:count Licencias fueron asignadas con éxito!', - 'error_no_seats' => 'No quedan asientos restantes para esta licencia.', - 'warn_not_enough_seats' => ':count usuarios fueron asignados a esta licencia, pero nos quedamos sin asientos de licencia disponibles.', + 'button' => 'Asignar todas las licencias', + 'modal' => 'Esta acción asignará una licencia para el primer usuario disponible. | Esta acción asignará todas las :available_seats_count licencias a los primeros usuarios disponibles. Se considera que un usuario está disponible si aún no tiene esta licencia asignada y la propiedad "Autoasignación de licencia" está habilitada en su cuenta de usuario.', + 'enabled_tooltip' => 'Asignar TODAS las licencias (o tantas como estén disponibles) para TODOS los usuarios', + 'disabled_tooltip' => 'Esto está deshabilitado porque actualmente no hay licencias disponibles', + 'success' => '¡Licencia asignada exitosamente! | ¡Licencias :count asignadas exitosamente!', + 'error_no_seats' => 'No quedan licencias disponibles.', + 'warn_not_enough_seats' => 'Se asignaron :count usuarios a esta licencia, y se agotaron las licencias disponibles.', 'warn_no_avail_users' => 'Nada que hacer. No hay usuarios que no tengan esta licencia asignada.', - 'log_msg' => 'Asignación mediante asignación masiva de licencias en la interfaz de licencias', + 'log_msg' => 'Asignada vía asignación masiva en página de licencias', ], ], - 'below_threshold' => 'Solo quedan :remaining_count asientos para esta licencia con una cantidad mínima de :min_amt. Puede considerar comprar más asientos.', + 'below_threshold' => 'Solo quedan :remaining_count licencias y su cantidad mínima es de :min_amt. Puede considerar la compra de más licencias.', 'below_threshold_short' => 'Este artículo está por debajo de la cantidad mínima requerida.', ); diff --git a/resources/lang/es-MX/admin/licenses/message.php b/resources/lang/es-MX/admin/licenses/message.php index f8a5f2f385..3758c5bbac 100644 --- a/resources/lang/es-MX/admin/licenses/message.php +++ b/resources/lang/es-MX/admin/licenses/message.php @@ -6,14 +6,14 @@ return array( 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', 'asset_does_not_exist' => 'El equipo que intentas asignar a esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', - 'assoc_users' => 'Esta categoría está asignada al menos a un modelo y no puede ser eliminada.', + 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', 'not_found' => 'Licencia no encontrada', - 'seats_available' => ':seat_count plazas disponibles', + 'seats_available' => ':seat_count disponibles', 'create' => array( - 'error' => 'La categoría no se ha creado, intentalo de nuevo.', + 'error' => 'La licencia no fue creada, por favor inténtelo de nuevo.', 'success' => 'Categoría creada correctamente.' ), @@ -23,32 +23,34 @@ return array( ), 'upload' => array( - 'error' => 'Archivo(s) no cargado. Por favor, vuelva a intentarlo.', + 'error' => 'Archivo(s) no cargado(s). Por favor, inténtelo de nuevo.', 'success' => 'Archivo(s) cargado correctamente.', 'nofiles' => 'No seleccionó ningún archivo para ser cargado, o el archivo que seleccionó es demasiado grande', - 'invalidfiles' => 'Uno o más de tus ficheros son demasiado grandes o de un tipo no permitido. Los tipos permitidos son png, gif, jpg, doc, docx, pdf, txt, zip, rar, rtf, xml y lic.', + 'invalidfiles' => 'Uno o más de sus archivos es demasiado grande o es un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, rar, rtf, xml y lic.', ), 'update' => array( - 'error' => 'La categoría no se ha actualizado, intentalo de nuevo.', + 'error' => 'La licencia no fue actualizada, por favor inténtelo de nuevo', 'success' => 'Categoría actualizada correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta licencia?', - 'error' => 'Ha habido un problema eliminando la categoría. Intentalo de nuevo.', + 'error' => 'Hubo un problema al eliminar la licencia. Por favor, inténtelo de nuevo.', 'success' => 'Categoría eliminada.' ), 'checkout' => array( - 'error' => 'Equipo no asignado, intentalo de nuevo', - 'success' => 'Equipo asignado.', - 'not_enough_seats' => 'No hay suficientes asientos de licencia disponibles para la compra', + 'error' => 'Hubo un problema asignando la licencia. Por favor, inténtelo de nuevo.', + 'success' => 'La licencia fue asignada con éxito', + 'not_enough_seats' => 'No hay suficientes licencias disponibles para asignar', + 'mismatch' => 'La licencia proporcionada no coincide con la licencia seleccionada', + 'unavailable' => 'Esta licencia no está disponible para ser asignada.', ), 'checkin' => array( - 'error' => 'Hubo un problema devolviendo la licencia. Por favor, inténtalo de nuevo.', - 'success' => 'Equipo quitado correctamente.' + 'error' => 'Hubo un problema ingresando la licencia. Por favor, inténtelo de nuevo.', + 'success' => 'La licencia fue ingresada correctamente' ), ); diff --git a/resources/lang/es-MX/admin/licenses/table.php b/resources/lang/es-MX/admin/licenses/table.php index 2d5286e577..5e1a8cc1c6 100644 --- a/resources/lang/es-MX/admin/licenses/table.php +++ b/resources/lang/es-MX/admin/licenses/table.php @@ -3,14 +3,14 @@ return array( 'assigned_to' => 'Asignada a', - 'checkout' => 'Quita/Asigna', + 'checkout' => 'Entrada/Salida', 'deleted_at' => 'Eliminado el', 'id' => 'ID', 'license_email' => 'Email de licencia', 'license_name' => 'Licenciado a', 'purchase_date' => 'Fecha de compra', 'purchased' => 'Comprada', - 'seats' => 'Instalaciones', + 'seats' => 'Total de licencias', 'hardware' => 'Equipo', 'serial' => 'N. Serie', 'title' => 'Categoría de equipo', diff --git a/resources/lang/es-MX/admin/locations/message.php b/resources/lang/es-MX/admin/locations/message.php index b2a44e39a5..06956564e5 100644 --- a/resources/lang/es-MX/admin/locations/message.php +++ b/resources/lang/es-MX/admin/locations/message.php @@ -3,15 +3,15 @@ return array( 'does_not_exist' => 'La ubicación no existe.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', - 'assigned_assets' => 'Recursos asignados', + 'assigned_assets' => 'Activos asignados', 'current_location' => 'Ubicación actual', 'create' => array( - 'error' => 'Localización no creada, Intentalo de nuevo.', + 'error' => 'La ubicación no pudo ser creada, por favor inténtelo de nuevo.', 'success' => 'La ubicación fue creada exitosamente.' ), diff --git a/resources/lang/es-MX/admin/locations/table.php b/resources/lang/es-MX/admin/locations/table.php index a523cc9eb4..87bd03373f 100644 --- a/resources/lang/es-MX/admin/locations/table.php +++ b/resources/lang/es-MX/admin/locations/table.php @@ -17,15 +17,15 @@ return [ 'address' => 'Dirección', 'address2' => '2da linea de Dirección', 'zip' => 'Código postal', - 'locations' => 'Localizaciones', + 'locations' => 'Ubicaciones', 'parent' => 'Ubicación padre', 'currency' => 'Divisa de la ubicación', 'ldap_ou' => 'Búsqueda LDAP OU', 'user_name' => 'Nombre de usuario', 'department' => 'Departamento', 'location' => 'Ubicación', - 'asset_tag' => 'Etiqueta de Activo', - 'asset_name' => 'Nombre de Activo', + 'asset_tag' => 'Placa del activo', + 'asset_name' => 'Nombre', 'asset_category' => 'Categoría', 'asset_manufacturer' => 'Fabricante', 'asset_model' => 'Modelo', diff --git a/resources/lang/es-MX/admin/manufacturers/message.php b/resources/lang/es-MX/admin/manufacturers/message.php index 5632d048ea..85dee8043f 100644 --- a/resources/lang/es-MX/admin/manufacturers/message.php +++ b/resources/lang/es-MX/admin/manufacturers/message.php @@ -2,17 +2,17 @@ return array( - 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se puede utilizar en tu URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', + 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se pueden utilizar en su URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', 'does_not_exist' => 'Fabricante inexistente.', - 'assoc_users' => 'Este Fabricante está asociado al menos a un modelo y no puede ser eliminado', + 'assoc_users' => 'Este fabricante está actualmente asociado con al menos un modelo y no se puede eliminar. Por favor, actualice sus modelos para dejar de hacer referencia a este fabricante y vuelva a intentarlo. ', 'create' => array( - 'error' => 'Fabricante no creado, Intentalo de nuevo.', + 'error' => 'El fabricante no fue creado, por favor inténtelo de nuevo.', 'success' => 'Fabricante creado.' ), 'update' => array( - 'error' => 'Fabricante no actualizado, Intentalo de nuevo', + 'error' => 'El fabricante no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Fabricante actualizado.' ), @@ -23,8 +23,8 @@ return array( 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este fabricante?', - 'error' => 'Hubo un problema eliminando el fabricante. Por favor, inténtalo de nuevo.', - 'success' => 'Fabricante Eliminado.' + 'error' => 'Ocurrió un problema eliminando el fabricante. Por favor, intente nuevamente.', + 'success' => 'El fabricante se ha eliminado correctamente.' ) ); diff --git a/resources/lang/es-MX/admin/manufacturers/table.php b/resources/lang/es-MX/admin/manufacturers/table.php index f06114aa48..87607feb2a 100644 --- a/resources/lang/es-MX/admin/manufacturers/table.php +++ b/resources/lang/es-MX/admin/manufacturers/table.php @@ -4,13 +4,13 @@ return array( 'about_manufacturers_title' => 'Sobre fabricantes', 'about_manufacturers_text' => 'Los fabricantes son las empresas que crean sus activos. Aquí puede almacenar importante información de contacto para soporte, la cual se mostrará en las páginas de detalle de sus activos.', 'asset_manufacturers' => 'Fabricantes de activos', - 'create' => 'Crear Fabricante', + 'create' => 'Crear fabricante', 'id' => 'ID', 'name' => 'Nombre', 'support_email' => 'Email de soporte', 'support_phone' => 'Teléfono de soporte', 'support_url' => 'URL de soporte', 'warranty_lookup_url' => 'URL de búsqueda de garantía', - 'update' => 'Actualizar Fabricante', + 'update' => 'Actualizar fabricante', ); diff --git a/resources/lang/es-MX/admin/models/general.php b/resources/lang/es-MX/admin/models/general.php index 42cb55283f..7843e61eb9 100644 --- a/resources/lang/es-MX/admin/models/general.php +++ b/resources/lang/es-MX/admin/models/general.php @@ -7,12 +7,12 @@ return array( 'bulk_delete' => 'Borrar Grandes Modelos de Activos', 'bulk_delete_help' => 'Usa las casillas de verificación para confirmar la eliminación de los modelos de activos. Los modelos de activos tienen activos asociados que no pueden ser eliminados hasta que los activos sean asociados con un modelo diferente.', 'bulk_delete_warn' => 'Está a punto de eliminar un modelo de activo.|Está a punto de eliminar :model_count modelos de activos.', - 'restore' => 'Restaurar Modelo', + 'restore' => 'Restaurar modelo', 'requestable' => 'Los usuarios pueden solicitar este modelo', 'show_mac_address' => 'Mostrar el campo de la dirección MAC en los equipos de este modelo', 'view_deleted' => 'Ver Borrados', 'view_models' => 'Ver modelos', - 'fieldset' => 'Grupos de campo', + 'fieldset' => 'Grupo de campos', 'no_custom_field' => 'No hay campos personalizados', - 'add_default_values' => 'Add default values', + 'add_default_values' => 'Agregar valores predeterminados', ); diff --git a/resources/lang/es-MX/admin/models/message.php b/resources/lang/es-MX/admin/models/message.php index dd211fafb6..3476d1c3fe 100644 --- a/resources/lang/es-MX/admin/models/message.php +++ b/resources/lang/es-MX/admin/models/message.php @@ -2,21 +2,21 @@ return array( - 'deleted' => 'Modelo de recurso eliminado', + 'deleted' => 'Se eliminó el modelo del activo', 'does_not_exist' => 'Modelo inexistente.', - 'no_association' => '¡ADVERTENCIA! ¡El modelo de activo para este artículo no es válido o no se encuentra!', + 'no_association' => '¡ADVERTENCIA! ¡El modelo de activo para este artículo no es válido o no existe!', 'no_association_fix' => 'Esto causará problemas raros y horribles. Edita este activo para asignarlo a un modelo.', - 'assoc_users' => 'Este modelo está asignado a uno o más equipos y no puede ser eliminado', - + 'assoc_users' => 'Este modelo está asociado a uno o más activos y no puede ser eliminado. Por favor, elimine los activos y vuelva a intentarlo. ', + 'invalid_category_type' => 'Esta categoría debe ser una categoría de activos.', 'create' => array( - 'error' => 'Modelo no creado, Intentalo de nuevo.', - 'success' => 'Modelo creado.', + 'error' => 'El modelo no fue creado, por favor inténtelo de nuevo.', + 'success' => 'El modelo fue creado exitosamente.', 'duplicate_set' => 'Ya existe un modelo de equipo con el mismo nombre, fabricante y número de modelo.', ), 'update' => array( - 'error' => 'Modelo no actualizado, Intentalo de nuevo', + 'error' => 'El modelo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'Modelo actualizado.', ), diff --git a/resources/lang/es-MX/admin/models/table.php b/resources/lang/es-MX/admin/models/table.php index e3ef797e2f..12e3078e86 100644 --- a/resources/lang/es-MX/admin/models/table.php +++ b/resources/lang/es-MX/admin/models/table.php @@ -2,15 +2,15 @@ return array( - 'create' => 'Crear Modelo Equipo', + 'create' => 'Crear modelo de activo', 'created_at' => 'Creado el', - 'eol' => 'EOL', + 'eol' => 'Fin de soporte (EOL)', 'modelnumber' => 'Modelo No.', 'name' => 'Nombre del modelo de activo', - 'numassets' => 'Equipos', - 'title' => 'Modelos Equipos', + 'numassets' => 'Activos', + 'title' => 'Modelos de activos', 'update' => 'Actualizar modelo de activo', - 'view' => 'Ver Modelo', + 'view' => 'Ver modelo de activo', 'update' => 'Actualizar modelo de activo', 'clone' => 'Clonar Modelo', 'edit' => 'Editar Modelo', diff --git a/resources/lang/es-MX/admin/reports/general.php b/resources/lang/es-MX/admin/reports/general.php index 90e07caee4..d2056b1b56 100644 --- a/resources/lang/es-MX/admin/reports/general.php +++ b/resources/lang/es-MX/admin/reports/general.php @@ -1,7 +1,7 @@ 'Selecciona las opciones de tu informe de Equipos.', + 'info' => 'Seleccione las opciones que desea para el informe de activos.', 'deleted_user' => 'Usuario eliminado', 'send_reminder' => 'Enviar recordatorio', 'reminder_sent' => 'Recordatorio enviado', diff --git a/resources/lang/es-MX/admin/reports/message.php b/resources/lang/es-MX/admin/reports/message.php index a8f61aa993..dcd9c52741 100644 --- a/resources/lang/es-MX/admin/reports/message.php +++ b/resources/lang/es-MX/admin/reports/message.php @@ -1,5 +1,5 @@ 'Debes seleccionar al menos UNA opción.' + 'error' => 'Debe seleccionar al menos UNA opción.' ); diff --git a/resources/lang/es-MX/admin/settings/general.php b/resources/lang/es-MX/admin/settings/general.php index 8da741e52a..734e4002ae 100644 --- a/resources/lang/es-MX/admin/settings/general.php +++ b/resources/lang/es-MX/admin/settings/general.php @@ -3,12 +3,12 @@ return [ 'ad' => 'Directorio Activo', 'ad_domain' => 'Dominio del Directorio Activo', - 'ad_domain_help' => 'Esto es a veces el mismo que su correo electrónico de dominio, pero no siempre.', + 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Asignar nombre de dominio al campo del nombre de usuario', 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', 'admin_cc_email' => 'Copiar en correo electrónico', - 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de devolución/asignación que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', + 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administración', 'is_ad' => 'Este es un servidor de Directorio Activo', 'alerts' => 'Alertas', @@ -18,29 +18,29 @@ return [ 'alerts_enabled' => 'Alertas habilitadas', 'alert_interval' => 'Limite de alertas de expiración (en días)', 'alert_inv_threshold' => 'Umbral de alerta del inventario', - 'allow_user_skin' => 'Permitir Tema del usuario', - 'allow_user_skin_help_text' => 'Al marcar esta casilla se permitirá al usuario sustituir el tema de la interfase con uno diferente.', - 'asset_ids' => 'IDs de Recurso', + 'allow_user_skin' => 'Permitir al usuario cambiar la apariencia', + 'allow_user_skin_help_text' => 'Si se marca esta casilla, el usuario podrá reemplazar la apariencia de la interfaz con una diferente.', + 'asset_ids' => 'Códigos de los activos', 'audit_interval' => 'Intervalo de auditoría', 'audit_interval_help' => 'Si está obligado a auditar físicamente sus activos con regularidad, introduzca el intervalo en meses que utilice. Si actualiza este valor, se actualizarán todas las "próximas fechas de auditoría" de los activos con una fecha de auditoría próxima.', 'audit_warning_days' => 'Umbral de advertencia de auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación es necesario avisar que se deben auditar los activos?', - 'auto_increment_assets' => 'Generar etiquetas de activos que incrementan automáticamente', + 'auto_increment_assets' => 'Generar placas de activos autoincrementables', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Primero habilite etiquetas de activos auto-incrementantes para configurar esto', + 'auto_incrementing_help' => 'Habilite primero el incremento automático de las placas de activos antes de configurar esto', 'backups' => 'Copias de seguridad', 'backups_help' => 'Crear, descargar y restaurar copias de seguridad ', 'backups_restoring' => 'Restaurando desde la copia de seguridad', 'backups_upload' => 'Cargar copia de seguridad', 'backups_path' => 'Las copias de seguridad en el servidor se almacenan en :path', - 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker.)

Su base de datos completa :app_name y cualquier archivo subido será completamente reemplazado por lo que hay en el archivo de copia de seguridad. ', + 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker).

Su base de datos completa de :app_name y cualquier archivo cargado será completamente reemplazado por lo que hay en la copia de seguridad. ', 'backups_logged_out' => 'A todos los usuarios existentes, incluido usted, se le cerrará la sesión una vez que la restauración haya finalizado.', 'backups_large' => 'Las copias de seguridad muy grandes pueden agotar el tiempo de espera en el intento de restauración y todavía pueden necesitar ser ejecutadas a través de la línea de comandos. ', 'barcode_settings' => 'Configuración de Código de Barras', 'confirm_purge' => 'Confirmar la purga', - 'confirm_purge_help' => 'Introduzca el texto "DELETE" en el cuadro de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. (Se recomienda hacer una copia de seguridad previamente, para estar seguro.)', + 'confirm_purge_help' => 'Introduzca el texto "DELETE" en la casilla de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. Debería hacer primero una copia de seguridad, para estar seguro.', 'custom_css' => 'CSS Personalizado', - 'custom_css_help' => 'Ingrese cualquier CSS personalizado que desee utilizar. No incluya tags como: <style></style>.', + 'custom_css_help' => 'Introduzca cualquier CSS personalizado que desee utilizar. No incluya las etiquetas <style></style>.', 'custom_forgot_pass_url' => 'Reestablecer URL de Contraseña Personalizada', 'custom_forgot_pass_url_help' => 'Esto remplaza la URL incorporada para las contraseñas olvidadas en la pantalla de inicio, útil para dirigir a las personas a una funcionalidad de restablecimiento de contraseña LDAP interna o alojada. Esto efectivamente desactivará la funcionalidad local de olvido de contraseña.', 'dashboard_message' => 'Mensaje en el tablero', @@ -52,7 +52,7 @@ return [ 'acceptance_note' => 'Añada una nota para su decisión (opcional)', 'display_asset_name' => 'Mostrar nombre del activo', 'display_checkout_date' => 'Mostrar fecha de asignación', - 'display_eol' => 'Mostrar EOL', + 'display_eol' => 'Mostrar fin de soporte (EOL) en la vista de tabla', 'display_qr' => 'Mostrar Códigos QR', 'display_alt_barcode' => 'Mostrar códigos de barras en 1D', 'email_logo' => 'Logo de correo electrónico', @@ -71,7 +71,7 @@ return [ 'general_settings_keywords' => 'soporte de la compañía, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, acuerdo de uso, términos y condiciones, gravatar, términos de servicio, tablero de indicadores, privacidad', 'general_settings_help' => 'Acuerdo de uso predeterminado y más', 'generate_backup' => 'Generar Respaldo', - 'google_workspaces' => 'Espacios de trabajo de Google', + 'google_workspaces' => 'Google Workspace', 'header_color' => 'Color de encabezado', 'info' => 'Estos parámetros permirten personalizar ciertos aspectos de la aplicación.', 'label_logo' => 'Logo de etiqueta', @@ -87,14 +87,14 @@ return [ 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Ajustes LDAP', - 'ldap_client_tls_cert_help' => 'El certificado TLS de cliente y la clave para las conexiones LDAP normalmente sólo son útiles en las configuraciones de Google Workspace con "Secure LDAP". Ambas son requeridas.', + 'ldap_client_tls_cert_help' => 'El certificado TLS del cliente y la clave para las conexiones LDAP normalmente solo son útiles en las configuraciones de Google Workspace con "LDAP Seguro". Ambas son requeridas.', 'ldap_location' => 'Ubicación LDAP', 'ldap_location_help' => 'El campo Ubicación de Ldap debe utilizarse si una OU no está siendo utilizada en el DN del enlace base. Deja este espacio en blanco si se utiliza una búsqueda OU.', - 'ldap_login_test_help' => 'Introduce un nombre de usuario LDAP válido y una contraseña de la DN base que especificaste anteriormente para probar si tu inicio de sesión LDAP está configurado correctamente. DEBES GUARDAR TUS CONFIGURACIONES LDAP ACTUALIZADAS PRIMERO.', - 'ldap_login_sync_help' => 'Esto sólo prueba que LDAP puede sincronizarse correctamente. Si tu solicitud de Autenticación LDAP no es correcta, los usuarios aún no podrían iniciar sesión. DEBES GUARDAR TUS CONFIGURACIONES LDAP ACTUALIZADAS PRIMERO.', + 'ldap_login_test_help' => 'Introduzca un nombre de usuario y una contraseña LDAP válidos del DN base que especificó anteriormente para comprobar si el inicio de sesión LDAP está configurado correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', + 'ldap_login_sync_help' => 'Esto solo comprueba que el LDAP puede sincronizarse correctamente. Si su solicitud de autenticación LDAP no es correcta, los usuarios aún no podrían iniciar sesión. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', 'ldap_manager' => 'Gestor LDAP', 'ldap_server' => 'Servidor LDAP', - 'ldap_server_help' => 'Esto debería empezar con ldap:// (sin codificar o TLS) o ldaps:// (para SSL)', + 'ldap_server_help' => 'Esto debería comenzar con ldap:// (sin cifrado) o con ldaps:// (para TLS o SSL)', 'ldap_server_cert' => 'Certificado de validación SSL LDAP', 'ldap_server_cert_ignore' => 'Permitir certificados SSL inválidos', 'ldap_server_cert_help' => 'Seleccione esta casilla si está utilizando un certificado SSL autofirmado y desea aceptar un certificado SSL inválido.', @@ -109,21 +109,21 @@ return [ 'ldap_basedn' => 'Enlazar base DN', 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de Contraseña LDAP', - 'ldap_pw_sync_help' => 'Desmarca esta casilla si no quieres mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Desactivar esto significa que tus usuarios no podrán acceder si tu servidor LDAP no está disponible por algún motivo.', + 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', 'ldap_username_field' => 'Campo de usuario', 'ldap_lname_field' => 'Apellido', 'ldap_fname_field' => 'Nombre LDAP', 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de comprobar los elementos dentro o fuera de ellos, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

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

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', 'ldap_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'Email LDAP', 'ldap_test' => 'Probar LDAP', 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de Software', - 'load_remote' => 'Usar Gravatar', - 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar scripts desde el Internet externo. Esto evitará que Snipe-IT intente cargar imágenes desde Gravatar.', + 'load_remote' => 'Cargar avatares remotos', + 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar secuencias de comandos (scripts) desde Internet . Esto evitará que Snipe-IT intente cargar avatares de Gravatar u otras fuentes externas.', 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', @@ -143,18 +143,18 @@ return [ 'login_remote_user_header_name_help' => 'Usar la cabecera especificada en lugar de REMOTE_USER', 'logo' => 'Logo', 'logo_print_assets' => 'Usar en Impresión', - 'logo_print_assets_help' => 'Usar marca en la lista imprimible de equipos', + 'logo_print_assets_help' => 'Utilice la marca de la empresa en las listas de activos imprimibles ', 'full_multiple_companies_support_help_text' => 'Limitar los usuarios asignados a compañías (incluyendo administradores) solo a los activos de esa compañía.', 'full_multiple_companies_support_text' => 'Soporte completo a múltiples compañías', 'show_in_model_list' => 'Mostrar en menús desplegables de modelos', 'optional' => 'opcional', 'per_page' => 'Resultados por página', 'php' => 'Versión de PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'Información de PHP', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, sistema, información', 'php_overview_help' => 'PHP Información del sistema', - 'php_gd_info' => 'Debes instalar php-gd para mostrar Códigos QR, ver instrucciones de instalación en .', + 'php_gd_info' => 'Debe instalar php-gd para mostrar códigos QR, consulte las instrucciones de instalación.', 'php_gd_warning' => 'PHP Image Processing y GD plugin NO instalados.', 'pwd_secure_complexity' => 'Complejidad de la contraseña', 'pwd_secure_complexity_help' => 'Seleccione las reglas de complejidad de las contraseñas que desee aplicar.', @@ -166,9 +166,9 @@ return [ 'pwd_secure_min' => 'Caracteres mínimos de contraseña', 'pwd_secure_min_help' => 'El valor mínimo permitido es 8', 'pwd_secure_uncommon' => 'Evitar contraseñas comunes', - 'pwd_secure_uncommon_help' => 'Esto impedirá que los usuarios usen contraseñas comunes de las 10,000 contraseñas principales que se notifican en las infracciones.', + 'pwd_secure_uncommon_help' => 'Esto impedirá que los usuarios usen contraseñas comunes de las 10,000 contraseñas más usuales reportadas en fugas de datos.', 'qr_help' => 'Activa Códigos QR antes para poder ver esto', - 'qr_text' => 'Texto Código QR', + 'qr_text' => 'Texto del código QR', 'saml' => 'SAML', 'saml_title' => 'Actualizar ajustes de SAML', 'saml_help' => 'Configuración SAML', @@ -181,16 +181,16 @@ return [ 'saml_sp_metadata_url' => 'URL Metadatos', 'saml_idp_metadata' => 'Metadatos SAML IdP', 'saml_idp_metadata_help' => 'Puede especificar los metadatos IdP usando un archivo URL o XML.', - 'saml_attr_mapping_username' => 'Mapeo de Atributos - Nombre de Usuario', - 'saml_attr_mapping_username_help' => 'NameID se utilizará si el mapeo de atributos no está especificado o no es válido.', + 'saml_attr_mapping_username' => 'Asociar atributo - Nombre de usuario', + 'saml_attr_mapping_username_help' => 'NameID se utilizará si la asociación de atributos no está especificada o no es válida.', 'saml_forcelogin_label' => 'Forzar inicio de sesión SAML', 'saml_forcelogin' => 'Hacer SAML el inicio de sesión principal', - 'saml_forcelogin_help' => 'Puedes usar \'/login?nosaml\' para llegar a la página de inicio de sesión normal.', + 'saml_forcelogin_help' => 'Puede usar \'/login?nosaml\' para ir a la página de inicio de sesión normal.', 'saml_slo_label' => 'Cerrar sesión única SAML', 'saml_slo' => 'Enviar una solicitud de salida a IdP al cerrar sesión', 'saml_slo_help' => 'Esto causará que el usuario sea redirigido primero a la IdP al cerrar sesión. Dejar desmarcado si el IdP no soporta correctamente SAML SLO iniciado por SP.', 'saml_custom_settings' => 'Configuración personalizada SAML', - 'saml_custom_settings_help' => 'Puedes especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úsalo bajo tu propio riesgo.', + 'saml_custom_settings_help' => 'Puede especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úselo bajo su propio riesgo.', 'saml_download' => 'Descargar metadatos', 'setting' => 'Parámetro', 'settings' => 'Configuración', @@ -199,13 +199,13 @@ return [ 'show_archived_in_list_text' => 'Mostrar activos archivados en el listado de "todos los activos"', 'show_assigned_assets' => 'Mostrar activos asignados a activos', 'show_assigned_assets_help' => 'Mostrar activos que fueron asignados a otros activos en Ver usuario -> Activos, Ver usuario -> Información -> Imprimir todos los asignados y en Cuenta -> Ver elementos asignados.', - 'show_images_in_email' => 'Show images in emails', - 'show_images_in_email_help' => 'Uncheck this box if your Snipe-IT installation is behind a VPN or closed network and users outside the network will not be able to load images served from this installation in their emails.', + 'show_images_in_email' => 'Mostrar imágenes en correos electrónicos', + 'show_images_in_email_help' => 'Desmarque esta casilla si su instalación de Snipe-IT está detrás de una red privada o VPN y los usuarios fuera de la red no pueden cargar las imágenes publicadas desde este servidor de Snipe-IT en sus correos electrónicos.', 'site_name' => 'Nombre del sitio', 'integrations' => 'Integraciones', 'slack' => 'Slack', 'general_webhook' => 'Webhook general', - 'ms_teams' => 'Equipos Microsoft', + 'ms_teams' => 'Microsoft Teams', 'webhook' => ':app', 'webhook_presave' => 'Probar para guardar', 'webhook_title' => 'Actualizar ajustes de Webhook', @@ -214,10 +214,10 @@ return [ 'webhook_channel' => 'Canal de :app', 'webhook_endpoint' => 'Endopint de :app', 'webhook_integration' => 'Configuración de :app', - 'webhook_test' =>'Probar integración de :app', - 'webhook_integration_help' => 'La integración de :app es opcional, sin embargo el Endpoint y el canal son necesarios si desea usarlo. Para configurar la integración de :app, primero debe crear un webhook entrante en su cuenta de :app. Haga clic en el botón Probar integración de :app para confirmar que su configuración es correcta antes de guardar. ', - 'webhook_integration_help_button' => 'Una vez que hayas guardado la información de :app, aparecerá un botón de prueba.', - 'webhook_test_help' => 'Comprueba si tu integración con :app está configurada correctamente. PRIMERO DEBES GUARDAR TU CONFIGURACION ACTUALIZADA DE :app.', + 'webhook_test' =>'Probar integración con :app', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', + 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifica quien ve los enlaces de información de Soporte y Manual de Usuarios de Snipe-IT', @@ -227,12 +227,12 @@ return [ 'update' => 'Actualizar Parámetros', 'value' => 'Valor', 'brand' => 'Marca', - 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, encabezado, colores, color, css', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, apariencia, encabezado, colores, color, css', 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Acerca de Ajustes', 'about_settings_text' => 'Estos ajustes te permiten personalizar ciertos aspectos de tu instalación.', - 'labels_per_page' => 'Etiquetas por pàgina', + 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)', 'next_auto_tag_base' => 'Siguiente incremento automático', 'page_padding' => 'Margenès de pàgina (pulgadas)', @@ -243,22 +243,22 @@ return [ 'purge_deleted' => 'Purgar eliminados ', 'labels_display_bgutter' => 'Borde inferior de la Etiqueta', 'labels_display_sgutter' => 'Borde lateral de la Etiqueta', - 'labels_fontsize' => 'Tamaño de fuente de la etiqueta', + 'labels_fontsize' => 'Tamaño de letra de la etiqueta', 'labels_pagewidth' => 'Ancho de la hoja de etiqueta', 'labels_pageheight' => 'Altura de la hoja de etiqueta', 'label_gutters' => 'Espaciamiento de etiqueta (pulgadas)', 'page_dimensions' => 'Dimensiones de la página (pulgadas)', 'label_fields' => 'Campos visibles de la etiqueta', 'inches' => 'pulgadas', - 'width_w' => 'an', - 'height_h' => 'al', + 'width_w' => 'ancho', + 'height_h' => 'alto', 'show_url_in_emails' => 'Enlace a Snipe-IT en correos electrónicos', - 'show_url_in_emails_help_text' => 'Desmarca esta casilla si no deseas volver a vincular tu instalación de Snipe-IT en tus pies de página de correo electrónico. Útil si la mayoría de sus usuarios nunca inician sesión.', - 'text_pt' => 'pt', + 'show_url_in_emails_help_text' => 'Desmarque esta casilla si no desea vincular su instalación de Snipe-IT en el pie de página de correo electrónico. Útil si la mayoría de sus usuarios nunca se conectan. ', + 'text_pt' => 'puntos', 'thumbnail_max_h' => 'Altura máxima de la miniatura', 'thumbnail_max_h_help' => 'Altura máxima en píxeles que las miniaturas pueden mostrar en la vista de listado. Mín. 25, máximo 500.', 'two_factor' => 'Autenticación de dos factores', - 'two_factor_secret' => 'Código de verificación en dos factores', + 'two_factor_secret' => 'Código de verificación de dos factores', 'two_factor_enrollment' => 'Inscripción en verificación de dos factores', 'two_factor_enabled_text' => 'Activar la verificación de dos factores', 'two_factor_reset' => 'Restablecer el secreto en verificación de dos factores', @@ -267,7 +267,7 @@ return [ 'two_factor_reset_error' => 'Falló la Verificación en dos pasos del dispositivo', 'two_factor_enabled_warning' => 'Al activar el doble factor si no está activado, se le obligará inmediatamente a autenticarse con un dispositivo registrado en Google Auth. Tendrá la posibilidad de inscribir su dispositivo si uno no está inscrito actualmente.', 'two_factor_enabled_help' => 'Esto activará la autenticación de dos factores usando Google Authenticator.', - 'two_factor_optional' => 'Selectiva (los usuarios pueden activar o desactivar si está permitido)', + 'two_factor_optional' => 'Selectivo (los usuarios pueden activar o desactivar si está permitido)', 'two_factor_required' => 'Requerido para todos los usuarios', 'two_factor_disabled' => 'Desactivado', 'two_factor_enter_code' => 'Ingrese el código de verificación de dos factores', @@ -283,23 +283,23 @@ return [ 'vertical' => 'vertical', 'horizontal' => 'horizontal', 'unique_serial' => 'Números de serie únicos', - 'unique_serial_help_text' => 'Al marcar esta casilla se aplicará una restricción única en los seriales de los equipos', - 'zerofill_count' => 'Longitud de etiquetas de activos, incluyendo relleno de ceros', + 'unique_serial_help_text' => 'Marcando esta casilla se aplicará una restricción de números de serie únicos a los activos', + 'zerofill_count' => 'Longitud de los números en las placas de los activos, incluyendo los ceros de relleno', 'username_format_help' => 'Esta configuración solo será utilizada por el proceso de importación si no se proporciona un nombre de usuario y tenemos que generar un nombre de usuario por usted.', 'oauth_title' => 'Configuración de la API de OAuth', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'Clientes OAuth', 'oauth' => 'OAuth', - 'oauth_help' => 'Configuración de Endpoint para Oauth', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', - 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', + 'oauth_help' => 'Configuración del punto final (endpoint) OAuth', + 'oauth_no_clients' => 'Aún no ha creado ningún cliente OAuth.', + 'oauth_secret' => 'Secreto', + 'oauth_authorized_apps' => 'Aplicaciones autorizadas', + 'oauth_redirect_url' => 'URL de redireccionamiento', + 'oauth_name_help' => ' Algo que sus usuarios reconocerán y en lo que confiarán.', 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', - 'asset_tag_title' => 'Actualizar configuración de etiquetas de activos', + 'oauth_callback_url' => 'URL de devolución de llamada de autorización de su aplicación (callback URL).', + 'create_client' => 'Crear cliente', + 'no_scopes' => 'Sin scopes', + 'asset_tag_title' => 'Actualizar la configuración de las placas de activos', 'barcode_title' => 'Actualizar ajustes de código de barras', 'barcodes' => 'Códigos de barras', 'barcodes_help_overview' => 'Configuración del código de barras & QR', @@ -333,7 +333,7 @@ return [ 'ldap_ad' => 'LDAP/AD', 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear un usuario ::', - 'create_admin_success' => '¡Éxito! ¡Tu usuario admin ha sido añadido!', + 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', 'setup_migrations' => 'Migraciones de base de datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', @@ -349,7 +349,7 @@ return [ 'label2_title' => 'Titulo', 'label2_title_help' => 'El título a mostrar en etiquetas que lo soporten', 'label2_title_help_phold' => 'El marcador de posición {COMPANY} será reemplazado con el nombre de la compañía del activo', - 'label2_asset_logo' => 'Usar Logo de Activo', + 'label2_asset_logo' => 'Usar logo de activos', 'label2_asset_logo_help' => 'Utilice el logotipo de la compañía asignada, en lugar del valor en :setting_name', 'label2_1d_type' => 'Tipo de código de barras 1D', 'label2_1d_type_help' => 'Formato para códigos de barras 1D', @@ -358,7 +358,7 @@ return [ 'label2_2d_target' => 'Apuntamiento del código de barras 2D', 'label2_2d_target_help' => 'La URL a la que apunta el código de barras 2D cuando se escanea', 'label2_fields' => 'Definiciones del campo', - 'label2_fields_help' => 'Los campos pueden ser agregados, eliminados y reordenados en la columna izquierda. Para cada campo, múltiples opciones para Etiqueta y DataSource pueden ser agregadas, eliminadas y reordenadas en la columna derecha.', + 'label2_fields_help' => 'Los campos se pueden añadir, eliminar y reordenar en la columna izquierda. Para cada campo, se pueden agregar, eliminar y reordenar múltiples opciones para etiquetas y para orígenes de datos en la columna derecha.', 'help_asterisk_bold' => 'El texto escrito como **texto** se mostrará como negrita', 'help_blank_to_use' => 'Deje en blanco para usar el valor de :setting_name', 'help_default_will_use' => ':default usará el valor de :setting_name.
Tenga en cuenta que el valor de los códigos de barra debe estar en cumplimiento con la especificación respectiva para que sean generados exitosamente. Por favor lea la documentación para más detalles. ', @@ -367,13 +367,17 @@ return [ 'google_callback_help' => 'Esto debe introducirse como URL de devolución de llamada (callback) en la configuración de su aplicación de Google OAuth en la consola de desarrollador de Google de su organización .', 'google_login' => 'Configuración de inicio de sesión de Google Workspace', 'enable_google_login' => 'Permitir a los usuarios iniciar sesión con Google Workspace', - 'enable_google_login_help' => 'Los usuarios no serán provistos automáticamente. Deben tener una cuenta existente aquí Y en Google Workspace, y su nombre de usuario debe coincidir con su dirección de correo electrónico de Google Workspace. ', + 'enable_google_login_help' => 'Los usuarios no serán creados automáticamente. Deben tener una cuenta existente aquí Y en Google Workspace, y su nombre de usuario aquí debe coincidir con su dirección de correo electrónico de Google Workspace. ', 'mail_reply_to' => 'Dirección de respuesta de correo', 'mail_from' => 'Correo desde la dirección', 'database_driver' => 'Controlador de base de datos', 'bs_table_storage' => 'Almacenamiento de tabla', - 'timezone' => 'Timezone', + 'timezone' => 'Zona horaria', 'profile_edit' => 'Editar perfil', 'profile_edit_help' => 'Permitir que los usuarios editen sus propios perfiles.', + 'default_avatar' => 'Cargar avatar personalizado por defecto', + 'default_avatar_help' => 'Esta imagen se mostrará como la imagen de perfil si el usuario no tiene foto de perfil.', + 'restore_default_avatar' => 'Restaurar avatar original por defecto del sistema', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/es-MX/admin/settings/message.php b/resources/lang/es-MX/admin/settings/message.php index 4db6a5a1f8..3d457c45a7 100644 --- a/resources/lang/es-MX/admin/settings/message.php +++ b/resources/lang/es-MX/admin/settings/message.php @@ -23,11 +23,11 @@ return [ 'sending' => 'Enviando correo electrónico de prueba...', 'success' => 'Correo enviado!', 'error' => 'El correo no puede ser enviado.', - 'additional' => 'Ningún mensaje de error adicional proporcionado. Comprueba la configuración de tu correo y el registro de mensajes de tu aplicación.' + 'additional' => 'No se proporciona ningún mensaje de error adicional. Compruebe la configuración de su correo y el registro de errores de la aplicación.' ], 'ldap' => [ 'testing' => 'Probando conexión LDAP, Enlace & Consulta ...', - '500' => 'Error 500 del servidor. Por favor, compruebe los registros de mensaje de su servidor para más información.', + '500' => 'Error 500 del servidor. Por favor, compruebe los registros de error de su servidor para más información.', 'error' => 'Algo salió mal :(', 'sync_success' => 'Una muestra de 10 usuarios devueltos desde el servidor LDAP basado en su configuración:', 'testing_authentication' => 'Probando autenticación LDAP...', @@ -36,7 +36,7 @@ return [ 'webhook' => [ 'sending' => 'Enviando mensaje de prueba a :app...', 'success' => '¡Su Integración :webhook_name funciona!', - 'success_pt1' => '¡Éxito! Comprueba el ', + 'success_pt1' => '¡Éxito! Compruebe el ', 'success_pt2' => ' canal para su mensaje de prueba, y asegúrese de hacer clic en GUARDAR abajo para guardar su configuración.', '500' => 'Error 500 del servidor.', 'error' => 'Algo salió mal. :app respondió con: :error_message', diff --git a/resources/lang/es-MX/admin/statuslabels/message.php b/resources/lang/es-MX/admin/statuslabels/message.php index 932c8225a0..607e9f6a50 100644 --- a/resources/lang/es-MX/admin/statuslabels/message.php +++ b/resources/lang/es-MX/admin/statuslabels/message.php @@ -7,7 +7,7 @@ return [ 'assoc_assets' => 'Esta etiqueta de estado está actualmente asociada con al menos un activo y no se puede eliminar. Por favor actualice sus activos para que ya no hagan referencia a este estado e inténtelo de nuevo. ', 'create' => [ - 'error' => 'Etiqueta de estado no fue creada, por favor, inténtelo de nuevo.', + 'error' => 'La etiqueta de estado no pudo ser creada, por favor inténtelo de nuevo.', 'success' => 'Etiqueta de estado fue creada exitosamente.', ], @@ -23,7 +23,7 @@ return [ ], 'help' => [ - 'undeployable' => 'Estos activos no pueden asignarse a nadie.', + 'undeployable' => 'Estos equipos no pueden ser asignados.', 'deployable' => 'Estos activos pueden ser asignados. Una vez estén asignados, asumirán el meta estado de Asignado.', 'archived' => 'Estos equipos no pueden ser asignados y solo se mostrarán en la vista de Archivados. Esto es útil para mantener información de activos por razones de presupuesto o de revisión histórica y al mismo tiempo se excluyen de los activos que se pueden usar en el día a día.', 'pending' => 'Estos activos aún no pueden asignarse, y suelen utilizarse para elementos que están en reparación, pero que se espera que regresen a circulación.', diff --git a/resources/lang/es-MX/admin/suppliers/message.php b/resources/lang/es-MX/admin/suppliers/message.php index d6f1924481..75dc4b1d2d 100644 --- a/resources/lang/es-MX/admin/suppliers/message.php +++ b/resources/lang/es-MX/admin/suppliers/message.php @@ -3,26 +3,26 @@ return array( 'deleted' => 'Proveedor eliminado', - 'does_not_exist' => 'Proveedor does not exist.', + 'does_not_exist' => 'El proveedor no existe.', 'create' => array( - 'error' => 'Proveedor no creado, Intentalo de nuevo.', + 'error' => 'El proveedor no fue creado, por favor inténtelo de nuevo.', 'success' => 'Proveedor creado.' ), 'update' => array( - 'error' => 'Proveedor no actualizado, Intentalo de nuevo', + 'error' => 'El proveedor no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Proveedor actualizado.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este proveedor?', - 'error' => 'Ha habido un problema eliminando el Proveedor. Intentalo de nuevo.', + 'error' => 'Hubo un problema al eliminar el proveedor, por favor inténtelo de nuevo.', 'success' => 'Proveedor eliminado.', - 'assoc_assets' => 'Este proveedor esta asociado a uno o más modelos y no puede ser eliminado. ', - 'assoc_licenses' => 'Este proveedor está actualmente asociado con :licenses_count licencia(s) y no puede ser eliminado. Por favor, actualiza tus licencias para no referenciar este proveedor e inténtalo de nuevo. ', - 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintenances_count mantenedor(es) de activo y no puede ser eliminado. Por favor, actualiza tus mantenedores de activo para no referenciar este proveedor e inténtalo de nuevo. ', + 'assoc_assets' => 'Este proveedor está actualmente asociado con :asset_count activo(s) y no puede ser eliminado. Actualice sus activos para que ya no hagan referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_licenses' => 'Este proveedor está asociado actualmente con :licenses_count licences(s) y no puede ser eliminado. Por favor, actualice sus licencias para dejar de hacer referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintainances_count mantenimiento(s) de activo(s) y no puede ser eliminado. Por favor, actualice el mantenimiento de sus activos para no hacer referencia a este proveedor y vuelva a intentarlo. ', ) ); diff --git a/resources/lang/es-MX/admin/users/general.php b/resources/lang/es-MX/admin/users/general.php index a55161c6b5..ff0211df1d 100644 --- a/resources/lang/es-MX/admin/users/general.php +++ b/resources/lang/es-MX/admin/users/general.php @@ -2,11 +2,11 @@ return [ 'activated_help_text' => 'Este usuario puede iniciar sesión', - 'activated_disabled_help_text' => 'No puedes editar el estado de activación para tu propia cuenta.', - 'assets_user' => 'Equipos asignados a :name', + 'activated_disabled_help_text' => 'No puede editar el estado de activación de su propia cuenta.', + 'assets_user' => 'Activos asignados a :name', 'bulk_update_warn' => 'Está a punto de modificar las propiedades de :user_count usuarios. Por favor, tenga en cuenta que no puede modificar las propiedades de su propio usuario con este formulario, y debe realizar las modificaciones a su propio usuario de forma individual.', - 'bulk_update_help' => 'Este formulario permite actualizar múltiples usuarios simultáneamente. Rellena únicamente los campos que necesites cambiar. Cualquier campo que quede en blanco no se actualizará.', - 'current_assets' => 'Equipos checked out a este usuario', + 'bulk_update_help' => 'Este formulario le permite actualizar varios usuarios a la vez. Solo diligencie los campos que necesita modificar. Los campos que queden en blanco no se modificarán.', + 'current_assets' => 'Activos actualmente asignados a este usuario', 'clone' => 'Clonar Usuario', 'contact_user' => 'Contacta con :name', 'edit' => 'Editar Usuario', @@ -18,7 +18,7 @@ return [ 'ldap_config_text' => 'Las configuraciones de LDAP estàn en: Admin -> Settings. La ubicaciòn seleccionadada sera asignada a todos los usuarios importados.', 'print_assigned' => 'Imprimir todos los asignados', 'email_assigned' => 'Enviar correo con todos los asignados', - 'user_notified' => 'Se ha enviado al usuario un correo con la lista de sus articulos asignados.', + 'user_notified' => 'Se ha enviado al usuario un correo electrónico con lista de los elementos que tiene asignados actualmente.', 'auto_assign_label' => 'Incluye a este usuario al asignar automáticamente licencias elegibles', 'auto_assign_help' => 'Omitir este usuario en la asignación automática de licencias', 'software_user' => 'Software asignado a :name', @@ -35,9 +35,9 @@ return [ 'superadmin_permission_warning' => 'Solo los superadmins pueden conceder acceso de superadmin a un usuario.', 'admin_permission_warning' => 'Solo los usuarios con derechos administrativos o superiores pueden conceder acceso administrativo a un usuario.', 'remove_group_memberships' => 'Remover membresías de grupo', - 'warning_deletion_information' => 'Está a punto de devolver TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', - 'update_user_assets_status' => 'Actualizar todos los recursos para estos usuarios a este estado', - 'checkin_user_properties' => 'Recibir todas las propiedades asociadas con estos usuarios', + 'warning_deletion_information' => 'Está a punto de ingresar TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', + 'update_user_assets_status' => 'Actualizar todos los activos para estos usuarios a este estado', + 'checkin_user_properties' => 'Comprobar todas las propiedades asociadas a estos usuarios', 'remote_label' => 'Este es un usuario remoto', 'remote' => 'Remoto', 'remote_help' => 'Esto puede ser útil si necesita filtrar por usuarios remotos que nunca o raramente asisten a sus ubicaciones físicas.', diff --git a/resources/lang/es-MX/admin/users/message.php b/resources/lang/es-MX/admin/users/message.php index f4e188423e..25d511c5db 100644 --- a/resources/lang/es-MX/admin/users/message.php +++ b/resources/lang/es-MX/admin/users/message.php @@ -3,8 +3,8 @@ return array( 'accepted' => 'Ha aceptado este artículo exitosamente.', - 'declined' => 'Ha declinado con éxito este equipo.', - 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada de administrador no fue guardada porque el gerente seleccionado también estaba en la lista de usuarios a ser editada, y los usuarios no pueden ser sus propios gerentes. Vuelva a seleccionar los usuarios, excluyendo al gerente.', + 'declined' => 'Ha rechazado este activo con exitosamente.', + 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada supervisor (manager) no fue guardada porque el supervisor seleccionado también estaba en la lista de usuarios a editar, y los usuarios no pueden ser su propio supervisor. Vuelva a seleccionar los usuarios, excluyendo al supervisor.', 'user_exists' => 'El Usuario ya existe!', 'user_not_found' => 'El usuario no existe.', 'user_login_required' => 'El campo usuario es obligatorio', @@ -16,7 +16,7 @@ return array( 'password_resets_sent' => 'Los usuarios seleccionados que están activados y tienen una dirección de correo electrónico válida han sido enviados un enlace de restablecimiento de contraseña.', 'password_reset_sent' => '¡Se ha enviado un enlace de restablecimiento de contraseña a :email!', 'user_has_no_email' => 'Este usuario no tiene una dirección de correo electrónico en su perfil.', - 'log_record_not_found' => 'No se pudo encontrar un registro de registro coincidente para este usuario.', + 'log_record_not_found' => 'No se pudo encontrar un registro de eventos que coincida con este usuario.', 'success' => array( @@ -33,14 +33,14 @@ return array( ), 'error' => array( - 'create' => 'Ha habido un problema creando el Usuario. Intentalo de nuevo.', - 'update' => 'Ha habido un problema actualizando el Usuario. Intentalo de nuevo.', - 'delete' => 'Ha habido un problema eliminando el Usuario. Intentalo de nuevo.', + 'create' => 'Hubo un problema al crear el usuario. Por favor, inténtelo de nuevo.', + 'update' => 'Hubo un problema al actualizar el usuario. Por favor, inténtelo de nuevo.', + 'delete' => 'Hubo un problema al eliminar el usuario. Por favor, inténtelo de nuevo.', 'delete_has_assets' => 'Este usuario tiene elementos asignados y no se pueden eliminar.', - 'delete_has_assets_var' => 'Este usuario todavía tienen un activo asignado. Por favor devuélvalo primero.| Este usuario todavía tienen :count activos asignados. Por favor devuélvalos primero.', - 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor primero haga su devolución.|Este usuario todavía tiene :count licencias asignadas. Por favor primero haga su devolución.', - 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor primero haga su devolución.|Este usuario todavía tiene :count accesorios asignados. Por favor primero haga su devolución.', - 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor seleccione otro supervisor primero.|Este usuario todavía supervisa :count ubicaciones. Por favor seleccione otro supervisor primero.', + 'delete_has_assets_var' => 'Este usuario todavía tiene un activo asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count activos asignados. Por favor ingréselos primero.', + 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor ingrésela primero.|Este usuario todavía tiene :count licencias asignadas. Por favor ingréselas primero.', + 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count accesorios asignados. Por favor ingréselos primero.', + 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor primero seleccione otro supervisor.|Este usuario todavía supervisa :count ubicaciones. Por favor primero seleccione otro supervisor.', 'delete_has_users_var' => 'Este usuario todavía supervisa a otro usuario. Por favor primero seleccione otro supervisor para ese usuario.|Este usuario todavía supervisa :count usuarios. Por favor primero seleccione otro supervisor para ellos.', 'unsuspend' => 'Ha habido un problema marcando como no suspendido el Usuario. Intentalo de nuevo.', 'import' => 'Ha habido un problema importando los usuarios. Por favor intente nuevamente.', @@ -56,15 +56,15 @@ return array( ), 'deletefile' => array( - 'error' => 'Archivo no eliminado. Por favor, vuelva a intentarlo.', + 'error' => 'El archivo no fue borrado. Por favor, inténtelo de nuevo.', 'success' => 'Archivo eliminado correctamente.', ), 'upload' => array( 'error' => 'Archivo(s) no cargado. Por favor, vuelva a intentarlo.', 'success' => 'Archivo(s) cargado correctamente.', - 'nofiles' => 'No ha seleccionado ningún archivo para subir', - 'invalidfiles' => 'Uno o más sus archivos es demasiado grande o es de un tipo no permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', + 'nofiles' => 'No seleccionó ningún archivo para cargar', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ), 'inventorynotification' => array( diff --git a/resources/lang/es-MX/admin/users/table.php b/resources/lang/es-MX/admin/users/table.php index 689a978867..3a6a7c866d 100644 --- a/resources/lang/es-MX/admin/users/table.php +++ b/resources/lang/es-MX/admin/users/table.php @@ -10,8 +10,8 @@ return array( 'email' => 'Correo electrónico', 'employee_num' => 'No. Empleado', 'first_name' => 'Nombre', - 'groupnotes' => 'Selecciona un grupo para asignar al usuario, recuerda que un usuario toma los permisos del grupo al que están asignados. Usa ctrl+clic (o cmd+clic en MacOS) para deseleccionar grupos.', - 'id' => 'ID', + 'groupnotes' => 'Seleccione un grupo para asignar al usuario, recuerde que un usuario asume los permisos del grupo al que se le asigna. Use ctrl+click (o cmd+click en MacOS) para anular la selección de grupos.', + 'id' => 'Id', 'inherit' => 'Hereda de', 'job' => 'Cargo', 'last_login' => 'Ultimo Login', @@ -21,7 +21,7 @@ return array( 'manager' => 'Supervisor', 'managed_locations' => 'Ubicaciones gestionadas', 'managed_users' => 'Usuarios gestionados', - 'name' => 'Usuario', + 'name' => 'Nombre', 'nogroup' => 'Aún no se han creado grupos. Para añadir uno, visite: ', 'notes' => 'Notas', 'password_confirm' => 'Confirmar Password', diff --git a/resources/lang/es-MX/auth.php b/resources/lang/es-MX/auth.php index 6b155e9cb1..ae51788b27 100644 --- a/resources/lang/es-MX/auth.php +++ b/resources/lang/es-MX/auth.php @@ -15,6 +15,6 @@ return array( 'failed' => 'Estas credenciales no coinciden con nuestros registros.', 'password' => 'El nombre de usuario o contraseña es incorrecta.', - 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.', + 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtelo de nuevo en :seconds segundos.', ); diff --git a/resources/lang/es-MX/auth/message.php b/resources/lang/es-MX/auth/message.php index 2d48b87fa1..02c181311a 100644 --- a/resources/lang/es-MX/auth/message.php +++ b/resources/lang/es-MX/auth/message.php @@ -11,21 +11,21 @@ return array( 'two_factor' => array( 'already_enrolled' => 'Su dispositivo ya está inscrito.', - 'success' => '¡Hola! Haz iniciado sesión correctamente.', + 'success' => 'Ha iniciado sesión exitosamente.', 'code_required' => 'El código de dos factores es necesario.', 'invalid_code' => 'El código de dos factores no es válido.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Por favor ingrese su código de autenticación de dos factores.', + 'please_enroll' => 'Por favor inscriba un dispositivo en la autenticación de dos factores.', ), 'signin' => array( 'error' => 'Ha habido un problema al iniciar sesión. Por favor, vuelve a intentarlo.', - 'success' => 'has iniciado sesión correctamente.', + 'success' => 'Ha iniciado sesión exitosamente.', ), 'logout' => array( 'error' => 'Hubo un problema al intentar cerrar la sesión, por favor inténtelo de nuevo.', - 'success' => 'Se ha cerrado sesión correctamente.', + 'success' => 'Ha cerrado la sesión exitosamente.', ), 'signup' => array( @@ -39,8 +39,8 @@ return array( ), 'forgot-password-confirm' => array( - 'error' => 'Ha habido un problema al intentar resetear el password. Por favor, vuelve a intentarlo.', - 'success' => 'El password ha sido reseteado correctamente.', + 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor inténtelo de nuevo.', + 'success' => 'Su contraseña se ha restablecido correctamente.', ), diff --git a/resources/lang/es-MX/button.php b/resources/lang/es-MX/button.php index f2b9102492..7dea4ebf3d 100644 --- a/resources/lang/es-MX/button.php +++ b/resources/lang/es-MX/button.php @@ -4,15 +4,16 @@ return [ 'actions' => 'Acciones', 'add' => 'Agregar nuevo', 'cancel' => 'Cancelar', - 'checkin_and_delete' => 'Devolver todo / Eliminar usuario', + 'checkin_and_delete' => 'Ingresar todo / Eliminar usuario', 'delete' => 'Borrar', 'edit' => 'Editar', + 'clone' => 'Clonar', 'restore' => 'Restaurar', 'remove' => 'Eliminar', 'request' => 'Solicitud', 'submit' => 'Enviar', 'upload' => 'Cargar', - 'select_file' => 'Seleccione un archivo...', + 'select_file' => 'Seleccionar Archivo...', 'select_files' => 'Seleccionar archivos...', 'generate_labels' => '{1} Generar Etiqueta|[2,*] Generar Etiquetas', 'send_password_link' => 'Enviar enlace de restablecimiento de contraseña', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Añadir mantenimiento', 'append' => 'Añadir', 'new' => 'Nuevo', + 'var' => [ + 'clone' => 'Clonar :item_type', + 'edit' => 'Editar :item_type', + 'delete' => 'Eliminar :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Crear nuevo :item_type', + 'checkout' => 'Asignar :item_type', + 'checkin' => 'Ingresar :item_type', + ] ]; diff --git a/resources/lang/es-MX/general.php b/resources/lang/es-MX/general.php index 01a53d4bcd..67ef95f15d 100644 --- a/resources/lang/es-MX/general.php +++ b/resources/lang/es-MX/general.php @@ -1,7 +1,7 @@ '2FA reset', + '2FA_reset' => 'Reestablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha de aceptación', @@ -10,12 +10,12 @@ return [ 'action' => 'Acción', 'activity_report' => 'Informe de actividad', 'address' => 'Dirección', - 'admin' => 'Admin', + 'admin' => 'Administrador', 'admin_tooltip' => 'Este usuario tiene privilegios de superadministrador', 'superuser' => 'Superusuario', 'superuser_tooltip' => 'Este usuario es superadministrador', 'administrator' => 'Administrator', - 'add_seats' => 'Sitios añadidos', + 'add_seats' => 'Licencias añadidas', 'age' => "Edad", 'all_assets' => 'Todos los Equipos', 'all' => 'Todos los', @@ -23,18 +23,18 @@ return [ 'asset_models' => 'Modelos', 'asset_model' => 'Modelo', 'asset' => 'Equipo', - 'asset_report' => 'Reporte de Equipos', - 'asset_tag' => 'Etiqueta de activo', - 'asset_tags' => 'Nombre Activo', - 'assets_available' => 'Equipos disponibles', + 'asset_report' => 'Informe de activos', + 'asset_tag' => 'Placa del activo', + 'asset_tags' => 'Placas de activos', + 'assets_available' => 'Activos disponibles', 'accept_assets' => 'Aceptar activos :name', 'accept_assets_menu' => 'Aceptar activos', 'audit' => 'Auditoría', 'audit_report' => 'Registro de auditoría', 'assets' => 'Equipos', 'assets_audited' => 'activos auditados', - 'assets_checked_in_count' => 'activos registrados', - 'assets_checked_out_count' => 'activos entregados', + 'assets_checked_in_count' => 'activos ingresados', + 'assets_checked_out_count' => 'activos asignados', 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', 'assigned_date' => 'Fecha asignada', 'assigned_to' => 'Asignado a :name', @@ -49,7 +49,7 @@ return [ 'bulk_edit' => 'Editar en grupo', 'bulk_delete' => 'Eliminar en grupo', 'bulk_actions' => 'Acciones masivas', - 'bulk_checkin_delete' => 'Hacer Checkin / Eliminar usuarios en masa', + 'bulk_checkin_delete' => 'Ingresar elementos / Borrar usuarios', 'byod' => 'BYOD', 'byod_help' => 'Este dispositivo es propiedad del usuario', 'bystatus' => 'por Estado', @@ -57,14 +57,14 @@ return [ 'categories' => 'Categorías', 'category' => 'Categoría', 'change' => 'Entrada / salida', - 'changeemail' => 'Cambiar Email', - 'changepassword' => 'Cambiar Password', - 'checkin' => 'Devolver', - 'checkin_from' => 'Devolución de', + 'changeemail' => 'Cambiar dirección de correo electrónico', + 'changepassword' => 'Cambiar contraseña', + 'checkin' => 'Ingresar', + 'checkin_from' => 'Ingreso proveniente de', 'checkout' => 'Asignar', 'checkouts_count' => 'Asignaciones', - 'checkins_count' => 'Devoluciones', - 'user_requests_count' => 'Requests', + 'checkins_count' => 'Ingresos', + 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', 'click_here' => 'Pulsa aquí', 'clear_selection' => 'Borrar selección', @@ -85,7 +85,7 @@ return [ 'created_by' => 'Creado por', 'record_created' => 'Registro Creado', 'updated_at' => 'Actualizado en', - 'currency' => '€', // this is deprecated + 'currency' => '$', // this is deprecated 'current' => 'Actual', 'current_password' => 'Contraseña actual', 'customize_report' => 'Personalizar informe', @@ -93,14 +93,14 @@ return [ 'dashboard' => 'Tablero', 'days' => 'días', 'days_to_next_audit' => 'Días a la próxima auditoría', - 'date' => 'Fecha Compra', + 'date' => 'Fecha', 'debug_warning' => '¡Advertencia!', 'debug_warning_text' => 'Esta aplicación esta corriendo en modo producción con debugging activado. Esto puede exponer datos sensibles si su aplicación es accesible desde el exterior. Desactive el modo debug cambiando el valor APP_DEBUG en su archivo .env a false.', 'delete' => 'Borrar', 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', 'deleted' => 'Borrado', - 'delete_seats' => 'Asientos eliminados', + 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', 'departments' => 'Departamentos', 'department' => 'Departamento', @@ -112,7 +112,7 @@ return [ 'download' => 'Descargar', 'download_all' => 'Descargar todo', 'editprofile' => 'Editar perfil', - 'eol' => 'EOL', + 'eol' => 'Fin de soporte (EOL)', 'email_domain' => 'Dominio de correo electrónico', 'email_format' => 'Formato de correo electrónico', 'employee_number' => 'Número de empleado', @@ -132,7 +132,7 @@ return [ 'first' => 'Primero', 'firstnamelastname' => 'Nombre y apellido (janesmith@example.com)', 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', - 'firstinitial.lastname' => 'Inicial nombre y apellido (j.smith@ejemplo.com)', + 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', 'first_name' => 'Nombre', @@ -158,17 +158,17 @@ return [ 'image_upload' => 'Cargar imagen', 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', 'unaccepted_image_type' => 'No fue posible leer este archivo de imagen. Tipos de archivo aceptados son jpg, webp, png, gif y svg. El mimetype de este archivo es: :mimetype.', 'import' => 'Importar', - 'import_this_file' => 'Mapear campos y procesar este archivo', - 'importing' => 'Importando', - 'importing_help' => 'Puede importar activos, accesorios, licencias, componentes, consumibles y usuarios a través de un archivo CSV.

El CSV debe estar delimitado por comas y con formato de encabezados que coincidan con el archivo CSV de muestra en la documentación.', + 'import_this_file' => 'Asociar campos y procesar este archivo', + 'importing' => 'Importar datos', + 'importing_help' => 'Puede importar activos, accesorios, licencias, componentes, consumibles y usuarios a través del archivo CSV.

El CSV debe estar delimitado por comas y formateado con encabezados que coincidan con los de los archivos CSV de muestra en la documentación.', 'import-history' => 'Importar historial', 'asset_maintenance' => 'Mantenimiento de Equipo', 'asset_maintenance_report' => 'Informe mantenimiento de activos', 'asset_maintenances' => 'Mantenimiento de activos', - 'item' => 'Item', + 'item' => 'Elemento', 'item_name' => 'Nombre del elemento', 'import_file' => 'importar archivo CSV', 'import_type' => 'Tipo de importación CSV', @@ -188,10 +188,10 @@ return [ 'feature_disabled' => 'Esta característica se ha desactivado para la versión de demostración.', 'location' => 'Ubicación', 'location_plural' => 'Ubicación|Ubicaciones', - 'locations' => 'Localizaciones', + 'locations' => 'Ubicaciones', 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del Logo es 50px de alto x 500px de ancho. ', 'logout' => 'Desconexión', - 'lookup_by_tag' => 'Buscar etiqueta de activo', + 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimientos', 'manage_api_keys' => 'Administrar claves API', 'manufacturer' => 'Fabricante', @@ -225,13 +225,13 @@ return [ 'previous' => 'Previo', 'processing' => 'Procesando', 'profile' => 'Perfil', - 'purchase_cost' => 'Precio Compra', + 'purchase_cost' => 'Precio de compra', 'purchase_date' => 'Fecha de compra', 'qty' => 'Cant', 'quantity' => 'Cantidad', 'quantity_minimum' => 'Tiene :count artículos por debajo o casi por debajo de los niveles mínimos de cantidad', - 'quickscan_checkin' => 'Devolución rápida con escaneo', - 'quickscan_checkin_status' => 'Estado de devolución', + 'quickscan_checkin' => 'Ingreso rápido con escaneo', + 'quickscan_checkin_status' => 'Resultado del ingreso', 'ready_to_deploy' => 'Listo para asignar', 'recent_activity' => 'Actividad Reciente', 'remaining' => 'Restante', @@ -253,49 +253,49 @@ return [ 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', - 'select_category' => 'Seleccione una categoría', - 'select_datasource' => 'Seleccione un datoscópico', - 'select_department' => 'Seleccione un departamento', + 'select_category' => 'Seleccionar una categoría', + 'select_datasource' => 'Seleccionar un origen de datos', + 'select_department' => 'Seleccionar un departamento', 'select_depreciation' => 'Seleccionar un tipo de amortización', - 'select_location' => 'Seleccione una ubicación', - 'select_manufacturer' => 'Seleccione un fabricante', - 'select_model' => 'Seleccione un modelo', - 'select_supplier' => 'Seleccione un proveedor', - 'select_user' => 'Seleccione un usuario', + 'select_location' => 'Seleccionar una ubicación', + 'select_manufacturer' => 'Seleccionar un fabricante', + 'select_model' => 'Seleccionar un modelo', + 'select_supplier' => 'Seleccionar un proveedor', + 'select_user' => 'Seleccionar un usuario', 'select_date' => 'Seleccione fecha (AAAA-MM-DD)', - 'select_statuslabel' => 'Seleccione un estado', - 'select_company' => 'Seleccione una compañía', + 'select_statuslabel' => 'Seleccionar un estado', + 'select_company' => 'Seleccionar una compañía', 'select_asset' => 'Seleccionar activo', 'settings' => 'Opciones', 'show_deleted' => 'Mostrar Eliminado', 'show_current' => 'Mostrar actual', - 'sign_in' => 'Entrar', + 'sign_in' => 'Iniciar sesión', 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', - 'skin' => 'Tema', + 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Oh mira! ¡Parece que tu integración de :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', 'some_features_disabled' => 'MODO DE DEMOSTRACIÓN: Algunas funciones estan desactivadas para esta instalación.', 'site_name' => 'Sitio', 'state' => 'Provincia', 'status_labels' => 'Etiquetas de estado', - 'status' => 'Estados', + 'status' => 'Estado', 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que desea eliminar', + 'sure_to_delete' => '¿Está seguro que desea eliminar?', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', - 'target' => 'Objetivo', + 'target' => 'Destino', 'time_and_date_display' => 'Hora y fecha', - 'total_assets' => 'Equipos', + 'total_assets' => 'activos', 'total_licenses' => 'licencias totales', 'total_accessories' => 'total de accesorios', 'total_consumables' => 'total de consumibles', 'type' => 'Tipo', 'undeployable' => 'No utilizable', - 'unknown_admin' => 'Admin Desconocido', + 'unknown_admin' => 'Administrador desconocido', 'username_format' => 'Formato del nombre de usuario', 'username' => 'Usuario', 'update' => 'Actualizar', @@ -322,12 +322,12 @@ return [ 'no_files_uploaded' => '¡Archivo cargado exitosamente!', 'token_expired' => 'Su sesión ha caducado. Por favor, inténtelo de nuevo.', 'login_enabled' => 'Inicio de sesión activado', - 'audit_due' => 'Vence la auditoría', + 'audit_due' => 'Próximas auditorías', 'audit_due_days' => 'Activos pendientes para auditoría dentro de :days día|Activos pendientes para auditoría dentro de :days días', - 'checkin_due' => 'Pendiente por devolver', - 'checkin_overdue' => 'Atrasado por devolver', - 'checkin_due_days' => 'Activos que deben ser devueltos dentro de :days día|Activos que deben ser devueltos dentro de :days días', - 'audit_overdue' => 'Atrasado para la auditoría', + 'checkin_due' => 'Próximos a ingresar', + 'checkin_overdue' => 'Devolución atrasada', + 'checkin_due_days' => 'Activos próximos a ingresar dentro de :days día|Activos próximos a ingresar dentro de :days días', + 'audit_overdue' => 'Auditoría atrasada', 'accept' => 'Aceptar :asset', 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', @@ -348,16 +348,16 @@ return [ 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear Usuario Admin', + 'setup_create_admin' => 'Crear usuario Administrador', 'setup_done' => '¡Finalizada!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado', 'checked_out_to' => 'Asignado a', 'fields' => 'Campos', 'last_checkout' => 'Última Asignación', - 'due_to_checkin' => 'Los :count articulos a continuación están a la espera de ser ingresados pronto:', - 'expected_checkin' => 'Fecha esperada de ingreso', - 'reminder_checked_out_items' => 'Este es un recordatorio de los artículos actualmente asignados a usted. Si cree que esta lista es incorrecta, (falta algo o algo que está aqui nunca fue recibido), por favor envie un email a :reply_to_name en :reply_to_address.', + 'due_to_checkin' => 'Los siguientes :count elementos están pendientes por ingresar pronto:', + 'expected_checkin' => 'Fecha esperada de devolución', + 'reminder_checked_out_items' => 'Este es un recordatorio de los elementos que se le han asignado actualmente. Si usted cree que esta lista es incorrecta (falta algo o aparece algo que usted cree que nunca ha recibido), por favor envíe un correo electrónico a :reply_to_name a :reply_to_address.', 'changed' => 'Cambiado', 'to' => 'Para', 'report_fields_info' => '

Seleccione los campos que desea incluir en su informe personalizado y haga clic en Generar. El archivo (custom-asset-report-YYYY-mm-dd.csv) se descargará automáticamente y puede abrirlo en Excel.

@@ -375,7 +375,7 @@ return [ 'sync_results' => 'Resultados de sincronización', 'license_serial' => 'Número de Serie/Clave de Producto', 'invalid_category' => 'Categoría no válida o ausente', - 'invalid_item_category_single' => 'Falta o no válida :type categoría. Por favor actualiza la categoría de este :type para incluir una categoría válida antes de salir.', + 'invalid_item_category_single' => 'Falta o no es válida una categoría de tipo :type. Actualice la categoría de tipo :type para incluir una categoría válida antes de asignar.', 'dashboard_info' => 'Este es su panel de control. Hay muchos similares, pero este es suyo.', '60_percent_warning' => '60% completo (advertencia)', 'dashboard_empty' => 'Parece que aún no ha añadido nada, así que no tenemos nada impresionante que mostrar. ¡Comience añadiendo algunos activos, accesorios, consumibles o licencias ahora!', @@ -391,7 +391,7 @@ return [ 'components_count' => 'Cantidad de componentes', 'licenses_count' => 'Cantidad de licencias', 'notification_error' => 'Error', - 'notification_error_hint' => 'Por favor revise si hay errores en el siguiente formulario', + 'notification_error_hint' => 'Por favor compruebe si hay errores en el siguiente formulario', 'notification_bulk_error_hint' => 'Los siguientes campos tenían errores de validación y no fueron editados:', 'notification_success' => 'Éxito', 'notification_warning' => 'Advertencia', @@ -405,9 +405,9 @@ return [ 'accessory_name' => 'Nombre de accesorio:', 'clone_item' => 'Clonar objeto', 'checkout_tooltip' => 'Asignar este elemento', - 'checkin_tooltip' => 'Devuelva este elemento para que esté disponible para resignar, borrar, etc.', + 'checkin_tooltip' => 'Ingrese este elemento para que esté disponible para resignar, borrar, etc.', 'checkout_user_tooltip' => 'Asignar este elemento a un usuario', - 'checkin_to_diff_location' => 'Puede optar por registrar este activo en una ubicación distinta a la predeterminada :default_location, si es que existe una configurada', + 'checkin_to_diff_location' => 'Puede elegir ingresar este activo a una ubicación distinta de la predeterminada :default_location, si es que se ha definido una', 'maintenance_mode' => 'El servicio no está disponible temporalmente debido a actualizaciones del sistema. Por favor, vuelva más tarde.', 'maintenance_mode_title' => 'Sistema temporalmente no disponible', 'ldap_import' => 'La contraseña de usuario no debe ser administrada por LDAP. (Esto le permite enviar solicitudes de contraseña olvidada.)', @@ -416,8 +416,8 @@ return [ 'additional_files' => 'Archivos adicionales', 'shitty_browser' => 'No se ha detectado ninguna firma. Si está utilizando un navegador más antiguo, por favor utilice un navegador más moderno para completar la aceptación del elemento.', 'bulk_soft_delete' =>'También eliminar parcialmente estos usuarios. Su historial de activos permanecerá intacto a menos/hasta que purgue los registros borrados en los Configuración de administración.', - 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y su artículos han sido reingresados.', - 'bulk_checkin_success' => 'Los artículos para los usuarios seleccionados han sido reingresados.', + 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y sus activos han sido ingresados.', + 'bulk_checkin_success' => 'Los elementos para los usuarios seleccionados han sido ingresados.', 'set_to_null' => 'Eliminar valores para este activo|Eliminar valores para los :asset_count activos ', 'set_users_field_to_null' => 'Eliminar valores de :field para este usuario|Eliminar valores de :field para todos los :user_count usuarios ', 'na_no_purchase_date' => 'N/A - No se proporcionó fecha de compra', @@ -425,7 +425,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tienes :count elementos que requieren aceptación. Haz clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -441,7 +441,7 @@ return [ 'true' => 'Verdadero', 'false' => 'Falso', 'integration_option' => 'Opción de integración', - 'log_does_not_exist' => 'No existe ningún registro de actividad que coincida.', + 'log_does_not_exist' => 'No existe ningún registro de eventos que coincida.', 'merge_users' => 'Fusionar usuarios', 'merge_information' => 'Esto fusionará a los :count usuarios en un solo usuario. Seleccione el usuario en el que desea fusionar a los demás a continuación, y los activos asociados, licencias, etc se moverán al usuario seleccionado. Los otros usuarios serán marcados como eliminados.', 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', @@ -453,8 +453,8 @@ return [ 'merged_log_this_user_from' => 'ID de usuario fusionado :from_id (:from_username) con este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y Guardar', 'update_existing_values' => '¿Actualizar valores existentes?', - 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Generar etiquetas de activos auto-incrementantes está desactivado, por lo que todas las filas necesitan tener la columna "Tag de activo" rellenada.', - 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: Generar etiquetas de activos que incrementan automáticamente está habilitado, por lo que se crearán activos para registros que no tengan "Tag de activo" poblado. Las filas que tengan "Etiqueta de activos" pobladas serán actualizadas con la información proporcionada.', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generación autoincrementable de las placas de activos está desactivada, por lo que todas las filas deben tener la columna "Asset Tag" con información.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: La generación autoincrementable de las placas de activos está activada, por lo que se crearán activos para las filas sin información en la columna "Asset Tag". Las filas que sí tengan informacióin en la columna "Asset Tag" se actualizarán con la información proporcionada.', 'send_welcome_email_to_users' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', 'send_email' => 'Enviar Email', 'call' => 'Número de llamada', @@ -474,9 +474,9 @@ return [ 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero deberá confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', - 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la interfaz de usuario o herramientas de cli de asignación masiva.', - 'autoassign_licenses_help_long' => 'Esto permite que un usuario tenga licencias asignadas a través de la interfaz de usuario o las herramientas de cli de asignación masiva. (Por ejemplo, puede que no desee que los contratistas sean asignados automáticamente a una licencia que proporcione sólo a los miembros del personal. Todavía puede asignar licencias individualmente a esos usuarios, pero no se incluirán en las funciones de devolución de licencias de todos los usuarios.)', - 'no_autoassign_licenses_help' => 'No incluya al usuario para asignaciones masivas a través de la licencia UI o las herramientas de cli.', + 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', + 'autoassign_licenses_help_long' => 'Esto permite asignar licencias a un usuario a través de la asignación masiva en la interfaz de usuario o de las herramientas de línea de comandos (CLI). (Por ejemplo, es posible que no desee que a los contratistas se les asigne automáticamente una licencia que usted proporcionaría sólo a los miembros del personal. Puede seguir asignando licencias individualmente a esos usuarios, pero no se incluirán en las funciones de "Asignación de licencias a todos los usuarios").', + 'no_autoassign_licenses_help' => 'No incluir al usuario en la asignación masiva de licencias en la interfaz de usuario o en las herramientas de línea de comandos (CLI).', 'modal_confirm_generic' => '¿Está seguro?', 'cannot_be_deleted' => 'Este elemento no puede ser eliminado', 'cannot_be_edited' => 'Este elemento no puede ser editado.', @@ -487,25 +487,25 @@ return [ 'error_user_company' => 'La compañía destino de la asignación y la compañía del activo no coinciden', 'error_user_company_accept_view' => 'Un activo asignado a usted pertenece a una compañía diferente por lo que no puede aceptarlo ni rechazarlo, por favor verifique con su supervisor', 'importer' => [ - 'checked_out_to_fullname' => 'Entregado a: Nombre Completo', - 'checked_out_to_first_name' => 'Entregado a: Nombre', - 'checked_out_to_last_name' => 'Entregado a: Apellido', - 'checked_out_to_username' => 'Entregado a: Usuario', - 'checked_out_to_email' => 'Entregado a: Email', - 'checked_out_to_tag' => 'Entregado a: Etiqueta de Activo', - 'manager_first_name' => 'Supervisor: Nombre', - 'manager_last_name' => 'Supervisor: Apellido', - 'manager_full_name' => 'Supervisor: Nombre Completo', - 'manager_username' => 'Supervisor: Usuario', - 'checkout_type' => 'Tipo de entrega', - 'checkout_location' => 'Ubicación de la entrega', - 'image_filename' => 'Nombre de archivo de la Imagen', + 'checked_out_to_fullname' => 'Asignado a: Nombre completo', + 'checked_out_to_first_name' => 'Asignado a: Nombre', + 'checked_out_to_last_name' => 'Asignado a: Apellido', + 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_email' => 'Asignado a: correo electrónico', + 'checked_out_to_tag' => 'Asignado a: Placa de activo', + 'manager_first_name' => 'Nombre del supervisor', + 'manager_last_name' => 'Apellido del supervisor', + 'manager_full_name' => 'Nombre completo del supervisor', + 'manager_username' => 'Nombre de usuario del supervisor', + 'checkout_type' => 'Tipo de asignación', + 'checkout_location' => 'Asignar a la ubicación', + 'image_filename' => 'Nombre del archivo de la imagen', 'do_not_import' => 'No importar', 'vip' => 'VIP', 'avatar' => 'Avatar', - 'gravatar' => 'Correo Gravatar', + 'gravatar' => 'Correo electrónico Gravatar', 'currency' => 'Moneda', - 'address2' => '2da linea de Dirección', + 'address2' => 'Dirección línea 2', 'import_note' => 'Importado usando el importador de csv', ], 'remove_customfield_association' => 'Elimine este campo del grupo de campos. Esto no eliminará el campo personalizado, solo la asociación de este campo con este grupo de campos.', @@ -516,19 +516,19 @@ return [ 'copy_to_clipboard' => 'Copiar al portapapeles', 'copied' => '¡Copiado!', 'status_compatibility' => 'Si los activos ya están asignados, no se pueden cambiar a un tipo de estado no utilizable y este cambio de valor se omitirá.', - 'rtd_location_help' => 'Esta es la ubicación del recurso cuando no está seleccionado', + 'rtd_location_help' => 'Esta es la ubicación del activo cuando no está asignado', 'item_not_found' => ':item_type ID :id no existe o ha sido eliminado', 'action_permission_denied' => 'No tiene permiso para :action :item_type ID :id', 'action_permission_generic' => 'No tiene permiso para :action this :item_type', 'edit' => 'editar', - 'action_source' => 'Fuente de acción', + 'action_source' => 'Origen de la acción', 'or' => 'o', 'url' => 'URL', 'edit_fieldset' => 'Editar campos y opciones de grupos de campos', 'permission_denied_superuser_demo' => 'Permiso denegado. No puede actualizar la información de usuario para superadministradores en la demo.', 'pwd_reset_not_sent' => 'El usuario no está activado, está sincronizado con LDAP o no tiene una dirección de correo electrónico', 'error_sending_email' => 'Error al enviar email', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'No está autorizado a realizar esta acción. Puede regresar al tablero, o ponerse en contacto con su administrador.', 'bulk' => [ 'delete' => [ @@ -546,9 +546,17 @@ return [ 'accessories' => ':count Accesorio|:count Accesorios', 'assets' => ':count Activos|:count Activos', 'licenses' => ':count Licencia|:count Licencias', - 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'license_seats' => ':count licencia|:count licencias', 'consumables' => ':count Consumible|:count Consumibles', 'components' => ':count component|:count componentes', - ] + ], + 'more_info' => 'Más información', + 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'whoops' => '¡Uy!', + 'something_went_wrong' => 'Algo falló en su solicitud.', + 'close' => 'Cerrar', + 'expires' => 'Vence', + 'map_fields'=> 'Asociar el campo :item_type', + 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-MX/help.php b/resources/lang/es-MX/help.php index d7daa3a5cb..e130e3833b 100644 --- a/resources/lang/es-MX/help.php +++ b/resources/lang/es-MX/help.php @@ -15,11 +15,11 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente se notará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo está desprotegido, no cambiará la ubicación de la persona, el activo o la ubicación en la que está verificado.', + 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', - 'assets' => 'Los activos son elementos rastreados por número de serie o etiqueta de activos. Suelen ser artículos de alto valor donde la identificación del activo importa.', + 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', - 'categories' => 'Las categorías te ayudan a organizar los activos. Ejemplos de categorías: "Pcs", "Portátiles", "Móviles", "Tabletas", etc.', + 'categories' => 'Las categorías le ayudan a organizar sus elementos. Unos ejemplos de categorías podrían ser: "PC Escritorios", "Portátiles", "Móviles", "Tabletas", etc.', 'accessories' => 'Accesorios son cualquier cosa que entregues a los usuarios pero que no tenga numero de serie (o no te interese seguirlos en forma única). Por ejemplo, ratones o teclados.', @@ -27,7 +27,7 @@ return [ 'components' => 'Los componentes son elementos que son parte de un activo, por ejemplo HDD, RAM, etc.', - 'consumables' => 'Los consumibles son cualquier cosa comprada que se usará con el tiempo. Por ejemplo, tinta de impresora o papel copiador.', + 'consumables' => 'Los consumibles son todo aquello que se compra y que se agota con el tiempo. Por ejemplo, tinta de impresora o papel de fotocopiadora.', 'depreciations' => 'Puede configurar la depreciación de activos usando un método de línea recta.', diff --git a/resources/lang/es-MX/localizations.php b/resources/lang/es-MX/localizations.php index 35c44db06d..c0ff115551 100644 --- a/resources/lang/es-MX/localizations.php +++ b/resources/lang/es-MX/localizations.php @@ -2,7 +2,7 @@ return [ - 'select_language' => 'Seleccione un idioma', + 'select_language' => 'Seleccionar un idioma', 'languages' => [ 'en-US'=> 'Inglés, EEUU', 'en-GB'=> 'Inglés, Reino Unido', @@ -49,7 +49,7 @@ return [ 'ru-RU'=> 'Ruso', 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Eslovaco', - 'sl-SI'=> 'Slovenian', + 'sl-SI'=> 'Esloveno', 'so-SO'=> 'Somali', 'es-ES'=> 'Español', 'es-CO'=> 'Español, Colombia', @@ -66,7 +66,7 @@ return [ 'zu-ZA'=> 'Zulú', ], - 'select_country' => 'Seleccione un país', + 'select_country' => 'Seleccionar un país', 'countries' => [ 'AC'=>'Isla de Ascensión', diff --git a/resources/lang/es-MX/mail.php b/resources/lang/es-MX/mail.php index e7d47be38a..e9db2f79ef 100644 --- a/resources/lang/es-MX/mail.php +++ b/resources/lang/es-MX/mail.php @@ -2,30 +2,30 @@ return [ - 'Accessory_Checkin_Notification' => 'Accesorio devuelto', - 'Accessory_Checkout_Notification' => 'Accesorio reservado', - 'Asset_Checkin_Notification' => 'Activo devuelto', + 'Accessory_Checkin_Notification' => 'Accesorio ingresado', + 'Accessory_Checkout_Notification' => 'Accesorio asignado', + 'Asset_Checkin_Notification' => 'Activo ingresado', 'Asset_Checkout_Notification' => 'Activo asignado', - 'Confirm_Accessory_Checkin' => 'Confirmar devolución del accesorio', - 'Confirm_Asset_Checkin' => 'Confirmar devolución del activo', + 'Confirm_Accessory_Checkin' => 'Confirmación de ingreso de accesorio', + 'Confirm_Asset_Checkin' => 'Confirmación de ingreso de activo', 'Confirm_accessory_delivery' => 'Confirmación de entrega de accesorio', 'Confirm_asset_delivery' => 'Confirmación de entrega de activo', 'Confirm_consumable_delivery' => 'Confirmación de entrega de consumible', 'Confirm_license_delivery' => 'Confirmación de entrega de licencia', - 'Consumable_checkout_notification' => 'Consumible comprobado', + 'Consumable_checkout_notification' => 'Consumible asignado', 'Days' => 'Días', - 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto en :date', + 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto el :date', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', - 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', - 'Expiring_Assets_Report' => 'Informe de activos que expiran.', + 'Expected_Checkin_Report' => 'Informe de próximas devoluciones de activos', + 'Expiring_Assets_Report' => 'Informe de activos con garantía próxima a vencer.', 'Expiring_Licenses_Report' => 'Informe de licencias que expiran.', 'Item_Request_Canceled' => 'Solicitud de cancelación de requerimiento', 'Item_Requested' => 'Artículo solicitado', 'License_Checkin_Notification' => 'Licencia devuelta', - 'License_Checkout_Notification' => 'Licencia reservada', - 'Low_Inventory_Report' => 'Reporte de inventario bajo', - 'a_user_canceled' => 'El usuario ha cancelado el item solicitado en la pagina Web', - 'a_user_requested' => 'Un usuario a solicitado un item en la pagina Web', + 'License_Checkout_Notification' => 'Licencia asignada', + 'Low_Inventory_Report' => 'Informe sobre inventario bajo', + 'a_user_canceled' => 'El usuario ha cancelado el elemento solicitado en la página web', + 'a_user_requested' => 'Un usuario ha solicitado un elemento en la página web', 'acceptance_asset_accepted' => 'Un usuario ha aceptado un elemento', 'acceptance_asset_declined' => 'Un usuario ha rechazado un elemento', 'accessory_name' => 'Nombre de accesorio:', @@ -34,33 +34,34 @@ return [ 'asset' => 'Activo:', 'asset_name' => 'Nombre del activo:', 'asset_requested' => 'Activo solicitado', - 'asset_tag' => 'Etiqueta de activo', + 'asset_tag' => 'Placa del activo', 'assets_warrantee_alert' => 'Hay :count activo con su garantía que expira en los próximos :threshold days.|Hay :count activos con garantías que expiran en los siguientes :threshold days.', 'assigned_to' => 'Asignado a', 'best_regards' => 'Cordialmente,', 'canceled' => 'Cancelado:', 'checkin_date' => 'Fecha de devolución:', 'checkout_date' => 'Fecha de asignación:', - 'checkedout_from' => 'Salido de', - 'checkedin_from' => 'Registrado desde', - 'checked_into' => 'Registrado en', + 'checkedout_from' => 'Asignado desde', + 'checkedin_from' => 'Devuelto desde', + 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', 'click_to_confirm' => 'Por favor, pulsa en el siguiente enlace para verificar tu cuenta de :web:', 'current_QTY' => 'Cantidad actual', 'days' => 'Días', 'expecting_checkin_date' => 'Fecha esperada de devolución:', - 'expires' => 'Expira', + 'expires' => 'Vence', 'hello' => 'Hola', 'hi' => 'Hola', 'i_have_read' => 'He leído y aceptado los términos de uso, y he recibido este artículo.', 'inventory_report' => 'Reporte de Inventario', - 'item' => 'Articulo:', + 'item' => 'Elemento:', + 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', 'link_to_update_password' => 'Haga clic en el siguiente enlace para actualizar su: contraseña de la web:', 'login' => 'Entrar:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', - 'low_inventory_alert' => 'Hay :count item por debajo del inventario mínimo o próximo a bajar.|Hay are :count elementos por debajo del inventario mínimo o próximos a bajar.', + 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo ha sido asignado a su nombre, los detalles están a continuación.', @@ -70,24 +71,26 @@ return [ 'read_the_terms' => 'Por favor lea los términos de uso a continuación.', 'read_the_terms_and_click' => 'Por favor, lea los términos de uso a continuación, y haga clic en el enlace en la parte inferior para confirmar que usted lee y acepta las condiciones de uso, y han recibido el activo.', 'requested' => 'Solicitado:', - 'reset_link' => 'Tu enlace de restablecimiento de contraseña', + 'reset_link' => 'Su enlace de restablecimiento de contraseña', 'reset_password' => 'Haga Clic aquí para restablecer su contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Serial', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', 'snipe_webhook_summary' => 'Resumen de la prueba de integración de Snipe-IT', 'supplier' => 'Proveedor', - 'tag' => 'Etiqueta', + 'tag' => 'Placa', 'test_email' => 'Email de prueba de Snipe-IT', - 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', + 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', - 'upcoming-audits' => 'Hay :count activo que se está preparando para auditoría dentro de :threshold days.|Hay :count activos que se están preparando para auditoría en :threshold days.', - 'user' => 'User', - 'username' => 'Username', + 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', + 'user' => 'Usuario', + 'username' => 'Nombre de usuario', + 'unaccepted_asset_reminder' => 'Tiene activos pendientes por aceptar.', 'welcome' => 'Bienvenido, :name', 'welcome_to' => '¡Bienvenido a: web!', - 'your_assets' => 'Ver tus activos', - 'your_credentials' => 'Tus credenciales de Snipe-IT', + 'your_assets' => 'Ver sus activos', + 'your_credentials' => 'Sus credenciales de Snipe-IT', + 'mail_sent' => '¡Correo enviado exitosamente!.', ]; diff --git a/resources/lang/es-MX/passwords.php b/resources/lang/es-MX/passwords.php index f337c2c967..75469d1121 100644 --- a/resources/lang/es-MX/passwords.php +++ b/resources/lang/es-MX/passwords.php @@ -3,7 +3,7 @@ return [ 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', 'user' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', - 'token' => 'Este token de restablecimiento de contraseña no es válido o ha caducado, o no coincide con el nombre de usuario proporcionado.', - 'reset' => '¡Tu contraseña ha sido restablecida!', + 'token' => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', + 'reset' => '¡Su contraseña ha sido restablecida!', 'password_change' => '¡Su contraseña ha sido actualizada!', ]; diff --git a/resources/lang/es-MX/reminders.php b/resources/lang/es-MX/reminders.php index 4b781311da..2269768b6b 100644 --- a/resources/lang/es-MX/reminders.php +++ b/resources/lang/es-MX/reminders.php @@ -13,9 +13,9 @@ return array( | */ - "password" => "Los passwords deben tener mínimo 6 caracteres y coincidir.", + "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", "user" => "Usuario o E-Mail incorrectos", - "token" => 'Este token de restablecimiento de contraseña es inválido o ha caducado, o no coincide con el nombre de usuario proporcionado.', + "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', ); diff --git a/resources/lang/es-MX/table.php b/resources/lang/es-MX/table.php index 75bdd56a6b..dea24233f7 100644 --- a/resources/lang/es-MX/table.php +++ b/resources/lang/es-MX/table.php @@ -5,7 +5,7 @@ return array( 'actions' => 'Acciones', 'action' => 'Acción', 'by' => 'Por', - 'item' => 'Item', + 'item' => 'Elemento', 'no_matching_records' => 'No se encontraron registros que coincidan', ); diff --git a/resources/lang/es-MX/validation.php b/resources/lang/es-MX/validation.php index 5bb204eb88..f2198ee0e6 100644 --- a/resources/lang/es-MX/validation.php +++ b/resources/lang/es-MX/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute debe ser aceptado.', - 'active_url' => ':attribute no es una URL correcta.', - 'after' => ':attribute debe ser posterior a :date.', - 'after_or_equal' => 'El atributo: debe ser una fecha posterior o igual a: fecha.', - 'alpha' => ':attribute solo acepta letras.', - 'alpha_dash' => ':attribute solo acepta letras, números y guiones.', - 'alpha_num' => ':attribute solo acepta letras y números.', - 'array' => 'El: atributo debe ser una matriz.', - 'before' => ':attribute debe ser anterior a :date.', - 'before_or_equal' => 'El atributo: debe ser una fecha anterior o igual a: fecha.', - 'between' => [ - 'numeric' => ':attribute debe estar entre :min - :max.', - 'file' => ':attribute debe estar entre :min - :max kilobytes.', - 'string' => ':attribute debe estar entre :min - :max caracteres.', - 'array' => 'El atributo: debe tener entre: min y: elementos máximos.', + 'accepted' => 'El campo :attribute debe ser aceptado.', + 'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other es :value.', + 'active_url' => 'El campo :attribute debe ser una dirección URL válida.', + 'after' => 'El campo :attribute debe ser una fecha posterior a :date.', + 'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.', + 'alpha' => 'El campo :attribute debe contener únicamente letras.', + 'alpha_dash' => 'El campo :attribute debe contener únicamente letras, números, guiones y guiones bajos.', + 'alpha_num' => 'El campo :attribute debe contener únicamente letras y números.', + 'array' => 'El campo :attribute debe ser un arreglo.', + 'ascii' => 'El campo :attribute debe contener únicamente caracteres y símbolos alfanuméricos de un byte.', + 'before' => 'El campo :attribute debe ser una fecha anterior a :date.', + 'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.', + 'between' => [ + 'array' => 'El campo :attribute debe tener elementos entre :min y :max.', + 'file' => 'El campo :attribute debe tener entre :min y :max kilobytes.', + 'numeric' => 'El campo :attribute debe estar entre :min y :max.', + 'string' => 'El campo :attribute debe tener entre :min y :max caracteres.', ], - 'boolean' => ':attribute debe ser verdadero o falso.', - 'confirmed' => ':attribute la confirmación no coincide.', - 'date' => ':attribute no es una fecha correcta.', - 'date_format' => ':attribute no cumple el formato :format.', - 'different' => ':attribute y :other deben ser diferentes.', - 'digits' => ':attribute debe tener :digits dígitos.', - 'digits_between' => ':attribute debe tener entre :min y :max dígitos.', - 'dimensions' => 'El atributo: tiene dimensiones de imagen no válidas.', - 'distinct' => 'El campo: atributo tiene un valor duplicado.', - 'email' => ':attribute formato incorrecto.', - 'exists' => 'El :attribute seleccionado no es correcto.', - 'file' => 'El: atributo debe ser un archivo.', - 'filled' => 'El campo: atributo debe tener un valor.', - 'image' => ':attribute debe ser una imagen.', + 'boolean' => 'El campo :attribute debe ser verdadero o falso.', + 'can' => 'El campo :attribute contiene un valor no autorizado.', + 'confirmed' => 'La confirmación del campo :attribute no coincide.', + 'contains' => 'Falta un valor obligatorio en el campo :attribute.', + 'current_password' => 'La contraseña es incorrecta.', + 'date' => 'El campo :attribute debe contener una fecha válida.', + 'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.', + 'date_format' => 'El campo :attribute debe coincidir con el formato :format.', + 'decimal' => 'El campo :attribute debe tener :decimal lugares decimales.', + 'declined' => 'El campo :attribute debe ser rechazado.', + 'declined_if' => 'El campo :attribute debe ser rechazado cuando :other es :value.', + 'different' => 'Los campos :attribute y :other deben ser diferentes.', + 'digits' => 'El campo :attribute debe tener :digits dígitos.', + 'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.', + 'dimensions' => 'El campo :attribute tiene dimensiones de imagen no válidas.', + 'distinct' => 'El campo: atributo tiene un valor duplicado.', + 'doesnt_end_with' => 'El campo :attribute no debe finalizar con uno de los siguientes :values.', + 'doesnt_start_with' => 'El campo :attribute no debe iniciar con uno de los siguientes :values.', + 'email' => 'El campo :attribute debe ser una dirección de correo válida.', + 'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes :values.', + 'enum' => 'El :attribute seleccionado no es correcto.', + 'exists' => 'El :attribute seleccionado no es correcto.', + 'extensions' => 'El campo :attribute debe tener una de las siguientes extensiones :values.', + 'file' => 'El campo :attribute debe ser un archivo.', + 'filled' => 'El campo: atributo debe tener un valor.', + 'gt' => [ + 'array' => 'El campo :attribute debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser mayor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que :value.', + 'string' => 'El campo :attribute debe ser mayor que :value caracteres.', + ], + 'gte' => [ + 'array' => 'El campo :attribute debe tener :value elementos o más.', + 'file' => 'El campo :attribute debe ser mayor que o igual a :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que o igual a :value.', + 'string' => 'El campo :attribute debe ser mayor que o igual a :value caracteres.', + ], + 'hex_color' => 'El campo :attribute debe ser un color hexadecimal válido.', + 'image' => 'El campo :attribute debe ser una imagen.', 'import_field_empty' => 'El valor para :fieldname no puede ser nulo.', - 'in' => 'El :attribute seleccionado no es correcto.', - 'in_array' => 'El campo: atributo no existe en: otro.', - 'integer' => ':attribute debe ser un número entero.', - 'ip' => ':attribute debe ser una dirección IP correcta.', - 'ipv4' => 'El atributo: debe ser una dirección IPv4 válida.', - 'ipv6' => 'El atributo: debe ser una dirección IPv6 válida.', - 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la compañía', - 'json' => 'El atributo: debe ser una cadena JSON válida.', - 'max' => [ - 'numeric' => ':attribute no debe ser mayor que :max.', - 'file' => ':attribute no debe ser mayor que :max kilobytes.', - 'string' => ':attribute no debe tener como máximo :max caracteres.', - 'array' => 'El atributo: puede no tener más que: elementos máximos.', + 'in' => 'El :attribute seleccionado no es correcto.', + 'in_array' => 'El campo :attribute debe existir en :other.', + 'integer' => 'El campo :attribute debe ser un valor entero.', + 'ip' => 'El campo :attribute debe ser una dirección IP válida.', + 'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.', + 'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.', + 'json' => 'El campo :attribute debe ser una cadena de texto JSON válida.', + 'list' => 'The campo :attribute debe ser una lista.', + 'lowercase' => 'El campo :attribute debe estar en minúsculas.', + 'lt' => [ + 'array' => 'El campo :attribute debe tener menos que :value elementos.', + 'file' => 'El campo :attribute debe ser menor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser menor que :value.', + 'string' => 'El campo :attribute debe ser menor que :value caracteres.', ], - 'mimes' => ':attribute debe ser un archivo del tipo: :values.', - 'mimetypes' => 'El atributo: debe ser un archivo de tipo:: valores.', - 'min' => [ - 'numeric' => ':attribute debe ser como mínimo :min.', - 'file' => ':attribute debe ser como mínimo de :min kilobytes.', - 'string' => ':attribute debe contener como mínimo :min caracteres.', - 'array' => 'El atributo: debe tener al menos: elementos min.', + 'lte' => [ + 'array' => 'El campo :attribute no debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser menor que o igual a :value kylobytes.', + 'numeric' => 'El campo :attribute debe ser menor que o igual a :value.', + 'string' => 'El campo :attribute debe ser menor que o igual a :value caracteres.', ], - 'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes: :values.', - 'ends_with' => 'El campo :attribute debe terminar con uno de los siguientes: :values.', - - 'not_in' => 'El :attribute seleccionado no es correcto.', - 'numeric' => ':attribute debe ser un número.', - 'present' => 'El campo: atributo debe estar presente.', - 'valid_regex' => 'Este no es un regex válido. ', - 'regex' => ':attribute formato incorrecto.', - 'required' => 'El campo :attribute es obligatorio.', - 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', - 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', - 'required_with' => ':attribute es obligatrio cuando :values es present.', - 'required_with_all' => 'El campo: atributo se requiere cuando: los valores están presentes.', - 'required_without' => ':attribute es obligatrio cuando :values es not present.', - 'required_without_all' => 'El campo: atributo es necesario cuando ninguno de: valores están presentes.', - 'same' => ':attribute y :other deben coincidir.', - 'size' => [ - 'numeric' => ':attribute debe tener :size.', - 'file' => ':attribute debe tener :size kilobytes.', - 'string' => ':attribute debe tener :size caracteres.', - 'array' => 'El atributo: debe contener: elementos de tamaño.', + 'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.', + 'max' => [ + 'array' => 'El campo :attribute no debe tener más de :max elementos.', + 'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.', + 'numeric' => 'El campo :attribute no debe ser mayor que :max.', + 'string' => 'El campo :attribute no debe ser mayor que :max caracteres.', ], + 'max_digits' => 'El campo :attribute no debe tener más de :max dígitos.', + 'mimes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'mimetypes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'min' => [ + 'array' => 'El campo :attribute debe tener al menos :min elementos.', + 'file' => 'El campo :attribute debe ser de al menos :min kilobytes.', + 'numeric' => 'El campo :attribute debe ser al menos :min.', + 'string' => 'El campo :attribute debe contener como mínimo :min caracteres.', + ], + 'min_digits' => 'El campo :attribute debe contener como mínimo :min dígitos.', + 'missing' => 'El campo :attribute debe estar vacío.', + 'missing_if' => 'El campo :attribute debe estar vacío cuando :other sea :value.', + 'missing_unless' => 'El campo :attribute debe estar vacío a menos que :other sea :value.', + 'missing_with' => 'El campo :attribute debe estar vacío cuando :values esté presente.', + 'missing_with_all' => 'El campo :attribute debe estar vacío cuando :values estén presentes.', + 'multiple_of' => 'El campo :attribute debe ser un múltiplo de :value.', + 'not_in' => 'El :attribute seleccionado no es correcto.', + 'not_regex' => 'El campo :attribute no es válido.', + 'numeric' => 'El campo :attribute debe ser un número.', + 'password' => [ + 'letters' => 'El cammpo :attribute debe contener al menos una letra.', + 'mixed' => 'El campo :attribute debe contener al menos una letra minúscula y una mayúscula.', + 'numbers' => 'El campo :attribute debe contener al menos un número.', + 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', + 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', + ], + 'present' => 'El campo: atributo debe estar presente.', + 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', + 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', + 'present_with' => 'El campo :attribute debe estar presente cuando :values esté presente.', + 'present_with_all' => 'El campo :attribute debe estar presente cuando :values estén presentes.', + 'prohibited' => 'El campo :attribute está prohibido.', + 'prohibited_if' => 'El campo :attribute está prohibido cuando :other sea :value.', + 'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other esté en :values.', + 'prohibits' => 'El campo :attribute prohíbe la presencia de :other.', + 'regex' => 'El formato del campo :attribute no es válido.', + 'required' => 'El campo :attribute es obligatorio.', + 'required_array_keys' => 'El campo :attribute debe contener valores para: :values.', + 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_if_accepted' => 'El campo :attribute es obligatorio cuando se acepta :other.', + 'required_if_declined' => 'El campo :attribute es requerido cuando :other es rechazado.', + 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', + 'required_with' => ':attribute es obligatrio cuando :values es present.', + 'required_with_all' => 'El campo :attribute es requerido cuando :values están presentes.', + 'required_without' => ':attribute es obligatrio cuando :values es not present.', + 'required_without_all' => 'El campo :attribute es obligatorio cuando no está presente ninguno de los :values.', + 'same' => 'El campo :attribute debe coincidir con :other.', + 'size' => [ + 'array' => 'El campo :attribute debe contenter :size elementos.', + 'file' => 'El campo :attribute debe ser de :size kilobytes.', + 'numeric' => 'El campo :attribute debe ser :size.', + 'string' => 'El campo :attribute debe ser de :size caracteres.', + ], + 'starts_with' => 'El campo :attribute debe iniciar con uno de los siguientes: :values.', 'string' => 'El atributo: debe ser una cadena.', - 'timezone' => 'El atributo: debe ser una zona válida.', 'two_column_unique_undeleted' => ':attribute debe ser único a través de :table1 y :table2. ', - 'unique' => ':attribute ya ha sido introducido.', - 'uploaded' => 'El atributo: no se pudo cargar.', - 'url' => ':attribute formato incorrecto.', 'unique_undeleted' => 'El :atrribute debe ser único.', 'non_circular' => ':attribute no debe crear una referencia circular.', 'not_array' => ':attribute no puede ser una matriz.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'La contraseña debe contener al menos un número.', 'case_diff' => 'La contraseña debe usar mayúsculas y minúsculas.', 'symbols' => 'La contraseña debe contener símbolos.', - 'gte' => [ - 'numeric' => 'El valor no puede ser negativo' - ], - 'checkboxes' => ':attribute contiene opciones no válidas.', - 'radio_buttons' => ':attribute no es válido.', - + 'timezone' => 'El campo :attribute debe ser una zona horaria válida.', + 'unique' => ':attribute ya ha sido introducido.', + 'uploaded' => 'El atributo: no se pudo cargar.', + 'uppercase' => 'El campo :attribute debe estar en mayúsculas.', + 'url' => 'El campo :attribute debe ser una URL válida.', + 'ulid' => 'El campo :attribute debe ser un ULID válido.', + 'uuid' => 'El campo :attribute debe ser un UUID válido.', /* |-------------------------------------------------------------------------- @@ -123,13 +185,13 @@ return [ 'custom' => [ 'alpha_space' => 'El campo: atributo contiene un carácter que no está permitido.', 'email_array' => 'Una o más direcciones de correo electrónico no es válida.', - 'hashed_pass' => 'Tu contraseña actual es incorrecta', + 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute debe ser una fecha válida con formato AAA-MM-DD', 'last_audit_date.date_format' => ':attribute debe ser una fecha válida con formato AAA-MM-DD hh:mm:ss', 'expiration_date.date_format' => ':attribute debe ser una fecha válida con formato AAA-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute debe ser una fecha válida con formato AAA-MM-DD', 'start_date.date_format' => ':attribute debe ser una fecha válida con formato AAA-MM-DD', 'end_date.date_format' => ':attribute debe ser una fecha válida con formato AAA-MM-DD', - - ], - + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => 'El valor de :attribute no es válido.', + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + + 'generic' => [ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + 'required' => 'El campo es obligatorio', + 'email' => 'Por favor, ingrese una dirección de correo electrónico válida.', + ], + + ]; diff --git a/resources/lang/es-VE/account/general.php b/resources/lang/es-VE/account/general.php index 7e637a3bef..2520857ca1 100644 --- a/resources/lang/es-VE/account/general.php +++ b/resources/lang/es-VE/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Claves API personales', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', - 'api_base_url' => 'La url base de tu API se encuentra en:', + 'personal_access_token' => 'Credencial de acceso personal', + 'personal_api_keys_success' => 'Clave API personal :key creada correctamente', + 'here_is_api_key' => 'Aquí tiene su nueva credencial de acceso personal. Esta es la única vez que se mostrará, así que no la pierda. Ahora puede utilizar esta credencial para realizar solicitudes a la API.', + 'api_key_warning' => 'Al generar una credencial para el API, asegúrese de copiarla inmediatamente, ya que no podrá volver a verla.', + 'api_base_url' => 'La url base de su API se encuentra en:', 'api_base_url_endpoint' => '/<endpoint>', - 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', + 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoints) del API y documentación adicional.', 'profile_updated' => 'Cuenta actualizada exitosamente', + 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', ); diff --git a/resources/lang/es-VE/admin/accessories/general.php b/resources/lang/es-VE/admin/accessories/general.php index df37432f66..ae88538e2a 100644 --- a/resources/lang/es-VE/admin/accessories/general.php +++ b/resources/lang/es-VE/admin/accessories/general.php @@ -3,8 +3,8 @@ return array( 'accessory_category' => 'Categoría de accesorio', 'accessory_name' => 'Nombre de Accesorio', - 'checkout' => 'Accesorio de Salida', - 'checkin' => 'Accesorio de Entrada', + 'checkout' => 'Asignar accesorio', + 'checkin' => 'Ingresar accesorio', 'create' => 'Crear Accesorio', 'edit' => 'Editar Accesorio', 'eula_text' => 'Acuerdo de uso de la categoría', @@ -13,10 +13,10 @@ return array( 'no_default_eula' => 'No se encontraron términos y condiciones por defecto. Agregue unos en Configuración.', 'total' => 'Total', 'remaining' => 'Disponibles', - 'update' => 'Actualizar Accesorio', + 'update' => 'Actualizar accesorio', 'use_default_eula' => 'En su lugar, el acuerdo de uso predeterminado.', 'use_default_eula_disabled' => 'En su lugar, use el acuerdo de uso predeterminado. No está configurado el acuerdo de uso predeterminado. Por favor agregue uno en Configuración.', 'clone' => 'Clonar accesorio', - 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos artículos todavía están retirados.', + 'delete_disabled' => 'Este accesorio no se puede eliminar aún porque algunos elementos todavía están asignados.', ); diff --git a/resources/lang/es-VE/admin/accessories/message.php b/resources/lang/es-VE/admin/accessories/message.php index 2c8a15defc..0d2940bf8c 100644 --- a/resources/lang/es-VE/admin/accessories/message.php +++ b/resources/lang/es-VE/admin/accessories/message.php @@ -4,35 +4,39 @@ return array( 'does_not_exist' => 'El accesorio [:id] no existe.', 'not_found' => 'Ese accesorio no fue encontrado.', - 'assoc_users' => 'El accesorio actual tiene :count elementos entregados a usuarios. Por favor ingresa los accesorios e intenta de nuevo. ', + 'assoc_users' => 'Este accesorio actualmente tiene :count elemento(s) asignado(s) a usuarios. Por favor realice el ingreso de los accesorios y vuelva a intentar. ', 'create' => array( - 'error' => 'El accesorio no se creó, inténtalo de nuevo.', + 'error' => 'El accesorio no fue creado, por favor inténtelo de nuevo.', 'success' => 'El accesorio se ha creado con éxito.' ), 'update' => array( - 'error' => 'El accesorio no se actualizó, inténtalo de nuevo', + 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'El accesorio se ha actualizado con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este accesorio?', - 'error' => 'Hubo un problema borrando este accesorio. Por favor inténtalo nuevamente.', + 'error' => 'Hubo un problema eliminando el accesorio. Por favor, inténtelo de nuevo.', 'success' => 'El accesorio se ha borrado con éxito.' ), 'checkout' => array( - 'error' => 'Equipo no ha sido retirado, inténtalo de nuevo', - 'success' => 'El accesorio se ha retirado exitosamente.', - 'unavailable' => 'El accesorio no está disponible para la compra. Compruebe la cantidad disponible', - 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.' + 'error' => 'El accesorio no fue asignado, por favor vuelva a intentarlo', + 'success' => 'Accesorio asignado correctamente.', + 'unavailable' => 'El accesorio no está disponible para ser asignado. Compruebe la cantidad disponible', + 'user_does_not_exist' => 'Este usuario no es válido. Por favor, inténtelo de nuevo.', + 'checkout_qty' => array( + 'lte' => 'En este momento solo existe un accesorio disponible de este tipo y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.|Existen en total :number_currently_remaining accesorios disponibles y está tratando de asignar :checkout_qty. Por favor, ajuste la cantidad asignada o el total de existencias de este accesorio e intente nuevamente.', + ), + ), 'checkin' => array( - 'error' => 'El accesorio no fue ingresado, por favor inténtalo de nuevo', - 'success' => 'El accesorio se ha ingresado con éxito.', - 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.' + 'error' => 'El accesorio no fue recibido, por favor vuelva a intentarlo', + 'success' => 'El accesorio ha sido ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-VE/admin/asset_maintenances/form.php b/resources/lang/es-VE/admin/asset_maintenances/form.php index fd61ba8cd0..3e06eed488 100644 --- a/resources/lang/es-VE/admin/asset_maintenances/form.php +++ b/resources/lang/es-VE/admin/asset_maintenances/form.php @@ -1,13 +1,13 @@ 'Tipo de Mantenimiento de Equipo', + 'asset_maintenance_type' => 'Tipo de mantenimiento de equipo', 'title' => 'Título', 'start_date' => 'Fecha de inicio', 'completion_date' => 'Fecha de finalización', 'cost' => 'Costo', 'is_warranty' => 'Mejora de la Garantía', - 'asset_maintenance_time' => 'Tiempo de mantenimiento de activos (en días)', + 'asset_maintenance_time' => 'Duración del mantenimiento (en días)', 'notes' => 'Notas', 'update' => 'Actualizar Mantenimiento de Equipo', 'create' => 'Crear Mantenimiento de Equipo' diff --git a/resources/lang/es-VE/admin/asset_maintenances/message.php b/resources/lang/es-VE/admin/asset_maintenances/message.php index d8886beac2..479464bb91 100644 --- a/resources/lang/es-VE/admin/asset_maintenances/message.php +++ b/resources/lang/es-VE/admin/asset_maintenances/message.php @@ -4,15 +4,15 @@ 'not_found' => '¡El mantenimiento del activo que estaba buscando no se encontró!', 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar el mantenimiento de este activo?', - 'error' => 'Hubo un problema borrando el mantenimiento del activo. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema al eliminar el mantenimiento del activo. Por favor inténtelo nuevamente.', 'success' => 'El mantenimiento de activo fue eliminado con éxito.', ], 'create' => [ 'error' => 'El Mantenimiento de Activo no se ha creado, por favor inténtalo de nuevo.', - 'success' => 'Mantenimiento de Activo creado con éxito.', + 'success' => 'El mantenimiento del activo fue creado de manera exitosa.', ], 'edit' => [ - 'error' => 'El Mantenimiento de Activo no se ha editado, por favor inténtalo de nuevo.', + 'error' => 'El mantenimiento del activo no fue editado. Por favor, inténtelo de nuevo.', 'success' => 'Mantenimiento de Activo editado con éxito.', ], 'asset_maintenance_incomplete' => 'No se ha completado aún', diff --git a/resources/lang/es-VE/admin/categories/general.php b/resources/lang/es-VE/admin/categories/general.php index 3e0ddf7eaf..6913375d8b 100644 --- a/resources/lang/es-VE/admin/categories/general.php +++ b/resources/lang/es-VE/admin/categories/general.php @@ -3,8 +3,8 @@ return array( 'asset_categories' => 'Categorías de activos', 'category_name' => 'Nombre de la categoría', - 'checkin_email' => 'Enviar un correo al usuario al devolver/asignar.', - 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al devolver/asignar.', + 'checkin_email' => 'Enviar un correo al usuario al recibir/devolver.', + 'checkin_email_notification' => 'A este usuario se le enviará un correo electrónico al recibir/devolver.', 'clone' => 'Clonar categoría', 'create' => 'Crear categoría', 'edit' => 'Editar categoría', diff --git a/resources/lang/es-VE/admin/categories/message.php b/resources/lang/es-VE/admin/categories/message.php index 9875a01d88..997487469e 100644 --- a/resources/lang/es-VE/admin/categories/message.php +++ b/resources/lang/es-VE/admin/categories/message.php @@ -3,8 +3,8 @@ return array( 'does_not_exist' => 'La categoría no existe.', - 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no se puede eliminar. Por favor actualice sus modelos para que no hagan referencia a esta categoría e inténtelo de nuevo. ', - 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no se puede eliminar. Por favor actualice su: asset_type para que no haga referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_models' => 'Esta categoría está asociada actualmente con al menos un modelo y no puede ser eliminada. Actualice los modelos para que ya no hagan referencia a esta categoría e inténtelo de nuevo. ', + 'assoc_items' => 'Esta categoría está asociada actualmente con al menos un: asset_type y no puede ser eliminada. Actualice su :asset_type para que ya no haga referencia a esta categoría e inténtelo de nuevo. ', 'create' => array( 'error' => 'La categoría no fue creada, por favor inténtelo de nuevo.', diff --git a/resources/lang/es-VE/admin/categories/table.php b/resources/lang/es-VE/admin/categories/table.php index b99c0f335c..59942173a2 100644 --- a/resources/lang/es-VE/admin/categories/table.php +++ b/resources/lang/es-VE/admin/categories/table.php @@ -3,7 +3,7 @@ return array( 'eula_text' => 'Acuerdo de uso', 'id' => 'Identificación', - 'parent' => 'Padre', + 'parent' => 'Ubicación padre', 'require_acceptance' => 'Aceptación', 'title' => 'Nombre de la categoría del activo', diff --git a/resources/lang/es-VE/admin/companies/general.php b/resources/lang/es-VE/admin/companies/general.php index fd18d9f752..8fb72d5b94 100644 --- a/resources/lang/es-VE/admin/companies/general.php +++ b/resources/lang/es-VE/admin/companies/general.php @@ -1,7 +1,7 @@ 'Seleccione una compañía', + 'select_company' => 'Seleccionar una compañía', 'about_companies' => 'Acerca de las compañías', 'about_companies_description' => ' Puede utilizar las compañías como un simple campo informativo, o puede utilizarlas para restringir la visibilidad y la disponibilidad de los activos a los usuarios con una compañía específica habilitando la opción "Soporte completo a múltiples compañías" en "Configuración de administración"', ]; diff --git a/resources/lang/es-VE/admin/companies/message.php b/resources/lang/es-VE/admin/companies/message.php index 4ac0e1ed2b..66f4ef798b 100644 --- a/resources/lang/es-VE/admin/companies/message.php +++ b/resources/lang/es-VE/admin/companies/message.php @@ -3,7 +3,7 @@ return [ 'does_not_exist' => 'La compañía no existe.', 'deleted' => 'Compañía eliminada', - 'assoc_users' => 'Esta compañía está actualmente asociada con al menos un modelo y no puede ser eliminada. Por favor, actualiza tus modelos para no referenciar más esta compañía e inténtalo de nuevo. ', + 'assoc_users' => 'Esta compañía está actualmente asociada con al menos un modelo y no puede ser eliminada. Por favor actualice sus modelos para que no hagan referencia a esta compañía e inténtalo de nuevo. ', 'create' => [ 'error' => 'La compañía no ha sido creada, por favor intente de nuevo.', 'success' => 'Compañía creada con éxito.', diff --git a/resources/lang/es-VE/admin/components/general.php b/resources/lang/es-VE/admin/components/general.php index 0e2ae09c36..6235de87d3 100644 --- a/resources/lang/es-VE/admin/components/general.php +++ b/resources/lang/es-VE/admin/components/general.php @@ -2,8 +2,8 @@ return array( 'component_name' => 'Nombre de Componente', - 'checkin' => 'Ingreso de Componente', - 'checkout' => 'Salida de Componente', + 'checkin' => 'Ingresar componente', + 'checkout' => 'Asignar componente', 'cost' => 'Costo de Compra', 'create' => 'Crear Componente', 'edit' => 'Editar Componente', @@ -12,5 +12,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', - 'checkin_limit' => 'La cantidad devuelta debe ser igual o menor que :assigned_qty' + 'checkin_limit' => 'La cantidad ingresada debe ser igual o menor que :assigned_qty' ); diff --git a/resources/lang/es-VE/admin/components/message.php b/resources/lang/es-VE/admin/components/message.php index 30872a9bed..f4ff241d55 100644 --- a/resources/lang/es-VE/admin/components/message.php +++ b/resources/lang/es-VE/admin/components/message.php @@ -5,32 +5,32 @@ return array( 'does_not_exist' => 'El componente no existe.', 'create' => array( - 'error' => 'El componente no se ha creado, por favor inténtalo de nuevo.', - 'success' => 'Componente creado con éxito.' + 'error' => 'El componente no fue creado, por favor inténtelo de nuevo.', + 'success' => 'El componente se creó satisfactoriamente.' ), 'update' => array( - 'error' => 'El componente no se ha actualizado, por favor inténtalo de nuevo', + 'error' => 'El componente no se actualizó, por favor inténtelo de nuevo', 'success' => 'Componente actualizado con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este componente?', - 'error' => 'Hubo un problema al borrar el componente. Por favor inténtalo de nuevo.', + 'error' => 'Hubo un problema eliminando el componente. Por favor, inténtelo de nuevo.', 'success' => 'El componente se ha borrado con éxito.' ), 'checkout' => array( - 'error' => 'El componente no se ha retirado, inténtelo de nuevo', - 'success' => 'El componente se ha retirado con éxito.', - 'user_does_not_exist' => 'El usuario es inválido. Por favor, inténtelo de nuevo.', - 'unavailable' => 'No quedan suficientes componentes: :remaining resting, :requested ', + 'error' => 'El componente no fue asignado, por favor, inténtelo de nuevo', + 'success' => 'El componente se ha asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'No quedan suficientes componentes: :remaining disponibles, :requested solicitados ', ), 'checkin' => array( - 'error' => 'El componente no se ha ingresado, por favor inténtalo de nuevo', + 'error' => 'No se realizó el ingreso del componente, por favor inténtelo de nuevo', 'success' => 'Componente ingresado con éxito.', - 'user_does_not_exist' => 'El usuario es inválido. Por favor inténtelo de nuevo.' + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-VE/admin/consumables/general.php b/resources/lang/es-VE/admin/consumables/general.php index 0f50c6194d..6946ba7076 100644 --- a/resources/lang/es-VE/admin/consumables/general.php +++ b/resources/lang/es-VE/admin/consumables/general.php @@ -1,11 +1,12 @@ 'Salida de Consumible al Usuario', + 'checkout' => 'Asignar consumible a usuario', 'consumable_name' => 'Nombre del Consumible', 'create' => 'Crear Consumible', 'item_no' => 'Artículo No.', 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Consumible', + 'inventory_warning' => 'El inventario de este consumible está por debajo de la cantidad mínima de :min_count', ); diff --git a/resources/lang/es-VE/admin/consumables/message.php b/resources/lang/es-VE/admin/consumables/message.php index 2541e392fc..7602c32e9e 100644 --- a/resources/lang/es-VE/admin/consumables/message.php +++ b/resources/lang/es-VE/admin/consumables/message.php @@ -2,15 +2,16 @@ return array( + 'invalid_category_type' => 'La categoría debe ser una categoría para consumibles.', 'does_not_exist' => 'El consumible no existe.', 'create' => array( - 'error' => 'El consumible no fue creado, por favor inténtalo de nuevo.', + 'error' => 'El consumible no fue creado, por favor inténtelo nuevamente.', 'success' => 'Consumible creado con éxito.' ), 'update' => array( - 'error' => 'El consumible no fue actualizado, por favor inténtalo de nuevo', + 'error' => 'El consumible no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'Consumible actualizado con éxito.' ), @@ -22,15 +23,15 @@ return array( 'checkout' => array( 'error' => 'El consumible no fue asignado, por favor inténtelo de nuevo', - 'success' => 'El consumible fue retirado con éxito.', - 'user_does_not_exist' => 'El usuario es inválido. Por favor, inténtelo de nuevo.', - 'unavailable' => 'No hay suficientes consumibles para este pago. Por favor, compruebe la cantidad restante. ', + 'success' => 'Consumible asignado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'No hay suficientes consumibles para esta asignación. Por favor, compruebe la cantidad disponible. ', ), 'checkin' => array( - 'error' => 'Consumible no fue devuelto, por favor inténtelo de nuevo', - 'success' => 'El consumible fue ingresado con éxito.', - 'user_does_not_exist' => 'El usuario es inválido. Por favor inténtelo de nuevo.' + 'error' => 'El consumible no fue ingresado, por favor inténtelo de nuevo', + 'success' => 'El consumible fue ingresado correctamente.', + 'user_does_not_exist' => 'Ese usuario no es válido. Por favor, inténtelo de nuevo.' ) diff --git a/resources/lang/es-VE/admin/custom_fields/general.php b/resources/lang/es-VE/admin/custom_fields/general.php index 096e87bdd0..3470677154 100644 --- a/resources/lang/es-VE/admin/custom_fields/general.php +++ b/resources/lang/es-VE/admin/custom_fields/general.php @@ -7,9 +7,9 @@ return [ 'about_fieldsets_title' => 'Acerca de los grupos de campos', 'about_fieldsets_text' => 'Los grupos de campos le permiten agrupar campos personalizados que se reutilizan frecuentemente para determinados modelos de activos.', 'custom_format' => 'Formato de expresion regular personalizada...', - 'encrypt_field' => 'Encriptar el valor de este campo en la base de datos', - 'encrypt_field_help' => 'ADVERTENCIA: Encriptar un campo hace que no pueda ser buscado.', - 'encrypted' => 'Encriptado', + 'encrypt_field' => 'Cifrar el valor de este campo en la base de datos', + 'encrypt_field_help' => 'ADVERTENCIA: Cifrar un campo hace que no se pueda buscar.', + 'encrypted' => 'Cifrado', 'fieldset' => 'Grupo de campos', 'qty_fields' => 'Campos de cantidad', 'fieldsets' => 'Grupo de campos', @@ -24,35 +24,35 @@ return [ 'field_custom_format_help' => 'Este campo te permite usar una expresión regex para la validación. Debería empezar como "regex:" - por ejemplo, para validar que un campo personalizado contiene un IMEI válido (15 dígitos numéricos), tú usarías regex:/^[0-9]{15}$/.', 'required' => 'Obligatorio', 'req' => 'Obl.', - 'used_by_models' => 'Usado por Modelos', + 'used_by_models' => 'Usado por los modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo grupo de campos', 'update_fieldset' => 'Actualizar grupo de campos', 'fieldset_does_not_exist' => 'El grupo de campos :id no existe', - 'fieldset_updated' => 'Conjunto de campos actualizado', - 'create_fieldset_title' => 'Crear un nuevo conjunto de campos', + 'fieldset_updated' => 'Se actualizó el grupo de campos', + 'create_fieldset_title' => 'Crear nuevo grupo de campos', 'create_field' => 'Nuevo Campo Personalizado', 'create_field_title' => 'Crear un campo personalizado', - 'value_encrypted' => 'El valor de este campo está encriptado en la base de datos. Sólo los administradores podrán ver el valor desencriptado', - 'show_in_email' => '¿Incluye el valor de este campo en los correos de pago enviados al usuario? Los campos cifrados no se pueden incluir en los correos electrónicos', + 'value_encrypted' => 'El valor de este campo está cifrado en la base de datos. Solo los administradores pueden ver el valor descifrado', + 'show_in_email' => '¿Incluir el campo en los correos de asignación enviados al usuario? Los campos cifrados no se pueden incluir en los correos electrónicos', 'show_in_email_short' => 'Incluye en correos electrónicos.', 'help_text' => 'Texto de Ayuda', 'help_text_description' => 'Este es un texto opcional que aparecerá debajo de los elementos del formulario al editar un activo para proporcionar contexto en el campo.', 'about_custom_fields_title' => 'Acerca de campos personalizados', 'about_custom_fields_text' => 'Los campos personalizados le permiten agregar atributos arbitrarios a los activos.', - 'add_field_to_fieldset' => 'Agregar campo a un conjunto de campos', + 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', 'make_optional' => 'Requerido - haga click para hacerlo opcional', 'make_required' => 'Opcional - haga click para hacerlo opcional', 'reorder' => 'Reordenar', - 'db_field' => 'Campo de DB', + 'db_field' => 'Campo en base de datos', 'db_convert_warning' => 'ADVERTENCIA. Este campo está en la tabla de campos personalizados como :db_column pero debe ser :expected.', 'is_unique' => 'Este valor debe ser unico en todos los activos', 'unique' => 'Único', - 'display_in_user_view' => 'Permitir al usuario retirado ver estos valores en su página Ver Recursos asignados', + 'display_in_user_view' => 'Permitir al usuario ver estos valores en la página "Ver elementos asignados"', 'display_in_user_view_table' => 'Visible para el usuario', - 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo conjunto de campos', - 'add_to_preexisting_fieldsets' => 'Añadir a cualquier conjunto de campos existente', - 'show_in_listview' => 'Mostrar por defecto en las vistas de la lista. Los usuarios autorizados podrán mostrar/ocultar a través del selector de columnas', + 'auto_add_to_fieldsets' => 'Añadir automáticamente a cada nuevo grupo de campos', + 'add_to_preexisting_fieldsets' => 'Añadir a cualquier grupo de campos existente', + 'show_in_listview' => 'Mostrar por defecto en las consultas. Los usuarios autorizados podrán mostrar/ocultar a través del selector de columnas', 'show_in_listview_short' => 'Mostrar en listas', 'show_in_requestable_list_short' => 'Mostrar en la lista de activos que se pueden solicitar', 'show_in_requestable_list' => 'Mostrar el valor en la lista de activos que se pueden solicitar. Los campos cifrados no se mostrarán', diff --git a/resources/lang/es-VE/admin/custom_fields/message.php b/resources/lang/es-VE/admin/custom_fields/message.php index 3d4ce6d205..446af23a31 100644 --- a/resources/lang/es-VE/admin/custom_fields/message.php +++ b/resources/lang/es-VE/admin/custom_fields/message.php @@ -5,11 +5,12 @@ return array( 'field' => array( 'invalid' => 'El campo no existe.', 'already_added' => 'El campo ya fue agregado', + 'none_selected' => 'No se ha seleccionado ningún campo', 'create' => array( 'error' => 'El campo no fue creado, por favor inténtalo de nuevo.', 'success' => 'Campo creado con éxito.', - 'assoc_success' => 'Campo añadido al Fieldset con éxito.' + 'assoc_success' => 'Campo correctamente añadido al grupo.' ), 'update' => array( @@ -28,30 +29,30 @@ return array( 'fieldset' => array( - 'does_not_exist' => 'No existe el Fieldset', + 'does_not_exist' => 'El grupo de campos no existe', 'create' => array( - 'error' => 'No se ha creado el Fieldset, por favor, inténtelo de nuevo.', - 'success' => 'Fieldset creado con éxito.' + 'error' => 'El grupo de campos no ha sido creado, por favor inténtelo de nuevo.', + 'success' => 'Grupo de campos creado satisfactoriamente.' ), 'update' => array( - 'error' => 'El Fieldset no ha sido actualizado, por favor, inténtelo de nuevo', - 'success' => 'Fieldset actualizado con éxito.' + 'error' => 'El grupo de campos no ha sido actualizado, por favor inténtelo de nuevo', + 'success' => 'Grupo de campos actualizado correctamente.' ), 'delete' => array( 'confirm' => '¿Está seguro de que quiere eliminar este grupo de campos?', - 'error' => 'Hubo un problema al eliminar el Fieldset. Por favor, inténtelo de nuevo.', - 'success' => 'El Fieldset ha sido borrado con éxito.', - 'in_use' => 'Este Fieldset aún está en uso.', + 'error' => 'Hubo un problema al eliminar el grupo de campos. Inténtelo de nuevo.', + 'success' => 'El grupo de campos se eliminó correctamente.', + 'in_use' => 'El grupo de campos está aún en uso.', ) ), 'fieldset_default_value' => array( - 'error' => 'Error al validar los valores por defecto del conjunto de campos.', + 'error' => 'Error al validar los valores por defecto del grupo de campos.', ), diff --git a/resources/lang/es-VE/admin/departments/message.php b/resources/lang/es-VE/admin/departments/message.php index a108a5a625..5c3df3b368 100644 --- a/resources/lang/es-VE/admin/departments/message.php +++ b/resources/lang/es-VE/admin/departments/message.php @@ -4,13 +4,13 @@ return array( 'does_not_exist' => 'El departamento no existe.', 'department_already_exists' => 'Ya existe un departamento con ese nombre en esta ubicación de la compañía. O elija un nombre más específico para este departamento. ', - 'assoc_users' => 'Este departamento está actualmente asociado con al menos un usuario y no puede ser borrado. Por favor actualiza tus usuarios para no referenciar este departamento e inténtelo de nuevo. ', + 'assoc_users' => 'Este departamento está actualmente asociado con al menos un usuario y no puede ser eliminado. Por favor, actualice sus usuarios para que no hagan referencia a este departamento e inténtelo de nuevo. ', 'create' => array( 'error' => 'El departamento no fue creado, por favor, inténtelo de nuevo.', 'success' => 'Departamento creado con éxito.' ), 'update' => array( - 'error' => 'El departamento no se ha actualizado, por favor, inténtelo de nuevo', + 'error' => 'El departamento no fue actualizado, por favor inténtelo de nuevo', 'success' => 'El departamento fue actualizado con éxito.' ), 'delete' => array( diff --git a/resources/lang/es-VE/admin/depreciations/general.php b/resources/lang/es-VE/admin/depreciations/general.php index af587e734c..14a75fb14f 100644 --- a/resources/lang/es-VE/admin/depreciations/general.php +++ b/resources/lang/es-VE/admin/depreciations/general.php @@ -7,7 +7,7 @@ return [ 'create' => 'Crear depreciación', 'depreciation_name' => 'Nombre de depreciación', 'depreciation_min' => 'Valor del piso de la depreciación', - 'number_of_months' => 'Número de Meses', + 'number_of_months' => 'Número de meses', 'update' => 'Actualizar Depreciación', 'depreciation_min' => 'Valor mínimo después de la depreciación', 'no_depreciations_warning' => 'Advertencia: diff --git a/resources/lang/es-VE/admin/depreciations/message.php b/resources/lang/es-VE/admin/depreciations/message.php index b6f8f3fc6f..43984fc2f6 100644 --- a/resources/lang/es-VE/admin/depreciations/message.php +++ b/resources/lang/es-VE/admin/depreciations/message.php @@ -3,22 +3,22 @@ return array( 'does_not_exist' => 'La clase de depreciación no existe.', - 'assoc_users' => 'La depreciación está actualmente asociada a uno o más modelos y no puede ser borrada. Por favor, borra los modelos y luego inténtalo nuevamente. ', + 'assoc_users' => 'Esta depreciación está actualmente asociada con uno o más modelos y no puede ser eliminada. Por favor, elimine los modelos y luego intente borrarlas de nuevo. ', 'create' => array( - 'error' => 'La clase de depreciación no ha sido creada, por favor, inténtalo de nuevo. :(', + 'error' => 'El tipo de depreciación no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'La clase de depreciación creada con éxito. :)' ), 'update' => array( - 'error' => 'La clase de depreciación no fue actualizada, por favor, inténtalo de nuevo', + 'error' => 'El tipo de depreciación no fue actualizado, por favor, inténtelo de nuevo', 'success' => 'La clase de depreciación ha sido actualizada con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta clase de depreciación?', - 'error' => 'Hubo un problema borrando la clase de depreciación. Por favor inténtalo de nuevo.', + 'error' => 'Ha sucedido un error eliminando el tipo de depreciación, por favor intente de nuevo.', 'success' => 'La clase de depreciación ha sido actualizada con éxito.' ) diff --git a/resources/lang/es-VE/admin/groups/message.php b/resources/lang/es-VE/admin/groups/message.php index 362f78726f..754c3b637c 100644 --- a/resources/lang/es-VE/admin/groups/message.php +++ b/resources/lang/es-VE/admin/groups/message.php @@ -14,8 +14,8 @@ return array( 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este grupo?', - 'create' => 'Hubo un problema al crear el grupo, por favor, inténtalo de nuevo.', - 'update' => 'Hubo un problema al actualizar el grupo, por favor, inténtalo de nuevo.', + 'create' => 'Hubo un problema creando el grupo. Por favor intente nuevamente.', + 'update' => 'Hubo un problema actualizando el grupo. Por favor, intente nuevamente.', 'delete' => 'Hubo un problema al borrar el grupo, por favor, inténtalo de nuevo.', ), diff --git a/resources/lang/es-VE/admin/hardware/form.php b/resources/lang/es-VE/admin/hardware/form.php index c0904a711c..66c196d8ff 100644 --- a/resources/lang/es-VE/admin/hardware/form.php +++ b/resources/lang/es-VE/admin/hardware/form.php @@ -1,35 +1,35 @@ 'Confirmar Eliminación Masiva de Activos', + 'bulk_delete' => 'Confirmar eliminación masiva de activos', 'bulk_restore' => 'Confirmar recuperación masiva de activos', - 'bulk_delete_help' => 'Revisa los activos para eliminación masiva abajo. Una vez borrados, estos activos pueden ser restaurados, pero no estarán asociados con ningún usuario al que estén asignados actualmente.', + 'bulk_delete_help' => 'Revise a continuación los activos para eliminación masiva. Una vez eliminados, estos activos se pueden restaurar, pero ya no estarán asociados a ningún usuario al que estén asignados actualmente.', 'bulk_restore_help' => 'Revisar los activos para la restauración en masa a continuación. Una vez restaurados, estos activos no estarán asociados con los usuarios a los que fueron asignados anteriormente.', 'bulk_delete_warn' => 'Va a eliminar :asset_count activos.', 'bulk_restore_warn' => 'Está a punto de restaurar :asset_count activos.', - 'bulk_update' => 'Actualización Masiva de Activos', - 'bulk_update_help' => 'Este formulario te permite actualizar múltiples activos de una vez. Sólo llena los campos que necesites cambiar. Cualquier campo dejado en blanco permanecerá sin cambios. ', - 'bulk_update_warn' => 'Está a punto de editar las propiedades de un solo recurso.|Está a punto de editar las propiedades de :asset_count activos.', - 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos son :asset_model_count diferentes tipos de modelos.', + 'bulk_update' => 'Actualización masiva de activos', + 'bulk_update_help' => 'Este formulario le permite actualizar varios activos a la vez. Complete solo los campos que necesite modificar. Los campos que se dejen en blanco no se modificarán. ', + 'bulk_update_warn' => 'Está a punto de editar las propiedades de un solo activo.|Está a punto de editar las propiedades de :asset_count activos.', + 'bulk_update_with_custom_field' => 'Tenga en cuenta que los activos corresponden a :asset_model_count tipos diferentes de modelos.', 'bulk_update_model_prefix' => 'En modelos', - 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado a granel.', - 'checkedout_to' => 'Asignado A', + 'bulk_update_custom_field_unique' => 'Este es un campo único y no puede ser editado de forma masiva.', + 'checkedout_to' => 'Asignado a', 'checkout_date' => 'Fecha de asignación', - 'checkin_date' => 'Fecha de devolución', - 'checkout_to' => 'Asignar A', - 'cost' => 'Costo de Compra', - 'create' => 'Crear Activo', + 'checkin_date' => 'Fecha de ingreso', + 'checkout_to' => 'Asignar a', + 'cost' => 'Precio de compra', + 'create' => 'Crear activo', 'date' => 'Fecha de compra', 'depreciation' => 'Depreciación', 'depreciates_on' => 'Se Deprecia En', 'default_location' => 'Ubicación predeterminada', 'default_location_phone' => 'Teléfono de ubicación por defecto', 'eol_date' => 'Fecha fin de soporte (EOL)', - 'eol_rate' => 'Tasa de Fin de Vida', + 'eol_rate' => 'Tasa fin de soporte (EOL)', 'expected_checkin' => 'Fecha esperada de devolución', 'expires' => 'Vence', 'fully_depreciated' => 'Completamente Depreciado', - 'help_checkout' => 'Si deseas asignar este activo inmediatamente, selecciona "Listo para Asignar" de la lista de estados arriba. ', + 'help_checkout' => 'Si desea asignar este equipo inmediatamente, seleccione "Listo para asignar" de la lista de estados de arriba. ', 'mac_address' => 'Dirección MAC', 'manufacturer' => 'Fabricante', 'model' => 'Modelo', @@ -39,16 +39,16 @@ return [ 'order' => 'Número de orden', 'qr' => 'Código QR', 'requestable' => 'Los usuarios pueden solicitar este elemento', - 'redirect_to_all' => 'Return to all :type', + 'redirect_to_all' => 'Regresar a :type', 'redirect_to_type' => 'Ir a :type', - 'redirect_to_checked_out_to' => 'Go to Checked Out to', - 'select_statustype' => 'Seleccione un tipo de estado', - 'serial' => 'Serial', + 'redirect_to_checked_out_to' => 'Ir a elementos asignados', + 'select_statustype' => 'Seleccionar un tipo de estado', + 'serial' => 'Número de serie', 'status' => 'Estado', - 'tag' => 'Etiqueta del activo', - 'update' => 'Actualizar Activo', + 'tag' => 'Placa del activo', + 'update' => 'Actualizar activo', 'warranty' => 'Garantía', - 'warranty_expires' => 'La garantía vence', + 'warranty_expires' => 'Vencimiento de la garantía', 'years' => 'años', 'asset_location' => 'Actualizar ubicación del activo', 'asset_location_update_default_current' => 'Actualizar ubicación predeterminada y ubicación actual', diff --git a/resources/lang/es-VE/admin/hardware/general.php b/resources/lang/es-VE/admin/hardware/general.php index 8a136485b9..100fe91c2b 100644 --- a/resources/lang/es-VE/admin/hardware/general.php +++ b/resources/lang/es-VE/admin/hardware/general.php @@ -1,22 +1,22 @@ 'Acerca de Activos', - 'about_assets_text' => 'Los activos son seguidos mediante el número del serial o la etiqueta del activo. Tienden a ser objetos de mayor valor en los que identificar un objeto específico importa.', + 'about_assets_title' => 'Acerca de los activos', + 'about_assets_text' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', 'archived' => 'Archivado', 'asset' => 'Activo', - 'bulk_checkout' => 'Activos de pago', - 'bulk_checkin' => 'Devolver activos', - 'checkin' => 'Devolver activo', - 'checkout' => 'Retirar Activo', + 'bulk_checkout' => 'Asignar activos', + 'bulk_checkin' => 'Ingresar activos', + 'checkin' => 'Ingresar activo', + 'checkout' => 'Asignar activo', 'clone' => 'Clonar activo', 'deployable' => 'Utilizable', 'deleted' => 'Este activo fue eliminado.', - 'delete_confirm' => '¿Está seguro de que desea eliminar este recurso?', + 'delete_confirm' => '¿Está seguro de que desea eliminar este activo?', 'edit' => 'Editar activo', - 'model_deleted' => 'Este modelo de activos ha sido eliminado. Debe restaurar el modelo antes de poder restaurar el activo.', + 'model_deleted' => 'Este modelo de activo ha sido eliminado. Debe restaurar este modelo antes de poder restaurar el activo.', 'model_invalid' => 'Este modelo para este activo es inválido.', - 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar asignarlo, devolverlo o auditarlo.', + 'model_invalid_fix' => 'El activo debe ser actualizado, use un modelo de activo válido antes de intentar ingresarlo, asignarlo o auditarlo.', 'requestable' => 'Puede solicitarse', 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', @@ -27,16 +27,16 @@ return [ 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que es no utilizable y no puede ser asignado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Tiene un error en su archivo CSV:', - 'import_text' => '

Cargue un archivo CSV que contenga el historial de activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La importación del historial busca activos que coincidan con la etiqueta de activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Admin > Opciones Generales.

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

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

', - 'csv_import_match_f-l' => 'Intenta emparejar usuarios con formato nombre.lastname (jane.smith)', - 'csv_import_match_initial_last' => 'Intentar emparejar a los usuarios con un formato primer apellido inicial (jsmith)', - 'csv_import_match_first' => 'Intentar emparejar a los usuarios con formato primer nombre (jane)', - 'csv_import_match_email' => 'Intenta emparejar a los usuarios por email como nombre de usuario', - 'csv_import_match_username' => 'Intentar hacer coincidir los usuarios usando la propiedad Usuario', + 'import_text' => '

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

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

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

', + 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', + 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', + 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', + 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor vea abajo para más detalles.', 'custom_export' => 'Personalizar exportación', - 'mfg_warranty_lookup' => ':fabricante Garantía Estado Búsqueda', + 'mfg_warranty_lookup' => 'Búsqueda del estado de garantía para :manufacturer', 'user_department' => 'Departamento de Usuario', ]; diff --git a/resources/lang/es-VE/admin/hardware/message.php b/resources/lang/es-VE/admin/hardware/message.php index 5e8c81af45..68139d3e37 100644 --- a/resources/lang/es-VE/admin/hardware/message.php +++ b/resources/lang/es-VE/admin/hardware/message.php @@ -2,32 +2,31 @@ return [ - 'undeployable' => 'Atención: Este elemento ha sido marcado como no utilizable. - Si no es correcto, actualice el estado.', + 'undeployable' => 'Advertencia: Este activo actualmente está marcado como no utilizable. Si este estado ha cambiado, por favor, actualice el estado del activo.', 'does_not_exist' => 'El activo no existe.', - 'does_not_exist_var'=> 'Activo con etiqueta :asset_tag no encontrado.', - 'no_tag' => 'No se ha proporcionado ninguna etiqueta de activo.', + 'does_not_exist_var'=> 'Activo con placa :asset_tag no encontrado.', + 'no_tag' => 'No se ha proporcionado ninguna placa de activo.', 'does_not_exist_or_not_requestable' => 'Ese activo no existe o no es solicitable.', - 'assoc_users' => 'Este activo está actualmente asignado a un usuario y no puede ser borrado. Por favor, revisa el activo primero y luego intenta borrarlo. ', + 'assoc_users' => 'Actualmente este activo está asignado a un usuario y no puede ser eliminado. Por favor, primero devuelva o recupere el activo y vuelva a intentarlo. ', 'warning_audit_date_mismatch' => 'La próxima fecha de auditoría de este activo (:next_audit_date) es anterior a la última fecha de auditoría (:last_audit_date). Por favor, actualice la próxima fecha de auditoría.', 'create' => [ 'error' => 'El activo no fue creado, por favor, inténtelo de nuevo. :(', 'success' => 'Activo creado con éxito. :)', - 'success_linked' => 'Activo con etiqueta :tag creado con éxito. Haga clic aquí para ver.', + 'success_linked' => 'Activo con placa :tag creado con éxito. Haga clic aquí para ver.', ], 'update' => [ - 'error' => 'Activo no ha sido actualizado, por favor, inténtelo de nuevo', + 'error' => 'El activo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'Activo actualizado con éxito.', - 'encrypted_warning' => 'Activo actualizado con éxito, pero los campos personalizados cifrados no se debieron a permisos', + 'encrypted_warning' => 'El activo se actualizó correctamente, pero los campos personalizados cifrados no lo hicieron debido a los permisos', 'nothing_updated' => 'Ningún campo fue seleccionado, así que nada se actualizó.', - 'no_assets_selected' => 'Ningún recurso fue seleccionado, por lo que no se actualizó nada.', + 'no_assets_selected' => 'Ningún activo fue seleccionado, por lo que no se actualizó nada.', 'assets_do_not_exist_or_are_invalid' => 'Los activos seleccionados no se pueden actualizar.', ], 'restore' => [ - 'error' => 'El activo no fue restaurado, por favor, inténtalo de nuevo', + 'error' => 'El activo no fue restaurado, por favor inténtelo nuevamente', 'success' => 'Activo restaurado correctamente.', 'bulk_success' => 'Activo restaurado correctamente.', 'nothing_updated' => 'No se seleccionaron activos, por lo que no se restauró nada.', @@ -40,7 +39,7 @@ return [ 'deletefile' => [ - 'error' => 'El archivo no fue borrado. Por favor, inténtalo de nuevo.', + 'error' => 'Archivo no eliminado. Por favor inténtelo nuevamente.', 'success' => 'Archivo borrado con éxito.', ], @@ -48,14 +47,15 @@ return [ 'error' => 'Archivo(s) no cargado(s). Por favor, inténtelo nuevamente.', 'success' => 'Archivo(s) cargado(s) exitosamente.', 'nofiles' => 'No seleccionó ningún archivo para ser cargado, o el archivo que está tratando de cargar es demasiado grande', - 'invalidfiles' => 'Uno o más de tus archivos es demasiado grande o es de un tipo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf, y txt.', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ], 'import' => [ + 'import_button' => 'Proceso para importar', 'error' => 'Algunos de los elementos no se importaron correctamente.', 'errorDetail' => 'Lo siguientes elementos no se importaron debido a errores.', - 'success' => 'Tu archivo ha sido importado', - 'file_delete_success' => 'Tu archivo ha sido eliminado con éxito', + 'success' => 'Su archivo ha sido importado', + 'file_delete_success' => 'Su archivo se ha eliminado correctamente', 'file_delete_error' => 'El archivo no se pudo eliminar', 'file_missing' => 'Falta el archivo seleccionado', 'header_row_has_malformed_characters' => 'Uno o más atributos en la fila del encabezado contienen caracteres UTF-8 mal formados', @@ -65,31 +65,31 @@ return [ 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar este activo?', - 'error' => 'Ha habido un problema eliminando el activo. Por favor, inténtelo de nuevo.', + 'error' => 'Hubo un problema al eliminar el activo. Por favor, inténtelo de nuevo.', 'nothing_updated' => 'Ningún activo se seleccionó, así que nada fue borrado.', 'success' => 'El activo fue borrado con éxito.', ], 'checkout' => [ 'error' => 'El activo no fue asignado, por favor inténtelo de nuevo', - 'success' => 'Activo asignado con éxito.', - 'user_does_not_exist' => 'El usuario es inválido. Por favor, inténtelo de nuevo.', - 'not_available' => '¡Ese activo no está disponible para retirar!', + 'success' => 'Equipo asignado correctamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'not_available' => '¡Ese equipo no está disponible para ser asignado!', 'no_assets_selected' => 'Debes seleccionar al menos un activo de la lista', ], 'checkin' => [ - 'error' => 'El equipo no se pudo devolver, por favor inténtelo de nuevo', - 'success' => 'El activo fue devuelto exitosamente.', - 'user_does_not_exist' => 'Es usuario no es correcto, por favor inténtelo de nuevo.', - 'already_checked_in' => 'El equipo ya ha sido devuelto.', + 'error' => 'El activo no se pudo ingresar, por favor inténtelo de nuevo', + 'success' => 'El activo fue ingresado exitosamente.', + 'user_does_not_exist' => 'Este usuario no es correcto. Por favor, inténtelo de nuevo.', + 'already_checked_in' => 'El equipo ya ha sido recibido.', ], 'requests' => [ - 'error' => 'El activo no fue solicitado, por favor, inténtalo de nuevo', + 'error' => 'El activo no pudo ser solicitado, por favor inténtelo de nuevo', 'success' => 'Activo solicitado correctamente.', - 'canceled' => 'Solicitud de asignación cancelada con éxito', + 'canceled' => 'La solicitud de asignación fue cancelada de forma exitosa', ], ]; diff --git a/resources/lang/es-VE/admin/hardware/table.php b/resources/lang/es-VE/admin/hardware/table.php index f60897abe2..270064451a 100644 --- a/resources/lang/es-VE/admin/hardware/table.php +++ b/resources/lang/es-VE/admin/hardware/table.php @@ -2,24 +2,24 @@ return [ - 'asset_tag' => 'Etiqueta de Activo', + 'asset_tag' => 'Placa del activo', 'asset_model' => 'Modelo', 'assigned_to' => 'Asignado a', 'book_value' => 'Valor actual', - 'change' => 'Registrado / Asignado', - 'checkout_date' => 'Fecha de Asignación', - 'checkoutto' => 'Asignado', + 'change' => 'Operación', + 'checkout_date' => 'Fecha de asignación', + 'checkoutto' => 'Asignado a', 'components_cost' => 'Coste total de componentes', 'current_value' => 'Valor actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', - 'eol' => 'Fin de Vida', - 'id' => 'Identificación', - 'last_checkin_date' => 'Última fecha de devolución', + 'eol' => 'Fin de soporte (EOL)', + 'id' => 'ID', + 'last_checkin_date' => 'Última fecha de ingreso', 'location' => 'Ubicación', 'purchase_cost' => 'Costo', 'purchase_date' => 'Comprado', - 'serial' => 'Serial', + 'serial' => 'Número de serie', 'status' => 'Estado', 'title' => 'Activo ', 'image' => 'Imagen de dispositivo', @@ -28,6 +28,6 @@ return [ 'assigned_to' => 'Asignado a', 'requesting_user' => 'Solicitando usuario', 'requested_date' => 'Fecha solicitada', - 'changed' => 'Cambiado', + 'changed' => 'Cambios', 'icon' => 'Icono', ]; diff --git a/resources/lang/es-VE/admin/kits/general.php b/resources/lang/es-VE/admin/kits/general.php index ccd1deae3b..0236af3ec1 100644 --- a/resources/lang/es-VE/admin/kits/general.php +++ b/resources/lang/es-VE/admin/kits/general.php @@ -2,19 +2,19 @@ return [ 'about_kits_title' => 'Acerca de Kits predefinidos', - 'about_kits_text' => 'Kits predefinidos le permiten revisar rápidamente una colección de elementos (activos, licencias, etc.) a un usuario. Esto puede ser útil cuando su proceso de incorporación es consistente entre muchos usuarios y todos los usuarios reciben los mismos artículos.', - 'checkout' => 'Kit de pago ', + 'about_kits_text' => 'Los kits predefinidos le permiten rápidamente asignar un conjunto de elementos (activos, licencias, etc.) a un usuario. Esto puede ser útil cuando su proceso de incorporación de usuarios es similar para muchos usuarios y todos reciben los mismos elementos.', + 'checkout' => 'Asignar kit ', 'create_success' => 'El kit se ha creado correctamente.', 'create' => 'Crear kit predefinido', 'update' => 'Actualizar kit predefinido', 'delete_success' => 'Kit eliminado correctamente.', 'update_success' => 'El kit se ha actualizado correctamente.', - 'none_models' => 'No hay suficientes recursos disponibles para :model para pagar. :qty son requeridos. ', - 'none_licenses' => 'No hay suficientes asientos disponibles para :license para pagar. :qty son requeridos. ', - 'none_consumables' => 'No hay suficientes unidades disponibles de :consumible para pagar. :qty son requeridas. ', - 'none_accessory' => 'No hay suficientes unidades disponibles de :accesory para pagar. :qty son requeridas. ', + 'none_models' => 'No hay suficientes activos disponibles de :model para asignar. Se requieren :qty. ', + 'none_licenses' => 'No hay suficientes licencias disponibles de :license para asignar. Se requieren :qty. ', + 'none_consumables' => 'No hay suficientes unidades disponibles de :consumable para asignar. Se requieren :qty. ', + 'none_accessory' => 'No hay suficientes unidades disponibles de :accessory para asignar. Se requieren :qty. ', 'append_accessory' => 'Añadir accesorio', - 'update_appended_accessory' => 'Actualizar accesorio adjunto', + 'update_appended_accessory' => 'Actualizar accesorio añadido', 'append_consumable' => 'Añadir consumible', 'update_appended_consumable' => 'Actualizar consumible adjunto', 'append_license' => 'Añadir licencia', @@ -38,8 +38,8 @@ return [ 'accessory_error' => 'El accesorio ya está conectado al kit', 'accessory_deleted' => 'El borrado fue exitoso', 'accessory_none' => 'El accesorio no existe', - 'checkout_success' => 'El pago fue exitoso', - 'checkout_error' => 'Error de pago', + 'checkout_success' => 'Asignación correcta', + 'checkout_error' => 'Error al asignar', 'kit_none' => 'El kit no existe', 'kit_created' => 'El kit se creó con éxito', 'kit_updated' => 'El kit se actualizó con éxito', diff --git a/resources/lang/es-VE/admin/labels/table.php b/resources/lang/es-VE/admin/labels/table.php index 9831a9551d..055d28c169 100644 --- a/resources/lang/es-VE/admin/labels/table.php +++ b/resources/lang/es-VE/admin/labels/table.php @@ -10,7 +10,7 @@ return [ 'example_supplier' => 'Compañía de prueba limitada', 'labels_per_page' => 'Etiquetas', 'support_fields' => 'Campos', - 'support_asset_tag' => 'Etiqueta', + 'support_asset_tag' => 'Placa', 'support_1d_barcode' => '1D', 'support_2d_barcode' => '2D', 'support_logo' => 'Logo', diff --git a/resources/lang/es-VE/admin/licenses/form.php b/resources/lang/es-VE/admin/licenses/form.php index 5653d27129..fd40ca47ae 100644 --- a/resources/lang/es-VE/admin/licenses/form.php +++ b/resources/lang/es-VE/admin/licenses/form.php @@ -3,7 +3,7 @@ return array( 'asset' => 'Activo', - 'checkin' => 'Devolver', + 'checkin' => 'Ingresar', 'create' => 'Crear licencia', 'expiration' => 'Fecha de vencimiento', 'license_key' => 'Clave del Producto', @@ -12,11 +12,11 @@ return array( 'no_depreciation' => 'No depreciar', 'purchase_order' => 'Número de orden de compra', 'reassignable' => 'Reasignable', - 'remaining_seats' => 'Intalaciones Restantes', - 'seats' => 'Instalaciones', - 'termination_date' => 'Fecha de Finalización', - 'to_email' => 'Licenciado al Correo Electrónico', - 'to_name' => 'Licenciado a Nombre', + 'remaining_seats' => 'Disponibles', + 'seats' => 'Total de licencias', + 'termination_date' => 'Fecha de finalización', + 'to_email' => 'Correo electrónico asociado a la licencia', + 'to_name' => 'Nombre de la persona asociada a la licencia', 'update' => 'Actualizar Licencia', 'checkout_help' => 'Debe asignar una licencia a un activo de hardware o a una persona. Puede seleccionar ambos, pero el propietario del activo debe coincidir con la persona a la que está asignado el activo.' ); diff --git a/resources/lang/es-VE/admin/licenses/general.php b/resources/lang/es-VE/admin/licenses/general.php index 6a3a2ecd8e..83ed845816 100644 --- a/resources/lang/es-VE/admin/licenses/general.php +++ b/resources/lang/es-VE/admin/licenses/general.php @@ -2,50 +2,51 @@ return array( 'about_licenses_title' => 'Acerca de las Licencias', - 'about_licenses' => 'Las licencias son usadas para rastrear el software. Tienen un número específico de puestos que pueden ser asignados a individuos', - 'checkin' => 'Registrar Puestos de Licencia', - 'checkout_history' => 'Historial de Asignaciones', - 'checkout' => 'Registrar Puesto de Licencia', + 'about_licenses' => 'Las licencias se utilizan para hacer un seguimiento del software. Tienen una cantidad determinada que puede ser asignada a individuos', + 'checkin' => 'Ingresar licencia', + 'checkout_history' => 'Historial de asignaciones', + 'checkout' => 'Asignar licencia', 'edit' => 'Editar Licencia', 'filetype_info' => 'Los tipos de archivo permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, y rar.', 'clone' => 'Clonar Licencia', 'history_for' => 'Historial de ', 'in_out' => 'Registrado / Asignado', 'info' => 'Información de licencia', - 'license_seats' => 'Puestos de Licencia', - 'seat' => 'Puesto', - 'seats' => 'Puestos', + 'license_seats' => 'Total de licencias', + 'seat' => 'Licencia', + 'seat_count' => 'Licencia :count', + 'seats' => 'Total de licencias', 'software_licenses' => 'Licencias de Software', 'user' => 'Usuario', 'view' => 'Ver Licencia', - 'delete_disabled' => 'Esta licencia no se puede eliminar aún porque algunos asientos todavía están retirados.', + 'delete_disabled' => 'Esta licencia no se puede eliminar aún está asignada a algunos usuarios.', 'bulk' => [ 'checkin_all' => [ - 'button' => 'Comprobar todos los asientos', - 'modal' => 'Esto activará el checkin de un asiento. | Esta acción registrará todos los asientos :checkedout_seats_count para esta licencia.', - 'enabled_tooltip' => 'Checkin TODOS los asientos para esta licencia tanto de usuarios como de activos', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos seleccionados actualmente', + 'button' => 'Ingresar todas las licencias', + 'modal' => 'Esta acción ingresará una licencia. | Esta acción ingresará todas las :checkedout_seats_count licencias.', + 'enabled_tooltip' => 'Recibir TODAS las licencias tanto de usuarios como de activos', + 'disabled_tooltip' => 'Esto está deshabilitado porque no hay licencias asignadas actualmente', 'disabled_tooltip_reassignable' => 'Esto está desactivado porque la licencia no es reasignable', - 'success' => '¡Licencia registrada con éxito! | ¡Todas las licencias fueron registradas con éxito!', - 'log_msg' => 'Check-in a través de pago de licencia en licencia GUI', + 'success' => '¡Licencia recibida correctamente! | ¡Todas las licencias fueron recibidas correctamente!', + 'log_msg' => 'Ingresada mediante ingreso masivo en página de licencias', ], 'checkout_all' => [ - 'button' => 'Salir todos los asientos', - 'modal' => 'Esta acción comprobará un asiento para el primer usuario disponible. | Esta acción verificará todos los asientos :available_seats_count para los primeros usuarios disponibles. Se considera que un usuario está disponible para este asiento si aún no tiene esta licencia revisada para ellos, y la propiedad Auto-Asignación de Licencia está habilitada en su cuenta de usuario.', - 'enabled_tooltip' => 'Checkout TODOS los asientos (o tantos como estén disponibles) para TODOS los usuarios', - 'disabled_tooltip' => 'Esto está deshabilitado porque no hay asientos disponibles actualmente', - 'success' => '¡Licencia retirada con éxito! | ¡Licencias :count fueron retiradas con éxito!', - 'error_no_seats' => 'No quedan plazas restantes para esta licencia.', - 'warn_not_enough_seats' => ':count usuarios fueron asignados a esta licencia, pero nos quedamos sin plazas de licencia disponibles.', + 'button' => 'Asignar todas las licencias', + 'modal' => 'Esta acción asignará una licencia para el primer usuario disponible. | Esta acción asignará todas las :available_seats_count licencias a los primeros usuarios disponibles. Se considera que un usuario está disponible si aún no tiene esta licencia asignada y la propiedad "Autoasignación de licencia" está habilitada en su cuenta de usuario.', + 'enabled_tooltip' => 'Asignar TODAS las licencias (o tantas como estén disponibles) para TODOS los usuarios', + 'disabled_tooltip' => 'Esto está deshabilitado porque actualmente no hay licencias disponibles', + 'success' => '¡Licencia asignada exitosamente! | ¡Licencias :count asignadas exitosamente!', + 'error_no_seats' => 'No quedan licencias disponibles.', + 'warn_not_enough_seats' => 'Se asignaron :count usuarios a esta licencia, y se agotaron las licencias disponibles.', 'warn_no_avail_users' => 'Nada que hacer. No hay usuarios que no tengan esta licencia asignada.', - 'log_msg' => 'Checado mediante pago masivo de licencia en GUI licencia', + 'log_msg' => 'Asignada vía asignación masiva en página de licencias', ], ], - 'below_threshold' => 'Solo quedan :remaining_count asientos para esta licencia con una cantidad mínima de :min_amt. Puede considerar comprar más asientos.', + 'below_threshold' => 'Solo quedan :remaining_count licencias y su cantidad mínima es de :min_amt. Puede considerar la compra de más licencias.', 'below_threshold_short' => 'Este artículo está por debajo de la cantidad mínima requerida.', ); diff --git a/resources/lang/es-VE/admin/licenses/message.php b/resources/lang/es-VE/admin/licenses/message.php index 303af92f2e..ba7e418247 100644 --- a/resources/lang/es-VE/admin/licenses/message.php +++ b/resources/lang/es-VE/admin/licenses/message.php @@ -6,14 +6,14 @@ return array( 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', 'asset_does_not_exist' => 'El activo que intentas asociar con esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', - 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser borrada. Por favor, revisa la licencia primero y luego intenta borrarla. ', - 'select_asset_or_person' => 'Debes seleccionar un activo o un usuario, pero no ambos.', + 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', + 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', 'not_found' => 'Licencia no encontrada', - 'seats_available' => ':seat_count plazas disponibles', + 'seats_available' => ':seat_count disponibles', 'create' => array( - 'error' => 'La licencia no se ha creado, inténtelo de nuevo.', + 'error' => 'La licencia no fue creada, por favor inténtelo de nuevo.', 'success' => 'Licencia creada con éxito.' ), @@ -26,29 +26,31 @@ return array( 'error' => 'Archivo(s) no cargado(s). Por favor, inténtelo nuevamente.', 'success' => 'Archivo(s) cargado(s) con éxito.', 'nofiles' => 'No seleccionó ningún archivo para ser cargado, o el archivo que seleccionó es demasiado grande', - 'invalidfiles' => 'Uno o más de tus archivos son demasiado grandes o de un tipo no permitido. Los tipos permitidos son png, gif, jpg, doc, docx, pdf, txt, zip, rar, rtf, xml y lic.', + 'invalidfiles' => 'Uno o más de sus archivos es demasiado grande o es un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, rar, rtf, xml y lic.', ), 'update' => array( - 'error' => 'La licencia no se ha actualizado, inténtalo de nuevo', + 'error' => 'La licencia no fue actualizada, por favor inténtelo de nuevo', 'success' => 'Licencia actualizada con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar esta licencia?', - 'error' => 'Hubo un problema al borrar la licencia. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema al eliminar la licencia. Por favor, inténtelo de nuevo.', 'success' => 'La licencia fue eliminada con éxito.' ), 'checkout' => array( 'error' => 'Hubo un problema asignando la licencia. Por favor, inténtelo de nuevo.', 'success' => 'La licencia fue asignada con éxito', - 'not_enough_seats' => 'No hay suficientes asientos de licencia disponibles para la compra', + 'not_enough_seats' => 'No hay suficientes licencias disponibles para asignar', + 'mismatch' => 'La licencia proporcionada no coincide con la licencia seleccionada', + 'unavailable' => 'Esta licencia no está disponible para ser asignada.', ), 'checkin' => array( - 'error' => 'Hubo un problema devolviendo la licencia. Por favor, inténtalo de nuevo.', - 'success' => 'La licencia fue registrada con éxito' + 'error' => 'Hubo un problema ingresando la licencia. Por favor, inténtelo de nuevo.', + 'success' => 'La licencia fue ingresada correctamente' ), ); diff --git a/resources/lang/es-VE/admin/licenses/table.php b/resources/lang/es-VE/admin/licenses/table.php index dd1a1159ab..23ffeee4e2 100644 --- a/resources/lang/es-VE/admin/licenses/table.php +++ b/resources/lang/es-VE/admin/licenses/table.php @@ -3,14 +3,14 @@ return array( 'assigned_to' => 'Asignado A', - 'checkout' => 'Registrado / Asignado', + 'checkout' => 'Entrada/Salida', 'deleted_at' => 'Eliminado el', 'id' => 'ID', 'license_email' => 'Email de licencia', - 'license_name' => 'Licenciado A', + 'license_name' => 'Licenciado a', 'purchase_date' => 'Fecha de compra', 'purchased' => 'Comprado', - 'seats' => 'Puestos', + 'seats' => 'Total de licencias', 'hardware' => 'Hardware', 'serial' => 'Serial', 'title' => 'Licencia', diff --git a/resources/lang/es-VE/admin/locations/message.php b/resources/lang/es-VE/admin/locations/message.php index 3795c07b4a..686ce413b8 100644 --- a/resources/lang/es-VE/admin/locations/message.php +++ b/resources/lang/es-VE/admin/locations/message.php @@ -3,15 +3,15 @@ return array( 'does_not_exist' => 'La localización no existe.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', - 'assigned_assets' => 'Recursos asignados', + 'assigned_assets' => 'Activos asignados', 'current_location' => 'Ubicación actual', 'create' => array( - 'error' => 'La ubicación no fue creada, por favor, inténtelo de nuevo.', + 'error' => 'La ubicación no pudo ser creada, por favor inténtelo de nuevo.', 'success' => 'La ubicación fue creada exitosamente.' ), diff --git a/resources/lang/es-VE/admin/locations/table.php b/resources/lang/es-VE/admin/locations/table.php index 7bcca7cb94..5fde05586b 100644 --- a/resources/lang/es-VE/admin/locations/table.php +++ b/resources/lang/es-VE/admin/locations/table.php @@ -5,7 +5,7 @@ return [ 'about_locations' => 'Las ubicaciones son utilizadas para hacer seguimiento de la información sobre ubicación de usuarios, activos, y otros ítems', 'assets_rtd' => 'Activos', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. 'assets_checkedout' => 'Activos asignados', - 'id' => 'Identificación', + 'id' => 'ID', 'city' => 'Ciudad', 'state' => 'Estado', 'country' => 'País', @@ -24,14 +24,14 @@ return [ 'user_name' => 'Usuario', 'department' => 'Departamento', 'location' => 'Ubicación', - 'asset_tag' => 'Etiqueta de recursos', + 'asset_tag' => 'Placa del activo', 'asset_name' => 'Nombre', 'asset_category' => 'Categoría', 'asset_manufacturer' => 'Fabricante', 'asset_model' => 'Modelo', 'asset_serial' => 'Número de serie', 'asset_location' => 'Ubicación', - 'asset_checked_out' => 'Asignado', + 'asset_checked_out' => 'Asignado a', 'asset_expected_checkin' => 'Fecha esperada de devolución', 'date' => 'Fecha:', 'phone' => 'Teléfono ubicación', diff --git a/resources/lang/es-VE/admin/manufacturers/message.php b/resources/lang/es-VE/admin/manufacturers/message.php index a6c033e03c..22571cce1c 100644 --- a/resources/lang/es-VE/admin/manufacturers/message.php +++ b/resources/lang/es-VE/admin/manufacturers/message.php @@ -2,17 +2,17 @@ return array( - 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se puede utilizar en tu URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', + 'support_url_help' => 'Variables {LOCALE}, {SERIAL}, {MODEL_NUMBER}, y {MODEL_NAME} se pueden utilizar en su URL para que esos valores se llenen automáticamente al ver los activos - por ejemplo https://checkcoverage. pple.com/{LOCALE}/{SERIAL}.', 'does_not_exist' => 'El fabricante no existe.', - 'assoc_users' => 'Este fabricante está actualmente asociado con al menos un modelo y no puede ser borrado. Por favor, actualiza tus modelos para no referenciar este fabricante e inténtelo de nuevo. ', + 'assoc_users' => 'Este fabricante está actualmente asociado con al menos un modelo y no se puede eliminar. Por favor, actualice sus modelos para dejar de hacer referencia a este fabricante y vuelva a intentarlo. ', 'create' => array( - 'error' => 'El fabricante no ha sido creado, por favor, inténtalo de nuevo.', + 'error' => 'El fabricante no fue creado, por favor inténtelo de nuevo.', 'success' => 'Fabricante creado con éxito.' ), 'update' => array( - 'error' => 'El fabricante no ha sido actualizado, por favor, inténtelo de nuevo', + 'error' => 'El fabricante no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Fabricante actualizado con éxito.' ), @@ -23,8 +23,8 @@ return array( 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este fabricante?', - 'error' => 'Hubo un problema borrando el fabricante. Por favor, inténtalo de nuevo.', - 'success' => 'Fabricante borrado con éxito.' + 'error' => 'Ocurrió un problema eliminando el fabricante. Por favor, intente nuevamente.', + 'success' => 'El fabricante se ha eliminado correctamente.' ) ); diff --git a/resources/lang/es-VE/admin/manufacturers/table.php b/resources/lang/es-VE/admin/manufacturers/table.php index 7416b7f351..9ab7c77dcf 100644 --- a/resources/lang/es-VE/admin/manufacturers/table.php +++ b/resources/lang/es-VE/admin/manufacturers/table.php @@ -4,13 +4,13 @@ return array( 'about_manufacturers_title' => 'Sobre Fabricantes', 'about_manufacturers_text' => 'Los fabricantes son las empresas que crean sus activos. Aquí puede almacenar importante información de contacto para soporte, la cual se mostrará en las páginas de detalle de sus activos.', 'asset_manufacturers' => 'Fabricantes de activos', - 'create' => 'Crear Fabricante', + 'create' => 'Crear fabricante', 'id' => 'ID', 'name' => 'Nombre', 'support_email' => 'Correo de soporte', 'support_phone' => 'Teléfono de Soporte', 'support_url' => 'URL de Soporte', 'warranty_lookup_url' => 'URL de búsqueda de garantía', - 'update' => 'Actualizar Fabricante', + 'update' => 'Actualizar fabricante', ); diff --git a/resources/lang/es-VE/admin/models/general.php b/resources/lang/es-VE/admin/models/general.php index 7b575e0c7b..9ca2d303b4 100644 --- a/resources/lang/es-VE/admin/models/general.php +++ b/resources/lang/es-VE/admin/models/general.php @@ -7,12 +7,12 @@ return array( 'bulk_delete' => 'Eliminación Masiva de Modelos de Activos', 'bulk_delete_help' => 'Usa las casillas abajo para confirmar la eliminación de los modelos de activos seleccionados. Los modelos de activo que tienen distintos activos asociados con ellos no pueden ser borrados hasta que los activos sean asociados a un modelo diferente.', 'bulk_delete_warn' => 'Está a punto de eliminar un modelo de activo.|Está a punto de eliminar :model_count modelos de activos.', - 'restore' => 'Restaurar Modelo', + 'restore' => 'Restaurar modelo', 'requestable' => 'Los usuarios pueden solicitar este modelo', 'show_mac_address' => 'Mostrar campo de dirección MAC en activos en este modelo', 'view_deleted' => 'Ver Borrados', 'view_models' => 'Ver modelos', - 'fieldset' => 'Grupos de campo', + 'fieldset' => 'Grupo de campos', 'no_custom_field' => 'Sin campos personalizados', - 'add_default_values' => 'Añadir valores por defecto', + 'add_default_values' => 'Agregar valores predeterminados', ); diff --git a/resources/lang/es-VE/admin/models/message.php b/resources/lang/es-VE/admin/models/message.php index 5c0af1bab3..df8132b8a0 100644 --- a/resources/lang/es-VE/admin/models/message.php +++ b/resources/lang/es-VE/admin/models/message.php @@ -2,21 +2,21 @@ return array( - 'deleted' => 'Modelo de recurso eliminado', + 'deleted' => 'Se eliminó el modelo del activo', 'does_not_exist' => 'El modelo no existe.', - 'no_association' => '¡ATENCIÓN! ¡El modelo de activo para este artículo no es válido o falta!', + 'no_association' => '¡ADVERTENCIA! ¡El modelo de activo para este artículo no es válido o no existe!', 'no_association_fix' => 'Esto romperá cosas de formas extrañas y horribles. Edite este activo ahora para asignarle un modelo.', - 'assoc_users' => 'Este modelo está asignado a uno o más activos y no puede ser eliminado. Por favor, borra los activos y luego intenta borrarlo nuevamente. ', - + 'assoc_users' => 'Este modelo está asociado a uno o más activos y no puede ser eliminado. Por favor, elimine los activos y vuelva a intentarlo. ', + 'invalid_category_type' => 'Esta categoría debe ser una categoría de activos.', 'create' => array( - 'error' => 'El modelo no fue creado, por favor inténtalo de nuevo.', - 'success' => 'Modelo creado con éxito.', + 'error' => 'El modelo no fue creado, por favor inténtelo de nuevo.', + 'success' => 'El modelo fue creado exitosamente.', 'duplicate_set' => 'Ya existe un modelo de equipo con el mismo nombre, fabricante y número de modelo.', ), 'update' => array( - 'error' => 'El modelo no fue actualizado, por favor, inténtalo de nuevo', + 'error' => 'El modelo no pudo ser actualizado, por favor inténtelo de nuevo', 'success' => 'Modelo actualizado con éxito.', ), @@ -27,7 +27,7 @@ return array( ), 'restore' => array( - 'error' => 'El modelo no fue restaurado, por favor inténtalo de nuevo', + 'error' => 'El modelo no fue restaurado, por favor intente nuevamente', 'success' => 'Modelo restaurado con éxito.' ), diff --git a/resources/lang/es-VE/admin/models/table.php b/resources/lang/es-VE/admin/models/table.php index d9dfd1a9fe..12e3078e86 100644 --- a/resources/lang/es-VE/admin/models/table.php +++ b/resources/lang/es-VE/admin/models/table.php @@ -2,15 +2,15 @@ return array( - 'create' => 'Crear Modelo de Activo', + 'create' => 'Crear modelo de activo', 'created_at' => 'Creado el', - 'eol' => 'Fin de Vida', + 'eol' => 'Fin de soporte (EOL)', 'modelnumber' => 'Modelo No.', 'name' => 'Nombre del modelo de activo', 'numassets' => 'Activos', - 'title' => 'Modelos de Activo', + 'title' => 'Modelos de activos', 'update' => 'Actualizar modelo de activo', - 'view' => 'Ver Modelos de Activo', + 'view' => 'Ver modelo de activo', 'update' => 'Actualizar modelo de activo', 'clone' => 'Clonar Modelo', 'edit' => 'Editar Modelo', diff --git a/resources/lang/es-VE/admin/reports/general.php b/resources/lang/es-VE/admin/reports/general.php index 770957a1c8..d2056b1b56 100644 --- a/resources/lang/es-VE/admin/reports/general.php +++ b/resources/lang/es-VE/admin/reports/general.php @@ -1,7 +1,7 @@ 'Selecciona que opciones quieres para tu informe de activos.', + 'info' => 'Seleccione las opciones que desea para el informe de activos.', 'deleted_user' => 'Usuario eliminado', 'send_reminder' => 'Enviar recordatorio', 'reminder_sent' => 'Recordatorio enviado', diff --git a/resources/lang/es-VE/admin/reports/message.php b/resources/lang/es-VE/admin/reports/message.php index a8f61aa993..dcd9c52741 100644 --- a/resources/lang/es-VE/admin/reports/message.php +++ b/resources/lang/es-VE/admin/reports/message.php @@ -1,5 +1,5 @@ 'Debes seleccionar al menos UNA opción.' + 'error' => 'Debe seleccionar al menos UNA opción.' ); diff --git a/resources/lang/es-VE/admin/settings/general.php b/resources/lang/es-VE/admin/settings/general.php index 42f66489c2..515fcfac0c 100644 --- a/resources/lang/es-VE/admin/settings/general.php +++ b/resources/lang/es-VE/admin/settings/general.php @@ -3,12 +3,12 @@ return [ 'ad' => 'Directorio Activo', 'ad_domain' => 'Dominio del Directorio Activo', - 'ad_domain_help' => 'Este es a veces el mismo que el correo electrónico de dominio, pero no siempre.', + 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Añadir nombre de dominio al campo de nombre de usuario', 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', 'admin_cc_email' => 'Copiar en correo electrónico', - 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de devolución/asignación que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', + 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administración', 'is_ad' => 'Este es un servidor de Directorio Activo', 'alerts' => 'Alertas', @@ -18,29 +18,29 @@ return [ 'alerts_enabled' => 'Alertas de correo electrónico habilitadas', 'alert_interval' => 'Limite de alertas de expiración (en días)', 'alert_inv_threshold' => 'Umbral de alerta del inventario', - 'allow_user_skin' => 'Permitir Skin de usuario', - 'allow_user_skin_help_text' => 'Marcar esta casilla permitirá a un usuario reemplazar la apariencia de la interfaz de usuario con una diferente.', - 'asset_ids' => 'IDs de activos', + 'allow_user_skin' => 'Permitir al usuario cambiar la apariencia', + 'allow_user_skin_help_text' => 'Si se marca esta casilla, el usuario podrá reemplazar la apariencia de la interfaz con una diferente.', + 'asset_ids' => 'Códigos de los activos', 'audit_interval' => 'Intervalo de Auditoría', 'audit_interval_help' => 'Si está obligado a auditar físicamente sus activos con regularidad, introduzca el intervalo en meses que utilice. Si actualiza este valor, se actualizarán todas las "próximas fechas de auditoría" de los activos con una fecha de auditoría próxima.', 'audit_warning_days' => 'Umbral de Aviso de Auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación es necesario avisar que se deben auditar los activos?', - 'auto_increment_assets' => 'Generar etiquetas de activos que incrementan automáticamente', + 'auto_increment_assets' => 'Generar placas de activos autoincrementables', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Habilitar etiquetas de activos auto-incrementantes primero para establecer esto', + 'auto_incrementing_help' => 'Habilite primero el incremento automático de las placas de activos antes de configurar esto', 'backups' => 'Copias de Seguridad', 'backups_help' => 'Crear, descargar y restaurar copias de seguridad ', 'backups_restoring' => 'Restaurando desde la copia de seguridad', 'backups_upload' => 'Cargar copia de seguridad', 'backups_path' => 'Las copias de seguridad en el servidor se almacenan en :path', - 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker.)

Su base de datos completa :app_name y cualquier archivo subido será completamente reemplazado por lo que hay en el archivo de copia de seguridad. ', + 'backups_restore_warning' => 'Utilice el botón de restauración para restaurar desde una copia de seguridad anterior. (Actualmente esto no funciona con almacenamiento de archivos S3 o Docker).

Su base de datos completa de :app_name y cualquier archivo cargado será completamente reemplazado por lo que hay en la copia de seguridad. ', 'backups_logged_out' => 'A todos los usuarios existentes, incluido usted, se le cerrará la sesión una vez que la restauración haya finalizado.', 'backups_large' => 'Las copias de seguridad muy grandes pueden agotar el tiempo de espera en el intento de restauración y todavía pueden necesitar ser ejecutadas a través de la línea de comandos. ', 'barcode_settings' => 'Configuración del Código de Barras', 'confirm_purge' => 'Confirmar Purga', - 'confirm_purge_help' => 'Introduzca el texto "DELETE" en el cuadro de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados de forma soft. (Primero debes hacer una copia de seguridad, solo para estar seguro).', + 'confirm_purge_help' => 'Introduzca el texto "DELETE" en la casilla de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. Debería hacer primero una copia de seguridad, para estar seguro.', 'custom_css' => 'CSS Personalizado', - 'custom_css_help' => 'Introduce cualquier CSS personalizado que quieras utilizar. No incluyas las etiquetas <style></style> .', + 'custom_css_help' => 'Introduzca cualquier CSS personalizado que desee utilizar. No incluya las etiquetas <style></style>.', 'custom_forgot_pass_url' => 'Personalizar URL de Restablecimiento de Contraseña', 'custom_forgot_pass_url_help' => 'Esto remplaza la URL incorporada para contraseña olvidada en la pantalla de inicio, útil para dirigir a las personas a una funcionalidad de restablecimiento de interna o alojada en LDPA. Esto deshabilitará la funcionalidad local de contraseña olvidada.', 'dashboard_message' => 'Mensaje en el tablero', @@ -52,7 +52,7 @@ return [ 'acceptance_note' => 'Añada una nota para su decisión (opcional)', 'display_asset_name' => 'Mostrar nombre del activo', 'display_checkout_date' => 'Mostrar fecha de asignación', - 'display_eol' => 'Mostrar Fin de Vida en la vista de tabla', + 'display_eol' => 'Mostrar fin de soporte (EOL) en la vista de tabla', 'display_qr' => 'Mostrar Códigos QR', 'display_alt_barcode' => 'Mostrar código de barras 1D', 'email_logo' => 'Logo de correo electrónico', @@ -71,7 +71,7 @@ return [ 'general_settings_keywords' => 'soporte de la compañía, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, acuerdo de uso, términos y condiciones, gravatar, términos de servicio, tablero de indicadores, privacidad', 'general_settings_help' => 'Acuerdo de uso predeterminado y más', 'generate_backup' => 'Generar Respaldo', - 'google_workspaces' => 'Espacios de trabajo de Google', + 'google_workspaces' => 'Google Workspace', 'header_color' => 'Color de Encabezado', 'info' => 'Estos ajustes te dejan personalizar ciertos aspectos de tu instalación.', 'label_logo' => 'Logo de etiqueta', @@ -87,14 +87,14 @@ return [ 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Configuración LDAP', - 'ldap_client_tls_cert_help' => 'El certificado TLS lateral del cliente y la clave para las conexiones LDAP normalmente sólo son útiles en las configuraciones del espacio de trabajo de Google con "Secure LDAP". Ambas son requeridas.', + 'ldap_client_tls_cert_help' => 'El certificado TLS del cliente y la clave para las conexiones LDAP normalmente solo son útiles en las configuraciones de Google Workspace con "LDAP Seguro". Ambas son requeridas.', 'ldap_location' => 'Ubicación LDAP', 'ldap_location_help' => 'El campo Location (ubicación) de Ldap debe utilizarse si una OU no está siendo utilizada en el Base Bind DN (DN del enlace base). Deje este espacio en blanco si se utiliza una búsqueda OU.', - 'ldap_login_test_help' => 'Introduce un usuario y contraseña LDAP válidos desde la base DN que especificaste antes para probar si tu inicio de sesión LDAP está configurado correctamente. DEBES GUARDAR TUS CONFIGURACIONES LDAP ACTUALIZADAS PRIMERO.', - 'ldap_login_sync_help' => 'Esto solo prueba que LDAP puede sincronizarse correctamente. Si tu solicitud de Autenticación LDAP no es correcta, los usuarios no podrían iniciar sesión. DEBES GUARDAR TUS CONFIGURACIONES LDAP ACTUALIZADAS PRIMERO.', + 'ldap_login_test_help' => 'Introduzca un nombre de usuario y una contraseña LDAP válidos del DN base que especificó anteriormente para comprobar si el inicio de sesión LDAP está configurado correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', + 'ldap_login_sync_help' => 'Esto solo comprueba que el LDAP puede sincronizarse correctamente. Si su solicitud de autenticación LDAP no es correcta, los usuarios aún no podrían iniciar sesión. PRIMERO DEBE GUARDAR LA CONFIGURACIÓN LDAP ACTUALIZADA.', 'ldap_manager' => 'Gestor LDAP', 'ldap_server' => 'Servidor LDAP', - 'ldap_server_help' => 'Esto debería empezar con ldap:// (para no-encriptados o TLS) o ldaps:// (para SSL)', + 'ldap_server_help' => 'Esto debería comenzar con ldap:// (sin cifrado) o con ldaps:// (para TLS o SSL)', 'ldap_server_cert' => 'Validación de certificado LDAP SSL', 'ldap_server_cert_ignore' => 'Permitir Certificado SSL inválido', 'ldap_server_cert_help' => 'Seleccione esta casilla si está utilizando un certificado SSL autofirmado y desea aceptar un certificado SSL inválido.', @@ -109,7 +109,7 @@ return [ 'ldap_basedn' => 'Enlazar Base DN', 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de Contraseña LDAP', - 'ldap_pw_sync_help' => 'Desmarca esta casilla si no deseas mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Desactivar esto significa que tus usuarios no podrían acceder al inicio de sesión si tu servidor LDAP no está disponible por alguno razón.', + 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', 'ldap_username_field' => 'Campo de Nombre de Usuario', 'ldap_lname_field' => 'Apellido', 'ldap_fname_field' => 'Primer Nombre LDAP', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Probar LDAP', 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de Software', - 'load_remote' => 'Usar Gravatar', - 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar scripts desde el Internet externo. Esto evitará que Snipe-IT intente cargar imágenes desde Gravatar.', + 'load_remote' => 'Cargar avatares remotos', + 'load_remote_help_text' => 'Desmarque esta casilla si su instalación no puede cargar secuencias de comandos (scripts) desde Internet . Esto evitará que Snipe-IT intente cargar avatares de Gravatar u otras fuentes externas.', 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', @@ -143,18 +143,18 @@ return [ 'login_remote_user_header_name_help' => 'Usar la cabecera especificada en lugar de REMOTE_USER', 'logo' => 'Logo', 'logo_print_assets' => 'Usar en la impresión', - 'logo_print_assets_help' => 'Usar marca en listas de activos imprimibles ', + 'logo_print_assets_help' => 'Utilice la marca de la empresa en las listas de activos imprimibles ', 'full_multiple_companies_support_help_text' => 'Limitar los usuarios asignados a compañías (incluyendo administradores) solo a los activos de esa compañía.', 'full_multiple_companies_support_text' => 'Soporte completo a múltiples compañías', 'show_in_model_list' => 'Mostrar en menús desplegables de modelos', 'optional' => 'opcional', 'per_page' => 'Resultados por Página', 'php' => 'Versión de PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'Información de PHP', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, sistema, información', 'php_overview_help' => 'Información del sistema PHP', - 'php_gd_info' => 'Debes instalar php-gd para mostrar códigos QR, ve las instrucciones de instalación.', + 'php_gd_info' => 'Debe instalar php-gd para mostrar códigos QR, consulte las instrucciones de instalación.', 'php_gd_warning' => 'PHP Image Processing y GD plugin NO ESTÁN instalados.', 'pwd_secure_complexity' => 'Complejidad de la contraseña', 'pwd_secure_complexity_help' => 'Seleccione las reglas de complejidad de las contraseñas que desee aplicar.', @@ -166,9 +166,9 @@ return [ 'pwd_secure_min' => 'Caracteres mínimos de contraseña', 'pwd_secure_min_help' => 'El valor mínimo permitido es 8', 'pwd_secure_uncommon' => 'Evitar contraseñas comunes', - 'pwd_secure_uncommon_help' => 'Esto impedirá a los usuarios de usar contraseñas comunes de el top 10.000 de contraseñas que se notifiquen en las infracciones.', + 'pwd_secure_uncommon_help' => 'Esto impedirá que los usuarios usen contraseñas comunes de las 10,000 contraseñas más usuales reportadas en fugas de datos.', 'qr_help' => 'Activa Códigos QR primero para establecer esto', - 'qr_text' => 'Texto del Código QR', + 'qr_text' => 'Texto del código QR', 'saml' => 'SAML', 'saml_title' => 'Actualizar ajustes de SAML', 'saml_help' => 'Configuración SAML', @@ -181,16 +181,16 @@ return [ 'saml_sp_metadata_url' => 'URL de metadatos', 'saml_idp_metadata' => 'Metadatos SAML IdP', 'saml_idp_metadata_help' => 'Puede especificar los metadatos IdP usando un archivo URL o XML.', - 'saml_attr_mapping_username' => 'Mapeo de Atributos - Nombre de Usuario', - 'saml_attr_mapping_username_help' => 'NameID se utilizará si el mapeo de atributos no está especificado o no es válido.', + 'saml_attr_mapping_username' => 'Asociar atributo - Nombre de usuario', + 'saml_attr_mapping_username_help' => 'NameID se utilizará si la asociación de atributos no está especificada o no es válida.', 'saml_forcelogin_label' => 'Forzar inicio de sesión SAML', 'saml_forcelogin' => 'Hacer SAML el inicio de sesión principal', - 'saml_forcelogin_help' => 'Puedes usar \'/login?nosaml\' para llegar a la página de inicio de sesión normal.', + 'saml_forcelogin_help' => 'Puede usar \'/login?nosaml\' para ir a la página de inicio de sesión normal.', 'saml_slo_label' => 'Cerrar sesión única SAML', 'saml_slo' => 'Enviar una solicitud de salida a IdP al cerrar sesión', 'saml_slo_help' => 'Esto causará que el usuario sea redirigido primero a la IdP al cerrar sesión. Dejar desmarcado si el IdP no soporta correctamente SAML SLO iniciado por SL.', 'saml_custom_settings' => 'Configuración personalizada SAML', - 'saml_custom_settings_help' => 'Puedes especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úsalo bajo tu propio riesgo.', + 'saml_custom_settings_help' => 'Puede especificar ajustes adicionales a la biblioteca onelogin/php-saml. Úselo bajo su propio riesgo.', 'saml_download' => 'Descargar metadatos', 'setting' => 'Configuración', 'settings' => 'Configuraciones', @@ -199,25 +199,25 @@ return [ 'show_archived_in_list_text' => 'Mostrar activos archivados en la lista de "todos los activos"', 'show_assigned_assets' => 'Mostrar activos asignados a activos', 'show_assigned_assets_help' => 'Mostrar activos que fueron asignados a otros activos en Ver usuario -> Activos, Ver usuario -> Información -> Imprimir todos los asignados y en Cuenta -> Ver elementos asignados.', - 'show_images_in_email' => 'Mostrar imágenes en emails', - 'show_images_in_email_help' => 'Desmarque esta casilla si su instalación de Snipe-IT está detrás de una VPN o red cerrada y los usuarios fuera de la red no podrán cargar imágenes servidas desde esta instalación en sus correos electrónicos.', + 'show_images_in_email' => 'Mostrar imágenes en correos electrónicos', + 'show_images_in_email_help' => 'Desmarque esta casilla si su instalación de Snipe-IT está detrás de una red privada o VPN y los usuarios fuera de la red no pueden cargar las imágenes publicadas desde este servidor de Snipe-IT en sus correos electrónicos.', 'site_name' => 'Nombre del Sitio', 'integrations' => 'Integraciones', 'slack' => 'Slack', 'general_webhook' => 'Webhook general', - 'ms_teams' => 'Equipos Microsoft', + 'ms_teams' => 'Microsoft Teams', 'webhook' => ':app', 'webhook_presave' => 'Probar para guardar', 'webhook_title' => 'Actualizar ajustes de Webhook', 'webhook_help' => 'Ajustes de integración', - 'webhook_botname' => ':app Nombre', - 'webhook_channel' => ':app Canal', - 'webhook_endpoint' => ':app Endpoint', + 'webhook_botname' => 'Nombre de Bot de :app', + 'webhook_channel' => 'Canal de :app', + 'webhook_endpoint' => 'Endpoint de :app', 'webhook_integration' => ':app Ajustes', - 'webhook_test' =>'Probar :app integración', - 'webhook_integration_help' => 'La integración de :app es opcional, sin embargo el extremo y el canal son necesarios si desea usarlo. Para configurar la integración de :app, primero debes crear un webhook entrante en tu cuenta :app. Haga clic en el botón Test :app Integración para confirmar que su configuración es correcta antes de guardar. ', - 'webhook_integration_help_button' => 'Una vez que hayas guardado la información de :app, aparecerá un botón de prueba.', - 'webhook_test_help' => 'Comprueba si tu integración con :app está configurada correctamente. DEBES GUARDAR TU ACTUALIZADO :app SETTINGS FIRST.', + 'webhook_test' =>'Probar integración con :app', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', + 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifica quién ve los links a la información de Soporte Snipe-IT y el Manual de Usuario', @@ -227,14 +227,14 @@ return [ 'update' => 'Actualizar Configuraciones', 'value' => 'Valor', 'brand' => 'Marca', - 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, cabeza, colores, color, c(debate)', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, apariencia, encabezado, colores, color, css', 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Acerca de las Configuraciones', 'about_settings_text' => 'Estas configuraciones te dejan personalizar ciertos aspectos de tu instalación.', 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)', - 'next_auto_tag_base' => 'Próximo auto-incremento', + 'next_auto_tag_base' => 'Siguiente incremento automático', 'page_padding' => 'Márgenes de página (pulgadas)', 'privacy_policy_link' => 'Enlace a la política de privacidad', 'privacy_policy' => 'Política de privacidad', @@ -243,18 +243,18 @@ return [ 'purge_deleted' => 'Purgar eliminados ', 'labels_display_bgutter' => 'Borde inferior de la etiqueta', 'labels_display_sgutter' => 'Borde lateral de la etiqueta', - 'labels_fontsize' => 'Tamaño de fuente de la etiqueta', + 'labels_fontsize' => 'Tamaño de letra de la etiqueta', 'labels_pagewidth' => 'Ancho de la hoja de etiqueta', 'labels_pageheight' => 'Altura de la hoja de etiqueta', 'label_gutters' => 'Espaciado de etiquetas (pulgadas)', 'page_dimensions' => 'Dimensiones de la página (pulgadas)', 'label_fields' => 'Campos visibles de la etiqueta', 'inches' => 'pulgadas', - 'width_w' => 'an', - 'height_h' => 'al', + 'width_w' => 'ancho', + 'height_h' => 'alto', 'show_url_in_emails' => 'Enlace a Snipe-IT en correos electrónicos', - 'show_url_in_emails_help_text' => 'Desmarca esta casilla si no deseas volver a enlazar a tu instalación Snipe-IT en los pie de página de tu correo electrónico. Útil si la mayoría de tus usuarios nunca inicia sesión. ', - 'text_pt' => 'pt', + 'show_url_in_emails_help_text' => 'Desmarque esta casilla si no desea vincular su instalación de Snipe-IT en el pie de página de correo electrónico. Útil si la mayoría de sus usuarios nunca se conectan. ', + 'text_pt' => 'puntos', 'thumbnail_max_h' => 'Altura máxima de la miniatura', 'thumbnail_max_h_help' => 'Altura máxima en píxeles que las miniaturas pueden mostrar en la vista de lista. Mín 25, max 500.', 'two_factor' => 'Autenticación de dos factores', @@ -267,12 +267,12 @@ return [ 'two_factor_reset_error' => 'La verificación de dos pasos del dispositivo ha fallado', 'two_factor_enabled_warning' => 'Al activar el doble factor si no está activado, se le obligará inmediatamente a autenticarse con un dispositivo registrado en Google Auth. Tendrá la posibilidad de inscribir su dispositivo si uno no está inscrito actualmente.', 'two_factor_enabled_help' => 'Esto activará la autenticación de dos factores usando Google Authenticator.', - 'two_factor_optional' => 'Selectivo (Usuarios pueden habilitar o deshabilitar si está permitido)', + 'two_factor_optional' => 'Selectivo (los usuarios pueden activar o desactivar si está permitido)', 'two_factor_required' => 'Requerido para todos los usuarios', 'two_factor_disabled' => 'Desactivado', 'two_factor_enter_code' => 'Ingrese el código de verificación de dos factores', 'two_factor_config_complete' => 'Enviar código', - 'two_factor_enabled_edit_not_allowed' => 'Tu administrador no te permite editar esta configuración.', + 'two_factor_enabled_edit_not_allowed' => 'El administrador no permite modificar esta configuración.', 'two_factor_enrollment_text' => "Se requiere autenticación de dos factores, sin embargo su dispositivo aún no ha sido inscrito. Abra su aplicación Google Authenticator y escanee el código QR de abajo para inscribir su dispositivo. Una vez que lo haya inscrito, introduzca el código en la parte inferior", 'require_accept_signature' => 'Solicitar firma', 'require_accept_signature_help_text' => 'Activar esta función requiere que los usuarios firmen físicamente aceptando un elemento.', @@ -283,23 +283,23 @@ return [ 'vertical' => 'vertical', 'horizontal' => 'horizontal', 'unique_serial' => 'Numero de Serial Único', - 'unique_serial_help_text' => 'Marcando esta casilla se aplicará una restricción de singularidad en las publicaciones seriadas de activos', - 'zerofill_count' => 'Longitud de las etiquetas de activos, incluyendo relleno de ceros', + 'unique_serial_help_text' => 'Marcando esta casilla se aplicará una restricción de números de serie únicos a los activos', + 'zerofill_count' => 'Longitud de los números en las placas de los activos, incluyendo los ceros de relleno', 'username_format_help' => 'Esta configuración solo será utilizada por el proceso de importación si no se proporciona un nombre de usuario y tenemos que generar un nombre de usuario por usted.', 'oauth_title' => 'Configuración de la API de OAuth', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'Clientes OAuth', 'oauth' => 'OAuth', - 'oauth_help' => 'Configuración de Oauth Endpoint', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', - 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', + 'oauth_help' => 'Configuración del punto final (endpoint) OAuth', + 'oauth_no_clients' => 'Aún no ha creado ningún cliente OAuth.', + 'oauth_secret' => 'Secreto', + 'oauth_authorized_apps' => 'Aplicaciones autorizadas', + 'oauth_redirect_url' => 'URL de redireccionamiento', + 'oauth_name_help' => ' Algo que sus usuarios reconocerán y en lo que confiarán.', 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', - 'asset_tag_title' => 'Actualizar configuración de etiquetas de activos', + 'oauth_callback_url' => 'URL de devolución de llamada de autorización de su aplicación (callback URL).', + 'create_client' => 'Crear cliente', + 'no_scopes' => 'Sin scopes', + 'asset_tag_title' => 'Actualizar la configuración de las placas de activos', 'barcode_title' => 'Actualizar ajustes de código de barras', 'barcodes' => 'Códigos de barras', 'barcodes_help_overview' => 'Configuración de código de barras & QR', @@ -333,7 +333,7 @@ return [ 'ldap_ad' => 'LDAP/AD', 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear un usuario ::', - 'create_admin_success' => '¡Éxito! ¡Tu usuario admin ha sido añadido!', + 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', 'setup_migrations' => 'Migraciones de Base de Datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', @@ -349,7 +349,7 @@ return [ 'label2_title' => 'Título', 'label2_title_help' => 'El título para mostrar en etiquetas que lo soportan', 'label2_title_help_phold' => 'El marcador de posición {COMPANY} será reemplazado con el nombre de la compañía del activo', - 'label2_asset_logo' => 'Usar Logo de Activos', + 'label2_asset_logo' => 'Usar logo de activos', 'label2_asset_logo_help' => 'Utilice el logotipo de la compañía asignada, en lugar del valor en :setting_name', 'label2_1d_type' => 'Tipo de código de barras 1D', 'label2_1d_type_help' => 'Formato para códigos de barras 1D', @@ -358,7 +358,7 @@ return [ 'label2_2d_target' => 'Apuntamiento del código de barras 2D', 'label2_2d_target_help' => 'La URL a la que apunta el código de barras 2D cuando se escanea', 'label2_fields' => 'Definiciones de campo', - 'label2_fields_help' => 'Los campos pueden ser agregados, eliminados y reordenados en la columna izquierda. Para cada campo, múltiples opciones para Etiqueta y DataSource pueden ser agregadas, eliminadas y reordenadas en la columna derecha.', + 'label2_fields_help' => 'Los campos se pueden añadir, eliminar y reordenar en la columna izquierda. Para cada campo, se pueden agregar, eliminar y reordenar múltiples opciones para etiquetas y para orígenes de datos en la columna derecha.', 'help_asterisk_bold' => 'Texto introducido como **texto** se mostrará como negrita', 'help_blank_to_use' => 'Deje en blanco para usar el valor de :setting_name', 'help_default_will_use' => ':default usará el valor de :setting_name.
Tenga en cuenta que el valor de los códigos de barra debe estar en cumplimiento con la especificación respectiva para que sean generados exitosamente. Por favor lea la documentación para más detalles. ', @@ -367,13 +367,17 @@ return [ 'google_callback_help' => 'Esto debe introducirse como URL de devolución de llamada (callback) en la configuración de su aplicación de Google OAuth en la consola de desarrollador de Google de su organización .', 'google_login' => 'Configuración de inicio de sesión de Google Workspace', 'enable_google_login' => 'Permitir a los usuarios iniciar sesión con Google Workspace', - 'enable_google_login_help' => 'Los usuarios no serán provistos automáticamente. Deben tener una cuenta existente aquí AND en Google Workspace, y su nombre de usuario debe coincidir con su dirección de correo electrónico de Google Workspace. ', + 'enable_google_login_help' => 'Los usuarios no serán creados automáticamente. Deben tener una cuenta existente aquí Y en Google Workspace, y su nombre de usuario aquí debe coincidir con su dirección de correo electrónico de Google Workspace. ', 'mail_reply_to' => 'Dirección de respuesta de correo', 'mail_from' => 'Correo desde la dirección', 'database_driver' => 'Controlador de base de datos', 'bs_table_storage' => 'Almacenamiento de tabla', - 'timezone' => 'Timezone', + 'timezone' => 'Zona horaria', 'profile_edit' => 'Editar perfil', 'profile_edit_help' => 'Permitir que los usuarios editen sus propios perfiles.', + 'default_avatar' => 'Cargar avatar personalizado por defecto', + 'default_avatar_help' => 'Esta imagen se mostrará como la imagen de perfil si el usuario no tiene foto de perfil.', + 'restore_default_avatar' => 'Restaurar avatar original por defecto del sistema', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/es-VE/admin/settings/message.php b/resources/lang/es-VE/admin/settings/message.php index 87b97745f1..ddae669caa 100644 --- a/resources/lang/es-VE/admin/settings/message.php +++ b/resources/lang/es-VE/admin/settings/message.php @@ -23,11 +23,11 @@ return [ 'sending' => 'Enviando correo electrónico de prueba...', 'success' => '¡Correo enviado!', 'error' => 'El correo no pudo ser enviado.', - 'additional' => 'Ningún mensaje de error adicional proporcionado. Comprueba la configuración de tu correo y el registro de tu aplicación.' + 'additional' => 'No se proporciona ningún mensaje de error adicional. Compruebe la configuración de su correo y el registro de errores de la aplicación.' ], 'ldap' => [ 'testing' => 'Probando conexión LDAP, Binding & Query ...', - '500' => 'Error 500 del servidor. Por favor, compruebe los registros de su servidor para más información.', + '500' => 'Error 500 del servidor. Por favor, compruebe los registros de error de su servidor para más información.', 'error' => 'Algo salió mal :(', 'sync_success' => 'Una muestra de 10 usuarios devueltos desde el servidor LDAP basado en su configuración:', 'testing_authentication' => 'Probando autenticación LDAP...', @@ -36,7 +36,7 @@ return [ 'webhook' => [ 'sending' => 'Enviando mensaje de prueba :app...', 'success' => '¡Su Integración :webhook_name funciona!', - 'success_pt1' => '¡Éxito! Comprueba el ', + 'success_pt1' => '¡Éxito! Compruebe el ', 'success_pt2' => ' para su mensaje de prueba, y asegúrese de hacer clic en GUARDAR abajo para guardar su configuración.', '500' => 'Error 500 del servidor.', 'error' => 'Algo salió mal. :app respondió con: :error_message', diff --git a/resources/lang/es-VE/admin/statuslabels/message.php b/resources/lang/es-VE/admin/statuslabels/message.php index 9d370d4f40..8c812875cc 100644 --- a/resources/lang/es-VE/admin/statuslabels/message.php +++ b/resources/lang/es-VE/admin/statuslabels/message.php @@ -7,7 +7,7 @@ return [ 'assoc_assets' => 'Esta etiqueta de estado está actualmente asociada con al menos un activo y no se puede eliminar. Por favor actualice sus activos para que ya no hagan referencia a este estado e inténtelo de nuevo. ', 'create' => [ - 'error' => 'La etiqueta de estado no fue creada, por favor, inténtalo de nuevo.', + 'error' => 'La etiqueta de estado no pudo ser creada, por favor inténtelo de nuevo.', 'success' => 'La etiqueta de estado fue creada con éxito.', ], @@ -18,12 +18,12 @@ return [ 'delete' => [ 'confirm' => '¿Está seguro de que desea eliminar esta etiqueta de estado?', - 'error' => 'Huno un problema borrando la etiqueta de estado. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema borrando la etiqueta de estado. Por favor, inténtelo de nuevo.', 'success' => 'La etiqueta de estado se ha eliminado con éxito.', ], 'help' => [ - 'undeployable' => 'Estos activos no pueden asignarse a nadie.', + 'undeployable' => 'Estos equipos no pueden ser asignados.', 'deployable' => 'Estos activos pueden ser asignados. Una vez estén asignados, asumirán el meta estado de Asignado.', 'archived' => 'Estos equipos no pueden ser asignados, y solo se mostrarán en la vista de Archivados. Esto es útil para retener información sobre activos por razones de presupuesto/revisión histórica, mientras están fuera de la lista de equipos del día a día.', 'pending' => 'Estos activos aún no pueden asignarse, y suelen utilizarse para elementos que están en reparación, pero que se espera que regresen a circulación.', diff --git a/resources/lang/es-VE/admin/suppliers/message.php b/resources/lang/es-VE/admin/suppliers/message.php index 9d95666069..7419e804bc 100644 --- a/resources/lang/es-VE/admin/suppliers/message.php +++ b/resources/lang/es-VE/admin/suppliers/message.php @@ -7,22 +7,22 @@ return array( 'create' => array( - 'error' => 'El proveedor no ha sido creado, inténtalo de nuevo.', + 'error' => 'El proveedor no fue creado, por favor inténtelo de nuevo.', 'success' => 'Proveedor creado con éxito.' ), 'update' => array( - 'error' => 'El proveedor no ha sido actualizado, por favor, inténtalo de nuevo', + 'error' => 'El proveedor no fue actualizado, por favor inténtelo de nuevo', 'success' => 'Proveedor actualizado con éxito.' ), 'delete' => array( 'confirm' => '¿Está seguro de que desea eliminar este proveedor?', - 'error' => 'Hubo un problema borrando el proveedor. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema al eliminar el proveedor, por favor inténtelo de nuevo.', 'success' => 'El proveedor fue eliminado con éxito.', - 'assoc_assets' => 'Este proveedor está actualmente asociado con :asset_count activo(s) y no puede ser borrado. Por favor, actualiza tus activos para no referenciar más este proveedor e inténtalo de nuevo. ', - 'assoc_licenses' => 'Este proveedor está actualmente asociado con :licenses_count licencia(s) y no puede ser borrado. Por favor, actualiza tus licencias para no referenciar más este proveedor e inténtalo de nuevo. ', - 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintenances_count mantenedor(es) de activo y no puede ser eliminado. Por favor, actualiza tus mantenedores de activo para no referenciar este proveedor e inténtalo de nuevo. ', + 'assoc_assets' => 'Este proveedor está actualmente asociado con :asset_count activo(s) y no puede ser eliminado. Actualice sus activos para que ya no hagan referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_licenses' => 'Este proveedor está asociado actualmente con :licenses_count licences(s) y no puede ser eliminado. Por favor, actualice sus licencias para dejar de hacer referencia a este proveedor e inténtelo de nuevo. ', + 'assoc_maintenances' => 'Este proveedor está actualmente asociado con :asset_maintainances_count mantenimiento(s) de activo(s) y no puede ser eliminado. Por favor, actualice el mantenimiento de sus activos para no hacer referencia a este proveedor y vuelva a intentarlo. ', ) ); diff --git a/resources/lang/es-VE/admin/users/general.php b/resources/lang/es-VE/admin/users/general.php index cf6fc7d086..797a66f03d 100644 --- a/resources/lang/es-VE/admin/users/general.php +++ b/resources/lang/es-VE/admin/users/general.php @@ -2,26 +2,26 @@ return [ 'activated_help_text' => 'Este usuario puede iniciar sesión', - 'activated_disabled_help_text' => 'No puedes editar el estado de activación de tu propia cuenta.', + 'activated_disabled_help_text' => 'No puede editar el estado de activación de su propia cuenta.', 'assets_user' => 'Activos asignados a :name', 'bulk_update_warn' => 'Está a punto de modificar las propiedades de :user_count usuarios. Por favor, tenga en cuenta que no puede modificar las propiedades de su propio usuario con este formulario, y debe realizar las modificaciones a su propio usuario de forma individual.', - 'bulk_update_help' => 'Este formulario te permite actualizar múltiples usuarios a la vez. Sólo llena los campos que necesites cambiar. Cualquier campo dejado en blanco permanecerá sin cambios.', + 'bulk_update_help' => 'Este formulario le permite actualizar varios usuarios a la vez. Solo diligencie los campos que necesita modificar. Los campos que queden en blanco no se modificarán.', 'current_assets' => 'Activos actualmente asignados a este usuario', 'clone' => 'Clonar usuario', 'contact_user' => 'Contactar a :name', 'edit' => 'Editar Usuario', 'filetype_info' => 'Los tipos de archivos permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, y rar.', 'history_user' => 'Historial para :name', - 'info' => 'Info', + 'info' => 'Información', 'restore_user' => 'Haga clic aquí para restaurarlos.', 'last_login' => 'Último Inicio de Sesión', 'ldap_config_text' => 'Los parámetros de configuración LDAP pueden ser encontrados en Admin > Settings. La ubicación (opcional) seleccionada será establecida para todos los usuarios importados.', 'print_assigned' => 'Imprimir todos los asignados', 'email_assigned' => 'Enviar correo con todos los asignados', - 'user_notified' => 'El usuario ha sido enviado por correo electrónico a una lista de sus elementos asignados actualmente.', + 'user_notified' => 'Se ha enviado al usuario un correo electrónico con lista de los elementos que tiene asignados actualmente.', 'auto_assign_label' => 'Incluye a este usuario al asignar automáticamente licencias elegibles', 'auto_assign_help' => 'Omitir este usuario en la asignación automática de licencias', - 'software_user' => 'Software Asignado a :name', + 'software_user' => 'Software asignado a :name', 'send_email_help' => 'Debe proporcionar una dirección de correo electrónico para este usuario para poder enviarle las credenciales. Únicamente pueden enviarse las credenciales por correo eléctronico durante la creación del usuario. Las contraseñas se almacenan en un hash de un solo sentido y no se pueden recuperar una vez guardadas.', 'view_user' => 'Ver Usuario :name', 'usercsv' => 'Archivo CSV', @@ -35,12 +35,12 @@ return [ 'superadmin_permission_warning' => 'Sólo los superadministradores pueden conceder acceso a un usuario superadministrador.', 'admin_permission_warning' => 'Sólo los usuarios con derechos de administrador o mayores pueden conceder acceso de administrador a los usuarios.', 'remove_group_memberships' => 'Eliminar membresías de grupo', - 'warning_deletion_information' => 'Está a punto de devolver TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', - 'update_user_assets_status' => 'Actualizar todos los recursos para estos usuarios a este estado', + 'warning_deletion_information' => 'Está a punto de ingresar TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de usuarios con permisos Super Administrador están resaltados en rojo.', + 'update_user_assets_status' => 'Actualizar todos los activos para estos usuarios a este estado', 'checkin_user_properties' => 'Comprobar todas las propiedades asociadas a estos usuarios', 'remote_label' => 'Este es un usuario remoto', 'remote' => 'Remoto', - 'remote_help' => 'Esto puede ser útil si necesita filtrar por usuarios remotos que nunca o raramente entran en sus ubicaciones físicas.', + 'remote_help' => 'Esto puede ser útil si necesita filtrar por usuarios remotos que nunca o raramente asisten a sus ubicaciones físicas.', 'not_remote_label' => 'Este no es un usuario remoto', 'vip_label' => 'Usuario VIP', 'vip_help' => 'Esto puede ser útil como indicador de personas importantes en su organización si desea tratarlas de forma especial.', diff --git a/resources/lang/es-VE/admin/users/message.php b/resources/lang/es-VE/admin/users/message.php index 6b33c45957..1743586c18 100644 --- a/resources/lang/es-VE/admin/users/message.php +++ b/resources/lang/es-VE/admin/users/message.php @@ -3,8 +3,8 @@ return array( 'accepted' => 'Ha aceptado este artículo exitosamente.', - 'declined' => 'Has rechazado este activo con éxito.', - 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada de administrador no fue guardada porque el gerente seleccionado también estaba en la lista de usuarios a ser editada, y los usuarios no pueden ser sus propios gerentes. Vuelva a seleccionar los usuarios, excluyendo al gerente.', + 'declined' => 'Ha rechazado este activo con exitosamente.', + 'bulk_manager_warn' => 'Sus usuarios han sido actualizados con éxito, sin embargo, la entrada supervisor (manager) no fue guardada porque el supervisor seleccionado también estaba en la lista de usuarios a editar, y los usuarios no pueden ser su propio supervisor. Vuelva a seleccionar los usuarios, excluyendo al supervisor.', 'user_exists' => '¡El usuario ya existe!', 'user_not_found' => 'El usuario no existe.', 'user_login_required' => 'El campo usuario es obligatorio', @@ -16,7 +16,7 @@ return array( 'password_resets_sent' => 'Los usuarios seleccionados que están activados y tienen una dirección de correo electrónico válida han sido enviados un enlace de restablecimiento de contraseña.', 'password_reset_sent' => 'Un enlace para restablecer la contraseña ha sido enviado a :email!', 'user_has_no_email' => 'Este usuario no tiene una dirección de correo electrónico en su perfil.', - 'log_record_not_found' => 'No se pudo encontrar un registro de registro coincidente para este usuario.', + 'log_record_not_found' => 'No se pudo encontrar un registro de eventos que coincida con este usuario.', 'success' => array( @@ -33,19 +33,19 @@ return array( ), 'error' => array( - 'create' => 'Hubo un problema creando el usuario. Por favor, inténtalo de nuevo.', - 'update' => 'Hubo un problema actualizando al usuario. Por favor, inténtalo de nuevo.', - 'delete' => 'Hubo un problema borrando el usuario. Por favor, inténtalo de nuevo.', + 'create' => 'Hubo un problema al crear el usuario. Por favor, inténtelo de nuevo.', + 'update' => 'Hubo un problema al actualizar el usuario. Por favor, inténtelo de nuevo.', + 'delete' => 'Hubo un problema al eliminar el usuario. Por favor, inténtelo de nuevo.', 'delete_has_assets' => 'Este usuario tiene elementos asignados y no pudo ser borrado.', - 'delete_has_assets_var' => 'Este usuario todavía tienen un activo asignado. Por favor devuélvalo primero.| Este usuario todavía tienen :count activos asignados. Por favor devuélvalos primero.', - 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor primero haga su devolución.|Este usuario todavía tiene :count licencias asignadas. Por favor primero haga su devolución.', - 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor primero haga su devolución.|Este usuario todavía tiene :count accesorios asignados. Por favor primero haga su devolución.', - 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor seleccione otro supervisor primero.|Este usuario todavía supervisa :count ubicaciones. Por favor seleccione otro supervisor primero.', + 'delete_has_assets_var' => 'Este usuario todavía tiene un activo asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count activos asignados. Por favor ingréselos primero.', + 'delete_has_licenses_var' => 'Este usuario todavía tiene una licencia asignada. Por favor ingrésela primero.|Este usuario todavía tiene :count licencias asignadas. Por favor ingréselas primero.', + 'delete_has_accessories_var' => 'Este usuario todavía tiene un accesorio asignado. Por favor ingréselo primero.|Este usuario todavía tiene :count accesorios asignados. Por favor ingréselos primero.', + 'delete_has_locations_var' => 'Este usuario todavía supervisa una ubicación. Por favor primero seleccione otro supervisor.|Este usuario todavía supervisa :count ubicaciones. Por favor primero seleccione otro supervisor.', 'delete_has_users_var' => 'Este usuario todavía supervisa a otro usuario. Por favor primero seleccione otro supervisor para ese usuario.|Este usuario todavía supervisa :count usuarios. Por favor primero seleccione otro supervisor para ellos.', - 'unsuspend' => 'Hubo un problema des-suspendiendo al usuario. Por favor inténtelo de nuevo.', + 'unsuspend' => 'Hubo un problema marcando como no suspendido al usuario. Por favor, inténtelo de nuevo.', 'import' => 'Hubo un problema importando usuarios. Por favor inténtelo de nuevo.', 'asset_already_accepted' => 'Este activo ya ha sido aceptado.', - 'accept_or_decline' => 'Debes aceptar o rechazar este activo.', + 'accept_or_decline' => 'Debe aceptar o rechazar este equipo.', 'cannot_delete_yourself' => 'Nos sentiríamos muy mal si usted se eliminara, por favor reconsidérelo.', 'incorrect_user_accepted' => 'El elemento que ha intentado aceptar no fue asignado a usted.', 'ldap_could_not_connect' => 'No se pudo conectar al servidor LDAP. Por favor verifica la configuración LDAP de tu servidor en el archivo de configuración LDAP.
Error del servidor LDAP:', @@ -56,15 +56,15 @@ return array( ), 'deletefile' => array( - 'error' => 'El archivo no fue borrado. Por favor, inténtalo de nuevo.', + 'error' => 'El archivo no fue borrado. Por favor, inténtelo de nuevo.', 'success' => 'Archivo borrado con éxito.', ), 'upload' => array( 'error' => 'Archivo(s) no cargado(s). Por favor, inténtelo nuevamente.', 'success' => 'Archivo(s) cargado(s) con éxito.', - 'nofiles' => 'No ha seleccionado ningún archivo para subir', - 'invalidfiles' => 'Uno o más de tus archivos es demasiado grande o es de un tipo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf, y txt.', + 'nofiles' => 'No seleccionó ningún archivo para cargar', + 'invalidfiles' => 'Uno o más de sus archivos son demasiado grandes o son de un tipo de archivo que no está permitido. Los tipos de archivo permitidos son png, gif, jpg, doc, docx, pdf y txt.', ), 'inventorynotification' => array( diff --git a/resources/lang/es-VE/auth.php b/resources/lang/es-VE/auth.php index 387ea794b6..0c664fc584 100644 --- a/resources/lang/es-VE/auth.php +++ b/resources/lang/es-VE/auth.php @@ -15,6 +15,6 @@ return array( 'failed' => 'Estas credenciales no coinciden con nuestros registros.', 'password' => 'La contraseña proporcionada es incorrecta.', - 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.', + 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtelo de nuevo en :seconds segundos.', ); diff --git a/resources/lang/es-VE/auth/general.php b/resources/lang/es-VE/auth/general.php index 53daedb5ad..90be7064f6 100644 --- a/resources/lang/es-VE/auth/general.php +++ b/resources/lang/es-VE/auth/general.php @@ -11,7 +11,7 @@ return [ 'ldap_reset_password' => 'Haga clic aquí para restablecer su contraseña LDAP', 'remember_me' => 'Recuérdame', 'username_help_top' => 'Ingrese su nombre de usuario para enviar un enlace de restablecimiento de contraseña.', - 'username_help_bottom' => 'Tu nombre de usuario y dirección de correo electrónico puede ser el mismo, pero puede que no lo sea, dependiendo de tu configuración. Si no puede recordar su nombre de usuario, póngase en contacto con su administrador.

Los nombres de usuario sin una dirección de correo electrónico asociada no se enviarán por correo electrónico un enlace de restablecimiento de contraseña. ', + 'username_help_bottom' => 'Su nombre de usuario y dirección de correo electrónico puede ser el mismo, pero puede que no lo sea, dependiendo de su configuración. Si no puede recordar su nombre de usuario, póngase en contacto con su administrador.

A los usuarios sin una dirección de correo electrónico asociada no se enviará un enlace por correo electrónico de restablecimiento de contraseña. ', 'google_login' => 'Iniciar sesión con Google Workspace', 'google_login_failed' => 'Error al iniciar sesión en Google. Vuelve a intentarlo.', ]; diff --git a/resources/lang/es-VE/auth/message.php b/resources/lang/es-VE/auth/message.php index f3d03ae79c..28356d9bdf 100644 --- a/resources/lang/es-VE/auth/message.php +++ b/resources/lang/es-VE/auth/message.php @@ -11,21 +11,21 @@ return array( 'two_factor' => array( 'already_enrolled' => 'Su dispositivo ya está inscrito.', - 'success' => 'Has iniciado sesión con éxito.', + 'success' => 'Ha iniciado sesión exitosamente.', 'code_required' => 'El código de doble factor es necesario.', 'invalid_code' => 'El código de doble factor no es válido.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Por favor ingrese su código de autenticación de dos factores.', + 'please_enroll' => 'Por favor inscriba un dispositivo en la autenticación de dos factores.', ), 'signin' => array( 'error' => 'Hubo un problema mientras se intentaba iniciar su sesión, por favor inténtelo de nuevo.', - 'success' => 'Has iniciado sesión con éxito.', + 'success' => 'Ha iniciado sesión exitosamente.', ), 'logout' => array( 'error' => 'Hubo un problema al intentar cerrar la sesión, por favor inténtelo de nuevo.', - 'success' => 'Has cerrado la sesión con éxito.', + 'success' => 'Ha cerrado la sesión exitosamente.', ), 'signup' => array( @@ -39,8 +39,8 @@ return array( ), 'forgot-password-confirm' => array( - 'error' => 'Ha habido un problema mientras se intentaba restablecer tu contraseña, por favor, inténtalo de nuevo.', - 'success' => 'Tu contraseña ha sido reiniciada con éxito.', + 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor inténtelo de nuevo.', + 'success' => 'Su contraseña se ha restablecido correctamente.', ), diff --git a/resources/lang/es-VE/button.php b/resources/lang/es-VE/button.php index fe11c06a5d..cb7fb82164 100644 --- a/resources/lang/es-VE/button.php +++ b/resources/lang/es-VE/button.php @@ -4,15 +4,16 @@ return [ 'actions' => 'Acciones', 'add' => 'Añadir Nuevo', 'cancel' => 'Cancelar', - 'checkin_and_delete' => 'Devolver todo / Eliminar usuario', + 'checkin_and_delete' => 'Ingresar todo / Eliminar usuario', 'delete' => 'Borrar', 'edit' => 'Editar', + 'clone' => 'Clonar', 'restore' => 'Restaurar', 'remove' => 'Eliminar', 'request' => 'Solicitar', 'submit' => 'Enviar', 'upload' => 'Cargar', - 'select_file' => 'Seleccione un archivo...', + 'select_file' => 'Seleccionar un archivo...', 'select_files' => 'Seleccionar archivos...', 'generate_labels' => '{1} Generar Etiqueta|[2,*] Generar Etiquetas', 'send_password_link' => 'Enviar enlace de restablecimiento de contraseña', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Añadir mantenimiento', 'append' => 'Añadir', 'new' => 'Nuevo', + 'var' => [ + 'clone' => 'Clonar :item_type', + 'edit' => 'Editar :item_type', + 'delete' => 'Eliminar :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Crear nuevo :item_type', + 'checkout' => 'Asignar :item_type', + 'checkin' => 'Ingresar :item_type', + ] ]; diff --git a/resources/lang/es-VE/general.php b/resources/lang/es-VE/general.php index 0141639e96..535cf0d727 100644 --- a/resources/lang/es-VE/general.php +++ b/resources/lang/es-VE/general.php @@ -1,21 +1,21 @@ '2FA reset', + '2FA_reset' => 'Reestablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', - 'accepted_date' => 'Fecha aceptada', + 'accepted_date' => 'Fecha de aceptación', 'accessory' => 'Accesorio', 'accessory_report' => 'Informe de accesorios', 'action' => 'Acción', 'activity_report' => 'Informe de actividad', 'address' => 'Dirección', - 'admin' => 'Admin', + 'admin' => 'Administrador', 'admin_tooltip' => 'Este usuario tiene privilegios de superadministrador', 'superuser' => 'Superusuario', 'superuser_tooltip' => 'Este usuario es superadministrador', 'administrator' => 'Administrador', - 'add_seats' => 'Puestos añadidos', + 'add_seats' => 'Licencias añadidas', 'age' => "Edad", 'all_assets' => 'Todos los Activos', 'all' => 'Todo', @@ -23,19 +23,19 @@ return [ 'asset_models' => 'Modelos de Activos', 'asset_model' => 'Modelo', 'asset' => 'Activo', - 'asset_report' => 'Reporte de Activo', - 'asset_tag' => 'Etiqueta de activo', - 'asset_tags' => 'Etiquetas de Activos', - 'assets_available' => 'Recursos disponibles', + 'asset_report' => 'Informe de activos', + 'asset_tag' => 'Placa del activo', + 'asset_tags' => 'Placas de activos', + 'assets_available' => 'Activos disponibles', 'accept_assets' => 'Aceptar activos :name', 'accept_assets_menu' => 'Aceptar activos', 'audit' => 'Auditar', 'audit_report' => 'Registro de Auditoría', 'assets' => 'Activos', 'assets_audited' => 'activos auditados', - 'assets_checked_in_count' => 'activos facturados', - 'assets_checked_out_count' => 'activos reservados', - 'asset_deleted_warning' => 'Este recurso ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', + 'assets_checked_in_count' => 'activos ingresados', + 'assets_checked_out_count' => 'activos asignados', + 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', 'assigned_date' => 'Fecha asignada', 'assigned_to' => 'Asignado a :name', 'assignee' => 'Asignado a', @@ -49,7 +49,7 @@ return [ 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Eliminar en masa', 'bulk_actions' => 'Acciones en masa', - 'bulk_checkin_delete' => 'Checkin en masa / Eliminar usuarios', + 'bulk_checkin_delete' => 'Ingresar elementos / Borrar usuarios', 'byod' => 'BYOD', 'byod_help' => 'Este dispositivo es propiedad del usuario', 'bystatus' => 'por Estado', @@ -57,13 +57,13 @@ return [ 'categories' => 'Categorías', 'category' => 'Categoría', 'change' => 'Entrada/Salida', - 'changeemail' => 'Cambiar Dirección de Correo Electrónico', + 'changeemail' => 'Cambiar dirección de correo electrónico', 'changepassword' => 'Cambiar Contraseña', - 'checkin' => 'Devolver', - 'checkin_from' => 'Registrar desde', + 'checkin' => 'Ingresar', + 'checkin_from' => 'Ingreso proveniente de', 'checkout' => 'Asignar', 'checkouts_count' => 'Asignaciones', - 'checkins_count' => 'Devoluciones', + 'checkins_count' => 'Ingresos', 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', 'click_here' => 'Click aquí', @@ -100,7 +100,7 @@ return [ 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', 'deleted' => 'Borrado', - 'delete_seats' => 'Puestos Borrados', + 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', 'departments' => 'Departamentos', 'department' => 'Departamento', @@ -112,7 +112,7 @@ return [ 'download' => 'Descarga', 'download_all' => 'Descargar todo', 'editprofile' => 'Editar perfil', - 'eol' => 'Fin de Vida', + 'eol' => 'Fin de soporte (EOL)', 'email_domain' => 'Dominio de Correo Electrónico', 'email_format' => 'Formato de correo electrónico', 'employee_number' => 'Número de empleado', @@ -132,7 +132,7 @@ return [ 'first' => 'Primer', 'firstnamelastname' => 'Nombre y apellido (janesmith@example.com)', 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', - 'firstinitial.lastname' => 'Inicial nombre y apellido (j.smith@ejemplo.com)', + 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', 'first_name' => 'Nombre', @@ -158,12 +158,12 @@ return [ 'image_upload' => 'Cargar imagen', 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido para subir es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo permitido para subir es :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', 'unaccepted_image_type' => 'Este archivo de imagen no fue legible. Los tipos de archivo aceptados son jpg, webp, png, gif y svg. El tipo mimetype de este archivo es: :mimetype.', 'import' => 'Importar', - 'import_this_file' => 'Mapear campos y procesar este archivo', - 'importing' => 'Importando', - 'importing_help' => 'Puede importar activos, accesorios, licencias, componentes, consumibles y usuarios a través del archivo CSV.

El CSV debe estar delimitado por comas y formateado con encabezados que coincidan con los del CSVs de muestra en la documentación.', + 'import_this_file' => 'Asociar campos y procesar este archivo', + 'importing' => 'Importar datos', + 'importing_help' => 'Puede importar activos, accesorios, licencias, componentes, consumibles y usuarios a través del archivo CSV.

El CSV debe estar delimitado por comas y formateado con encabezados que coincidan con los de los archivos CSV de muestra en la documentación.', 'import-history' => 'Importar historial', 'asset_maintenance' => 'Mantenimiento de Activos', 'asset_maintenance_report' => 'Informe mantenimiento de activos', @@ -191,14 +191,14 @@ return [ 'locations' => 'Ubicaciones', 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del Logo es 50px de alta x 500px. ', 'logout' => 'Cerrar sesión', - 'lookup_by_tag' => 'Buscar etiqueta de activo', + 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimientos', 'manage_api_keys' => 'Administrar claves API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite formateo estilo Github.', 'min_amt' => 'Cantidad mínima', - 'min_amt_help' => 'Número mínimo de elementos que deberían estar disponibles antes de que se active una alerta. Deja la cantidad mínima en blanco si no quieres recibir alertas para un inventario bajo.', + 'min_amt_help' => 'Número mínimo de elementos que deben estar disponibles antes de que se active una alerta. Deje la cantidad mínima en blanco si no desea recibir alertas de inventario bajo.', 'model_no' => 'Modelo nú.', 'months' => 'meses', 'moreinfo' => 'Más Información', @@ -224,14 +224,14 @@ return [ 'per_page' => 'Resultados Por Página', 'previous' => 'Anterior', 'processing' => 'Procesando', - 'profile' => 'Tu Perfil', - 'purchase_cost' => 'Costo de Compra', + 'profile' => 'Perfil', + 'purchase_cost' => 'Precio de compra', 'purchase_date' => 'Fecha de compra', 'qty' => 'Cantidad', 'quantity' => 'Cantidad', 'quantity_minimum' => 'Tiene :count artículos por debajo o casi por debajo de los niveles mínimos de cantidad', - 'quickscan_checkin' => 'Devolución rápida con escaneo', - 'quickscan_checkin_status' => 'Estado de devolución', + 'quickscan_checkin' => 'Ingreso rápido con escaneo', + 'quickscan_checkin_status' => 'Resultado del ingreso', 'ready_to_deploy' => 'Listo para asignar', 'recent_activity' => 'Actividad Reciente', 'remaining' => 'Restante', @@ -253,28 +253,28 @@ return [ 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', - 'select_category' => 'Seleccione una categoría', - 'select_datasource' => 'Seleccione un origen de datos', - 'select_department' => 'Seleccione un departamento', + 'select_category' => 'Seleccionar una categoría', + 'select_datasource' => 'Seleccionar un origen de datos', + 'select_department' => 'Seleccionar un departamento', 'select_depreciation' => 'Seleccionar un tipo de depreciación', - 'select_location' => 'Seleccione una ubicación', - 'select_manufacturer' => 'Seleccione un fabricante', - 'select_model' => 'Seleccione un modelo', - 'select_supplier' => 'Seleccione un proveedor', - 'select_user' => 'Seleccione un usuario', + 'select_location' => 'Seleccionar una ubicación', + 'select_manufacturer' => 'Seleccionar un fabricante', + 'select_model' => 'Seleccionar un modelo', + 'select_supplier' => 'Seleccionar un proveedor', + 'select_user' => 'Seleccionar un usuario', 'select_date' => 'Seleccione fecha (AAAA-MM-DD)', - 'select_statuslabel' => 'Seleccione un estado', - 'select_company' => 'Seleccione una compañía', + 'select_statuslabel' => 'Seleccionar un estado', + 'select_company' => 'Seleccionar una compañía', 'select_asset' => 'Seleccionar activo', 'settings' => 'Configuraciones', 'show_deleted' => 'Mostrar eliminados', 'show_current' => 'Mostrar Actual', - 'sign_in' => 'Entrar', + 'sign_in' => 'Iniciar sesión', 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', - 'skin' => 'Piel', + 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Oh hai! ¡Parece que tu integración :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', 'some_features_disabled' => 'MODO DEMO: Algunas funciones están desactivadas para esta instalación.', 'site_name' => 'Nombre del Sitio', 'state' => 'Estado', @@ -283,19 +283,19 @@ return [ 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que quieres borrar', + 'sure_to_delete' => '¿Está seguro que desea eliminar?', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', - 'target' => 'Objetivo', + 'target' => 'Destino', 'time_and_date_display' => 'Visualización de Hora y Fecha', - 'total_assets' => 'total de activos', + 'total_assets' => 'activos', 'total_licenses' => 'licencias totales', 'total_accessories' => 'accesorios totales', 'total_consumables' => 'total de consumibles', 'type' => 'Tipo', 'undeployable' => 'No utilizable', - 'unknown_admin' => 'Administrador Desconocido', + 'unknown_admin' => 'Administrador desconocido', 'username_format' => 'Formato de Nombre de Usuario', 'username' => 'Nombre de usuario', 'update' => 'Actualizar', @@ -322,12 +322,12 @@ return [ 'no_files_uploaded' => '¡Archivo cargado exitosamente!', 'token_expired' => 'Su sesión ha caducado. Por favor, inténtelo de nuevo.', 'login_enabled' => 'Inicio de sesión activado', - 'audit_due' => 'Vence la auditoría', + 'audit_due' => 'Próximas auditorías', 'audit_due_days' => 'Activos pendientes para auditoría dentro de :days día|Activos pendientes para auditoría dentro de :days días', - 'checkin_due' => 'Pendiente por devolver', - 'checkin_overdue' => 'Atrasado por devolver', - 'checkin_due_days' => 'Activos que deben ser devueltos dentro de :days día|Activos que deben ser devueltos dentro de :days días', - 'audit_overdue' => 'Atrasado para la auditoría', + 'checkin_due' => 'Próximos a ingresar', + 'checkin_overdue' => 'Devolución atrasada', + 'checkin_due_days' => 'Activos próximos a ingresar dentro de :days día|Activos próximos a ingresar dentro de :days días', + 'audit_overdue' => 'Auditoría atrasada', 'accept' => 'Aceptar :asset', 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', @@ -348,15 +348,15 @@ return [ 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear Usuario Admin', + 'setup_create_admin' => 'Crear usuario Administrador', 'setup_done' => '¡Terminado!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado', - 'checked_out_to' => 'Comprobado a', + 'checked_out_to' => 'Asignado a', 'fields' => 'Campos', 'last_checkout' => 'Último pedido', - 'due_to_checkin' => 'Los siguientes :count artículos deben ser chequeados pronto:', - 'expected_checkin' => 'Checkin Esperado', + 'due_to_checkin' => 'Los siguientes :count elementos están pendientes por ingresar pronto:', + 'expected_checkin' => 'Fecha esperada de devolución', 'reminder_checked_out_items' => 'Este es un recordatorio de los elementos que se te han comprobado actualmente. Si usted siente que esta lista es incorrecta (falta algo o algo que usted cree que nunca ha recibido), por favor envíe un correo electrónico a :reply_to_name a :reply_to_address.', 'changed' => 'Cambiado', 'to' => 'A', @@ -375,7 +375,7 @@ return [ 'sync_results' => 'Resultados de sincronización', 'license_serial' => 'Clave de Serial/Producto', 'invalid_category' => 'Categoría no válida o ausente', - 'invalid_item_category_single' => 'Falta o no válida :type categoría. Por favor actualiza la categoría de este :type para incluir una categoría válida antes de salir.', + 'invalid_item_category_single' => 'Falta o no es válida una categoría de tipo :type. Actualice la categoría de tipo :type para incluir una categoría válida antes de asignar.', 'dashboard_info' => 'Este es su panel de control. Hay muchos similares, pero este es suyo.', '60_percent_warning' => '60% completo (advertencia)', 'dashboard_empty' => 'Parece que aún no ha añadido nada, así que no tenemos nada impresionante que mostrar. ¡Comience añadiendo algunos activos, accesorios, consumibles o licencias ahora!', @@ -391,12 +391,12 @@ return [ 'components_count' => 'Número de componentes', 'licenses_count' => 'Número de licencias', 'notification_error' => 'Error', - 'notification_error_hint' => 'Por favor revise si hay errores en el siguiente formulario', + 'notification_error_hint' => 'Por favor compruebe si hay errores en el siguiente formulario', 'notification_bulk_error_hint' => 'Los siguientes campos tenían errores de validación y no fueron editados:', 'notification_success' => 'Éxito', 'notification_warning' => 'Advertencia', - 'notification_info' => 'Info', - 'asset_information' => 'Información del recurso', + 'notification_info' => 'Información', + 'asset_information' => 'Información del activo', 'model_name' => 'Nombre del modelo', 'asset_name' => 'Nombre del activo', 'consumable_information' => 'Información Consumible:', @@ -405,9 +405,9 @@ return [ 'accessory_name' => 'Nombre del Accesorio:', 'clone_item' => 'Clonar objeto', 'checkout_tooltip' => 'Asignar este elemento', - 'checkin_tooltip' => 'Devuelva este elemento para que esté disponible para resignar, borrar, etc.', + 'checkin_tooltip' => 'Ingrese este elemento para que esté disponible para resignar, borrar, etc.', 'checkout_user_tooltip' => 'Asignar este elemento a un usuario', - 'checkin_to_diff_location' => 'Puede optar por registrar este activo en una ubicación distinta a la ubicación predeterminada :default_location, si existe una configurada', + 'checkin_to_diff_location' => 'Puede elegir ingresar este activo a una ubicación distinta de la predeterminada :default_location, si es que se ha definido una', 'maintenance_mode' => 'El servicio no está disponible temporalmente para actualizaciones del sistema. Por favor, vuelva más tarde.', 'maintenance_mode_title' => 'Sistema temporalmente no disponible', 'ldap_import' => 'La contraseña del usuario no debe ser administrada por LDAP. (Esto le permite enviar solicitudes de contraseña olvidadas.)', @@ -416,8 +416,8 @@ return [ 'additional_files' => 'Archivos adicionales', 'shitty_browser' => 'No se ha detectado ninguna firma. Si está utilizando un navegador más antiguo, por favor utilice un navegador más moderno para completar la aceptación del elemento.', 'bulk_soft_delete' =>'También borra suavemente estos usuarios. Su historial de activos permanecerá intacto a menos/hasta que purgue los registros borrados en la Configuración de administración.', - 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y sus elementos han sido registrados.', - 'bulk_checkin_success' => 'Los elementos para los usuarios seleccionados han sido registrados.', + 'bulk_checkin_delete_success' => 'Los usuarios seleccionados han sido eliminados y sus activos han sido ingresados.', + 'bulk_checkin_success' => 'Los elementos para los usuarios seleccionados han sido ingresados.', 'set_to_null' => 'Eliminar valores para este activo|Borrar valores para todos los activos :asset_count ', 'set_users_field_to_null' => 'Eliminar :field values for this user|Eliminar :field values for all :user_count users ', 'na_no_purchase_date' => 'N/A - No se proporcionó fecha de compra', @@ -425,7 +425,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tienes :count elementos que requieren aceptación. Haz clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -439,9 +439,9 @@ return [ 'alerts' => 'Alertas', 'tasks_view_all' => 'Ver todas las tareas', 'true' => 'Verdadero', - 'false' => 'False', + 'false' => 'Falso', 'integration_option' => 'Opción de integración', - 'log_does_not_exist' => 'No existe ningún registro de registro coincidente.', + 'log_does_not_exist' => 'No existe ningún registro de eventos que coincida.', 'merge_users' => 'Combinar usuarios', 'merge_information' => 'Esto fusionará a los usuarios :count en un solo usuario. Seleccione el usuario en el que desea fusionar a los demás a continuación, y los activos asociados, licencias, etc se moverá al usuario seleccionado y los otros usuarios serán marcados como eliminados.', 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', @@ -453,8 +453,8 @@ return [ 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y guardar', 'update_existing_values' => '¿Actualizar valores existentes?', - 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Generar etiquetas de activos auto-incrementantes está desactivado, por lo que todas las filas necesitan tener la columna "Tag de activo" rellenada.', - 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: Generar etiquetas de activos que incrementan automáticamente está habilitado, por lo que se crearán recursos para registros que no tengan "Tag de activo" poblado. Las filas que tengan "Etiqueta de activos" pobladas serán actualizadas con la información proporcionada.', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generación autoincrementable de las placas de activos está desactivada, por lo que todas las filas deben tener la columna "Asset Tag" con información.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: La generación autoincrementable de las placas de activos está activada, por lo que se crearán activos para las filas sin información en la columna "Asset Tag". Las filas que sí tengan informacióin en la columna "Asset Tag" se actualizarán con la información proporcionada.', 'send_welcome_email_to_users' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', 'send_email' => 'Enviar Email', 'call' => 'Número de llamada', @@ -474,9 +474,9 @@ return [ 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero debería confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', - 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la interfaz de usuario o herramientas de cli asignadas a granel.', - 'autoassign_licenses_help_long' => 'Esto permite que un usuario tenga licencias asignadas a través de la interfaz de usuario o las herramientas de cli asignadas a granel. (Por ejemplo, puede que no desee que los contratistas sean asignados automáticamente a una licencia que proporcione sólo a los miembros del personal. Todavía puede asignar licencias individualmente a esos usuarios, pero no se incluirán en la licencia de pago a las funciones de todos los usuarios.)', - 'no_autoassign_licenses_help' => 'No incluya al usuario para asignar a granel a través de la licencia UI o las herramientas de cli.', + 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', + 'autoassign_licenses_help_long' => 'Esto permite asignar licencias a un usuario a través de la asignación masiva en la interfaz de usuario o de las herramientas de línea de comandos (CLI). (Por ejemplo, es posible que no desee que a los contratistas se les asigne automáticamente una licencia que usted proporcionaría sólo a los miembros del personal. Puede seguir asignando licencias individualmente a esos usuarios, pero no se incluirán en las funciones de "Asignación de licencias a todos los usuarios").', + 'no_autoassign_licenses_help' => 'No incluir al usuario en la asignación masiva de licencias en la interfaz de usuario o en las herramientas de línea de comandos (CLI).', 'modal_confirm_generic' => '¿Está seguro?', 'cannot_be_deleted' => 'Este elemento no puede ser eliminado', 'cannot_be_edited' => 'Este elemento no puede ser editado.', @@ -487,23 +487,23 @@ return [ 'error_user_company' => 'La compañía destino de la asignación y la compañía del activo no coinciden', 'error_user_company_accept_view' => 'Un activo asignado a usted pertenece a una compañía diferente por lo que no puede aceptarlo ni rechazarlo, por favor verifique con su supervisor', 'importer' => [ - 'checked_out_to_fullname' => 'Pagado a: Nombre Completo', - 'checked_out_to_first_name' => 'Pagado a: Nombre', - 'checked_out_to_last_name' => 'Pagado a: Apellido', - 'checked_out_to_username' => 'Pagado a: Usuario', - 'checked_out_to_email' => 'Checkout a: Email', - 'checked_out_to_tag' => 'Checked Out a: Tag de Activos', - 'manager_first_name' => 'Nombre del administrador', - 'manager_last_name' => 'Apellido del administrador', - 'manager_full_name' => 'Nombre completo del administrador', - 'manager_username' => 'Usuario Administrador', - 'checkout_type' => 'Tipo de pago', - 'checkout_location' => 'Pagar a la ubicación', - 'image_filename' => 'Nombre de imagen', + 'checked_out_to_fullname' => 'Asignado a: Nombre completo', + 'checked_out_to_first_name' => 'Asignado a: Nombre', + 'checked_out_to_last_name' => 'Asignado a: Apellido', + 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_email' => 'Asignado a: correo electrónico', + 'checked_out_to_tag' => 'Asignado a: Placa de activo', + 'manager_first_name' => 'Nombre del supervisor', + 'manager_last_name' => 'Apellido del supervisor', + 'manager_full_name' => 'Nombre completo del supervisor', + 'manager_username' => 'Nombre de usuario del supervisor', + 'checkout_type' => 'Tipo de asignación', + 'checkout_location' => 'Asignar a la ubicación', + 'image_filename' => 'Nombre del archivo de la imagen', 'do_not_import' => 'No importar', 'vip' => 'VIP', 'avatar' => 'Avatar', - 'gravatar' => 'Gravatar Email', + 'gravatar' => 'Correo electrónico Gravatar', 'currency' => 'Moneda', 'address2' => 'Dirección línea 2', 'import_note' => 'Importado usando el importador de csv', @@ -516,19 +516,19 @@ return [ 'copy_to_clipboard' => 'Copiar al portapapeles', 'copied' => '¡Copiado!', 'status_compatibility' => 'Si los activos ya están asignados, no se pueden cambiar a un tipo de estado no utilizable y este cambio de valor se omitirá.', - 'rtd_location_help' => 'Esta es la ubicación del recurso cuando no está seleccionado', + 'rtd_location_help' => 'Esta es la ubicación del activo cuando no está asignado', 'item_not_found' => ':item_type ID :id no existe o ha sido eliminado', 'action_permission_denied' => 'No tiene permiso para :action :item_type ID :id', 'action_permission_generic' => 'No tiene permiso para :action this :item_type', 'edit' => 'editar', - 'action_source' => 'Fuente de acción', + 'action_source' => 'Origen de la acción', 'or' => 'o', 'url' => 'URL', 'edit_fieldset' => 'Editar campos y opciones de grupos de campos', 'permission_denied_superuser_demo' => 'Permiso denegado. No puede actualizar la información de usuario para superadministradores en la demo.', 'pwd_reset_not_sent' => 'El usuario no está activado, está sincronizado con LDAP o no tiene una dirección de correo electrónico', 'error_sending_email' => 'Error al enviar email', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'No está autorizado a realizar esta acción. Puede regresar al tablero, o ponerse en contacto con su administrador.', 'bulk' => [ 'delete' => [ @@ -546,9 +546,17 @@ return [ 'accessories' => ':count Accesorio|:count Accesorios', 'assets' => ':count Activos|:count Activos', 'licenses' => ':count Licencia|:count Licencias', - 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'license_seats' => ':count licencia|:count licencias', 'consumables' => ':count Consumible|:count Consumibles', 'components' => ':count component|:count componentes', - ] + ], + 'more_info' => 'Más información', + 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'whoops' => '¡Uy!', + 'something_went_wrong' => 'Algo falló en su solicitud.', + 'close' => 'Cerrar', + 'expires' => 'Vence', + 'map_fields'=> 'Asociar el campo :item_type', + 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-VE/help.php b/resources/lang/es-VE/help.php index 92cce3855f..e766a4f358 100644 --- a/resources/lang/es-VE/help.php +++ b/resources/lang/es-VE/help.php @@ -15,11 +15,11 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente se notará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo está desprotegido, no cambiará la ubicación de la persona, el activo o la ubicación en la que está verificado.', + 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', - 'assets' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.', + 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', - 'categories' => 'Las categorías te ayudan a organizar tus elementos. Unos ejemplos de categorías podrían ser: "Pc Escritorios", "Portátiles", "Móviles", "Tabletas", etc.', + 'categories' => 'Las categorías le ayudan a organizar sus elementos. Unos ejemplos de categorías podrían ser: "PC Escritorios", "Portátiles", "Móviles", "Tabletas", etc.', 'accessories' => 'Los accesorios son cualquier cosa que se le asigne a los usuarios pero que no tenga numero de serie (o no importe realizarle el seguimiento en forma unica). Por ejemplo, mouse o teclados.', @@ -27,7 +27,7 @@ return [ 'components' => 'Los componentes son elementos que son parte de un activo, por ejemplo HDD, RAM, etc.', - 'consumables' => 'Los consumibles son cualquier cosa comprada que se usará con el tiempo. Por ejemplo, tinta de impresora o papel copiador.', + 'consumables' => 'Los consumibles son todo aquello que se compra y que se agota con el tiempo. Por ejemplo, tinta de impresora o papel de fotocopiadora.', 'depreciations' => 'Puede configurar la depreciación de activos usando un método de línea recta.', diff --git a/resources/lang/es-VE/localizations.php b/resources/lang/es-VE/localizations.php index be0ac5f74d..88e7bbe1f3 100644 --- a/resources/lang/es-VE/localizations.php +++ b/resources/lang/es-VE/localizations.php @@ -2,7 +2,7 @@ return [ - 'select_language' => 'Seleccione un idioma', + 'select_language' => 'Seleccionar un idioma', 'languages' => [ 'en-US'=> 'Inglés, EEUU', 'en-GB'=> 'Inglés, Reino Unido', @@ -49,7 +49,7 @@ return [ 'ru-RU'=> 'Ruso', 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Eslovaco', - 'sl-SI'=> 'Slovenian', + 'sl-SI'=> 'Esloveno', 'so-SO'=> 'Somali', 'es-ES'=> 'Español', 'es-CO'=> 'Español, Colombia', @@ -66,7 +66,7 @@ return [ 'zu-ZA'=> 'Zulu', ], - 'select_country' => 'Seleccione un país', + 'select_country' => 'Seleccionar un país', 'countries' => [ 'AC'=>'Isla de Ascensión', @@ -93,7 +93,7 @@ return [ 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', 'BG'=>'Bulgaria', - 'BH'=>'Bahrain', + 'BH'=>'Baréin', 'BI'=>'Burundi', 'BJ'=>'Benin', 'BM'=>'Bermuda', @@ -287,11 +287,11 @@ return [ 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', 'TI'=>'Timor Oriental', - 'TM'=>'Turkmenistan', - 'TN'=>'Tunisia', + 'TM'=>'Turkmenistán', + 'TN'=>'Túnez', 'TO'=>'Tonga', 'TP'=>'Timor Oriental (código antiguo)', - 'TR'=>'Pavo', + 'TR'=>'Turquía', 'TT'=>'Trinidad y Tobago', 'TV'=>'Tuvalu', 'TW'=>'Taiwán', diff --git a/resources/lang/es-VE/mail.php b/resources/lang/es-VE/mail.php index a1b4e92a77..04de723d1a 100644 --- a/resources/lang/es-VE/mail.php +++ b/resources/lang/es-VE/mail.php @@ -2,30 +2,30 @@ return [ - 'Accessory_Checkin_Notification' => 'Accesorio devuelto', - 'Accessory_Checkout_Notification' => 'Accesorio reservado', - 'Asset_Checkin_Notification' => 'Activo devuelto', - 'Asset_Checkout_Notification' => 'Recurso reservado', - 'Confirm_Accessory_Checkin' => 'Confirmación de devolución de accesorio', - 'Confirm_Asset_Checkin' => 'Confirmación de devolución de activo', + 'Accessory_Checkin_Notification' => 'Accesorio ingresado', + 'Accessory_Checkout_Notification' => 'Accesorio asignado', + 'Asset_Checkin_Notification' => 'Activo ingresado', + 'Asset_Checkout_Notification' => 'Activo asignado', + 'Confirm_Accessory_Checkin' => 'Confirmación de ingreso de accesorio', + 'Confirm_Asset_Checkin' => 'Confirmación de ingreso de activo', 'Confirm_accessory_delivery' => 'Confirmación de entrega de accesorio', 'Confirm_asset_delivery' => 'Confirmación de entrega de activo', 'Confirm_consumable_delivery' => 'Confirmación de entrega de consumible', 'Confirm_license_delivery' => 'Confirmación de entrega de licencia', - 'Consumable_checkout_notification' => 'Consumible comprobado', + 'Consumable_checkout_notification' => 'Consumible asignado', 'Days' => 'Días', - 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto en :date', + 'Expected_Checkin_Date' => 'Un activo asignado a Ud. debe ser devuelto el :date', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', - 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', - 'Expiring_Assets_Report' => 'Reportes de Activos que Vencen.', + 'Expected_Checkin_Report' => 'Informe de próximas devoluciones de activos', + 'Expiring_Assets_Report' => 'Informe de activos con garantía próxima a vencer.', 'Expiring_Licenses_Report' => 'Reportes de Licencias que Vencen.', 'Item_Request_Canceled' => 'Solicitud de Artículo Cancelada', 'Item_Requested' => 'Artículo Solicitado', 'License_Checkin_Notification' => 'Licencia devuelta', - 'License_Checkout_Notification' => 'Licencia reservada', - 'Low_Inventory_Report' => 'Reporte de inventario bajo', - 'a_user_canceled' => 'Un usuario ha cancelado una solicitud de articulo en el sitio web', - 'a_user_requested' => 'Un usuario ha solicitado un artículo en el sitio web', + 'License_Checkout_Notification' => 'Licencia asignada', + 'Low_Inventory_Report' => 'Informe sobre inventario bajo', + 'a_user_canceled' => 'El usuario ha cancelado el elemento solicitado en la página web', + 'a_user_requested' => 'Un usuario ha solicitado un elemento en la página web', 'acceptance_asset_accepted' => 'Un usuario ha aceptado un elemento', 'acceptance_asset_declined' => 'Un usuario ha rechazado un elemento', 'accessory_name' => 'Nombre del Accesorio:', @@ -34,16 +34,16 @@ return [ 'asset' => 'Activo:', 'asset_name' => 'Nombre del activo:', 'asset_requested' => 'Activo solicitado', - 'asset_tag' => 'Etiqueta de activo', + 'asset_tag' => 'Placa del activo', 'assets_warrantee_alert' => 'Hay :count activo con una garantía que expira en los próximos :threshold days.|Hay :count activos con garantías que expiran en los siguientes :threshold days.', 'assigned_to' => 'Asignado A', 'best_regards' => 'Atentamente,', 'canceled' => 'Cancelado:', 'checkin_date' => 'Fecha de devolución:', 'checkout_date' => 'Fecha de asignación:', - 'checkedout_from' => 'Salido de', - 'checkedin_from' => 'Registrado desde', - 'checked_into' => 'Registrado en', + 'checkedout_from' => 'Asignado desde', + 'checkedin_from' => 'Devuelto desde', + 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', 'click_to_confirm' => 'Por favor, pulsa en el siguiente enlace para verificar tu cuenta de :web:', @@ -55,12 +55,13 @@ return [ 'hi' => 'Hola', 'i_have_read' => 'He leído y aceptado los términos de uso, y he recibido este artículo.', 'inventory_report' => 'Informe de inventario', - 'item' => 'Artículo:', + 'item' => 'Elemento:', + 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', 'link_to_update_password' => 'Haz click en el siguiente link para actualizar la contraseña de tu :web:', 'login' => 'Iniciar Sesión:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', - 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto estará debajo.|Hay :count elementos que están por debajo del inventario mínimo o que pronto serán bajos.', + 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo ha sido asignado a su nombre, los detalles están a continuación.', @@ -70,24 +71,26 @@ return [ 'read_the_terms' => 'Por favor lea los términos de uso a continuación.', 'read_the_terms_and_click' => 'Por favor lea los términos de uso a continuación y haga clic en el enlace en la parte inferior para confirmar que usted leyó los términos de uso y los acepta, y que ha recibido el activo.', 'requested' => 'Solicitado:', - 'reset_link' => 'Tu Enlace de Reestablecimiento de Contraseña', + 'reset_link' => 'Su enlace de restablecimiento de contraseña', 'reset_password' => 'Haz click aquí para reestablecer tu contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Número de serie', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', 'snipe_webhook_summary' => 'Resumen de la prueba de integración de Snipe-IT', 'supplier' => 'Proveedor', - 'tag' => 'Etiqueta', + 'tag' => 'Placa', 'test_email' => 'Email de prueba de Snipe-IT', - 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', + 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', - 'upcoming-audits' => 'Hay :count activo que se está preparando para auditoría dentro de :threshold days.|Hay :count activos que se están preparando para auditoría en :threshold days.', + 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', 'user' => 'Usuario', 'username' => 'Nombre de usuario', + 'unaccepted_asset_reminder' => 'Tiene activos pendientes por aceptar.', 'welcome' => 'Bienvenido :name', 'welcome_to' => '¡Bienvenido a :web!', - 'your_assets' => 'Ver tus activos', - 'your_credentials' => 'Tus credenciales de Snipe-IT', + 'your_assets' => 'Ver sus activos', + 'your_credentials' => 'Sus credenciales de Snipe-IT', + 'mail_sent' => '¡Correo enviado exitosamente!.', ]; diff --git a/resources/lang/es-VE/passwords.php b/resources/lang/es-VE/passwords.php index f337c2c967..75469d1121 100644 --- a/resources/lang/es-VE/passwords.php +++ b/resources/lang/es-VE/passwords.php @@ -3,7 +3,7 @@ return [ 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', 'user' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', - 'token' => 'Este token de restablecimiento de contraseña no es válido o ha caducado, o no coincide con el nombre de usuario proporcionado.', - 'reset' => '¡Tu contraseña ha sido restablecida!', + 'token' => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', + 'reset' => '¡Su contraseña ha sido restablecida!', 'password_change' => '¡Su contraseña ha sido actualizada!', ]; diff --git a/resources/lang/es-VE/reminders.php b/resources/lang/es-VE/reminders.php index 3f68668a04..c4fe99de89 100644 --- a/resources/lang/es-VE/reminders.php +++ b/resources/lang/es-VE/reminders.php @@ -15,7 +15,7 @@ return array( "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", "user" => "El nombre de usuario o la dirección de correo son incorrectos", - "token" => 'Este token de restablecimiento de contraseña no es válido o ha caducado, o no coincide con el nombre de usuario proporcionado.', + "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', ); diff --git a/resources/lang/es-VE/table.php b/resources/lang/es-VE/table.php index f827af5873..dea24233f7 100644 --- a/resources/lang/es-VE/table.php +++ b/resources/lang/es-VE/table.php @@ -5,7 +5,7 @@ return array( 'actions' => 'Acciones', 'action' => 'Acción', 'by' => 'Por', - 'item' => 'Artículo', + 'item' => 'Elemento', 'no_matching_records' => 'No se encontraron registros que coincidan', ); diff --git a/resources/lang/es-VE/validation.php b/resources/lang/es-VE/validation.php index b89fa03e2d..a9a2a95daf 100644 --- a/resources/lang/es-VE/validation.php +++ b/resources/lang/es-VE/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'El: atributo debe ser aceptado.', - 'active_url' => 'El :atributo no es una URL correcta.', - 'after' => 'El :attribute debe ser posterior a :date.', - 'after_or_equal' => 'El :attribute debe ser una fecha posterior o igual a :date.', - 'alpha' => 'El :attribute sólo debe contener letras.', - 'alpha_dash' => 'El :attribute debe sólo aceptar letras, números y guiones.', - 'alpha_num' => 'El :attribute debe sólo acepta letras y números.', - 'array' => 'El :attribute debe ser una matriz.', - 'before' => 'El :attribute sólo debe ser anterior a :date.', - 'before_or_equal' => 'El :attribute debe ser una fecha anterior o igual a :date.', - 'between' => [ - 'numeric' => 'El :attribute debe estar entre :min - :max.', - 'file' => 'El :attribute debe estar entre :min - :max kilobytes.', - 'string' => 'El :attribute debe estar entre :min - :max caracteres.', - 'array' => 'El atributo: debe tener entre :min y :max elementos.', + 'accepted' => 'El campo :attribute debe ser aceptado.', + 'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other es :value.', + 'active_url' => 'El campo :attribute debe ser una dirección URL válida.', + 'after' => 'El campo :attribute debe ser una fecha posterior a :date.', + 'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.', + 'alpha' => 'El campo :attribute debe contener únicamente letras.', + 'alpha_dash' => 'El campo :attribute debe contener únicamente letras, números, guiones y guiones bajos.', + 'alpha_num' => 'El campo :attribute debe contener únicamente letras y números.', + 'array' => 'El campo :attribute debe ser un arreglo.', + 'ascii' => 'El campo :attribute debe contener únicamente caracteres y símbolos alfanuméricos de un byte.', + 'before' => 'El campo :attribute debe ser una fecha anterior a :date.', + 'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.', + 'between' => [ + 'array' => 'El campo :attribute debe tener elementos entre :min y :max.', + 'file' => 'El campo :attribute debe tener entre :min y :max kilobytes.', + 'numeric' => 'El campo :attribute debe estar entre :min y :max.', + 'string' => 'El campo :attribute debe tener entre :min y :max caracteres.', ], - 'boolean' => 'El :attribute debe ser verdadero o falso.', - 'confirmed' => 'La :attribute confirmación no coincide.', - 'date' => 'El :attribute no es una fecha correcta.', - 'date_format' => 'El :attribute no cumple el formato :format.', - 'different' => 'Los :attribute y :other deben ser diferentes.', - 'digits' => 'El :attribute debe tener :digits digitos.', - 'digits_between' => 'El :attribute debe tener entre :min y :max dígitos.', - 'dimensions' => 'El :attribute tiene dimensiones de imagen no válidas.', - 'distinct' => 'El campo :attribute tiene un valor duplicado.', - 'email' => 'El formato :attribute es inválido.', - 'exists' => 'El :attribute seleccionado es inválido.', - 'file' => 'Estte :attribute debe ser un archivo.', - 'filled' => 'El campo :attribute debe tener un valor.', - 'image' => 'El :attribute debe ser una imagen.', + 'boolean' => 'El campo :attribute debe ser verdadero o falso.', + 'can' => 'El campo :attribute contiene un valor no autorizado.', + 'confirmed' => 'La confirmación del campo :attribute no coincide.', + 'contains' => 'Falta un valor obligatorio en el campo :attribute.', + 'current_password' => 'La contraseña es incorrecta.', + 'date' => 'El campo :attribute debe contener una fecha válida.', + 'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.', + 'date_format' => 'El campo :attribute debe coincidir con el formato :format.', + 'decimal' => 'El campo :attribute debe tener :decimal lugares decimales.', + 'declined' => 'El campo :attribute debe ser rechazado.', + 'declined_if' => 'El campo :attribute debe ser rechazado cuando :other es :value.', + 'different' => 'Los campos :attribute y :other deben ser diferentes.', + 'digits' => 'El campo :attribute debe tener :digits dígitos.', + 'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.', + 'dimensions' => 'El campo :attribute tiene dimensiones de imagen no válidas.', + 'distinct' => 'El campo :attribute tiene un valor duplicado.', + 'doesnt_end_with' => 'El campo :attribute no debe finalizar con uno de los siguientes :values.', + 'doesnt_start_with' => 'El campo :attribute no debe iniciar con uno de los siguientes :values.', + 'email' => 'El campo :attribute debe ser una dirección de correo válida.', + 'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes :values.', + 'enum' => 'El valor seleccionado para :attribute no es correcto.', + 'exists' => 'El :attribute seleccionado es inválido.', + 'extensions' => 'El campo :attribute debe tener una de las siguientes extensiones :values.', + 'file' => 'El campo :attribute debe ser un archivo.', + 'filled' => 'El campo :attribute debe tener un valor.', + 'gt' => [ + 'array' => 'El campo :attribute debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser mayor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que :value.', + 'string' => 'El campo :attribute debe ser mayor que :value caracteres.', + ], + 'gte' => [ + 'array' => 'El campo :attribute debe tener :value elementos o más.', + 'file' => 'El campo :attribute debe ser mayor que o igual a :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que o igual a :value.', + 'string' => 'El campo :attribute debe ser mayor que o igual a :value caracteres.', + ], + 'hex_color' => 'El campo :attribute debe ser un color hexadecimal válido.', + 'image' => 'El campo :attribute debe ser una imagen.', 'import_field_empty' => 'El valor para :fieldname no puede ser nulo.', - 'in' => 'El :attribute seleccionado es inválido.', - 'in_array' => 'El :attribute no existe en :other.', - 'integer' => 'El :attribute debe ser un número entero.', - 'ip' => 'El :attribute debe ser una dirección IP correcta.', - 'ipv4' => 'El :atrribute debe ser una dirección IPv4 válida.', - 'ipv6' => 'El :atrribute debe ser una dirección IPv6 válida.', - 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la compañía', - 'json' => 'El :atrribute debe ser una dirección IPv4 válida.', - 'max' => [ - 'numeric' => 'El :attribute no debe ser mayor que :max kilobytes.', - 'file' => 'El :attribute no debe tener como máximo :max caracteres.', - 'string' => 'El :attribute no debe tener más de :max caracteres.', - 'array' => 'El :attribute no debe tener más de :max caracteres.', + 'in' => 'El :attribute seleccionado es inválido.', + 'in_array' => 'El campo :attribute debe existir en :other.', + 'integer' => 'El campo :attribute debe ser un valor entero.', + 'ip' => 'El campo :attribute debe ser una dirección IP válida.', + 'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.', + 'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.', + 'json' => 'El campo :attribute debe ser una cadena de texto JSON válida.', + 'list' => 'The campo :attribute debe ser una lista.', + 'lowercase' => 'El campo :attribute debe estar en minúsculas.', + 'lt' => [ + 'array' => 'El campo :attribute debe tener menos que :value elementos.', + 'file' => 'El campo :attribute debe ser menor que :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser menor que :value.', + 'string' => 'El campo :attribute debe ser menor que :value caracteres.', ], - 'mimes' => 'El :attribute debe ser un archivo del tipo: :values.', - 'mimetypes' => 'El :attribute debe ser un archivo del tipo: :values.', - 'min' => [ - 'numeric' => 'El :attribute debe ser como mínimo :min.', - 'file' => 'El :attribute debe ser como mínimo de :min kilobytes.', - 'string' => 'El :attribute debe ser como mínimo de :min kilobytes.', - 'array' => 'El :attribute debe ser como mínimo de :min kilobytes.', + 'lte' => [ + 'array' => 'El campo :attribute no debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe ser menor que o igual a :value kylobytes.', + 'numeric' => 'El campo :attribute debe ser menor que o igual a :value.', + 'string' => 'El campo :attribute debe ser menor que o igual a :value caracteres.', ], - 'starts_with' => 'El :attribute debe comenzar con uno de los siguientes: :values.', - 'ends_with' => 'El campo :attribute debe terminar con uno de los siguientes: :values.', - - 'not_in' => 'El :attribute seleccionado es inválido.', - 'numeric' => 'El :attribute debe ser un número entero.', - 'present' => 'El campo :attribute debe tener un valor.', - 'valid_regex' => 'Este no es un regex válido. ', - 'regex' => 'El formato :attribute es inválido.', - 'required' => 'El campo :attribute es obligatorio.', - 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', - 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', - 'required_with' => 'El :attribute es obligatrio cuando :values está presente.', - 'required_with_all' => 'El campo :attribute es obligatrio cuando :values está presente.', - 'required_without' => 'El :attribute es obligatrio cuando :values está presente.', - 'required_without_all' => 'El campo :attribute es obligatrio cuando :values es present.', - 'same' => 'Los :attribute y :other deben ser diferentes.', - 'size' => [ - 'numeric' => 'Estte :attribute debe ser :size.', - 'file' => 'El :attribute debe tener :size kilobytes.', - 'string' => 'El :attribute debe tener :size kilobytes.', - 'array' => 'El :attribute debe contener :size elementos.', + 'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.', + 'max' => [ + 'array' => 'El campo :attribute no debe tener más de :max elementos.', + 'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.', + 'numeric' => 'El campo :attribute no debe ser mayor que :max.', + 'string' => 'El campo :attribute no debe ser mayor que :max caracteres.', ], + 'max_digits' => 'El campo :attribute no debe tener más de :max dígitos.', + 'mimes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'mimetypes' => 'El campo :attribute debe un archivo de tipo: :values.', + 'min' => [ + 'array' => 'El campo :attribute debe tener al menos :min elementos.', + 'file' => 'El campo :attribute debe ser de al menos :min kilobytes.', + 'numeric' => 'El campo :attribute debe ser al menos :min.', + 'string' => 'El campo :attribute debe contener como mínimo :min caracteres.', + ], + 'min_digits' => 'El campo :attribute debe contener como mínimo :min dígitos.', + 'missing' => 'El campo :attribute debe estar vacío.', + 'missing_if' => 'El campo :attribute debe estar vacío cuando :other sea :value.', + 'missing_unless' => 'El campo :attribute debe estar vacío a menos que :other sea :value.', + 'missing_with' => 'El campo :attribute debe estar vacío cuando :values esté presente.', + 'missing_with_all' => 'El campo :attribute debe estar vacío cuando :values estén presentes.', + 'multiple_of' => 'El campo :attribute debe ser un múltiplo de :value.', + 'not_in' => 'El :attribute seleccionado es inválido.', + 'not_regex' => 'El campo :attribute no es válido.', + 'numeric' => 'El campo :attribute debe ser un número.', + 'password' => [ + 'letters' => 'El cammpo :attribute debe contener al menos una letra.', + 'mixed' => 'El campo :attribute debe contener al menos una letra minúscula y una mayúscula.', + 'numbers' => 'El campo :attribute debe contener al menos un número.', + 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', + 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', + ], + 'present' => 'El campo :attribute debe tener un valor.', + 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', + 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', + 'present_with' => 'El campo :attribute debe estar presente cuando :values esté presente.', + 'present_with_all' => 'El campo :attribute debe estar presente cuando :values estén presentes.', + 'prohibited' => 'El campo :attribute está prohibido.', + 'prohibited_if' => 'El campo :attribute está prohibido cuando :other sea :value.', + 'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other esté en :values.', + 'prohibits' => 'El campo :attribute prohíbe la presencia de :other.', + 'regex' => 'El formato del campo :attribute no es válido.', + 'required' => 'El campo :attribute es obligatorio.', + 'required_array_keys' => 'El campo :attribute debe contener valores para: :values.', + 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_if_accepted' => 'El campo :attribute es obligatorio cuando se acepta :other.', + 'required_if_declined' => 'El campo :attribute es requerido cuando :other es rechazado.', + 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', + 'required_with' => 'El :attribute es obligatrio cuando :values está presente.', + 'required_with_all' => 'El campo :attribute es requerido cuando :values están presentes.', + 'required_without' => 'El :attribute es obligatrio cuando :values está presente.', + 'required_without_all' => 'El campo :attribute es obligatorio cuando no está presente ninguno de los :values.', + 'same' => 'El campo :attribute debe coincidir con :other.', + 'size' => [ + 'array' => 'El campo :attribute debe contenter :size elementos.', + 'file' => 'El campo :attribute debe ser de :size kilobytes.', + 'numeric' => 'El campo :attribute debe ser :size.', + 'string' => 'El campo :attribute debe ser de :size caracteres.', + ], + 'starts_with' => 'El campo :attribute debe iniciar con uno de los siguientes: :values.', 'string' => 'Este :attribute debe ser una cadena.', - 'timezone' => 'El :attribute debe ser una zona válida.', 'two_column_unique_undeleted' => ':attribute debe ser único a través de :table1 y :table2. ', - 'unique' => 'El :attribute ya está en uso.', - 'uploaded' => 'El :attribute fallo al cargar.', - 'url' => 'El formato :attribute es inválido.', 'unique_undeleted' => 'El :atrribute debe ser único.', 'non_circular' => ':attribute no debe crear una referencia circular.', 'not_array' => ':attribute no puede ser una matriz.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'La contraseña debe contener al menos un número.', 'case_diff' => 'La contraseña debe usar mayúsculas y minúsculas.', 'symbols' => 'La contraseña debe contener símbolos.', - 'gte' => [ - 'numeric' => 'El valor no puede ser negativo' - ], - 'checkboxes' => ':attribute contiene opciones no válidas.', - 'radio_buttons' => ':attribute no es válido.', - + 'timezone' => 'El campo :attribute debe ser una zona horaria válida.', + 'unique' => 'El :attribute ya está en uso.', + 'uploaded' => 'El :attribute fallo al cargar.', + 'uppercase' => 'El campo :attribute debe estar en mayúsculas.', + 'url' => 'El campo :attribute debe ser una URL válida.', + 'ulid' => 'El campo :attribute debe ser un ULID válido.', + 'uuid' => 'El campo :attribute debe ser un UUID válido.', /* |-------------------------------------------------------------------------- @@ -123,13 +185,13 @@ return [ 'custom' => [ 'alpha_space' => 'El campo :attribute contiene un caracter que no está permitido.', 'email_array' => 'Una o más direcciones de correo electrónico no son válidas.', - 'hashed_pass' => 'Tu contraseña actual es incorrecta', + 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', 'last_audit_date.date_format' => 'El campo :attribute debe ser una fecha válida en formato AAA-MM-DD hh:mm:ss', 'expiration_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', 'start_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', 'end_date.date_format' => ':attribute debe ser una fecha válida en formato AAA-MM-DD', - - ], - + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => 'El valor de :attribute no es válido.', + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + + 'generic' => [ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', + 'required' => 'El campo es obligatorio', + 'email' => 'Por favor, ingrese una dirección de correo electrónico válida.', + ], + + ]; diff --git a/resources/lang/et-EE/account/general.php b/resources/lang/et-EE/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/et-EE/account/general.php +++ b/resources/lang/et-EE/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/et-EE/admin/accessories/message.php b/resources/lang/et-EE/admin/accessories/message.php index 9c9f5283ef..cdf5d34dca 100644 --- a/resources/lang/et-EE/admin/accessories/message.php +++ b/resources/lang/et-EE/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Lisatarvikut ei kontrollitud, palun proovige uuesti', 'success' => 'Lisaseade edukalt kontrollitud.', 'unavailable' => 'Tarvik ei ole väljastamiseks saadaval. Kontrolli laoseisu', - 'user_does_not_exist' => 'See kasutaja on kehtetu. Palun proovi uuesti.' + 'user_does_not_exist' => 'See kasutaja on kehtetu. Palun proovi uuesti.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/et-EE/admin/consumables/general.php b/resources/lang/et-EE/admin/consumables/general.php index b6009300bd..0662b347b1 100644 --- a/resources/lang/et-EE/admin/consumables/general.php +++ b/resources/lang/et-EE/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Alles', 'total' => 'Kokku', 'update' => 'Muuda kuluvahendit', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/et-EE/admin/consumables/message.php b/resources/lang/et-EE/admin/consumables/message.php index 811629f99b..6e669ddc97 100644 --- a/resources/lang/et-EE/admin/consumables/message.php +++ b/resources/lang/et-EE/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Kuluvahendit pole olemas.', 'create' => array( diff --git a/resources/lang/et-EE/admin/custom_fields/message.php b/resources/lang/et-EE/admin/custom_fields/message.php index 642610422b..ad9626f3c5 100644 --- a/resources/lang/et-EE/admin/custom_fields/message.php +++ b/resources/lang/et-EE/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Seda välja ei eksisteeri.', 'already_added' => 'Väli on juba lisatud', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Väli ei loodud, proovige uuesti.', diff --git a/resources/lang/et-EE/admin/hardware/message.php b/resources/lang/et-EE/admin/hardware/message.php index bb87c17b29..632849b69b 100644 --- a/resources/lang/et-EE/admin/hardware/message.php +++ b/resources/lang/et-EE/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Hoiatus: See vahend on märgitud kui kasutuselevõtmatu. Kui see olek on muutunud, palun värskendage vahendi olekut.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Vahend puudub.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Mõned üksused ei impordinud õigesti.', 'errorDetail' => 'Järgmisi punkte ei imporditud vigade tõttu.', 'success' => 'Teie fail on imporditud', diff --git a/resources/lang/et-EE/admin/licenses/general.php b/resources/lang/et-EE/admin/licenses/general.php index 2d9e45395d..6ffe5eff7f 100644 --- a/resources/lang/et-EE/admin/licenses/general.php +++ b/resources/lang/et-EE/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Litsentsi info', 'license_seats' => 'Litsentse', 'seat' => 'Istekoht', + 'seat_count' => 'Seat :count', 'seats' => 'Istekohad', 'software_licenses' => 'Tarkvara litsentsid', 'user' => 'Kasutaja', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/et-EE/admin/licenses/message.php b/resources/lang/et-EE/admin/licenses/message.php index 507a6e4596..262956e23b 100644 --- a/resources/lang/et-EE/admin/licenses/message.php +++ b/resources/lang/et-EE/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Litsentsi kontrollides oli küsimus. Palun proovi uuesti.', 'success' => 'Litsents oli edukalt välja võetud', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/et-EE/admin/models/message.php b/resources/lang/et-EE/admin/models/message.php index 31843d6eb8..ed92b3639e 100644 --- a/resources/lang/et-EE/admin/models/message.php +++ b/resources/lang/et-EE/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'See mudel on seostus ühe või mitme vahendiga ja seda ei saa kustutada. Palun kustuta vahendid ja seejärel proovi uuesti kustutada. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Mudelit ei loodud, proovi uuesti.', diff --git a/resources/lang/et-EE/admin/settings/general.php b/resources/lang/et-EE/admin/settings/general.php index 9850ba8b53..e575f6a917 100644 --- a/resources/lang/et-EE/admin/settings/general.php +++ b/resources/lang/et-EE/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP server', - 'ldap_server_help' => 'See peaks algama ldap: // (krüpteerimata või TLS-i puhul) või ldaps: // (SSL-i puhul)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL-sertifikaadi valideerimine', 'ldap_server_cert_ignore' => 'Lubage kehtetu SSL-sertifikaat', 'ldap_server_cert_help' => 'Märkige see ruut, kui kasutate ennastkasutatud SSL-i sertifikaati ja soovite nõustuda sobiva SSL-sertifikaadiga.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'vabatahtlik', 'per_page' => 'Tulemused lehel', 'php' => 'PHP versioon', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/et-EE/button.php b/resources/lang/et-EE/button.php index 253b48c0b2..1e30b074e2 100644 --- a/resources/lang/et-EE/button.php +++ b/resources/lang/et-EE/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Kustuta', 'edit' => 'Muuda', + 'clone' => 'Clone', 'restore' => 'Taasta', 'remove' => 'Remove', 'request' => 'Päring', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Uus', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/et-EE/general.php b/resources/lang/et-EE/general.php index 5411fee99a..57404e3bef 100644 --- a/resources/lang/et-EE/general.php +++ b/resources/lang/et-EE/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Rohkem infot', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Aegub', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/et-EE/mail.php b/resources/lang/et-EE/mail.php index 99ceaa021d..226f94f939 100644 --- a/resources/lang/et-EE/mail.php +++ b/resources/lang/et-EE/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Olen lugenud ja nõustun kasutustingimustega ja saanud selle kirje.', 'inventory_report' => 'Inventari aruanne', 'item' => 'Kirje:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => ':count litsents aegub järgmise :threshold päeva jooksul.|:count litsentsi aegub järgmise :threshold päeva jooksul.', 'link_to_update_password' => 'Klienditeenuse uuendamiseks klõpsake järgmisel lingil:', 'login' => 'Logi sisse:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Sul on :count vahend, mida tuleb auditeerida :threshold päeva jooksul.|Sul on :count vahendit, mida tuleb auditeerida :threshold päeva jooksul.', 'user' => 'Kasutaja', 'username' => 'Kasutajanimi', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Tere tulemast, :name', 'welcome_to' => 'Teretulemast lehele :web!', 'your_assets' => 'Vaata oma varasi', 'your_credentials' => 'Sinu Snipe-IT rekvisiidid', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/et-EE/validation.php b/resources/lang/et-EE/validation.php index 37f292a3ce..fbc2d0f18b 100644 --- a/resources/lang/et-EE/validation.php +++ b/resources/lang/et-EE/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Atribuut peab olema aktsepteeritav.', - 'active_url' => 'Atribuut: ei ole kehtiv URL.', - 'after' => 'Atribuut peab olema kuupäev pärast: kuupäev.', - 'after_or_equal' => 'Atribuut peab olema kuupäev või kuupäev: kuupäev.', - 'alpha' => 'Atribuut: võib sisaldada ainult tähti.', - 'alpha_dash' => 'Atribuut: võib sisaldada ainult tähte, numbreid ja kriipsu.', - 'alpha_num' => 'Atribuut: võib sisaldada ainult tähti ja numbreid.', - 'array' => 'Atribuut peab olema massiiv.', - 'before' => 'Atribuut peab olema kuupäev: kuupäev.', - 'before_or_equal' => 'Atribuut peab olema kuupäev või kuupäev: kuupäev.', - 'between' => [ - 'numeric' => 'Atribuut peab olema vahemikus min ja max max.', - 'file' => 'Atribuut peab olema vahemikus min ja max kilobaitides.', - 'string' => 'Atribuut peab olema vahemikus min: max tähemärki.', - 'array' => 'Atribuut peab olema vahemikus: min ja max max.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Atribuudiväljadele peab olema tõene või vale.', - 'confirmed' => 'Atribuudi kinnitus ei sobi.', - 'date' => 'Atribuut: ei ole kehtiv kuupäev.', - 'date_format' => 'Atribuut: ei vasta vormingule: vorming.', - 'different' => 'Atribuut: and: teine ​​peab olema erinev.', - 'digits' => 'Atribuut peab olema: numbrite numbrid.', - 'digits_between' => 'Atribuut peab olema vahemikus min ja max max.', - 'dimensions' => 'Atribuudil on vale kujutise mõõtmed.', - 'distinct' => 'Atribuudiväljal on duplikaadi väärtus.', - 'email' => 'Atribuut peab olema kehtiv e-posti aadress.', - 'exists' => 'Valitud atribuut on kehtetu.', - 'file' => 'Atribuut peab olema fail.', - 'filled' => 'Atribuudiväljal peab olema väärtus.', - 'image' => 'Atribuut peab olema pilt.', + 'boolean' => 'Atribuudiväljadele peab olema tõene või vale.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Atribuudiväljal on duplikaadi väärtus.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Valitud atribuut on kehtetu.', + 'exists' => 'Valitud atribuut on kehtetu.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Atribuudiväljal peab olema väärtus.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Valitud atribuut on kehtetu.', - 'in_array' => 'Atribuudiväljal pole olemas: muud.', - 'integer' => 'Atribuut peab olema täisarv.', - 'ip' => 'Atribuut peab olema kehtiv IP-aadress.', - 'ipv4' => 'Atribuut peab olema kehtiv IPv4 aadress.', - 'ipv6' => 'Atribuut peab olema kehtiv IPv6 aadress.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Atribuut peab olema kehtiv JSON-string.', - 'max' => [ - 'numeric' => 'Atribuut: ei tohi olla suurem kui: maks.', - 'file' => 'Atribuut: ei tohi olla suurem kui: max kilobaiti.', - 'string' => 'Atribuut: ei tohi olla suurem kui: max tähemärki.', - 'array' => 'Atribuut: ei tohi sisaldada rohkem kui: max elemente.', + 'in' => 'Valitud atribuut on kehtetu.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Atribuut peab olema faili tüüp:: values.', - 'mimetypes' => 'Atribuut peab olema faili tüüp:: values.', - 'min' => [ - 'numeric' => 'Atribuut peab olema vähemalt: min.', - 'file' => 'Atribuut peab olema vähemalt: min kilobaiti.', - 'string' => 'Atribuut peab olema vähemalt: min tähemärki.', - 'array' => 'Atribuudil peab olema vähemalt: min kirjeid.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Valitud atribuut on kehtetu.', - 'numeric' => 'Atribuut peab olema number.', - 'present' => 'Atribuudiväli peab olema kohal.', - 'valid_regex' => 'See ei ole õige regex süntaks. ', - 'regex' => 'Atribuudivorming on vale.', - 'required' => 'Atribuudiväljandus on kohustuslik.', - 'required_if' => 'Atribuudiväljastus on vajalik, kui: muu on: väärtus.', - 'required_unless' => 'Atribuudiväljandus on vajalik, välja arvatud juhul, kui: muu on: väärtused.', - 'required_with' => 'Atribuudiväljund on vajalik, kui: väärtused on olemas.', - 'required_with_all' => 'Atribuudiväljund on vajalik, kui: väärtused on olemas.', - 'required_without' => 'Atribuudiväljund on vajalik, kui: väärtusi ei leidu.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Valitud atribuut on kehtetu.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Atribuudiväli peab olema kohal.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Atribuudiväljandus on kohustuslik.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Atribuudiväljastus on vajalik, kui: muu on: väärtus.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Atribuudiväljandus on vajalik, välja arvatud juhul, kui: muu on: väärtused.', + 'required_with' => 'Atribuudiväljund on vajalik, kui: väärtused on olemas.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Atribuudiväljund on vajalik, kui: väärtusi ei leidu.', 'required_without_all' => 'Atribuudiväljund on vajalik, kui ükski: väärtusest pole olemas.', - 'same' => 'Atribuut:: ja teine ​​peab vastama.', - 'size' => [ - 'numeric' => 'Atribuut peab olema: suurus.', - 'file' => 'Atribuut peab olema: suurus kilobaitides.', - 'string' => 'Atribuut peab olema: suuruse tähtedega.', - 'array' => 'Atribuut peab sisaldama: suuruse elemente.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Atribuut peab olema string.', - 'timezone' => 'Atribuut peab olema kehtiv tsoon.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Atribuut: on juba võetud.', - 'uploaded' => 'Atribuut ei õnnestunud üles laadida.', - 'url' => 'Atribuudivorming on vale.', 'unique_undeleted' => ':attribute peab olema ainulaadne.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Parool peab sisaldama vähemalt ühte numbrit.', 'case_diff' => 'Parool peab sisaldama väike- ja suurtähti.', 'symbols' => 'Parool peab sisaldama sümboleid.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Atribuut: on juba võetud.', + 'uploaded' => 'Atribuut ei õnnestunud üles laadida.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/fa-IR/account/general.php b/resources/lang/fa-IR/account/general.php index 2578229301..a57e49160f 100644 --- a/resources/lang/fa-IR/account/general.php +++ b/resources/lang/fa-IR/account/general.php @@ -2,6 +2,9 @@ return array( 'personal_api_keys' => 'کلیدهای API شخصی', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'url پایه API شما در این آدرس قرار دارد:', 'api_base_url_endpoint' => '/<endpoint> @@ -10,4 +13,5 @@ return array( 'api_token_expiration_time' => 'توکن‌های API در موارد زیر منقضی می‌شوند:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/fa-IR/admin/accessories/message.php b/resources/lang/fa-IR/admin/accessories/message.php index b30f84d75d..f569aa9cf5 100644 --- a/resources/lang/fa-IR/admin/accessories/message.php +++ b/resources/lang/fa-IR/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'وسیله چک نشده بود. لطفا دوباره امتحان کنید', 'success' => 'وسیله با موفقیت چک شد.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'کاربر نامعتبر است. لطفا دوباره امتحان کنید.' + 'user_does_not_exist' => 'کاربر نامعتبر است. لطفا دوباره امتحان کنید.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/fa-IR/admin/consumables/general.php b/resources/lang/fa-IR/admin/consumables/general.php index c7e25f26b1..65486b6b7d 100644 --- a/resources/lang/fa-IR/admin/consumables/general.php +++ b/resources/lang/fa-IR/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'یاقیمانده', 'total' => 'مجموع', 'update' => 'به روز رسانی لوازم مصرفي', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/fa-IR/admin/consumables/message.php b/resources/lang/fa-IR/admin/consumables/message.php index dfdb68a17d..fe9796bbea 100644 --- a/resources/lang/fa-IR/admin/consumables/message.php +++ b/resources/lang/fa-IR/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'مواد مصرفی یافت نشد.', 'create' => array( diff --git a/resources/lang/fa-IR/admin/custom_fields/message.php b/resources/lang/fa-IR/admin/custom_fields/message.php index 2eb06f7fd3..0e46eeb239 100644 --- a/resources/lang/fa-IR/admin/custom_fields/message.php +++ b/resources/lang/fa-IR/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'این زمینه وجود ندارد.', 'already_added' => 'زمینه اضافه شده است', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'فیلد ایجاد نشده است، لطفا دوباره تلاش کنید.', diff --git a/resources/lang/fa-IR/admin/hardware/message.php b/resources/lang/fa-IR/admin/hardware/message.php index 23218c1a57..e117466f53 100644 --- a/resources/lang/fa-IR/admin/hardware/message.php +++ b/resources/lang/fa-IR/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => ' اخطار: این دارایی به برانگیز گزارش شده است که در حال حاضر undeployable. اگر این وضعیت تغییر کرده است، لطفا به روز رسانی وضعیت دارایی.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'دارایی وجود ندارد.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -53,6 +53,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'بعضی از موارد به درستی وارد نشدند.', 'errorDetail' => 'موارد زیر به علت خطا وارد نشده است.', 'success' => 'فایل شما وارد شده است', diff --git a/resources/lang/fa-IR/admin/licenses/general.php b/resources/lang/fa-IR/admin/licenses/general.php index 25a1cf0eba..acbe0edb8a 100644 --- a/resources/lang/fa-IR/admin/licenses/general.php +++ b/resources/lang/fa-IR/admin/licenses/general.php @@ -15,6 +15,7 @@ return array( 'info' => 'اطلاعات پروانه', 'license_seats' => 'صندلی مجوز', 'seat' => 'صندلی', + 'seat_count' => 'Seat :count', 'seats' => 'صندلی ها', 'software_licenses' => 'گواهی نامه های نرم افزاری', 'user' => 'کاربر', @@ -24,12 +25,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/fa-IR/admin/licenses/message.php b/resources/lang/fa-IR/admin/licenses/message.php index ed862d3925..6ae220751e 100644 --- a/resources/lang/fa-IR/admin/licenses/message.php +++ b/resources/lang/fa-IR/admin/licenses/message.php @@ -45,6 +45,8 @@ return array( 'error' => 'بود یک موضوع چک کردن مجوز وجود دارد. لطفا دوباره تلاش کنید.', 'success' => 'مجوز خارج بررسی شد موفقیت', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/fa-IR/admin/models/message.php b/resources/lang/fa-IR/admin/models/message.php index 965b632071..6243c1a5eb 100644 --- a/resources/lang/fa-IR/admin/models/message.php +++ b/resources/lang/fa-IR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'این مدل در حال حاضر همراه یک یا بیشتر از یک دارایی است و نمی تواند حذف شود. لطفا دارایی ها را حذف کنید و سپس برای حذف کردن مجددا تلاش کنید. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'مدل ساخته نشده است، لطفا دوباره تلاش کنید.', diff --git a/resources/lang/fa-IR/admin/settings/general.php b/resources/lang/fa-IR/admin/settings/general.php index bba5afc63b..e5135e3919 100644 --- a/resources/lang/fa-IR/admin/settings/general.php +++ b/resources/lang/fa-IR/admin/settings/general.php @@ -129,7 +129,7 @@ return [ 'ldap_manager' => 'مدیر LDAP ', 'ldap_server' => 'سرویس دهنده LDAP', - 'ldap_server_help' => 'این باید با ldap: // (برای رمزگذاری نشده یا TLS) یا ldaps: ((برای SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'اعتبار گواهی نامه LDAP SSL', 'ldap_server_cert_ignore' => 'اجازه می دهد به گواهی های بی اعتبار SSL', 'ldap_server_cert_help' => 'اگر از یک امضای SSL شخصی معتبر استفاده می کنید این گزینه را فعال کنید.', @@ -164,8 +164,8 @@ return [ ', 'license' => 'مجوز نرم افزار ', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'تلاش برای ورود ', 'login_attempt' => 'تلاش برای ورود @@ -208,8 +208,7 @@ return [ 'optional' => 'اختیاری', 'per_page' => 'نتایج در هر صفحه', 'php' => 'نسخه php', - 'php_info' => 'اطلاعات پی اچ پی -', + 'php_info' => 'PHP info', 'php_overview' => 'PHP ', 'php_overview_keywords' => 'phpinfo, system, info', @@ -521,5 +520,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/fa-IR/button.php b/resources/lang/fa-IR/button.php index 79f9a283fe..9f04e27eb9 100644 --- a/resources/lang/fa-IR/button.php +++ b/resources/lang/fa-IR/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'بررسی همه و حذف کاربر', 'delete' => 'حذف', 'edit' => 'ويرايش', + 'clone' => 'Clone', 'restore' => 'بازیابی', 'remove' => 'پاک کردن', 'request' => 'درخواست', @@ -22,4 +23,13 @@ return [ ', 'append' => 'افزودن', 'new' => 'جدید', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/fa-IR/general.php b/resources/lang/fa-IR/general.php index 8cb568cdc8..534f957d5b 100644 --- a/resources/lang/fa-IR/general.php +++ b/resources/lang/fa-IR/general.php @@ -639,6 +639,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'اطلاعات بیشتر', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'منقضی می شود', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/fa-IR/mail.php b/resources/lang/fa-IR/mail.php index f5d55fe2ca..fc826111f3 100644 --- a/resources/lang/fa-IR/mail.php +++ b/resources/lang/fa-IR/mail.php @@ -64,6 +64,7 @@ return [ 'i_have_read' => 'من شرایط استفاده را خوانده ام و موافقم و این مورد را دریافت کرده ام.', 'inventory_report' => 'Inventory Report', 'item' => 'مورد:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'مجوز :count در روزهای بعدی :threshold منقضی می شود.|مجوزهای :count در روزهای بعدی :threshold منقضی می شوند.', 'link_to_update_password' => 'برای به روزرسانی لطفا بر روی لینک زیر کلیک کنید: web password:', 'login' => 'ورود:', @@ -94,9 +95,11 @@ return [ 'upcoming-audits' => 'دارایی :count وجود دارد که در روزهای :threshold برای حسابرسی ارائه می شود.', 'user' => 'کاربر', 'username' => 'نام کاربری', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'خوش آمدید نام', 'welcome_to' => 'به وب سایت خوش آمدید', 'your_assets' => 'دارایی های خود را مشاهده کنید ', 'your_credentials' => 'مدارک Snipe-IT شما', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/fa-IR/validation.php b/resources/lang/fa-IR/validation.php index 3c5b9bf6fd..a96aa8a828 100644 --- a/resources/lang/fa-IR/validation.php +++ b/resources/lang/fa-IR/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'ویژگی باید تایید شود.', - 'active_url' => 'ویژگی یک URL معتبر نیست.', - 'after' => 'ویژگی باید در تاریخی بعد از تاریخ باشد.', - 'after_or_equal' => 'attribute باید یک تاریخ بعد باشد یا برابر باشد: date.', - 'alpha' => 'ویژگی ممکن است فقط شامل حروف باشد.', - 'alpha_dash' => 'ویژگی ممکن است فقط شامل حروف، اعداد و خط های فاصله باشد.', - 'alpha_num' => 'ویژگی ممکن است فقط شامل حروف و اعداد باشد.', - 'array' => 'attribute باید یک آرایه باشد.', - 'before' => 'ویژگی باید در تاریخی قبل از تاریخ باشد.', - 'before_or_equal' => 'attribute باید تاریخ قبل یا برابر باشد: date.', - 'between' => [ - 'numeric' => 'ویژگی باید بین حداقل حداکثر باشد.', - 'file' => 'ویژگی باید بین حداقل حداکثر کیلوبایت باشد.', - 'string' => 'ویژگی باید بین حداقل حداکثر کاراکتر باشد.', - 'array' => 'خصیصه باید بین: min و: max items باشد.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'فیلد attribute باید درست یا غلط باشد.', - 'confirmed' => 'تایید ویژگی منطبق نیست.', - 'date' => 'تاریخ ویژگی معتبر نیست.', - 'date_format' => 'ویژگی منطبق بر شکل شکل نیست.', - 'different' => 'ویژگی و دیگر باید متفاوت باشد.', - 'digits' => 'ویژگی باید رقم رقم باشد.', - 'digits_between' => 'ویژگی باید بین حداقل و حداکثر رقم باشد.', - 'dimensions' => 'attribute: ابعاد تصویر نامعتبر است.', - 'distinct' => 'فیلد attribute دارای مقدار تکراری است.', - 'email' => 'شکل ویژگی نامعتبر است.', - 'exists' => 'ویژگی انتخاب شده نامعتبر است.', - 'file' => 'attribute باید یک فایل باشد.', - 'filled' => 'فیلد attribute باید مقدار داشته باشد.', - 'image' => 'ویژگی باید یک عکس باشد.', + 'boolean' => 'فیلد attribute باید درست یا غلط باشد.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'فیلد attribute دارای مقدار تکراری است.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'ویژگی انتخاب شده نامعتبر است.', + 'exists' => 'ویژگی انتخاب شده نامعتبر است.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'فیلد attribute باید مقدار داشته باشد.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'ویژگی انتخاب شده نامعتبر است.', - 'in_array' => 'فیلد attribute در هیچ موجودی وجود ندارد: دیگر.', - 'integer' => 'ویژگی باید یک عدد باشد.', - 'ip' => 'ویژگی باید یک آدرس IP معتبر باشد.', - 'ipv4' => 'attribute باید یک آدرس IPv4 معتبر باشد.', - 'ipv6' => 'attribute باید یک آدرس IPv6 معتبر باشد.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'attribute باید یک رشته معتبر JSON باشد.', - 'max' => [ - 'numeric' => 'ویژگی نباید بزرگتر از حداکثر باشد.', - 'file' => 'ویژگی نباید بزرگتر از حداکثر کیلوبایت باشد.', - 'string' => 'ویژگی نباید بزرگتر از حداکثر کاراکتر باشد.', - 'array' => 'ویژگی: ممکن است بیش از موارد حداکثر داشته باشد.', + 'in' => 'ویژگی انتخاب شده نامعتبر است.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'ویژگی باید فایلی از نوع ارزش ها باشد.', - 'mimetypes' => 'attribute باید یک فایل از نوع:: values ​​باشد.', - 'min' => [ - 'numeric' => 'ویژگی باید حداقل: حداقل باشد.', - 'file' => 'ویژگی باید حداقل: حداقل کیلوبایت باشد.', - 'string' => 'ویژگی باید حداقل: حداقل کاراکتر باشد.', - 'array' => 'ویژگی: باید دارای حداقل موارد: min باشد.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'ویژگی : باید با یکی از موارد زیر شروع شود: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'ویژگی انتخاب شده نامعتبر است.', - 'numeric' => 'ویژگی باید عدد باشد.', - 'present' => 'فیلد attribute باید باشد.', - 'valid_regex' => 'این یک سفارش معتبر نیست.', - 'regex' => 'شکل ویژگی نامعتبر است.', - 'required' => 'فیلد ویژگی ضروری است.', - 'required_if' => 'فیلد ویژگی ضروری است، وقتی که دیگری ارزش است.', - 'required_unless' => 'فیلد attribute: مورد نیاز است مگر اینکه: دیگر در: مقادیر باشد.', - 'required_with' => 'فیلد ویژگی ضروری است، وقتی که ارزش موجود باشد.', - 'required_with_all' => 'فیلد attribute: زمانی که: مقادیر وجود دارد.', - 'required_without' => 'فیلد ویژگی ضروری است، وقتی که ارزش ها حاضر نباشند.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'ویژگی انتخاب شده نامعتبر است.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'فیلد attribute باید باشد.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'فیلد ویژگی ضروری است.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'فیلد ویژگی ضروری است، وقتی که دیگری ارزش است.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'فیلد attribute: مورد نیاز است مگر اینکه: دیگر در: مقادیر باشد.', + 'required_with' => 'فیلد ویژگی ضروری است، وقتی که ارزش موجود باشد.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'فیلد ویژگی ضروری است، وقتی که ارزش ها حاضر نباشند.', 'required_without_all' => 'فیلد attribute: وقتی که هیچ یک از: مقادیر وجود ندارد، مورد نیاز است.', - 'same' => 'ویژگی و دیگری باید بر هم منطبق باشند.', - 'size' => [ - 'numeric' => 'ویژگی باید به اندازه ی : سایز باشد.', - 'file' => 'ویژگی باید به اندازه ی: سایز کیلوبایت باشد.', - 'string' => 'ویژگی باید به اندازه ی : سایز کاراکتر باشد.', - 'array' => 'attribute باید شامل موارد زیر باشد:', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'attribute باید یک رشته باشد.', - 'timezone' => ': attribute باید یک منطقه معتبر باشد.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'ویژگی در حال حاضر گرفته شده است.', - 'uploaded' => 'ویژگی: attribute failed to upload.', - 'url' => 'شکل ویژگی نامعتبر است.', 'unique_undeleted' => ': attribute باید منحصر به فرد باشد.', 'non_circular' => 'ویژگی : نباید یک مرجع دایره ای ایجاد کند', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'گذرواژه باید دارای حداقل یک رقم باشد.', 'case_diff' => 'رمز عبور باید از حروف مختلط استفاده کند.', 'symbols' => 'رمز عبور نباید حاوی فضای خالی باشد.', - 'gte' => [ - 'numeric' => 'مقدار نباید منفی باشد.' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'ویژگی در حال حاضر گرفته شده است.', + 'uploaded' => 'ویژگی: attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/fi-FI/account/general.php b/resources/lang/fi-FI/account/general.php index 9236530ad6..dcc5224827 100644 --- a/resources/lang/fi-FI/account/general.php +++ b/resources/lang/fi-FI/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Henkilökohtaiset API-avaimet', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Sinun API base url sijaitsee osoitteessa:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API-tunnisteet vanhenevat:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/fi-FI/admin/accessories/message.php b/resources/lang/fi-FI/admin/accessories/message.php index 78ddb94861..ebf300d81c 100644 --- a/resources/lang/fi-FI/admin/accessories/message.php +++ b/resources/lang/fi-FI/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Oheistarviketta ei luovutettu, yritä uudelleen', 'success' => 'Oheistarvike luovutettiin onnistuneesti.', 'unavailable' => 'Oheistarvike ei ole lainattavissa. Tarkista saatavilla oleva määrä', - 'user_does_not_exist' => 'Käyttäjä on virheellinen. Yritä uudelleen.' + 'user_does_not_exist' => 'Käyttäjä on virheellinen. Yritä uudelleen.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/fi-FI/admin/consumables/general.php b/resources/lang/fi-FI/admin/consumables/general.php index 978e14f08a..5843ad2f17 100644 --- a/resources/lang/fi-FI/admin/consumables/general.php +++ b/resources/lang/fi-FI/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Jäljellä', 'total' => 'Yhteensä', 'update' => 'Päivitä kulutustarvike', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/fi-FI/admin/consumables/message.php b/resources/lang/fi-FI/admin/consumables/message.php index 8b76b02102..63c582cbef 100644 --- a/resources/lang/fi-FI/admin/consumables/message.php +++ b/resources/lang/fi-FI/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Kulutustarviketta ei ole.', 'create' => array( diff --git a/resources/lang/fi-FI/admin/custom_fields/message.php b/resources/lang/fi-FI/admin/custom_fields/message.php index 6ea493cb00..68571dd2ca 100644 --- a/resources/lang/fi-FI/admin/custom_fields/message.php +++ b/resources/lang/fi-FI/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Tätä kenttää ei ole.', 'already_added' => 'Kentässä jo lisätty', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Kenttää ei luotu, yritä uudelleen.', diff --git a/resources/lang/fi-FI/admin/hardware/message.php b/resources/lang/fi-FI/admin/hardware/message.php index 2537aff586..66e8b3324c 100644 --- a/resources/lang/fi-FI/admin/hardware/message.php +++ b/resources/lang/fi-FI/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Varoitus: Tämä laite ei ole käytettävävissä. - Jos laitteen tila on muuttunut, päivitä laitteen tila sen asetuksista.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Laitetta ei löydy.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Joitakin nimikkeitä ei tuotu oikein.', 'errorDetail' => 'Seuraavia nimikkeitä ei tuotu virheiden vuoksi.', 'success' => 'Tiedostosi on tuotu', diff --git a/resources/lang/fi-FI/admin/licenses/general.php b/resources/lang/fi-FI/admin/licenses/general.php index 689e0f86f8..c24f61cf6b 100644 --- a/resources/lang/fi-FI/admin/licenses/general.php +++ b/resources/lang/fi-FI/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Lisenssin lisätiedot', 'license_seats' => 'Lisenssien määrä', 'seat' => 'Määrä', + 'seat_count' => 'Seat :count', 'seats' => 'Määrät', 'software_licenses' => 'Ohjelmistolisenssit', 'user' => 'Käyttäjä', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Palauta kaikki paikat', - 'modal' => 'Tämä toiminto palauttaa yhden paikan. - Tämä toiminto palauttaa :checkedout_seats_count paikkaa tälle lisenssille.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Palauttaa KAIKKI paikat tälle lisenssille sekä käyttäjiltä että laitteilta', 'disabled_tooltip' => 'Tämä ei ole käytössä, koska paikkoja ei ole tällä hetkellä luovutettuina', 'disabled_tooltip_reassignable' => 'Tämä ei ole käytössä, koska lisenssi ei ole uudelleenosoitettavissa', 'success' => 'Lisenssi onnistuneesti palautettu! - Kaikki lisenssit palautettiin onnistuneesti!', - 'log_msg' => 'Palautettu lisenssien massalainauskäyttöliittymän kautta', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/fi-FI/admin/licenses/message.php b/resources/lang/fi-FI/admin/licenses/message.php index e46fbdb0af..6ccbff334c 100644 --- a/resources/lang/fi-FI/admin/licenses/message.php +++ b/resources/lang/fi-FI/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Lisenssin luovutuksessa tapahtui virhe. Yritä uudelleen.', 'success' => 'Lisenssi luovutettiin onnistuneesti', 'not_enough_seats' => 'Lisenssipaikkoja ei ole riittävästi saatavilla kassalle', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/fi-FI/admin/models/message.php b/resources/lang/fi-FI/admin/models/message.php index 6dd87b7213..f4d2f62acf 100644 --- a/resources/lang/fi-FI/admin/models/message.php +++ b/resources/lang/fi-FI/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'VAROITUS! Omaisuusmalli tälle tuotteelle on virheellinen tai puuttuu!', 'no_association_fix' => 'Tämä tulee rikkomaam asioita oudoilla ja kauhistuttavilla tavoilla. Muokkaa tätä laitetta nyt määrittääksesi sille mallin.', 'assoc_users' => 'Tämä malli on käytössä yhdellä tai useammalla laitteella joten sitä ei voida poistaa. Poista malli käytöstä kaikilta laitteilta ja yritä uudelleen. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Mallia ei luotu, yritä uudelleen.', diff --git a/resources/lang/fi-FI/admin/settings/general.php b/resources/lang/fi-FI/admin/settings/general.php index ce54170955..8e3efa7c4d 100644 --- a/resources/lang/fi-FI/admin/settings/general.php +++ b/resources/lang/fi-FI/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Tämä testaa vain LDAP-synkronoinnin toimivuutta. Mikäli LDAP autentikointikysely on virheellinen, käyttäjät eivät voi kirjautua sisään. SINUN TULEE TALLENTAA UUDET ASETUKSET ENSIN.', 'ldap_manager' => 'LDAP Hallinta', 'ldap_server' => 'LDAP Palvelin', - 'ldap_server_help' => 'Tämän pitäisi alkaa ldap: // (salaamaton tai TLS) tai ldaps: // (SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL varmenteen varmennus', 'ldap_server_cert_ignore' => 'Salli virheelliset SSL Varmenteet', 'ldap_server_cert_help' => 'Valitse tämä, jos käytät itse allekirjoitettua SSL-varmennetta ja haluat hyväksyä virheellisen SSL-varmenteen.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Testaa LDAP', 'ldap_test_sync' => 'Testaa Ldap Synkronointi', 'license' => 'Ohjelmistolisenssi', - 'load_remote' => 'Käytä Gravataria', - 'load_remote_help_text' => 'Poista tämä valintaruutu, jos asennuksesi ei voi ladata skriptejä ulkoisesta internetistä. Tämä estää Snipe-IT käyttämästä Gravatarista ladattavia kuvia.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Kirjautumisyritykset', 'login_attempt' => 'Kirjautuminen Yritti', 'login_ip' => 'Ip Osoite', @@ -150,7 +150,7 @@ return [ 'optional' => 'valinnainen', 'per_page' => 'Tuloksia per sivu', 'php' => 'PHP versio', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, järjestelmä, tiedot', 'php_overview_help' => 'PHP järjestelmän tiedot', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/fi-FI/button.php b/resources/lang/fi-FI/button.php index 1d7ed82c05..016372c758 100644 --- a/resources/lang/fi-FI/button.php +++ b/resources/lang/fi-FI/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Palauta Kaikki / Poista Käyttäjä', 'delete' => 'Poista', 'edit' => 'Muokkaa', + 'clone' => 'Clone', 'restore' => 'Palauta', 'remove' => 'Poista', 'request' => 'Pyydä', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Lisää Huolto', 'append' => 'Lisää', 'new' => 'Uusi', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/fi-FI/general.php b/resources/lang/fi-FI/general.php index 8cf889ed15..a4430fc91e 100644 --- a/resources/lang/fi-FI/general.php +++ b/resources/lang/fi-FI/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Lisenssipaikka:count Lisenssi Istuimet', 'consumables' => ':count Kulutustavara :count Kulutustavarat', 'components' => ':count Komponentti :count Komponentit', - ] + ], + 'more_info' => 'Lisätiedot', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'vanhenee', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/fi-FI/mail.php b/resources/lang/fi-FI/mail.php index aedad673f1..cfdbdae04a 100644 --- a/resources/lang/fi-FI/mail.php +++ b/resources/lang/fi-FI/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Olen lukenut ja hyväksynyt käyttöehdot ja olen saanut tämän kohteen.', 'inventory_report' => 'Varaston Raportti', 'item' => 'Nimike:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => ':count lisenssiä vanhenee :threshold päivän sisällä.|:count lisenssiä vanhenee :threshold päivän sisällä.', 'link_to_update_password' => 'Napsauta seuraavaa linkkiä päivittääksesi :web salasanasi:', 'login' => 'Kirjaudu sisään:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Seuraavien :count laitteiden tarkistus on tulossa :threshold päivän aikana .|Seuraavien :count laitteiden tarkistus on tulossa :threshold päivän aikana.', 'user' => 'Käyttäjä', 'username' => 'Käyttäjätunnus', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Tervetuloa :name', 'welcome_to' => 'Tervetuloa :web!', 'your_assets' => 'Omat laitteesi', 'your_credentials' => 'Snipe-IT - kirjautumistietosi', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/fi-FI/validation.php b/resources/lang/fi-FI/validation.php index 488a37c911..f349234a6f 100644 --- a/resources/lang/fi-FI/validation.php +++ b/resources/lang/fi-FI/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute tulee hyväksyä.', - 'active_url' => ':attribute ei ole oikea URL-osoite.', - 'after' => ':attribute tulee olla päivämäärä päivän :date jälkeen.', - 'after_or_equal' => ':attribute on oltava päivän jälkeen tai yhtä suuri kuin: date.', - 'alpha' => ':attribute saa sisältää ainoastaan kirjaimia.', - 'alpha_dash' => ':attribute voi sisältää vain kirjaimia, numeroita ja viivoja.', - 'alpha_num' => ':attribute voi sisältää ainoastaan kirjaimia ja numeroita.', - 'array' => ':attribute on oltava taulukko.', - 'before' => ':attribute tulee olla päivämäärä ennen päivää :date.', - 'before_or_equal' => ':attribute on oltava päivää ennen tai yhtä kuin :date.', - 'between' => [ - 'numeric' => ':attribute tulee olla välillä :min - :max.', - 'file' => ':attribute tulee olla välillä :min - :max kilotavua.', - 'string' => ':attribute tulee olla :min - :max merkkiä.', - 'array' => ':attribute on oltava :min ja :max välillä.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute on oltava tosi tai epätosi.', - 'confirmed' => ':attribute vahvistus ei täsmää.', - 'date' => ':attribute ei ole oikea päivämäärä.', - 'date_format' => ':attribute ei täsmää muotoiluun :format.', - 'different' => ':attribute ja :other tulee olla erilaisia.', - 'digits' => ':attribute tulee olla :digits numeroa pitkä.', - 'digits_between' => ':attribute tulee olla numero väliltä :min ja :max.', - 'dimensions' => ':attribute on virheelliset kuvamitat.', - 'distinct' => ':attribute kentässä on duplikaatti arvo.', - 'email' => ':attribute muotoilu on virheellinen.', - 'exists' => 'Valittu :attribute on virheellinen.', - 'file' => ':attribute on oltava tiedosto.', - 'filled' => ':attribute kentässä on oltava arvo.', - 'image' => ':attribute tulee olla kuva.', + 'boolean' => 'Attribuutti-kentän on oltava tosi tai epätosi.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ':attribute kentässä on duplikaatti arvo.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Valittu :attribute on virheellinen.', + 'exists' => 'Valittu :attribute on virheellinen.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ':attribute kentässä on oltava arvo.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Arvo :fieldname ei voi olla nolla.', - 'in' => 'Valittu :attribute on virheellinen.', - 'in_array' => ':attribute ei ole olemassa : other.', - 'integer' => ':attribute tulee olla kokonaisluku.', - 'ip' => ':attribute tulee olla oikea IP-osoite.', - 'ipv4' => ':attribute on oltava kelvollinen IPv4-osoite.', - 'ipv6' => ':attribute on oltava kelvollinen IPv6-osoite.', - 'is_unique_department' => 'Kentän :attribute tulee olla yksilöllinen tälle yrityksen sijainnille', - 'json' => ':attribute on oltava kelvollinen JSON-merkkijono.', - 'max' => [ - 'numeric' => ':attribute ei saa olla suurempi kuin :max.', - 'file' => ':attribute ei saa olla suurempi kuin :max kilotavua.', - 'string' => ':attribute ei saa olla suurempi kuin :max merkkiä.', - 'array' => ':attribute ei saa olla enempää kuin :max nimikettä.', + 'in' => 'Valittu :attribute on virheellinen.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute tulee olla tiedosto jonka tyyppi on: :values.', - 'mimetypes' => ':attribute on oltava tyyppiä tyyppi: :values.', - 'min' => [ - 'numeric' => ':attribute tulee olla vähintään :min.', - 'file' => ':attribute tulee olla vähintään :min kilotavua.', - 'string' => ':attribute tulee olla vähintään :min merkkiä.', - 'array' => ':attribute on oltava vähintään :min nimikettä.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'Kentän :attribute tulee alkaa jollakin seuraavista: :values.', - 'ends_with' => 'Kentän :attribute arvon tulee päättyä johonkin seuraavista: :values.', - - 'not_in' => 'Valittu :attribute on virheellinen.', - 'numeric' => ':attribute tulee olla numero.', - 'present' => ':attribute kentän on oltava määritettynä.', - 'valid_regex' => 'Tuo ei ole kelvollinen regex. ', - 'regex' => ':attribute muotoilu on virheellinen.', - 'required' => ':attribute on vaadittu.', - 'required_if' => ':attribute on vaadittu kun :other on :value.', - 'required_unless' => ':attribute -kenttä on pakollinen, paitsi jos :other on :values.', - 'required_with' => ':attribute on vaadittu kun :values on määritettynä.', - 'required_with_all' => ':attribute -kenttä tarvitaan, kun :values on määritetty.', - 'required_without' => ':attribute on vaadittu kun :values ei ole määritettynä.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Valittu :attribute on virheellinen.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ':attribute kentän on oltava määritettynä.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute on vaadittu.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute on vaadittu kun :other on :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => ':attribute -kenttä on pakollinen, paitsi jos :other on :values.', + 'required_with' => ':attribute on vaadittu kun :values on määritettynä.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute on vaadittu kun :values ei ole määritettynä.', 'required_without_all' => ':attribute -kenttä on pakollinen, kun mitään :values ei ole määritetty.', - 'same' => ':attribute ja :other tulee olla samat.', - 'size' => [ - 'numeric' => ':attribute tulee olla :size.', - 'file' => ':attribute tulee olla :size kilotavua.', - 'string' => ':attribute tulee olla :size merkkiä.', - 'array' => ':attribute -kentän pitää sisältää :size nimikettä.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute on oltava merkkijono.', - 'timezone' => ':attribute tulee olla kelvollinen verkkoalue.', 'two_column_unique_undeleted' => 'Kentän :attribute arvon on oltava yksilöllinen :table1 ja :table2. ', - 'unique' => ':attribute on jo käytössä.', - 'uploaded' => ':attribute -kenttää ei onnistuttu lähettämään.', - 'url' => ':attribute muotoilu on virheellinen.', 'unique_undeleted' => ':attribute on oltava ainutlaatuinen.', 'non_circular' => ':attribute ei saa luoda kehäviittausta.', 'not_array' => ':attribute ei voi olla taulukko.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Salasanan tulee sisältää vähintään yksi numero.', 'case_diff' => 'Salasanassa on käytettävä sekamuotoista kirjainta.', 'symbols' => 'Salasanan tulee sisältää symboleja.', - 'gte' => [ - 'numeric' => 'Arvo ei voi olla negatiivinen' - ], - 'checkboxes' => ':attribute sisältää virheellisiä vaihtoehtoja.', - 'radio_buttons' => ':attribute on virheellinen.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute on jo käytössä.', + 'uploaded' => ':attribute -kenttää ei onnistuttu lähettämään.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'Attribuutin on oltava kelvollinen päivämäärä muodossa VVVV-KK-PP', 'last_audit_date.date_format' => 'Kentän :attribute arvon on oltava kelvollinen päivämäärä muodossa VVVV-KK-PP hh:mm:ss', 'expiration_date.date_format' => 'Attribuutin on oltava kelvollinen päivämäärä muodossa VVVV-KK-PP', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'Attribuutin on oltava kelvollinen päivämäärä muodossa VVVV-KK-PP', 'start_date.date_format' => 'Attribuutin on oltava kelvollinen päivämäärä muodossa VVVV-KK-PP', 'end_date.date_format' => 'Attribuutin on oltava kelvollinen päivämäärä muodossa VVVV-KK-PP', - - ], - + 'checkboxes' => ':attribute sisältää virheellisiä vaihtoehtoja.', + 'radio_buttons' => ':attribute on virheellinen.', + 'invalid_value_in_field' => 'Virheellinen arvo sisältyy tähän kenttään', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Virheellinen arvo sisältyy tähän kenttään', + + 'generic' => [ + 'invalid_value_in_field' => 'Virheellinen arvo sisältyy tähän kenttään', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/fil-PH/account/general.php b/resources/lang/fil-PH/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/fil-PH/account/general.php +++ b/resources/lang/fil-PH/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/fil-PH/admin/accessories/message.php b/resources/lang/fil-PH/admin/accessories/message.php index 57b18b23bf..3c32eff5c3 100644 --- a/resources/lang/fil-PH/admin/accessories/message.php +++ b/resources/lang/fil-PH/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Ang aksesorya ay hindi na-check out, mangyaring subukang muli', 'success' => 'Ang aksesorya ay matagumoay na nai-check out.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Ang user na iyon ay hindi tama. Mangyaring subukang muli.' + 'user_does_not_exist' => 'Ang user na iyon ay hindi tama. Mangyaring subukang muli.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/fil-PH/admin/consumables/general.php b/resources/lang/fil-PH/admin/consumables/general.php index 4686f8888b..11b0c132d1 100644 --- a/resources/lang/fil-PH/admin/consumables/general.php +++ b/resources/lang/fil-PH/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Ang natitira', 'total' => 'Ang Kabuuan', 'update' => 'I-update ang Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/fil-PH/admin/consumables/message.php b/resources/lang/fil-PH/admin/consumables/message.php index 21c2ff52ef..3976de9859 100644 --- a/resources/lang/fil-PH/admin/consumables/message.php +++ b/resources/lang/fil-PH/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Ang consumable ay hindi umiiral.', 'create' => array( diff --git a/resources/lang/fil-PH/admin/custom_fields/message.php b/resources/lang/fil-PH/admin/custom_fields/message.php index 4acd606a5d..2db0721412 100644 --- a/resources/lang/fil-PH/admin/custom_fields/message.php +++ b/resources/lang/fil-PH/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Ang field ay hindi umiiral.', 'already_added' => 'Ang field ay naidagdag na', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Ang field ay hindi naisagawa, mangyaring subukang muli.', diff --git a/resources/lang/fil-PH/admin/hardware/message.php b/resources/lang/fil-PH/admin/hardware/message.php index 22a5b42b8b..59bd552bb9 100644 --- a/resources/lang/fil-PH/admin/hardware/message.php +++ b/resources/lang/fil-PH/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Babala: Ang asset na ito ay kasalukuyang namarkahan bilang hindi pwedeng mai-deploy.. - Kung nabago na ang katayuang ito, paki-update ng katayuan ng asset.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Hindi umiiral ang asset.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Ang iilang mga aytem ay hindi nai-import ng tama.', 'errorDetail' => 'Ang mga sumusunod na mga Aytem ay hindi na-import dahil sa mga error.', 'success' => 'Ang iyong file ay na-import na', diff --git a/resources/lang/fil-PH/admin/licenses/general.php b/resources/lang/fil-PH/admin/licenses/general.php index 8c50674d10..887764ca6e 100644 --- a/resources/lang/fil-PH/admin/licenses/general.php +++ b/resources/lang/fil-PH/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Ang Impormasyon sa Lisensya', 'license_seats' => 'Ang Lisensya ng mga Seat', 'seat' => 'Ang Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Ang mga seat', 'software_licenses' => 'Ang mga Lisenysa ng Software', 'user' => 'Ang gumagamit', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/fil-PH/admin/licenses/message.php b/resources/lang/fil-PH/admin/licenses/message.php index 4108519494..f437c137ca 100644 --- a/resources/lang/fil-PH/admin/licenses/message.php +++ b/resources/lang/fil-PH/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Mayroong isyu sa pag-check out ng lisensya. Mangyaring subukang muli.', 'success' => 'Matagumpay na nai-check out ang lisensya', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/fil-PH/admin/models/message.php b/resources/lang/fil-PH/admin/models/message.php index 29c6304fc1..46923c476d 100644 --- a/resources/lang/fil-PH/admin/models/message.php +++ b/resources/lang/fil-PH/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Ang modelong ito ay kasalukuyang nai-ugnay sa isa o higit pang mga asset at hindi maaaring mai-delete. Paki-delete ng mga model na ito, at pagkatapos subukang i-delete muli. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Ang modelo ay hindi naisagawa, mangyaring subukang muli.', diff --git a/resources/lang/fil-PH/admin/settings/general.php b/resources/lang/fil-PH/admin/settings/general.php index 7d024f3f72..649a9803c9 100644 --- a/resources/lang/fil-PH/admin/settings/general.php +++ b/resources/lang/fil-PH/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ito ay susubok lamang sa LDAP na mag-sync nang maayos. Kapag ang iyong LDAP Authentication query ay hindi tama, ang mga gumagamit ay hindi parin makapag-login. DAPAT MO MUNANG I-SAVE ANG IYONG UPDATED NA MGA SETTING NG LDAP.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'Ang Serber ng LDAP', - 'ldap_server_help' => 'Ito ay dapat na magsimula sa ldap:// (para sa hindi naka-encrypt or TLS) o ldaps:// (para sa SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Ang pagpapatibay sa sertipikasyon ng LDAP SSL', 'ldap_server_cert_ignore' => 'Payagan ang hindi balidong Sertipiko ng SSL', 'ldap_server_cert_help' => 'Piliin ang checkbox na ito kapag ikay ay gumagamit ng self signed na SSL cert at gutong tumanggap ng hindi balidong sertipiko ng SSL.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Ang Lisensya ng Software', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'opsyonal', 'per_page' => 'Ang mga Resulta Bawat Pahina', 'php' => 'Ang Bersyon ng PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/fil-PH/button.php b/resources/lang/fil-PH/button.php index 645261a740..d780f6b151 100644 --- a/resources/lang/fil-PH/button.php +++ b/resources/lang/fil-PH/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'I-delete', 'edit' => 'I-edit', + 'clone' => 'Clone', 'restore' => 'Ibalik sa dati', 'remove' => 'Remove', 'request' => 'Mga Rekwest', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Bago', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/fil-PH/general.php b/resources/lang/fil-PH/general.php index 3804fe3847..bdc2426c1f 100644 --- a/resources/lang/fil-PH/general.php +++ b/resources/lang/fil-PH/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Karagdagang Impormasyon', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Mawalan ng Bisa', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/fil-PH/mail.php b/resources/lang/fil-PH/mail.php index c192c9c3a0..b37c492d3a 100644 --- a/resources/lang/fil-PH/mail.php +++ b/resources/lang/fil-PH/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ako ay nakabasa ay sumasang-ayon sa mga tuntunin ng paggamit, at ang aytem na ito ay aking tinatanggap.', 'inventory_report' => 'Inventory Report', 'item' => 'Aytem:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Paki-klik sa mga sumusunod na link para makapag-update sa iyong :web password:', 'login' => 'Mag-login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Ang gumagamit', 'username' => 'Ang pangalan ng gumagamit', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Maligayang pagdating :ang pangalan', 'welcome_to' => 'Maligayang pagdating sa: web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Ang iyong mga Kredensyal sa Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/fil-PH/validation.php b/resources/lang/fil-PH/validation.php index a47cb26d6f..c437b67ad6 100644 --- a/resources/lang/fil-PH/validation.php +++ b/resources/lang/fil-PH/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Ang: katangian na kailangan tanggapin.', - 'active_url' => 'Ang: katangian ay hindi isang balidong URL.', - 'after' => 'Ang :katangian ay dapat na gawin ang petsa pagkatapos ng :petsa.', - 'after_or_equal' => 'Ang :katangian ay dapat na gawin ang petsa pagkatapos ng o katumbas sa:petsa.', - 'alpha' => 'Ang :katangian ay maaaring naglalaman lang ng mga letra.', - 'alpha_dash' => 'Ang :katangian ay maaaring naglalaman lamang ng mga letra, mga numero, at mga dashes.', - 'alpha_num' => 'Ang :katangian ay maaaring naglalaman lamang ng mga letra at mga numero.', - 'array' => 'Ang :katangian ay dapat isang hanay.', - 'before' => 'Ang :katangian ay dapat na gawing petsa bago ang :petsa.', - 'before_or_equal' => 'Ang :katangian ay dapat na gawin ang petsa pagkatapos ng o katumbas sa:petsa.', - 'between' => [ - 'numeric' => 'Ang: katangian dapat na nasa pagitan ng: min -: max.', - 'file' => 'Ang: katangian dapat nasa pagitan ng: min -: max na kilobytes.', - 'string' => 'Ang: katangiang dapat na nasa pagitan ng: min -: ni max na mga karakter.', - 'array' => 'Ang :katangian na dapat magkaroon ng pagitan sa :min and :max na mga aytem.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Ang :katangian na dapat maging tama o mali.', - 'confirmed' => 'Ang :kompermasyong sa katangian ay hindi nagtugma.', - 'date' => 'Ang :hindi balidong petsa ng katangian.', - 'date_format' => 'Ang :hindi nagtugma sa katangian nag pormat:pormat.', - 'different' => 'Ang :katangian at ang :iba pa dapat na hindi magkapareho.', - 'digits' => 'Ang :katangian ay dapat na :mga digit digit.', - 'digits_between' => 'Ang :katangian ay dapat nasa pagitan ng :min at :max na mga digit.', - 'dimensions' => 'Ang :katangian ay mayroong hindi balidong dimensyon ng mga imahe.', - 'distinct' => 'Ang :field na katangian ay mayroong dobleng balyu.', - 'email' => 'Ang :pormat ng katangian ay hindi balido o wasto.', - 'exists' => 'Ang napili na :katangian ay hindi balido.', - 'file' => 'Ang :katangian ay dapat na isang file.', - 'filled' => 'Ang :field na katangian ay dapat na mayroong balyu.', - 'image' => 'Ang :katangian at dapat na isang imahe.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Ang :field na katangian ay mayroong dobleng balyu.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Ang napili na :katangian ay hindi balido.', + 'exists' => 'Ang napili na :katangian ay hindi balido.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Ang :field na katangian ay dapat na mayroong balyu.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Ang napili na :katangian ay hindi balido.', - 'in_array' => 'Ang :field na katangian ay hindi umiiral sa :iba pa.', - 'integer' => 'Ang :katangian ay dapat ns isang integer.', - 'ip' => 'Ang :katangian ay dapat na isang balidong mga IP address.', - 'ipv4' => 'Ang :katangian ay dapat na isang balidong IPv4 address.', - 'ipv6' => 'Ang :katangian ay dapat na isang balidong IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Ang :katangian ay dapa na isang balidong JSON na string.', - 'max' => [ - 'numeric' => 'Ang :katangian ay maaaring hindi lalagpas sa :max.', - 'file' => 'Ang :katangian ay maaaring hindi lalagpas sa :max na kilobytes.', - 'string' => 'Ang :katangian ay maaaring hindi lalagpas sa :max na mga karakter.', - 'array' => 'Ang :katangian ay maaaring hindi magkaroon ng higit sa :max na mga aytem.', + 'in' => 'Ang napili na :katangian ay hindi balido.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Ang :katangian ay dapat na isang uri ng file :mga balyu.', - 'mimetypes' => 'Ang :katangian ay dapat na isang uri ng file :mga balyu.', - 'min' => [ - 'numeric' => 'Ang :katangian ay dapat na hindi bumaba sa :min.', - 'file' => 'Ang :katangian ay dapat na hindi bumaba sa :min na kilobytes.', - 'string' => 'Ang :katangian ay dapat na hindi bumaba sa :min na mga karakter.', - 'array' => 'Ang :katangian ay dapat na magkaroon ng hindi bumaba sa :min na mga aytem.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Ang napili na :katangian ay hindi balido.', - 'numeric' => 'Ang :katangian ay dapat na isang numero.', - 'present' => 'Ang :field ng katangian ay dapat na naroroon.', - 'valid_regex' => 'Hindi ito balidong regex. ', - 'regex' => 'Ang :promat ng katangian ay hindi balido.', - 'required' => 'Ang :field ng katangian ay kinakailangan.', - 'required_if' => 'Ang :field ng katangian ay kinakailangan kapag :ang iba ay :balyu.', - 'required_unless' => 'Ang :field ng katangian ay kinakailangan maliban kung :ang iba ay nasa :mga balyu.', - 'required_with' => 'Ang :field.ng katangian ay kinakailangan kapag :ang mga balyu ay naroroon.', - 'required_with_all' => 'Ang :field ng katangian ay kinakailangan kapag :ang mga balyu ay naroroon.', - 'required_without' => 'Ang :field ng katangian ay kinakailangan kapag :ang mga balyu ay naroroon.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Ang napili na :katangian ay hindi balido.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Ang :field ng katangian ay dapat na naroroon.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Ang :field ng katangian ay kinakailangan.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Ang :field ng katangian ay kinakailangan kapag :ang iba ay :balyu.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Ang :field ng katangian ay kinakailangan maliban kung :ang iba ay nasa :mga balyu.', + 'required_with' => 'Ang :field.ng katangian ay kinakailangan kapag :ang mga balyu ay naroroon.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Ang :field ng katangian ay kinakailangan kapag :ang mga balyu ay naroroon.', 'required_without_all' => 'Ang :field ng katangian ay kinakailangan kapag wala sa :mga balyu ay naroroon.', - 'same' => 'Ang :katangian at :ang iba ay dapat magkatugma.', - 'size' => [ - 'numeric' => 'Ang :katangian ay dapat na :sukat.', - 'file' => 'Ang :katangian ay dapat na :sukat na kilobytes.', - 'string' => 'Ang :katangian ay dapat na maging :sukat ng mga karakter.', - 'array' => 'Ang :katangian ay dapat na magkaroon ng :sukat ng mga aytem.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Ang :katangian ay dapat na isang string.', - 'timezone' => 'Ang :katangian ay dapat na isang balidong zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Ang :katangian ay nakuha na.', - 'uploaded' => 'Ang :katangian ay hindi nagtagumpay sa pag-upload.', - 'url' => 'Ang :pormat ng katangian ng pormat ay hindi balido.', 'unique_undeleted' => 'Ang :katangian ay dapat na natatangi.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Ang :katangian ay nakuha na.', + 'uploaded' => 'Ang :katangian ay hindi nagtagumpay sa pag-upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/fr-FR/account/general.php b/resources/lang/fr-FR/account/general.php index 743839afd5..d69e94b6b4 100644 --- a/resources/lang/fr-FR/account/general.php +++ b/resources/lang/fr-FR/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Clés personnelles d\'API', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', + 'api_key_warning' => 'Lorsque vous générez un jeton d\'API, veillez à le copier immédiatement, car vous ne pourrez plus le voir à nouveau.', 'api_base_url' => 'L\'URL de base de l\'API est situé à:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Les jetons d\'API sont configurés pour expirer après:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', - 'profile_updated' => 'Account successfully updated', + 'api_reference' => 'Veuillez consulter la documentation de référence des API pour trouver des endpoints spécifiques et de la documentation d\'API supplémentaires.', + 'profile_updated' => 'Compte mis à jour avec succès', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/fr-FR/admin/accessories/message.php b/resources/lang/fr-FR/admin/accessories/message.php index 3b9f7cc458..be5f1a294f 100644 --- a/resources/lang/fr-FR/admin/accessories/message.php +++ b/resources/lang/fr-FR/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Cet accessoire n\'est pas attribué. Veuillez réessayer', 'success' => 'Accessoire attribué correctement.', 'unavailable' => 'L\'accessoire n\'est pas disponible à l\'affectation. Vérifiez la quantité disponible', - 'user_does_not_exist' => 'Cet utilisateur est inexistant. Veuillez réessayer.' + 'user_does_not_exist' => 'Cet utilisateur est inexistant. Veuillez réessayer.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/fr-FR/admin/consumables/general.php b/resources/lang/fr-FR/admin/consumables/general.php index a088799a9e..e96d8dbf14 100644 --- a/resources/lang/fr-FR/admin/consumables/general.php +++ b/resources/lang/fr-FR/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Restant', 'total' => 'Total', 'update' => 'Mettre à jour le consommable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/fr-FR/admin/consumables/message.php b/resources/lang/fr-FR/admin/consumables/message.php index 2de8d5df22..a13504d47d 100644 --- a/resources/lang/fr-FR/admin/consumables/message.php +++ b/resources/lang/fr-FR/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Ce consommable n\'existe pas.', 'create' => array( diff --git a/resources/lang/fr-FR/admin/custom_fields/message.php b/resources/lang/fr-FR/admin/custom_fields/message.php index ca79c9033c..ea724a4878 100644 --- a/resources/lang/fr-FR/admin/custom_fields/message.php +++ b/resources/lang/fr-FR/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Ce champ n\'existe pas.', 'already_added' => 'Le champ a déjà été ajouté', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Le champ n\'a pas été créé, veuillez réessayer.', diff --git a/resources/lang/fr-FR/admin/hardware/form.php b/resources/lang/fr-FR/admin/hardware/form.php index 2217ebd670..60ace4346e 100644 --- a/resources/lang/fr-FR/admin/hardware/form.php +++ b/resources/lang/fr-FR/admin/hardware/form.php @@ -39,8 +39,8 @@ return [ 'order' => 'Numéro de Commande', 'qr' => 'Code QR', 'requestable' => 'Les utilisateurs·trices peuvent demander cet actif', - 'redirect_to_all' => 'Return to all :type', - 'redirect_to_type' => 'Go to :type', + 'redirect_to_all' => 'Retourner à tous les :type', + 'redirect_to_type' => 'Aller à :type', 'redirect_to_checked_out_to' => 'Go to Checked Out to', 'select_statustype' => 'Choisissez le type de statut', 'serial' => 'Série ', diff --git a/resources/lang/fr-FR/admin/hardware/general.php b/resources/lang/fr-FR/admin/hardware/general.php index b5050b4ddb..4520fd06f6 100644 --- a/resources/lang/fr-FR/admin/hardware/general.php +++ b/resources/lang/fr-FR/admin/hardware/general.php @@ -15,8 +15,8 @@ return [ 'delete_confirm' => 'Êtes-vous sûr·e de vouloir supprimer cet actif ?', 'edit' => 'Editer le Bien', 'model_deleted' => 'Ce modèle d\'actifs a été supprimé. Vous devez restaurer le modèle avant de pouvoir restaurer l\'actif.', - 'model_invalid' => 'This model for this asset is invalid.', - 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', + 'model_invalid' => 'Le modèle de cet actif n\'est pas valide.', + 'model_invalid_fix' => 'L\'actif doit être mis à jour et utiliser un modèle de bien valide avant de tenter de l\'enregistrer, de le sortir ou de l\'auditer.', 'requestable' => 'Demandable', 'requested' => 'Demandé', 'not_requestable' => 'Non demandable', @@ -32,8 +32,8 @@ return [ 'csv_import_match_f-l' => 'Essaie de faire correspondre les utilisateurs au format firstname.lastname (jane.smith)', 'csv_import_match_initial_last' => 'Essayez de faire correspondre les utilisateurs au format premier nom de famille (jsmith)', 'csv_import_match_first' => 'Essayez de faire correspondre les utilisateurs au format prénom (jane)', - 'csv_import_match_email' => 'Try to match users by email as username', - 'csv_import_match_username' => 'Try to match users by username', + 'csv_import_match_email' => 'Essayer de faire correspondre les utilisateurs par email comme nom d\'utilisateur', + 'csv_import_match_username' => 'Essayer de faire correspondre les utilisateurs par username', 'error_messages' => 'Messages d\'erreur:', 'success_messages' => 'Messages de succès:', 'alert_details' => 'Voir ci-dessous pour plus de détails.', diff --git a/resources/lang/fr-FR/admin/hardware/message.php b/resources/lang/fr-FR/admin/hardware/message.php index 3a80ff6293..5df8d26271 100644 --- a/resources/lang/fr-FR/admin/hardware/message.php +++ b/resources/lang/fr-FR/admin/hardware/message.php @@ -2,14 +2,13 @@ return [ - 'undeployable' => 'Attention: Ce bien a été marqué non déployable. - Si ce statut a changé, veuillez l\'actualiser.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Ce bien n\'existe pas.', - 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', - 'no_tag' => 'No asset tag provided.', + 'does_not_exist_var'=> 'Actif avec le tag :asset_tag introuvable.', + 'no_tag' => 'Aucune étiquette d\'actif fournie.', 'does_not_exist_or_not_requestable' => 'Cet actif n\'existe pas ou ne peut pas être demandé.', 'assoc_users' => 'Ce bien est marqué sorti par un utilisateur et ne peut être supprimé. Veuillez d\'abord cliquer sur Retour de Biens, et réessayer.', - 'warning_audit_date_mismatch' => 'This asset\'s next audit date (:next_audit_date) is before the last audit date (:last_audit_date). Please update the next audit date.', + 'warning_audit_date_mismatch' => 'La prochaine date d\'audit de cet actif (:next_audit_date) est antérieure à la dernière date d\'audit (:last_audit_date). Veuillez mettre à jour la prochaine date d\'audit.', 'create' => [ 'error' => 'Ce bien n\'a pas été créé, veuillez réessayer. :(', @@ -34,7 +33,7 @@ return [ ], 'audit' => [ - 'error' => 'Asset audit unsuccessful: :error ', + 'error' => 'Échec de l\'audit d\'actif : :error ', 'success' => 'Audit des actifs consigné avec succès.', ], @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Certains éléments n\'ont pas été correctement importés.', 'errorDetail' => 'Les éléments suivants n\'ont pas été importés à cause d\'erreurs.', 'success' => 'Votre fichier a bien été importé', diff --git a/resources/lang/fr-FR/admin/licenses/general.php b/resources/lang/fr-FR/admin/licenses/general.php index 485c059a65..d73c7fc4c0 100644 --- a/resources/lang/fr-FR/admin/licenses/general.php +++ b/resources/lang/fr-FR/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informations de licence', 'license_seats' => 'Licence multipostes', 'seat' => 'Poste', + 'seat_count' => 'Seat :count', 'seats' => 'Postes', 'software_licenses' => 'Licences de logiciel', 'user' => 'Utilisateur', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Désattribuer tous les sièges', - 'modal' => 'Cette action désassociera un siège. | Cette action désassociera :checkedout_seats_count sièges pour cette licence.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Désassocier TOUS les sièges de cette licence, à la fois des utilisateurs·trices et des actifs', 'disabled_tooltip' => 'Ceci est désactivé car il n\'y a pas de siège actuellement associé', 'disabled_tooltip_reassignable' => 'Ceci est désactivé car la licence n\'est pas réassignable', 'success' => 'Licence désassociée avec succès ! | Toutes les licences ont été désassociées avec succès !', - 'log_msg' => 'Désassociée via l\'outil de gestion des licences en volume', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/fr-FR/admin/licenses/message.php b/resources/lang/fr-FR/admin/licenses/message.php index 135dcdfaf1..90679e4b7c 100644 --- a/resources/lang/fr-FR/admin/licenses/message.php +++ b/resources/lang/fr-FR/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Un problème a eu lieu pendant l\'association de la licence. Veuillez essayer à nouveau.', 'success' => 'La licence a été associée avec succès', 'not_enough_seats' => 'Pas assez de sièges de licence disponibles pour le paiement', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/fr-FR/admin/locations/message.php b/resources/lang/fr-FR/admin/locations/message.php index a7d671c94b..d4dbfeea54 100644 --- a/resources/lang/fr-FR/admin/locations/message.php +++ b/resources/lang/fr-FR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Le lieu n\'existe pas.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Cet emplacement n\'est pas actuellement supprimable car il s\'agit de l\'emplacement de l\'enregistrement pour au moins un actif ou un utilisateur, a des actifs qui lui sont assignés, ou est l\'emplacement parent d\'un autre emplacement. Veuillez mettre à jour vos modèles pour ne plus référencer cette entreprise et réessayez. ', 'assoc_assets' => 'Cet emplacement est actuellement associé à au moins un actif et ne peut pas être supprimé. Veuillez mettre à jour vos actifs pour ne plus faire référence à cet emplacement et réessayez. ', 'assoc_child_loc' => 'Cet emplacement est actuellement le parent d\'au moins un sous emplacement et ne peut pas être supprimé . S\'il vous plaît mettre à jour vos emplacement pour ne plus le référencer et réessayez. ', 'assigned_assets' => 'Actifs assignés', diff --git a/resources/lang/fr-FR/admin/models/message.php b/resources/lang/fr-FR/admin/models/message.php index daceabf8f9..fded8a8e6a 100644 --- a/resources/lang/fr-FR/admin/models/message.php +++ b/resources/lang/fr-FR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ATTENTION ! Le modèle d\'actif pour cet objet est invalide ou manquant !', 'no_association_fix' => 'Cela va casser les choses de manière bizarre et horrible. Modifiez cette ressource maintenant pour lui assigner un modèle.', 'assoc_users' => 'Ce modèle est actuellement associé à au moins un actif et ne peut pas être supprimé. Veuillez supprimer les actifs associés et essayer à nouveau. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Le modèle n\'a pas été créé, veuillez essayer à nouveau.', diff --git a/resources/lang/fr-FR/admin/settings/general.php b/resources/lang/fr-FR/admin/settings/general.php index 2a04d7b6d4..e35cf9fe4f 100644 --- a/resources/lang/fr-FR/admin/settings/general.php +++ b/resources/lang/fr-FR/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ceci vérifie uniquement que LDAP se synchronise correctement. Si votre requête d\'authentification LDAP est incorrecte, les utilisateurs peuvent ne pas pouvoir se connecter. VOUS DEVEZ D\'ABORD ENREGISTRER VOS PARAMÈTRES LDAP MIS À JOUR.', 'ldap_manager' => 'Gestionnaire LDAP', 'ldap_server' => 'Serveur LDAP', - 'ldap_server_help' => 'Ca devrait commencer par ldap:// (non crypté ou TLS) ou ldaps:// (SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validation du certificat SSL LDAP', 'ldap_server_cert_ignore' => 'Autorise un certificat SSL invalide', 'ldap_server_cert_help' => 'Sélectionnez cette case à cocher si vous utilisez un certificat SSL auto-signé et voudriez accepter un certificat SSL invalide.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Tester LDAP', 'ldap_test_sync' => 'Tester la synchronisation LDAP', 'license' => 'Licence de logiciel', - 'load_remote' => 'Utiliser Gravatar', - 'load_remote_help_text' => 'Décochez cette case si votre installation ne peut pas charger des scripts de l\'extérieur. Cela empêchera Snipe-IT d\'essayer de charger des images depuis Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Tentatives de connexion', 'login_attempt' => 'Tentative de connexion', 'login_ip' => 'Adresse IP', @@ -294,7 +294,7 @@ return [ 'oauth_secret' => 'Secret', 'oauth_authorized_apps' => 'Authorized Applications', 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', + 'oauth_name_help' => ' Quelque chose que vos utilisateurs reconnaîtront et en quoi ils auront confiance.', 'oauth_scopes' => 'Scopes', 'oauth_callback_url' => 'Your application authorization callback URL.', 'create_client' => 'Create Client', @@ -373,7 +373,11 @@ return [ 'database_driver' => 'Pilote de base de données', 'bs_table_storage' => 'Stockage de la table', 'timezone' => 'Fuseau horaire', - 'profile_edit' => 'Edit Profile', - 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'profile_edit' => 'Modifier le profil', + 'profile_edit_help' => 'Permettre aux utilisateurs de modifier leur propre profil.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/fr-FR/admin/users/message.php b/resources/lang/fr-FR/admin/users/message.php index 5bb58a8a61..1045c4d2e7 100644 --- a/resources/lang/fr-FR/admin/users/message.php +++ b/resources/lang/fr-FR/admin/users/message.php @@ -37,16 +37,16 @@ return array( 'update' => 'Un problème a eu lieu pendant la mise à jour de l\'utilisateur. Veuillez essayer à nouveau.', 'delete' => 'Un problème a eu lieu pendant la suppression de l\'utilisateur. Veuillez essayer à nouveau.', 'delete_has_assets' => 'Cet utilisateur a des éléments assignés et n\'a pas pu être supprimé.', - 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', - 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', - 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', - 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', - 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', + 'delete_has_assets_var' => 'Cet utilisateur a encore un actif attribué. Cet utilisateur a encore :count actifs assignés. Veuillez vérifier ses actifs en premier.', + 'delete_has_licenses_var' => 'Cet utilisateur a encore des sièges de licence attribués. Cet utilisateur a encore des sièges de licence :count attribués. Veuillez d\'abord les vérifier.', + 'delete_has_accessories_var' => 'Cet utilisateur a encore un accessoire attribué. Cet utilisateur a encore :count accessoires assignés. Veuillez vérifier leurs actifs en premier.', + 'delete_has_locations_var' => 'Cet utilisateur gère toujours un emplacement. Veuillez d\'abord sélectionner un autre gestionnaire.|Cet utilisateur gère toujours :count emplacements. Veuillez d\'abord sélectionner un autre gestionnaire.', + 'delete_has_users_var' => 'Cet utilisateur gère toujours un autre utilisateur. Veuillez d\'abord sélectionner un autre gestionnaire pour cet utilisateur. Cet utilisateur gère toujours :count utilisateurs. Veuillez d\'abord sélectionner un autre gestionnaire.', 'unsuspend' => 'Un problème a eu lieu pendant la réhabilitation de l\'utilisateur. Veuillez essayer à nouveau.', 'import' => 'Il y a eu un problème lors de l\'importation des utilisateurs. Veuillez réessayer.', 'asset_already_accepted' => 'Cet actif a déjà été accepté.', 'accept_or_decline' => 'Vous devez accepter ou refuser cet actif.', - 'cannot_delete_yourself' => 'We would feel really bad if you deleted yourself, please reconsider.', + 'cannot_delete_yourself' => 'Nous nous sentirions vraiment mal si vous vous supprimiez vous-même, s\'il vous plaît reconsidérer.', 'incorrect_user_accepted' => 'Le bien que vous avez tenté d\'accepter ne vous avait pas été attribué.', 'ldap_could_not_connect' => 'Impossible de se connecter au serveur LDAP . S\'il vous plaît vérifier la configuration de votre serveur LDAP dans le fichier de configuration LDAP .
Erreur du serveur LDAP :', 'ldap_could_not_bind' => 'Impossible de se connecter au serveur LDAP . S\'il vous plaît vérifier la configuration de votre serveur LDAP dans le fichier de configuration LDAP .
Erreur de serveur LDAP : ', diff --git a/resources/lang/fr-FR/auth/message.php b/resources/lang/fr-FR/auth/message.php index 3a80008497..6ae56691fb 100644 --- a/resources/lang/fr-FR/auth/message.php +++ b/resources/lang/fr-FR/auth/message.php @@ -14,8 +14,8 @@ return array( 'success' => 'Vous êtes bien connecté.', 'code_required' => 'Le code à deux facteurs est requis.', 'invalid_code' => 'Le code à deux facteurs est invalide.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', - 'please_enroll' => 'Please enroll a device in two-factor authentication.', + 'enter_two_factor_code' => 'Veuillez saisir votre code d\'authentification à deux facteurs.', + 'please_enroll' => 'Veuillez inscrire un appareil dans l\'authentification à deux facteurs.', ), 'signin' => array( diff --git a/resources/lang/fr-FR/button.php b/resources/lang/fr-FR/button.php index eff38f20de..06e9a36e38 100644 --- a/resources/lang/fr-FR/button.php +++ b/resources/lang/fr-FR/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Tout dissocier / Supprimer l\'utilisateur', 'delete' => 'Supprimer', 'edit' => 'Éditer', + 'clone' => 'Clone', 'restore' => 'Restaurer', 'remove' => 'Supprimer', 'request' => 'Demander', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Ajouter une maintenance', 'append' => 'Ajouter', 'new' => 'Nouveau', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/fr-FR/general.php b/resources/lang/fr-FR/general.php index 51142c8e4f..e431878a37 100644 --- a/resources/lang/fr-FR/general.php +++ b/resources/lang/fr-FR/general.php @@ -11,9 +11,9 @@ return [ 'activity_report' => 'Rapport d\'activité', 'address' => 'Adresse', 'admin' => 'Admin', - 'admin_tooltip' => 'This user has admin privileges', - 'superuser' => 'Superuser', - 'superuser_tooltip' => 'This user has superuser privileges', + 'admin_tooltip' => 'Cet utilisateur a des privilèges d\'administrateur', + 'superuser' => 'Super-utilisateur', + 'superuser_tooltip' => 'Cet utilisateur a des privilèges de super-utilisateur', 'administrator' => 'Administrateur·trice', 'add_seats' => 'Places ajoutées', 'age' => "Âge", @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Nom de famille et première lettre du prénom (smith_j@example.com)', 'firstinitial.lastname' => 'Première lettre du prénom et nom de famille (j.smith@example.com)', 'firstnamelastinitial' => 'Prénom (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Nom Prénom (smith.jane@example.com)', 'first_name' => 'Prénom', 'first_name_format' => 'Prénom (jane@example.com)', 'files' => 'Fichiers', @@ -158,7 +158,7 @@ return [ 'image_upload' => 'Charger une image', 'filetypes_accepted_help' => 'Le type de fichier accepté est :types. La taille maximale autorisée est :size.|Les types de fichiers acceptés sont :types. La taille maximale autorisée est :size.', 'filetypes_size_help' => 'La taille maximale autorisée des téléversements est :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Les types de fichiers acceptés sont jpg, webp, png, gif, svg et avif. La taille maximale de téléchargement autorisée est :size.', 'unaccepted_image_type' => 'Ce fichier image n\'est pas lisible. Les types de fichiers acceptés sont jpg, webp, png, gif et svg. Le type mimetype de ce fichier est : :mimetype.', 'import' => 'Importer', 'import_this_file' => 'Champs de la carte et traiter ce fichier', @@ -207,7 +207,7 @@ return [ 'next' => 'Prochain', 'next_audit_date' => 'Prochaine date de vérification', 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', - 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', + 'audit_images_help' => 'Vous pouvez trouver des images d\'audit dans l\'onglet historique de l\'actif.', 'no_email' => 'Aucune adresse e-mail associée à cet utilisateur', 'last_audit' => 'Dernier audit', 'new' => 'nouveau!', @@ -240,14 +240,14 @@ return [ 'restored' => 'restauré', 'restore' => 'Restaurer', 'requestable_models' => 'Modèles demandables', - 'requestable_items' => 'Requestable Items', + 'requestable_items' => 'Éléments demandés', 'requested' => 'Demandé', 'requested_date' => 'Date de la demande', 'requested_assets' => 'Actifs demandés', 'requested_assets_menu' => 'Actifs demandés', 'request_canceled' => 'Demande annulée', - 'request_item' => 'Request this item', - 'external_link_tooltip' => 'External link to', + 'request_item' => 'Demander cet article', + 'external_link_tooltip' => 'Lien externe vers', 'save' => 'Sauvegarder', 'select_var' => 'Sélectionner :thing... ', // this will eventually replace all of our other selects 'select' => 'Sélectionner', @@ -304,7 +304,7 @@ return [ 'user' => 'Utilisateur', 'accepted' => 'validé', 'declined' => 'refusé', - 'declined_note' => 'Declined Notes', + 'declined_note' => 'Notes refusées', 'unassigned' => 'Non assigné', 'unaccepted_asset_report' => 'Actifs refusés', 'users' => 'Utilisateurs', @@ -405,9 +405,9 @@ return [ 'accessory_name' => 'Nom de l’accessoire :', 'clone_item' => 'Cloner l\'élément', 'checkout_tooltip' => 'Affecter cet élément', - 'checkin_tooltip' => 'Check this item in so that it is available for re-issue, re-imaging, etc', + 'checkin_tooltip' => 'Enregistrez cet élément afin qu\'il soit disponible pour une réédition, une réimpression, etc', 'checkout_user_tooltip' => 'Affecter cet élément à un utilisateur', - 'checkin_to_diff_location' => 'You can choose to check this asset in to a location other than this asset\'s default location of :default_location if one is set', + 'checkin_to_diff_location' => 'Vous pouvez choisir de vérifier cette ressource à un emplacement autre que l\'emplacement par défaut de cette ressource :default_location si elle est définie', 'maintenance_mode' => 'Le service est temporairement indisponible en raison d\'une mise à jour du système. Veuillez revenir plus tard.', 'maintenance_mode_title' => 'Le système est temporairement indisponible', 'ldap_import' => 'Le mot de passe de l\'utilisateur ne devrait pas être géré par LDAP. (Cela vous permet d\'envoyer des demandes de mot de passe oublié.)', @@ -508,7 +508,7 @@ return [ 'address2' => 'Adresse Ligne 2', 'import_note' => 'Importé à l\'aide de l\'importateur CSV', ], - 'remove_customfield_association' => 'Remove this field from the fieldset. This will not delete the custom field, only this field\'s association with this fieldset.', + 'remove_customfield_association' => 'Supprimer ce champ de l\'ensemble de champs. Cette opération ne supprime pas le champ personnalisé, mais uniquement l\'association de ce champ à cet ensemble de champs.', 'checked_out_to_fields' => 'Checked Out To Fields', 'percent_complete' => '% terminé', 'uploading' => 'Téléversement... ', @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Siège de licence|:count sièges de licence', 'consumables' => ':count Consommable|:count Consommables', 'components' => ':count Composant|:count Composants', - ] + ], + 'more_info' => 'Plus d\'info', + 'quickscan_bulk_help' => 'Si vous cochez cette case, l\'enregistrement de l\'actif sera modifié pour refléter ce nouvel emplacement. Si elle n\'est pas cochée, l\'emplacement sera simplement noté dans le journal d\'audit. Notez que si ce bien est sorti, il ne changera pas l\'emplacement de la personne, du bien ou de l\'emplacement auquel il est sorti.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expire le', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/fr-FR/mail.php b/resources/lang/fr-FR/mail.php index 4f9d751bbb..94d5d23e23 100644 --- a/resources/lang/fr-FR/mail.php +++ b/resources/lang/fr-FR/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'J\'ai bien lu et approuvé les conditions d\'utilisation, et reçu cet objet.', 'inventory_report' => 'Rapport d\'inventaire', 'item' => 'Article :', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Il y a :count licence expirant dans les prochains :threshold jours.|Il y a :count licences expirant dans les prochains :threshold jours.', 'link_to_update_password' => 'Veuillez cliquer sur le lien suivant pour confirmer votre :web account:', 'login' => 'Nom d\'utilisateur:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Il y a :count matériel à venir pour un audit dans les :threshold jours.|Il y a :count matériels à venir pour un audit dans les :threshold jours.', 'user' => 'Utilisateur', 'username' => 'Nom d\'utilisateur', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Bienvenue, :name', 'welcome_to' => 'Bienvenue sur :web!', 'your_assets' => 'Voir vos matériels', 'your_credentials' => 'Vos identifiants Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/fr-FR/table.php b/resources/lang/fr-FR/table.php index e097a0f17a..2652b99bee 100644 --- a/resources/lang/fr-FR/table.php +++ b/resources/lang/fr-FR/table.php @@ -6,6 +6,6 @@ return array( 'action' => 'Action', 'by' => 'Par', 'item' => 'Item', - 'no_matching_records' => 'No matching records found', + 'no_matching_records' => 'Aucun enregistrement correspondant n\'a été trouvé', ); diff --git a/resources/lang/fr-FR/validation.php b/resources/lang/fr-FR/validation.php index 20bc87f255..717c2356fc 100644 --- a/resources/lang/fr-FR/validation.php +++ b/resources/lang/fr-FR/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'L\'attribut ":attribute" doit être accepté.', - 'active_url' => 'L\'attribut ":attribute" n\'est pas une URL valide.', - 'after' => 'L\'attribut ":attribute" doit être une date après :date.', - 'after_or_equal' => 'L\'attribut: doit être une date après ou égale à: date.', - 'alpha' => 'L\'attribut ":attribute" ne peut contenir que des lettres.', - 'alpha_dash' => 'L\'attribut ":attribute" ne peut contenir que des lettres, des nombres, et des tirets.', - 'alpha_num' => 'L\'attribut ":attribute" ne peut contenir que des caractères alphanumériques.', - 'array' => 'L\'attribut: doit être un tableau.', - 'before' => 'L\'attribut ":attribute" doit être une date avant :date.', - 'before_or_equal' => 'L\'attribut: doit être une date antérieure ou égale à: date.', - 'between' => [ - 'numeric' => 'L\'attribut ":attribute" doit être entre :min et :max.', - 'file' => 'L\'attribut ":attribute" doit être entre :min et :max kilo-octets.', - 'string' => 'L\'attribut ":attribute" doit contenir entre :min et :max caractères.', - 'array' => 'L\'attribut: doit avoir entre: min et: max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'L\'attribut : doit être vrai ou faux.', - 'confirmed' => 'La confirmation et l\'attribut ":attribute" ne concordent pas.', - 'date' => 'L\'attribut ":attribute" n\'est pas une date valide.', - 'date_format' => 'L\'attribut ":attribute" ne respecte pas le format ":format".', - 'different' => 'L\'attribut ":attribute" et l\'attribut ":other" doivent être différents.', - 'digits' => 'L\'attribut ":attribute" doit contenir :digits chiffres.', - 'digits_between' => 'L\'attribut ":attribute" doit contenir entre :min et :max chiffres.', - 'dimensions' => 'L\'attribut: a des dimensions d\'image invalides.', - 'distinct' => 'Le champ d\'attribut: a une valeur en double.', - 'email' => 'Le format de l\'attribut ":attribute" est invalide.', - 'exists' => 'L\'attribut ":attribute" est invalide.', - 'file' => 'L\'attribut: doit être un fichier.', - 'filled' => 'Le champ d\'attribut: doit avoir une valeur.', - 'image' => 'L\'attribut ":attribute" doit être une image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Le champ d\'attribut: a une valeur en double.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'L\'attribut ":attribute" est invalide.', + 'exists' => 'L\'attribut ":attribute" est invalide.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Le champ d\'attribut: doit avoir une valeur.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'La valeur de :fieldname ne peut pas être vide.', - 'in' => 'Le :attribute selectionné est invalide.', - 'in_array' => 'Le champ d\'attribut: n\'existe pas dans autre.', - 'integer' => 'L\'attribut ":attribute" doit être un nombre entier.', - 'ip' => 'L\'attribut ":attribute" doit être une adresse IP valide.', - 'ipv4' => 'L\'attribut: doit être une adresse IPv4 valide.', - 'ipv6' => 'L\'attribut: doit être une adresse IPv6 valide.', - 'is_unique_department' => 'L\'attribut :attribute doit être unique à cet emplacement de la société', - 'json' => 'L\'attribut: doit être une chaîne JSON valide.', - 'max' => [ - 'numeric' => 'L\'attribut ":attribute" ne peut pas être plus grand que :max.', - 'file' => 'L\'attribut ":attribute" ne doit pas dépasser :max kilo-octets.', - 'string' => 'L\'attribut ":attribute" ne doit pas faire plus de :max caractères.', - 'array' => 'L\'attribut: peut ne pas avoir plus de: max items.', + 'in' => 'Le :attribute selectionné est invalide.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Le fichier :attribute doit être de type :values.', - 'mimetypes' => 'L\'attribut: doit être un fichier de type:: valeurs.', - 'min' => [ - 'numeric' => 'L\'attribut ":attribute" doit être au moins :min.', - 'file' => 'L\'attribut ":attribute" doit faire au moins :min kilo-octets.', - 'string' => 'L\'attribut ":attribute" doit faire au moins :min caractères.', - 'array' => 'L\'attribut: doit avoir au moins: éléments min.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'L\'attribut :attribute doit commencer par l\'une des valeurs suivantes : :values.', - 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values.', - - 'not_in' => 'L\'attribut ":attribute" est invalide.', - 'numeric' => 'L\'attribut ":attribute" doit être un nombre.', - 'present' => 'Le champ d\'attribut: doit être présent.', - 'valid_regex' => 'Ce n\'est pas une règle Regex valide. ', - 'regex' => 'Le format de l\'attribut ":attribute" est invalide.', - 'required' => 'Le champs :attribute est nécessaire.', - 'required_if' => 'Le champ :attribute est nécessaire quand :other vaut :value.', - 'required_unless' => 'Le champ d\'attribut: est obligatoire sauf si: autre est dans: valeurs.', - 'required_with' => 'Le champ :attribute est nécessaire quand :values est présent.', - 'required_with_all' => 'Le champ d\'attribut: est requis lorsque: les valeurs sont présentes.', - 'required_without' => 'Le champ :attribute est nécessaire quand :values n\'est pas présent.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'L\'attribut ":attribute" est invalide.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Le champ d\'attribut: doit être présent.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Le champs :attribute est nécessaire.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Le champ :attribute est nécessaire quand :other vaut :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Le champ d\'attribut: est obligatoire sauf si: autre est dans: valeurs.', + 'required_with' => 'Le champ :attribute est nécessaire quand :values est présent.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Le champ :attribute est nécessaire quand :values n\'est pas présent.', 'required_without_all' => 'Le champ d\'attribut: est requis lorsque aucune des valeurs suivantes n\'est présente.', - 'same' => 'L\'attribut ":attribute" et :other doivent correspondre.', - 'size' => [ - 'numeric' => 'L\'attribut ":attribute" doit faire :size.', - 'file' => 'L\'attribut ":attribute" doit faire :size kilo-octets.', - 'string' => 'L\'attribut ":attribute" doit faire :size caractères.', - 'array' => 'L\'attribut: doit contenir: des éléments de taille.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'L\'attribut: doit être une chaîne.', - 'timezone' => 'L\'attribut: doit être une zone valide.', 'two_column_unique_undeleted' => ':attribute doit être unique entre :table1 et :table2. ', - 'unique' => 'Cet-te :attribute a déjà été pris-e.', - 'uploaded' => 'L\'attribut: n\'a pas pu télécharger.', - 'url' => 'Le format de cet-te :attribute est invalide.', 'unique_undeleted' => ':attribute doit être unique.', 'non_circular' => 'Le champ :attribute ne doit pas créer de référence circulaire.', 'not_array' => ':attribute ne peut pas être un tableau.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Le mot de passe doit contenir au moins un chiffre.', 'case_diff' => 'Le mot de passe doit contenir au moins une minuscule et une majuscule.', 'symbols' => 'Le mot de passe doit contenir au moins un caractère spécial.', - 'gte' => [ - 'numeric' => 'La valeur ne peut pas être négative' - ], - 'checkboxes' => ':attribute contient des options non valides.', - 'radio_buttons' => ':attribute est invalide.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Cet-te :attribute a déjà été pris-e.', + 'uploaded' => 'L\'attribut: n\'a pas pu télécharger.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute doit être une date valide au format AAAA-MM-JJ', 'last_audit_date.date_format' => ':attribute doit être une date valide au format AAAA-MM-JJ hh:mm:ss', 'expiration_date.date_format' => ':attribute doit être une date valide au format AAAA-MM-JJ', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute doit être une date valide au format AAAA-MM-JJ', 'start_date.date_format' => ':attribute doit être une date valide au format AAAA-MM-JJ', 'end_date.date_format' => ':attribute doit être une date valide au format AAAA-MM-JJ', - - ], - + 'checkboxes' => ':attribute contient des options non valides.', + 'radio_buttons' => ':attribute est invalide.', + 'invalid_value_in_field' => 'Valeur non valide incluse dans ce champ', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valeur non valide incluse dans ce champ', + + 'generic' => [ + 'invalid_value_in_field' => 'Valeur non valide incluse dans ce champ', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ga-IE/account/general.php b/resources/lang/ga-IE/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/ga-IE/account/general.php +++ b/resources/lang/ga-IE/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ga-IE/admin/accessories/message.php b/resources/lang/ga-IE/admin/accessories/message.php index fa741b5669..1cce029cdc 100644 --- a/resources/lang/ga-IE/admin/accessories/message.php +++ b/resources/lang/ga-IE/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Níor seiceáladh an Cúntóir amach, déan iarracht arís', 'success' => 'Rinne an cúntóir a sheiceáil go rathúil.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Tá an úsáideoir neamhbhailí. Arís, le d\'thoil.' + 'user_does_not_exist' => 'Tá an úsáideoir neamhbhailí. Arís, le d\'thoil.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ga-IE/admin/consumables/general.php b/resources/lang/ga-IE/admin/consumables/general.php index 01c8a60dfa..9b3dcc80ff 100644 --- a/resources/lang/ga-IE/admin/consumables/general.php +++ b/resources/lang/ga-IE/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Ag fágáil', 'total' => 'Iomlán', 'update' => 'Nuashonrú Inchaite', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ga-IE/admin/consumables/message.php b/resources/lang/ga-IE/admin/consumables/message.php index 785258fb7b..a7da5440d6 100644 --- a/resources/lang/ga-IE/admin/consumables/message.php +++ b/resources/lang/ga-IE/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Níl inbhuanaithe ann.', 'create' => array( diff --git a/resources/lang/ga-IE/admin/custom_fields/message.php b/resources/lang/ga-IE/admin/custom_fields/message.php index 850d664ee9..384012c430 100644 --- a/resources/lang/ga-IE/admin/custom_fields/message.php +++ b/resources/lang/ga-IE/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Níl an réimse sin ann.', 'already_added' => 'Réimse curtha cheana féin', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Níor cruthaíodh réimse, déan iarracht arís.', diff --git a/resources/lang/ga-IE/admin/hardware/message.php b/resources/lang/ga-IE/admin/hardware/message.php index d00e6cba10..73f6296d3e 100644 --- a/resources/lang/ga-IE/admin/hardware/message.php +++ b/resources/lang/ga-IE/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Marradh: Tá an tsócmhainn seo marcáilte mar atá inghníomhaithe faoi láthair. Má d\'athraigh an stádas seo, déan an stádas sócmhainne a nuashonrú.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Níl sócmhainn ann.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Níor iompórtáil roinnt míreanna i gceart.', 'errorDetail' => 'Níor allmhairíodh na Míreanna seo a leanas mar gheall ar earráidí.', 'success' => 'Tá do chomhad iompórtáilte', diff --git a/resources/lang/ga-IE/admin/licenses/general.php b/resources/lang/ga-IE/admin/licenses/general.php index df4beb2a71..3cee950276 100644 --- a/resources/lang/ga-IE/admin/licenses/general.php +++ b/resources/lang/ga-IE/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Eolas Ceadúnais', 'license_seats' => 'Suíocháin Cheadúnais', 'seat' => 'Suíochán', + 'seat_count' => 'Seat :count', 'seats' => 'Suíocháin', 'software_licenses' => 'Ceadúnais Bogearraí', 'user' => 'Úsáideoir', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ga-IE/admin/licenses/message.php b/resources/lang/ga-IE/admin/licenses/message.php index 513b70e36f..d919b68a24 100644 --- a/resources/lang/ga-IE/admin/licenses/message.php +++ b/resources/lang/ga-IE/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Bhí ceist ann a sheiceáil amach an ceadúnas. Arís, le d\'thoil.', 'success' => 'Rinneadh an ceadúnas a sheiceáil go rathúil', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ga-IE/admin/models/message.php b/resources/lang/ga-IE/admin/models/message.php index 9c13b704b5..bc72f73641 100644 --- a/resources/lang/ga-IE/admin/models/message.php +++ b/resources/lang/ga-IE/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Tá an tsamhail seo bainteach le sócmhainní amháin nó níos mó faoi láthair agus ní féidir é a scriosadh. Scrios na sócmhainní, agus ansin déan iarracht a scriosadh arís.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Níor cruthaíodh an tsamhail, déan iarracht arís.', diff --git a/resources/lang/ga-IE/admin/settings/general.php b/resources/lang/ga-IE/admin/settings/general.php index 154055999a..649c9b17a9 100644 --- a/resources/lang/ga-IE/admin/settings/general.php +++ b/resources/lang/ga-IE/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'Freastalaí LDAP', - 'ldap_server_help' => 'Ba chóir go dtosódh sé seo le ldap: // (le haghaidh neamhchriptithe nó TLS) nó ldaps: // (do SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Bailíochtú deimhnithe SSL LDAP', 'ldap_server_cert_ignore' => 'Ceadaigh Teastas SSL neamhbhailí', 'ldap_server_cert_help' => 'Roghnaigh an bosca seo má tá tú ag úsáid deimhnithe SSL féinmhínithe agus gur mhaith leat glacadh le deimhniú SSL neamhbhailí.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'roghnach', 'per_page' => 'Torthaí ar an Leathanach', 'php' => 'Leagan PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ga-IE/button.php b/resources/lang/ga-IE/button.php index aff88fbae8..0f5c327e7d 100644 --- a/resources/lang/ga-IE/button.php +++ b/resources/lang/ga-IE/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Scrios', 'edit' => 'Athraigh', + 'clone' => 'Clone', 'restore' => 'Athchóirigh', 'remove' => 'Remove', 'request' => 'Iarratas', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Nua', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ga-IE/general.php b/resources/lang/ga-IE/general.php index 55d6fbeb36..b83be54458 100644 --- a/resources/lang/ga-IE/general.php +++ b/resources/lang/ga-IE/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Tuilleadh eolais', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Deireadh', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ga-IE/mail.php b/resources/lang/ga-IE/mail.php index 535b13470f..8c2e0b2f03 100644 --- a/resources/lang/ga-IE/mail.php +++ b/resources/lang/ga-IE/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Léigh na téarmaí úsáide agus léigh mé na téarmaí úsáide agus fuair mé an t-ítim seo.', 'inventory_report' => 'Inventory Report', 'item' => 'Mír:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Cliceáil ar an nasc seo a leanas chun do chuid focal faire:', 'login' => 'Logáil isteach:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Úsáideoir', 'username' => 'Ainm Úsáideora', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Fáilte: ainm', 'welcome_to' => 'Fáilte go dtí: gréasáin!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Do dhintiúir Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ga-IE/validation.php b/resources/lang/ga-IE/validation.php index 81bdf6af44..31d867e81d 100644 --- a/resources/lang/ga-IE/validation.php +++ b/resources/lang/ga-IE/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Ní mór glacadh leis an tréith.', - 'active_url' => 'Níl an tréith: URL bailí.', - 'after' => 'An: Ní mór tréith a bheith ina dháta tar éis: dáta.', - 'after_or_equal' => 'An: Ní mór tréith a bheith ina dáta tar éis nó cothrom leis: dáta.', - 'alpha' => 'Ní fhéadfar ach litreacha a bheith i dtréith.', - 'alpha_dash' => 'Ní féidir leis an tréith: litreacha, uimhreacha, agus taiscí a bheith ann.', - 'alpha_num' => 'Ní fhéadfar ach litreacha agus uimhreacha a bheith i dtréith.', - 'array' => 'An: Ní mór tréith a bheith ina sraith.', - 'before' => 'An: Ní mór tréith a bheith ina dháta roimh: dáta.', - 'before_or_equal' => 'An: Ní mór tréith a bheith ina dháta roimh nó cothrom le: dáta.', - 'between' => [ - 'numeric' => 'An: Ní mór tréith a bheith idir: min agus: max.', - 'file' => 'An: Ní mór tréith a bheith idir: min agus: max kilobytes.', - 'string' => 'An: Ní mór tréith a bheith idir: min agus: carachtair uasta.', - 'array' => 'An: Ní mór go mbeadh idir tréith: min agus: míreanna is mó.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Ní mór an réimse tréith a bheith fíor nó bréagach.', - 'confirmed' => 'Ní dhéanann an daingniú tréith comhoiriúnach leis.', - 'date' => 'Níl an tréith: dáta bailí.', - 'date_format' => 'An: ní bhaineann an tréith leis an bhformáid: formáid.', - 'different' => 'An: tréith agus: ní mór eile a bheith difriúil.', - 'digits' => 'An: Ní mór tréith a bheith: dhigit dhigit.', - 'digits_between' => 'An: Ní mór tréith a bheith idir: min agus: uimhreacha móra.', - 'dimensions' => 'Tá: toisí íomhá neamhbhailí ag tréith.', - 'distinct' => 'Tá: luach dúblach ag an réimse tréith.', - 'email' => 'An: Ní mór don tréith a bheith ina seoladh ríomhphoist bailí.', - 'exists' => 'An roghnaithe: tá tréith neamhbhailí.', - 'file' => 'An: Ní mór tréith a bheith ina chomhad.', - 'filled' => 'Ní mór go mbeadh luach ag an réimse tréith.', - 'image' => 'An: Ní mór tréith a bheith ina íomhá.', + 'boolean' => 'Ní mór an réimse tréith a bheith fíor nó bréagach.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Tá: luach dúblach ag an réimse tréith.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'An roghnaithe: tá tréith neamhbhailí.', + 'exists' => 'An roghnaithe: tá tréith neamhbhailí.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Ní mór go mbeadh luach ag an réimse tréith.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'An roghnaithe: tá tréith neamhbhailí.', - 'in_array' => 'Níl an: réimse tréith i: eile.', - 'integer' => 'An: Ní mór tréith a bheith ina slánuimhir.', - 'ip' => 'Ní mór an tréith: seoladh IP bailí a bheith ann.', - 'ipv4' => 'Ní mór don ghné seo: seoladh IPv4 bailí.', - 'ipv6' => 'Ní mór don ghné seo: seoladh IPv6 bailí.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'An: ní mór gur tréith JSON bailí í an tréith.', - 'max' => [ - 'numeric' => 'An: ní fhéadfar tréith a bheith níos mó ná: max.', - 'file' => 'An: Ní fhéadfadh tréith níos mó ná: max kilobytes.', - 'string' => 'An: Ní fhéadfar tréith a bheith níos mó ná: carachtair uasta.', - 'array' => 'An: Ní fhéadfadh go mbeadh níos mó ná tréith: míreanna is mó.', + 'in' => 'An roghnaithe: tá tréith neamhbhailí.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'An: Ní mór tréith a bheith ina chomhad den chineál:: luachanna.', - 'mimetypes' => 'An: Ní mór tréith a bheith ina chomhad den chineál:: luachanna.', - 'min' => [ - 'numeric' => 'Ní mór: tréith a bheith ar a laghad: min.', - 'file' => 'Ní mór: tréith a bheith ar a laghad: kilobyte min.', - 'string' => 'Ní mór: tréith a bheith ar a laghad: carachtair min.', - 'array' => 'Ní mór go mbeadh míreanna min ar a laghad ag an tréith.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'An roghnaithe: tá tréith neamhbhailí.', - 'numeric' => 'An: Ní mór tréith a bheith ina líon.', - 'present' => 'Ní mór an réimse tréith a bheith i láthair.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'Tá an fhormáid tréithbhail neamhbhailí.', - 'required' => 'An: Tá réimse tréith ag teastáil.', - 'required_if' => 'An: Tá réimse tréith ag teastáil nuair: eile é: luach.', - 'required_unless' => 'An: Tá réimse tréith de dhíth mura bhfuil: eile i: luachanna.', - 'required_with' => 'An: Tá réimse tréith ag teastáil nuair a bhíonn: luachanna i láthair.', - 'required_with_all' => 'An: Tá réimse tréith ag teastáil nuair a bhíonn: luachanna i láthair.', - 'required_without' => 'An: Tá réimse tréith ag teastáil nuair nach bhfuil luachanna i láthair.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'An roghnaithe: tá tréith neamhbhailí.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Ní mór an réimse tréith a bheith i láthair.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'An: Tá réimse tréith ag teastáil.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'An: Tá réimse tréith ag teastáil nuair: eile é: luach.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'An: Tá réimse tréith de dhíth mura bhfuil: eile i: luachanna.', + 'required_with' => 'An: Tá réimse tréith ag teastáil nuair a bhíonn: luachanna i láthair.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'An: Tá réimse tréith ag teastáil nuair nach bhfuil luachanna i láthair.', 'required_without_all' => 'An: Tá réimse tréith ag teastáil nuair nach bhfuil aon cheann de na luachanna i láthair.', - 'same' => 'An: tréith agus: ní mór eile a mheaitseáil.', - 'size' => [ - 'numeric' => 'An: Ní mór tréith a bheith: méid.', - 'file' => 'An: Ní mór tréith a bheith: kilobytes méid.', - 'string' => 'An: Ní mór tréith a bheith: carachtair mhéid.', - 'array' => 'Ní mór go mbeadh na nithe seo a leanas i dtréith: míreanna méide.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'An: Ní mór tréith a bheith ina teaghrán.', - 'timezone' => 'An: Ní mór go mbeadh tréith ina chrios bailí.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'An: tá tréith déanta cheana féin.', - 'uploaded' => 'The: theip ar an tréith a uaslódáil.', - 'url' => 'Tá an fhormáid tréithbhail neamhbhailí.', 'unique_undeleted' => 'An: Ní mór tréith a bheith uathúil.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'An: tá tréith déanta cheana féin.', + 'uploaded' => 'The: theip ar an tréith a uaslódáil.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/he-IL/account/general.php b/resources/lang/he-IL/account/general.php index b4de2bb370..2df779062a 100644 --- a/resources/lang/he-IL/account/general.php +++ b/resources/lang/he-IL/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'מפתחות API אישיים', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/he-IL/admin/accessories/message.php b/resources/lang/he-IL/admin/accessories/message.php index f119e26ede..4c5e9753cd 100644 --- a/resources/lang/he-IL/admin/accessories/message.php +++ b/resources/lang/he-IL/admin/accessories/message.php @@ -27,7 +27,11 @@ return array( 'error' => 'האבזר לא הונפק, אנא נסה שנית', 'success' => 'האבזר הונפק בהצלחה.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'משתמש אינו קיים. אנא נסה/י שנית.' + 'user_does_not_exist' => 'משתמש אינו קיים. אנא נסה/י שנית.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/he-IL/admin/consumables/general.php b/resources/lang/he-IL/admin/consumables/general.php index 85ab42b327..441b3342c2 100644 --- a/resources/lang/he-IL/admin/consumables/general.php +++ b/resources/lang/he-IL/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'נוֹתָר', 'total' => 'סה"כ', 'update' => 'עדכון מתכלה', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/he-IL/admin/consumables/message.php b/resources/lang/he-IL/admin/consumables/message.php index ccc2d23884..e3ca5181f4 100644 --- a/resources/lang/he-IL/admin/consumables/message.php +++ b/resources/lang/he-IL/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'הצריכה אינה קיימת.', 'create' => array( diff --git a/resources/lang/he-IL/admin/custom_fields/message.php b/resources/lang/he-IL/admin/custom_fields/message.php index db747048eb..caa0d57da7 100644 --- a/resources/lang/he-IL/admin/custom_fields/message.php +++ b/resources/lang/he-IL/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'שדה זה אינו קיים.', 'already_added' => 'השדה כבר נוסף', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'שדה לא נוצר, נסה שוב.', diff --git a/resources/lang/he-IL/admin/hardware/message.php b/resources/lang/he-IL/admin/hardware/message.php index 12a74e52b6..56d71d5288 100644 --- a/resources/lang/he-IL/admin/hardware/message.php +++ b/resources/lang/he-IL/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => ' אזהרה: הנכס הזה סומן כבלתי ניתן לפריסה כעת. אם סטטוס זה השתנה, עדכן את סטטוס הנכס.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'הנכס אינו קיים.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'פריטים מסוימים לא ייבאו כראוי.', 'errorDetail' => 'הפריטים הבאים לא יובאו בגלל שגיאות.', 'success' => 'הקובץ שלך יובא', diff --git a/resources/lang/he-IL/admin/licenses/general.php b/resources/lang/he-IL/admin/licenses/general.php index 5a4f5397ba..0231c31e60 100644 --- a/resources/lang/he-IL/admin/licenses/general.php +++ b/resources/lang/he-IL/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'פרטי רישיון', 'license_seats' => 'מושבי רשיון', 'seat' => 'מושב', + 'seat_count' => 'Seat :count', 'seats' => 'מקומות ישיבה', 'software_licenses' => 'רשיונות תוכנה', 'user' => 'מִשׁתַמֵשׁ', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/he-IL/admin/licenses/message.php b/resources/lang/he-IL/admin/licenses/message.php index 8d1a92e9de..ef3a30aa75 100644 --- a/resources/lang/he-IL/admin/licenses/message.php +++ b/resources/lang/he-IL/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'היתה בעיה לבדוק את הרישיון. בבקשה נסה שוב.', 'success' => 'הרשיון נבדק בהצלחה', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/he-IL/admin/models/message.php b/resources/lang/he-IL/admin/models/message.php index da334c0891..d086cf9f78 100644 --- a/resources/lang/he-IL/admin/models/message.php +++ b/resources/lang/he-IL/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'אזהרה! דגם הפריט אינו תקין או חסר!', 'no_association_fix' => 'זה ישבור דברים בדרכים שונות ומשונות. ערוך פריט זה עכשיו וקבע לו דגם.', 'assoc_users' => 'מודל זה משויך כרגע לנכס אחד או יותר ולא ניתן למחוק אותו. מחק את הנכסים ולאחר מכן נסה למחוק שוב.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'המודל לא נוצר, נסה שוב.', diff --git a/resources/lang/he-IL/admin/settings/general.php b/resources/lang/he-IL/admin/settings/general.php index a03158fe71..1d4d9302cd 100644 --- a/resources/lang/he-IL/admin/settings/general.php +++ b/resources/lang/he-IL/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'שרת LDAP', - 'ldap_server_help' => 'זה צריך להתחיל עם ldap: // (עבור לא מוצפן או TLS) או ldaps: // (עבור SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'אימות תעודת SSL של LDAP', 'ldap_server_cert_ignore' => 'אפשר אישור SSL לא חוקי', 'ldap_server_cert_help' => 'בחר בתיבת סימון זו אם אתה משתמש ב- SSL עם חתימה עצמית וברצונך לקבל אישור SSL לא חוקי.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'רישיון תוכנה', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'אופציונאלי', 'per_page' => 'תוצאות לעמוד', 'php' => 'גרסת PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/he-IL/button.php b/resources/lang/he-IL/button.php index b8e8425c26..09ea6d92d2 100644 --- a/resources/lang/he-IL/button.php +++ b/resources/lang/he-IL/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'לִמְחוֹק', 'edit' => 'לַעֲרוֹך', + 'clone' => 'Clone', 'restore' => 'לשחזר', 'remove' => 'הסר', 'request' => 'בַּקָשָׁה', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'הוסף לתחזוקה', 'append' => 'הוסף', 'new' => 'חדש', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/he-IL/general.php b/resources/lang/he-IL/general.php index a23ff53929..01434b66da 100644 --- a/resources/lang/he-IL/general.php +++ b/resources/lang/he-IL/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'עוד מידע', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'יפוג', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/he-IL/mail.php b/resources/lang/he-IL/mail.php index 785603aaa4..650301cd4a 100644 --- a/resources/lang/he-IL/mail.php +++ b/resources/lang/he-IL/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'קראתי והסכמתי לתנאי השימוש וקיבלתי פריט זה.', 'inventory_report' => 'Inventory Report', 'item' => 'פריט:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'לחץ על הקישור הבא כדי לעדכן את: סיסמת האינטרנט:', 'login' => 'התחברות:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'משתמש', 'username' => 'שם משתמש', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'ברוכים הבאים: שם', 'welcome_to' => 'ברוכים הבאים ל: אינטרנט!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'שלך Snipe- IT אישורים', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/he-IL/validation.php b/resources/lang/he-IL/validation.php index 9cca43938d..bd85d08e6d 100644 --- a/resources/lang/he-IL/validation.php +++ b/resources/lang/he-IL/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'התכונה: חייבת להתקבל.', - 'active_url' => 'התכונה: אינה כתובת אתר חוקית.', - 'after' => 'התכונה: חייבת להיות תאריך לאחר: תאריך.', - 'after_or_equal' => 'התכונה: חייבת להיות תאריך אחרי או שווה ל: תאריך.', - 'alpha' => 'התכונה: יכולה להכיל רק אותיות.', - 'alpha_dash' => 'התכונה: עשויה להכיל רק אותיות, מספרים וקווים.', - 'alpha_num' => 'התכונה: עשויה להכיל רק אותיות ומספרים.', - 'array' => 'התכונה: חייבת להיות מערך.', - 'before' => 'התכונה: חייבת להיות תאריך לפני: תאריך.', - 'before_or_equal' => 'התכונה: חייבת להיות תאריך לפני או שווה ל: תאריך.', - 'between' => [ - 'numeric' => 'התכונה: חייבת להיות בין: min ו-: max.', - 'file' => 'התכונה: חייבת להיות בין: min ו-: max kilobytes.', - 'string' => 'התכונה: חייבת להיות בין: דקות ו-: תווים מקסימליים.', - 'array' => 'התכונה: חייבת להיות בין: min ו-: max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'שדה התכונה: חייב להיות אמיתי או שגוי.', - 'confirmed' => 'אישור התכונה אינו תואם.', - 'date' => 'התכונה: אינה תאריך חוקי.', - 'date_format' => 'התכונה: אינה תואמת את הפורמט: format.', - 'different' => 'התכונה: ו-: אחרים חייבים להיות שונים.', - 'digits' => 'התכונה: חייבת להיות: ספרות ספרות.', - 'digits_between' => 'התכונה: חייבת להיות בין: דקות ו-: ספרות מקסימליות.', - 'dimensions' => 'לתכונה: יש ממדי תמונה לא חוקיים.', - 'distinct' => 'שדה התכונה: יש ערך כפול.', - 'email' => 'התכונה: חייבת להיות כתובת דוא"ל חוקית.', - 'exists' => 'התכונה שנבחרה: אינה חוקית.', - 'file' => 'התכונה: חייבת להיות קובץ.', - 'filled' => 'שדה המאפיין חייב להיות בעל ערך.', - 'image' => 'התכונה: חייבת להיות תמונה.', + 'boolean' => 'שדה התכונה: חייב להיות אמיתי או שגוי.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'שדה התכונה: יש ערך כפול.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'התכונה שנבחרה: אינה חוקית.', + 'exists' => 'התכונה שנבחרה: אינה חוקית.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'שדה המאפיין חייב להיות בעל ערך.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'התכונה שנבחרה: אינה חוקית.', - 'in_array' => 'שדה התכונה: אינו קיים ב-: other.', - 'integer' => 'התכונה: חייבת להיות מספר שלם.', - 'ip' => 'התכונה: חייבת להיות כתובת IP חוקית.', - 'ipv4' => 'התכונה: חייבת להיות כתובת IPv4 חוקית.', - 'ipv6' => 'התכונה: חייבת להיות כתובת IPv6 חוקית.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'התכונה: חייבת להיות מחרוזת JSON חוקית.', - 'max' => [ - 'numeric' => 'התכונה: לא יכולה להיות גדולה מ: מקסימום.', - 'file' => 'התכונה: לא יכולה להיות גדולה מ: קילו-בתים מקסימליים.', - 'string' => 'התכונה: לא יכולה להיות גדולה מ: תווים מקסימליים.', - 'array' => 'לתכונה: אין יותר מ: פריטים מקסימליים.', + 'in' => 'התכונה שנבחרה: אינה חוקית.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'התכונה: חייבת להיות קובץ מסוג:: ערכים.', - 'mimetypes' => 'התכונה: חייבת להיות קובץ מסוג:: ערכים.', - 'min' => [ - 'numeric' => 'התכונה: חייבת להיות לפחות: דקות.', - 'file' => 'התכונה: חייבת להיות לפחות: קילובייט מינימלי.', - 'string' => 'התכונה: חייבת להיות לפחות: דקות תווים.', - 'array' => 'התכונה: חייבת לכלול לפחות פריטים מינימליים.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'השדה חייב להכיל לפחות אחד מהערכים הבאים.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'התכונה שנבחרה: אינה חוקית.', - 'numeric' => 'התכונה: חייבת להיות מספר.', - 'present' => 'שדה התכונה: חייב להיות נוכח.', - 'valid_regex' => 'הקלט לא חוקי. ', - 'regex' => 'תבנית התכונה: אינה חוקית.', - 'required' => 'שדה התכונה: נדרש.', - 'required_if' => 'שדה התכונה: נדרש כאשר: other is: value.', - 'required_unless' => 'שדה התכונה: נדרש, אלא אם: אחרים נמצאים ב: ערכים.', - 'required_with' => 'שדה התכונה: נדרש כאשר: ערכים קיימים.', - 'required_with_all' => 'שדה התכונה: נדרש כאשר: ערכים קיימים.', - 'required_without' => 'שדה התכונה: נדרש כאשר: ערכים לא קיימים.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'התכונה שנבחרה: אינה חוקית.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'שדה התכונה: חייב להיות נוכח.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'שדה התכונה: נדרש.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'שדה התכונה: נדרש כאשר: other is: value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'שדה התכונה: נדרש, אלא אם: אחרים נמצאים ב: ערכים.', + 'required_with' => 'שדה התכונה: נדרש כאשר: ערכים קיימים.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'שדה התכונה: נדרש כאשר: ערכים לא קיימים.', 'required_without_all' => 'שדה התכונה: נדרש כאשר אף אחד מערכים אלה אינו קיים.', - 'same' => 'התכונה: ו-: אחרים חייבים להתאים.', - 'size' => [ - 'numeric' => 'התכונה: חייבת להיות: גודל.', - 'file' => 'התכונה: חייבת להיות: גודל קילובייט.', - 'string' => 'התכונה: חייבת להיות: גודל תווים.', - 'array' => 'התכונה: חייבת להכיל: פריטי גודל.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'התכונה: חייבת להיות מחרוזת.', - 'timezone' => 'התכונה: חייבת להיות אזור חוקי.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'התכונה: כבר נלקחה.', - 'uploaded' => 'התכונה: נכשלה.', - 'url' => 'תבנית התכונה: אינה חוקית.', 'unique_undeleted' => 'השדה חייב מזהה יחודי.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'הערך לא יכול להיות שלילי' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'התכונה: כבר נלקחה.', + 'uploaded' => 'התכונה: נכשלה.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/hr-HR/account/general.php b/resources/lang/hr-HR/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/hr-HR/account/general.php +++ b/resources/lang/hr-HR/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/hr-HR/admin/accessories/message.php b/resources/lang/hr-HR/admin/accessories/message.php index 343ca5dd17..ec4f78f24c 100644 --- a/resources/lang/hr-HR/admin/accessories/message.php +++ b/resources/lang/hr-HR/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Dodatak nije provjeren, pokušajte ponovo', 'success' => 'Usluga je uspješno provjerena.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Taj je korisnik nevažeći. Molim te pokušaj ponovno.' + 'user_does_not_exist' => 'Taj je korisnik nevažeći. Molim te pokušaj ponovno.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/hr-HR/admin/consumables/general.php b/resources/lang/hr-HR/admin/consumables/general.php index d69d9c3cba..cd9627d8ac 100644 --- a/resources/lang/hr-HR/admin/consumables/general.php +++ b/resources/lang/hr-HR/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'ostali', 'total' => 'ukupno', 'update' => 'Ažuriraj potrošnju', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/hr-HR/admin/consumables/message.php b/resources/lang/hr-HR/admin/consumables/message.php index 85ac9b6a63..52e51f5f4a 100644 --- a/resources/lang/hr-HR/admin/consumables/message.php +++ b/resources/lang/hr-HR/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Potrošnja ne postoji.', 'create' => array( diff --git a/resources/lang/hr-HR/admin/custom_fields/message.php b/resources/lang/hr-HR/admin/custom_fields/message.php index 55560eac0f..5b9b8712d8 100644 --- a/resources/lang/hr-HR/admin/custom_fields/message.php +++ b/resources/lang/hr-HR/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'To polje ne postoji.', 'already_added' => 'Polje je već dodano', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Polje nije izrađeno, pokušajte ponovo.', diff --git a/resources/lang/hr-HR/admin/hardware/message.php b/resources/lang/hr-HR/admin/hardware/message.php index 5d251377ac..73d87697bb 100644 --- a/resources/lang/hr-HR/admin/hardware/message.php +++ b/resources/lang/hr-HR/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Upozorenje: Ova je snimka označena kao trenutno nedjeljiva. Ako se ovaj status promijenio, ažurirajte status aktive.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Imovina ne postoji.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Neke stavke nisu pravilno uvezene.', 'errorDetail' => 'Sljedeće stavke nisu uvezene zbog pogrešaka.', 'success' => 'Vaša je datoteka uvezena', diff --git a/resources/lang/hr-HR/admin/licenses/general.php b/resources/lang/hr-HR/admin/licenses/general.php index 88092dc297..7ec6e49338 100644 --- a/resources/lang/hr-HR/admin/licenses/general.php +++ b/resources/lang/hr-HR/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Podaci o licenci', 'license_seats' => 'Sjedišta licenci', 'seat' => 'Sjedalo', + 'seat_count' => 'Seat :count', 'seats' => 'sjedala', 'software_licenses' => 'Licence za softver', 'user' => 'Korisnik', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/hr-HR/admin/licenses/message.php b/resources/lang/hr-HR/admin/licenses/message.php index 1b4e5f53c4..051577f3c4 100644 --- a/resources/lang/hr-HR/admin/licenses/message.php +++ b/resources/lang/hr-HR/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Došlo je do problema prilikom provjere licence. Molim te pokušaj ponovno.', 'success' => 'Licenca je uspješno provjerena', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/hr-HR/admin/models/message.php b/resources/lang/hr-HR/admin/models/message.php index 93a66bca33..347906d751 100644 --- a/resources/lang/hr-HR/admin/models/message.php +++ b/resources/lang/hr-HR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Ovaj je model trenutno povezan s jednom ili više imovine i ne može se izbrisati. Izbrišite imovinu pa pokušajte ponovo ukloniti.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model nije izrađen, pokušajte ponovo.', diff --git a/resources/lang/hr-HR/admin/settings/general.php b/resources/lang/hr-HR/admin/settings/general.php index e0e498b967..d96d3345b4 100644 --- a/resources/lang/hr-HR/admin/settings/general.php +++ b/resources/lang/hr-HR/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ovo samo testira da se LDAP može ispravno sinkronizirati. Ako vaš upit za LDAP autentikaciju nije ispravan, korisnici se i dalje možda neće moći prijaviti. MORATE NAJPRIJE SPREMITI SVOJE AŽURIRANE LDAP POSTAVKE.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP poslužitelj', - 'ldap_server_help' => 'To bi trebalo započeti s ldap: // (za neispisane ili TLS) ili ldaps: // (za SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Provjera LDAP SSL certifikata', 'ldap_server_cert_ignore' => 'Dopusti nevažeću SSL certifikat', 'ldap_server_cert_help' => 'Odaberite ovaj potvrdni okvir ako upotrebljavate autentičnu SSL certifikat i želite prihvatiti nevažeći SSL certifikat.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Licenca za softver', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'neobavezan', 'per_page' => 'Rezultati po stranici', 'php' => 'PHP verzija', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/hr-HR/button.php b/resources/lang/hr-HR/button.php index cc44b0fb9f..8be1647d9e 100644 --- a/resources/lang/hr-HR/button.php +++ b/resources/lang/hr-HR/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Dodijeli sve / Izbriši korisnika', 'delete' => 'Izbrisati', 'edit' => 'Uredi', + 'clone' => 'Clone', 'restore' => 'Vratiti', 'remove' => 'Izbriši', 'request' => 'Zahtjev', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Dodati održavanje', 'append' => 'Prikačiti', 'new' => 'Novi', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/hr-HR/general.php b/resources/lang/hr-HR/general.php index 4a38f557ca..6f94cdc846 100644 --- a/resources/lang/hr-HR/general.php +++ b/resources/lang/hr-HR/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Više informacija', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'istječe', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/hr-HR/mail.php b/resources/lang/hr-HR/mail.php index c4907eadb4..92546e7a3c 100644 --- a/resources/lang/hr-HR/mail.php +++ b/resources/lang/hr-HR/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Pročitao sam i prihvaćam uvjete korištenja i primio sam ovu stavku.', 'inventory_report' => 'Inventory Report', 'item' => 'Artikal:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Postoji :count licenca koja istječe u naredna :threshold dana.|Postoje :count licence koje istječu u naredna :threshold dana.', 'link_to_update_password' => 'Kliknite sljedeću vezu da biste ažurirali svoju: web lozinku:', 'login' => 'Prijaviti se:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Korisnik', 'username' => 'Korisničko ime', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Dobrodošli: ime', 'welcome_to' => 'Dobrodošli na: web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Vaše vjerodajnice za Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/hr-HR/validation.php b/resources/lang/hr-HR/validation.php index d9db981195..b1fbd91a34 100644 --- a/resources/lang/hr-HR/validation.php +++ b/resources/lang/hr-HR/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute mora biti prihvaćen.', - 'active_url' => 'The: atribut nije važeći URL.', - 'after' => 'Atribut mora biti datum nakon: datum.', - 'after_or_equal' => 'Atribut mora biti datum nakon ili jednak: datumu.', - 'alpha' => 'Atribut može sadržavati samo slova.', - 'alpha_dash' => 'Atribut može sadržavati samo slova, brojeve i crtice.', - 'alpha_num' => 'Atribut može sadržavati samo slova i brojeve.', - 'array' => 'Atribut mora biti niz.', - 'before' => 'Atribut mora biti datum prije: datum.', - 'before_or_equal' => 'Atribut mora biti datum prije ili jednak: datumu.', - 'between' => [ - 'numeric' => 'Atribut mora biti između: min i: max.', - 'file' => 'Atribut mora biti između: min i: max kilobajta.', - 'string' => 'Atribut mora biti između: min i: max znakova.', - 'array' => 'Atribut mora imati između: min i: max stavki.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Polje atributa mora biti točno ili netočno.', - 'confirmed' => 'Potvrda atributa ne odgovara.', - 'date' => 'Atribut nije važeći datum.', - 'date_format' => 'The: atribut ne odgovara formatu: format.', - 'different' => 'Atribut: i drugi moraju biti različiti.', - 'digits' => 'Atribut mora biti: znamenke znamenki.', - 'digits_between' => 'Atribut mora biti između: min i: max znamenki.', - 'dimensions' => 'The: atribut ima nevažeće dimenzije slike.', - 'distinct' => 'Polje atributa ima duplikatu vrijednost.', - 'email' => 'Atribut mora biti važeća adresa e-pošte.', - 'exists' => 'Odabrani: atribut nije važeći.', - 'file' => 'The: atribut mora biti datoteka.', - 'filled' => 'Polje atributa mora imati vrijednost.', - 'image' => 'The: atribut mora biti slika.', + 'boolean' => 'Polje atributa mora biti točno ili netočno.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Polje atributa ima duplikatu vrijednost.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Odabrani: atribut nije važeći.', + 'exists' => 'Odabrani: atribut nije važeći.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Polje atributa mora imati vrijednost.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Odabrani: atribut nije važeći.', - 'in_array' => 'Polje atributa ne postoji u: drugom.', - 'integer' => 'Atribut mora biti cijeli broj.', - 'ip' => 'The: atribut mora biti važeća IP adresa.', - 'ipv4' => 'The: atribut mora biti važeća IPv4 adresa.', - 'ipv6' => 'The: atribut mora biti važeća IPv6 adresa.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The: atribut mora biti valjan JSON niz.', - 'max' => [ - 'numeric' => 'Atribut ne smije biti veći od: max.', - 'file' => 'Atribut ne smije biti veći od: maks. Kilobajta.', - 'string' => 'Atribut ne smije biti veći od: max znakova.', - 'array' => 'The: atribut ne smije imati više od: max stavki.', + 'in' => 'Odabrani: atribut nije važeći.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Atribut mora biti datoteka tipa:: vrijednosti.', - 'mimetypes' => 'Atribut mora biti datoteka tipa:: vrijednosti.', - 'min' => [ - 'numeric' => 'Atribut mora biti najmanje: min.', - 'file' => 'Atribut mora biti najmanje: min kilobajta.', - 'string' => 'Atribut mora biti najmanje: min znakova.', - 'array' => 'Atribut mora imati barem: min stavke.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Odabrani: atribut nije važeći.', - 'numeric' => 'Atribut mora biti broj.', - 'present' => 'Polje atributa mora biti prisutno.', - 'valid_regex' => 'To nije valjani regex. ', - 'regex' => 'Format atributa nije važeći.', - 'required' => 'Potrebno je: polje atributa.', - 'required_if' => 'Polje atributa je obavezno kada: druga vrijednost: vrijednost.', - 'required_unless' => 'Polje atributa je obavezno, osim ako: druga nije u: vrijednostima.', - 'required_with' => 'Polje atributa je obavezno kada: postoji vrijednost.', - 'required_with_all' => 'Polje atributa je obavezno kada: postoji vrijednost.', - 'required_without' => 'Polje atributa je potrebno kada: vrijednosti nisu prisutne.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Odabrani: atribut nije važeći.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Polje atributa mora biti prisutno.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Potrebno je: polje atributa.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Polje atributa je obavezno kada: druga vrijednost: vrijednost.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Polje atributa je obavezno, osim ako: druga nije u: vrijednostima.', + 'required_with' => 'Polje atributa je obavezno kada: postoji vrijednost.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Polje atributa je potrebno kada: vrijednosti nisu prisutne.', 'required_without_all' => 'Polje atributa je obavezno ako nijedna od: vrijednosti nije prisutna.', - 'same' => 'Atribut: i drugi moraju odgovarati.', - 'size' => [ - 'numeric' => 'Atribut mora biti: veličina.', - 'file' => 'Atribut mora biti: veličina kilobajta.', - 'string' => 'The: atribut mora biti: veličina znakova.', - 'array' => 'Atribut mora sadržavati: stavke veličine.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The: atribut mora biti niz.', - 'timezone' => 'Atribut mora biti važeća zona.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The: atribut je već snimljen.', - 'uploaded' => 'Atribut nije prenesen.', - 'url' => 'Format atributa nije važeći.', 'unique_undeleted' => ':attribute mora biti jedinstven.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute ne smije biti niz.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Zaporka treba sadržavati barem jedan broj.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The: atribut je već snimljen.', + 'uploaded' => 'Atribut nije prenesen.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/hu-HU/account/general.php b/resources/lang/hu-HU/account/general.php index dce4449d14..c7bb10c312 100644 --- a/resources/lang/hu-HU/account/general.php +++ b/resources/lang/hu-HU/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Személyes API kulcsok', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Az API alap url címe a következő:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Az API tokenek lejárati ideje:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'A fiók frissítése sikeres', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/hu-HU/admin/accessories/message.php b/resources/lang/hu-HU/admin/accessories/message.php index f9385a75ba..5413cd3d4a 100644 --- a/resources/lang/hu-HU/admin/accessories/message.php +++ b/resources/lang/hu-HU/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'A tartozékot nem sikerült kiadni, kérem, próbálja újra!', 'success' => 'A tartozék sikeresen kiadva.', 'unavailable' => 'A tartozékot nem lehet kiadni. Ellenőrizd a kiadható mennyiséget', - 'user_does_not_exist' => 'Érvénytelen felhasználó. Kérem, próbálja újra!' + 'user_does_not_exist' => 'Érvénytelen felhasználó. Kérem, próbálja újra!', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/hu-HU/admin/companies/table.php b/resources/lang/hu-HU/admin/companies/table.php index 8f590cad1a..3d1416f660 100644 --- a/resources/lang/hu-HU/admin/companies/table.php +++ b/resources/lang/hu-HU/admin/companies/table.php @@ -2,7 +2,7 @@ return array( 'companies' => 'Cégek', 'create' => 'Vállalat létrehozása', - 'email' => 'Company Email', + 'email' => 'A cég email címe', 'title' => 'Társág', 'phone' => 'Company Phone', 'update' => 'Társaság frissítése', diff --git a/resources/lang/hu-HU/admin/consumables/general.php b/resources/lang/hu-HU/admin/consumables/general.php index db4dced03c..960f78cdd4 100644 --- a/resources/lang/hu-HU/admin/consumables/general.php +++ b/resources/lang/hu-HU/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Fennmaradó', 'total' => 'Összesen', 'update' => 'Kellék frissítése', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/hu-HU/admin/consumables/message.php b/resources/lang/hu-HU/admin/consumables/message.php index 1677ee6f50..b9478aba3d 100644 --- a/resources/lang/hu-HU/admin/consumables/message.php +++ b/resources/lang/hu-HU/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'A fogyóeszköz nem létezik.', 'create' => array( diff --git a/resources/lang/hu-HU/admin/custom_fields/message.php b/resources/lang/hu-HU/admin/custom_fields/message.php index 9bfd0cf731..b714cecda3 100644 --- a/resources/lang/hu-HU/admin/custom_fields/message.php +++ b/resources/lang/hu-HU/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'A rekordmező nem létezik.', 'already_added' => 'Mező már hozzáadva', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'A mező nem lett létrehozva, próbálkozz újra.', diff --git a/resources/lang/hu-HU/admin/hardware/message.php b/resources/lang/hu-HU/admin/hardware/message.php index 8bf0a4685d..c89f9223b2 100644 --- a/resources/lang/hu-HU/admin/hardware/message.php +++ b/resources/lang/hu-HU/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Figyelem: Ez az eszköz pillanatnyilag nem kiadható. Ha ez a helyzet változott, kérjük, frissítse az eszköz állapotát.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Eszköz nem létezik.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Egyes elemek nem importáltak helyesen.', 'errorDetail' => 'Az alábbi elemeket nem importálták hiba miatt.', 'success' => 'A fájlt importálta', diff --git a/resources/lang/hu-HU/admin/licenses/general.php b/resources/lang/hu-HU/admin/licenses/general.php index 3f75b119a0..778e5236ff 100644 --- a/resources/lang/hu-HU/admin/licenses/general.php +++ b/resources/lang/hu-HU/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Licensz információ', 'license_seats' => 'Licenc ülések', 'seat' => 'Ülés', + 'seat_count' => 'Seat :count', 'seats' => 'ülések', 'software_licenses' => 'Szoftverlicencek', 'user' => 'használó', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'Licenc visszavétel sikeres! | Minden licenc sikeresen visszavéve!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/hu-HU/admin/licenses/message.php b/resources/lang/hu-HU/admin/licenses/message.php index e8b8636246..2e99eaa3d9 100644 --- a/resources/lang/hu-HU/admin/licenses/message.php +++ b/resources/lang/hu-HU/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Hiba történt az engedély megvizsgálásakor. Kérlek próbáld újra.', 'success' => 'Az engedélyt sikeresen kiállították', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/hu-HU/admin/models/message.php b/resources/lang/hu-HU/admin/models/message.php index aca217097b..6f4bc87cc3 100644 --- a/resources/lang/hu-HU/admin/models/message.php +++ b/resources/lang/hu-HU/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'FIGYELEM! Az eszköz modell hiányzik, vagy nem érvényes!', 'no_association_fix' => 'Ez furcsa és szörnyű módokon fogja szétzúzni a dolgokat. Szerkeszd ezt az eszközt most, és rendeld hozzá egy modellhez.', 'assoc_users' => 'Ez a modell jelenleg társított egy vagy több eszközhöz, és nem törölhető. Legyen szíves törölje az eszközt, és próbálja meg ismét a modell törlését. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'A model nem lett létrehozva. Próbálkozz újra.', diff --git a/resources/lang/hu-HU/admin/settings/general.php b/resources/lang/hu-HU/admin/settings/general.php index 4f8f778cca..8a52b5f2b7 100644 --- a/resources/lang/hu-HU/admin/settings/general.php +++ b/resources/lang/hu-HU/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ez csak azt teszteli, hogy az LDAP helyesen szinkronizálható. Ha az LDAP hitelesítési lekérdezése nem megfelelő, a felhasználók még mindig nem tudnak bejelentkezni. EL KELL MENTENIE A MÓDOSÍTOTT LDAP BEÁLLÍTÁSOKAT ELŐBB.', 'ldap_manager' => 'LDAP-kezelő', 'ldap_server' => 'LDAP szerver', - 'ldap_server_help' => 'Ezt az ldap: // (titkosítatlan vagy TLS) vagy az ldaps:', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL tanúsítvány érvényesítés', 'ldap_server_cert_ignore' => 'Érvénytelen SSL-tanúsítvány engedélyezése', 'ldap_server_cert_help' => 'Jelölje be ezt a jelölőnégyzetet, ha önállóan aláírt SSL-tanúsítványt használ, és szeretne elfogadni egy érvénytelen SSL-tanúsítványt.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'LDAP tesztelése', 'ldap_test_sync' => 'LDAP szinkronizáció tesztelése', 'license' => 'Szoftverlicenc', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Bejelentkezés próbálkozások', 'login_attempt' => 'Bejelentkezés próbálkozás', 'login_ip' => 'IP címek', @@ -150,7 +150,7 @@ return [ 'optional' => 'választható', 'per_page' => 'Eredmények oldalanként', 'php' => 'PHP verzió', - 'php_info' => 'PHP Infó', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, rendszer, információ', 'php_overview_help' => 'PHP Rendszer információk', @@ -295,7 +295,7 @@ return [ 'oauth_authorized_apps' => 'Authorized Applications', 'oauth_redirect_url' => 'Redirect URL', 'oauth_name_help' => ' Something your users will recognize and trust.', - 'oauth_scopes' => 'Scopes', + 'oauth_scopes' => 'Hatókörök', 'oauth_callback_url' => 'Your application authorization callback URL.', 'create_client' => 'Create Client', 'no_scopes' => 'No scopes', @@ -373,7 +373,11 @@ return [ 'database_driver' => 'Adatbázis Illesztő', 'bs_table_storage' => 'Table Storage', 'timezone' => 'Időzóna', - 'profile_edit' => 'Edit Profile', + 'profile_edit' => 'Profil szerkesztése', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/hu-HU/button.php b/resources/lang/hu-HU/button.php index 2ca9a5b642..38cf4e9027 100644 --- a/resources/lang/hu-HU/button.php +++ b/resources/lang/hu-HU/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Összes visszavétele és a felhasználó törlése', 'delete' => 'Törlés', 'edit' => 'Szerkesztés', + 'clone' => 'Clone', 'restore' => 'Visszaállítás', 'remove' => 'Törlés', 'request' => 'Kérelem', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Karbantartás hozzáadása', 'append' => 'Hozzáillesztés', 'new' => 'Új', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/hu-HU/general.php b/resources/lang/hu-HU/general.php index 83105cd7a7..498fb4fa4a 100644 --- a/resources/lang/hu-HU/general.php +++ b/resources/lang/hu-HU/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'További információ', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Lejárat', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/hu-HU/mail.php b/resources/lang/hu-HU/mail.php index c93ae6688a..3db4e6126b 100644 --- a/resources/lang/hu-HU/mail.php +++ b/resources/lang/hu-HU/mail.php @@ -3,7 +3,7 @@ return [ 'Accessory_Checkin_Notification' => 'Tartozék kiadva', - 'Accessory_Checkout_Notification' => 'Accessory checked out', + 'Accessory_Checkout_Notification' => 'Tartozék kiadva', 'Asset_Checkin_Notification' => 'Eszköz kiadva', 'Asset_Checkout_Notification' => 'Eszköz kiadva', 'Confirm_Accessory_Checkin' => 'Tartozék visszavételének megerősítése', @@ -41,8 +41,8 @@ return [ 'canceled' => 'Megszakítva:', 'checkin_date' => 'Visszavétel dátuma:', 'checkout_date' => 'Kiadási dátum:', - 'checkedout_from' => 'Checked out from', - 'checkedin_from' => 'Checked in from', + 'checkedout_from' => 'Kiadva innen', + 'checkedin_from' => 'Visszavéve innen', 'checked_into' => 'Checked into', 'click_on_the_link_accessory' => 'Az alján lévő linkre kattintva ellenőrizheti, hogy megkapta-e a tartozékot.', 'click_on_the_link_asset' => 'Kérjük, kattintson az alul lévő linkre annak megerősítéséhez, hogy megkapták az eszközt.', @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Elolvastam és elfogadom a felhasználási feltételeket, és megkaptuk ezt az elemet.', 'inventory_report' => 'Készlet Jelentés', 'item' => 'Tétel:', + 'item_checked_reminder' => 'Ez egy emlékeztető arról, hogy jelenleg :count számú jóváhagyásra váró eszköze van. Kérem, az alábbi linken döntsön ezek elfogadásáról, vagy elutasításáról.', 'license_expiring_alert' => ':count licensz lejár :thershold nap múlva.|:count licensz lejár :thershold nap múlva.', 'link_to_update_password' => 'Kérjük, kattintson a következő linkre a frissítéshez: webes jelszó:', 'login' => 'Belépés:', @@ -68,7 +69,7 @@ return [ 'password' => 'Jelszó:', 'password_reset' => 'Jelszó visszaállítása', 'read_the_terms' => 'Kérjük, olvassa el az alábbi használati feltételeket.', - 'read_the_terms_and_click' => 'Please read the terms of use below, and click on the link at the bottom to confirm that you read and agree to the terms of use, and have received the asset.', + 'read_the_terms_and_click' => 'Kérjük, a használati feltételek elolvasása után az alábbi linken erősítse meg annak elfogadását, és az eszköz átvételét.', 'requested' => 'Kérve:', 'reset_link' => 'Jelszó visszaállítása linkre', 'reset_password' => 'Kattintson ide a jelszó visszaállításához:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Várhatóan :count eszközt kell ellenőrízni a következő :threshold napon belül.|Várhatóan :count eszközt kell ellenőrízni a következő :threshold napon belül.', 'user' => 'Felhasználó', 'username' => 'Felhasználónév', + 'unaccepted_asset_reminder' => 'Elfogadatlan eszközei vannak.', 'welcome' => 'Üdvözöljük: név', 'welcome_to' => 'Üdvözöljük a weboldalon!', 'your_assets' => 'Eszközeidnek megtekíntése', 'your_credentials' => 'A Snipe-IT hitelesítő adatai', + 'mail_sent' => 'E-mail sikeresen elküldve!', ]; diff --git a/resources/lang/hu-HU/validation.php b/resources/lang/hu-HU/validation.php index 72fe9af32c..a8d2a2c796 100644 --- a/resources/lang/hu-HU/validation.php +++ b/resources/lang/hu-HU/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'A :attribute el kell fogadni.', - 'active_url' => 'A :attribute nem valós URL.', - 'after' => 'Az :attribute ezután a dátum után kell, hogy legyen :date.', - 'after_or_equal' => 'A: attribútumnak dátumnak kell lennie, vagy egyenlőnek kell lennie: dátummal.', - 'alpha' => 'A :attribute csak betűket tartalmazhat.', - 'alpha_dash' => 'A :attribute csak betűket, számokat és perjelet tartalmazhat.', - 'alpha_num' => 'A :attribute csak betűket, számokat tartalmazhat.', - 'array' => 'A: attribútumnak tömbnek kell lennie.', - 'before' => 'A :attribute csak :date elötti dátum lehet.', - 'before_or_equal' => 'A: attribútumnak dátumnak kell lennie, vagy egyenlőnek kell lennie: dátummal.', - 'between' => [ - 'numeric' => 'A :attribute az érték között kell lennie :min -:max.', - 'file' => 'A :attribute :min - :max kilobájt között kell lenni.', - 'string' => 'A :attribute :min - :max karakter között kell lenni.', - 'array' => 'A: attribútumnak rendelkeznie kell: min és max elem között.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Az attribútumnak igaznak, vagy hamisnak kell lennie (true/false).', - 'confirmed' => 'A :attribute ellenörzés nem egyezik.', - 'date' => 'A :attribute nem egy valós dátum.', - 'date_format' => 'A :attribute nem egyezik a formátummal :format.', - 'different' => 'A :attribute és :other különböznie kell.', - 'digits' => 'A :attribute :digits számjegynek kell lenni.', - 'digits_between' => 'A :attribute :min - :max számjegy között kell lenni.', - 'dimensions' => 'A: attribútum érvénytelen képmérettel rendelkezik.', - 'distinct' => 'A: attribútum mező duplikált értéket tartalmaz.', - 'email' => 'Az :attribute formátuma érvénytelen.', - 'exists' => 'A kiválasztott :attribute étvénytelen.', - 'file' => 'A: attribútumnak fájlnak kell lennie.', - 'filled' => 'A: attribútum mezőnek értéket kell tartalmaznia.', - 'image' => 'A :attribute képnek kell lenni.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'A: attribútum mező duplikált értéket tartalmaz.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'A kiválasztott :attribute étvénytelen.', + 'exists' => 'A kiválasztott :attribute étvénytelen.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'A: attribútum mezőnek értéket kell tartalmaznia.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'A :fieldname mező értéke nem lehet üres.', - 'in' => 'A kiválasztott :attribute étvénytelen.', - 'in_array' => 'A: attribútum mező nem létezik: más.', - 'integer' => 'A :attribute számnak kell lennie.', - 'ip' => 'A :attribute érvényes IP címnek kell lenni.', - 'ipv4' => 'A: attribútumnak érvényes IPv4-címnek kell lennie.', - 'ipv6' => 'A: attribútumnak érvényes IPv6-címnek kell lennie.', - 'is_unique_department' => ':attribute egyedi kell, hogy legyen ehhez a helyhez', - 'json' => 'A: attribútumnak érvényes JSON-karakterláncnak kell lennie.', - 'max' => [ - 'numeric' => 'A :attribute nem lehet nagyobb, mint :max.', - 'file' => 'A :attribute nem lehet nagyobb, mint :max kilobájt.', - 'string' => 'A :attribute nem lehet nagyobb, mint :max karakter.', - 'array' => 'A: attribútumnak nem lehet több: max eleme.', + 'in' => 'A kiválasztott :attribute étvénytelen.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'A :attribute ilyen fájl típusnak kell lennie: :values.', - 'mimetypes' => 'A: attribútumnak a következő típusú fájlnak kell lennie:: values.', - 'min' => [ - 'numeric' => 'A :attribute legalább :min kell lenni.', - 'file' => 'A :attribute legalább :min kilobájt kell lenni.', - 'string' => 'A :attribute legalább :min karakter kell lenni.', - 'array' => 'A: attribútumnak rendelkeznie kell legalább: min elemekkel.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'A(z) :attribute a következővel kell kezdődnie: :values.', - 'ends_with' => 'A(z) :attribute a következővel kell végződjön: :values.', - - 'not_in' => 'A kiválasztott :attribute étvénytelen.', - 'numeric' => 'A :attribute csak szám lehet.', - 'present' => 'A: attribútum mezőnek jelen kell lennie.', - 'valid_regex' => 'Ez nem érvényes regex kifejezés. ', - 'regex' => 'Az :attribute formátuma érvénytelen.', - 'required' => 'A :attribute mező kötelező.', - 'required_if' => 'A :attribute mező kötelező ha :other egy :value.', - 'required_unless' => 'A: attribútummezőt csak akkor kell megadni, ha: az egyéb értéke: értéke.', - 'required_with' => 'A :attribute mező kötelező ha :value jelen van.', - 'required_with_all' => 'A: attribútum mező akkor szükséges, ha: értékek vannak jelen.', - 'required_without' => 'A :attribute mező kötelező ha :value nincs jelen.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'A kiválasztott :attribute étvénytelen.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'A: attribútum mezőnek jelen kell lennie.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'A :attribute mező kötelező.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'A :attribute mező kötelező ha :other egy :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'A: attribútummezőt csak akkor kell megadni, ha: az egyéb értéke: értéke.', + 'required_with' => 'A :attribute mező kötelező ha :value jelen van.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'A :attribute mező kötelező ha :value nincs jelen.', 'required_without_all' => 'A: attribútummező akkor szükséges, ha egyik sem: értéke nincs.', - 'same' => 'A :attribute és :other egyeznie kell.', - 'size' => [ - 'numeric' => 'A :attribute kötelező mérete :size.', - 'file' => 'A :attribute kötelező mérete :size kilobájt.', - 'string' => 'A :attribute kötelező mérete :size karakter.', - 'array' => 'A: attribútumnak tartalmaznia kell: méretű elemeket.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'A: attribútumnak stringnek kell lennie.', - 'timezone' => 'A: attribútumnak érvényes zónának kell lennie.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'A :attribute már foglalt.', - 'uploaded' => 'A: attribútum nem sikerült feltölteni.', - 'url' => 'Az :attribute formátuma érvénytelen.', 'unique_undeleted' => 'A(z) :attribute egyedinek kell lennie.', 'non_circular' => 'A(z) :attribute nem hozhat létre körkörös hivatkozást.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'A jelszónak tartalmaznia kell legalább egy számot.', 'case_diff' => 'A jelszónak tartalmaznia kell kis- és nagybetűket.', 'symbols' => 'A jelszónak tartalmaznia kell legalább egy szimbólumot.', - 'gte' => [ - 'numeric' => 'Az érték nem lehet negatív' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'A :attribute már foglalt.', + 'uploaded' => 'A: attribútum nem sikerült feltölteni.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute mező értékének érvényes dátumnak kell lennie YYYY-MM-DD formátumban', 'last_audit_date.date_format' => ':attribute mező értékének érvényes dátumnak kell lennie YYYY-MM-DD hh:mm:ss formátumban', 'expiration_date.date_format' => ':attribute mező értékének érvényes dátumnak kell lennie YYYY-MM-DD formátumban', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute mező értékének érvényes dátumnak kell lennie YYYY-MM-DD formátumban', 'start_date.date_format' => ':attribute mező értékének érvényes dátumnak kell lennie YYYY-MM-DD formátumban', 'end_date.date_format' => ':attribute mező értékének érvényes dátumnak kell lennie YYYY-MM-DD formátumban', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/id-ID/account/general.php b/resources/lang/id-ID/account/general.php index 671dd7f29d..3dbd1270cd 100644 --- a/resources/lang/id-ID/account/general.php +++ b/resources/lang/id-ID/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Kunci API Pribadi', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'URL basis API Anda terletak di:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Token API disetel kedaluwarsa dalam:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/id-ID/admin/accessories/message.php b/resources/lang/id-ID/admin/accessories/message.php index 46fb0232a5..b01825eb98 100644 --- a/resources/lang/id-ID/admin/accessories/message.php +++ b/resources/lang/id-ID/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Aksesori ini belum dikeluarkan, silahkan coba kembali', 'success' => 'Aksesori telah berhasil dikeluarkan.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Terdapat kesalahan pada user ini. Silahkan coba kembali.' + 'user_does_not_exist' => 'Terdapat kesalahan pada user ini. Silahkan coba kembali.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/id-ID/admin/consumables/general.php b/resources/lang/id-ID/admin/consumables/general.php index 19a26351ef..67d89839b1 100644 --- a/resources/lang/id-ID/admin/consumables/general.php +++ b/resources/lang/id-ID/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Sisa', 'total' => 'Total', 'update' => 'Memperbarui Barang Habis Pakai', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/id-ID/admin/consumables/message.php b/resources/lang/id-ID/admin/consumables/message.php index 87117018ca..82a0592cac 100644 --- a/resources/lang/id-ID/admin/consumables/message.php +++ b/resources/lang/id-ID/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Barang Habis Pakai tidak terdaftar.', 'create' => array( diff --git a/resources/lang/id-ID/admin/custom_fields/message.php b/resources/lang/id-ID/admin/custom_fields/message.php index 5a01e08c57..e7b65946d5 100644 --- a/resources/lang/id-ID/admin/custom_fields/message.php +++ b/resources/lang/id-ID/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Field tersebut tidak ada.', 'already_added' => 'Field sudah di tambahkan', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field gagal di buat, silahkan coba kembali.', diff --git a/resources/lang/id-ID/admin/hardware/message.php b/resources/lang/id-ID/admin/hardware/message.php index bd7863c075..edacdd8047 100644 --- a/resources/lang/id-ID/admin/hardware/message.php +++ b/resources/lang/id-ID/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Peringatan: Aset ini telah di tandai sebagai aset yang tak dapat digunakan. - Jika status ini telah berubah, silahkan perbarui status aset.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Aset tidak ada.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Beberapa item tidak terimpor dengan benar.', 'errorDetail' => 'Item berikut tidak terimpor karena ada kesalahan.', 'success' => 'Berkas Anda berhasil terimpor', diff --git a/resources/lang/id-ID/admin/licenses/general.php b/resources/lang/id-ID/admin/licenses/general.php index c070536e7a..b19c9c752b 100644 --- a/resources/lang/id-ID/admin/licenses/general.php +++ b/resources/lang/id-ID/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Info Lisensi', 'license_seats' => 'Kapasitas Lisensi', 'seat' => 'Kapasitas', + 'seat_count' => 'Seat :count', 'seats' => 'Kapasitas', 'software_licenses' => 'Lisensi Perangkat Lunak', 'user' => 'Pengguna', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/id-ID/admin/licenses/message.php b/resources/lang/id-ID/admin/licenses/message.php index 78bbc72869..922a3e15ac 100644 --- a/resources/lang/id-ID/admin/licenses/message.php +++ b/resources/lang/id-ID/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Terdapat kesalahan pada saat pemberian lisensi ini. Silahkan coba kembali.', 'success' => 'Lisensi telah berhasil diberikan', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/id-ID/admin/models/message.php b/resources/lang/id-ID/admin/models/message.php index faac80d94e..6a200d9e1c 100644 --- a/resources/lang/id-ID/admin/models/message.php +++ b/resources/lang/id-ID/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'Ini akan merusak banyak hal dengan cara yang aneh dan mengerikan. Edit aset ini sekarang untuk menetapkannya sebagai model.', 'assoc_users' => 'Saat ini model tersebut terhubung dengan 1 atau lebih dengan aset dan tidak dapat di hapus. Silahkan hapus aset terlebih dahulu, kemudian coba hapus kembali. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model gagal di buat, silahkan coba kembali.', diff --git a/resources/lang/id-ID/admin/settings/general.php b/resources/lang/id-ID/admin/settings/general.php index 15f8e3e74f..3241a264bf 100644 --- a/resources/lang/id-ID/admin/settings/general.php +++ b/resources/lang/id-ID/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ini hanya menguji bahwa LDAP dapat tersinkronisasi dengan benar. Jika kueri Otentikasi LDAP Anda tidak benar, pengguna mungkin masih belum dapat masuk. PERTAMA-TAMA ANDA HARUS MENYIMPAN PENGATURAN LDAP ANDA.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP Server', - 'ldap_server_help' => 'Ini harus dimulai dengan ldap: / / (untuk tidak terenkripsi atau TLS) atau ldaps: / / (untuk SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validasi sertifikat LDAP SSL', 'ldap_server_cert_ignore' => 'Izinkan sertifikat SSL tak terdaftar', 'ldap_server_cert_help' => 'Pilih kotak ini jika anda menggunakan sertifikat SSL self sign dan menerima sertifikat SSL yang tak terdaftar.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Lisensi Perangkat Lunak', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'pilihan', 'per_page' => 'Hasil per halaman', 'php' => 'Versi PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/id-ID/button.php b/resources/lang/id-ID/button.php index d9850e41a2..45f9ca6961 100644 --- a/resources/lang/id-ID/button.php +++ b/resources/lang/id-ID/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Hapus', 'edit' => 'Ubah', + 'clone' => 'Clone', 'restore' => 'Kembalikan', 'remove' => 'Remove', 'request' => 'Permintaan', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Baru', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/id-ID/general.php b/resources/lang/id-ID/general.php index 97b838949a..4e284887e2 100644 --- a/resources/lang/id-ID/general.php +++ b/resources/lang/id-ID/general.php @@ -76,8 +76,8 @@ return [ 'consumable' => 'Barang Habis Pakai', 'consumables' => 'Barang Habis Pakai', 'country' => 'Negara', - 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'could_not_restore' => 'Galat memulihkan :item_type: :error', + 'not_deleted' => ':item_type tidak dihapus, jadi tak dapat dipulihkan', 'create' => 'Buat baru', 'created' => 'Item dibuat', 'created_asset' => 'Buat aset', @@ -240,13 +240,13 @@ return [ 'restored' => 'kembalikan', 'restore' => 'Pulihkan', 'requestable_models' => 'Model yang Dapat Diminta', - 'requestable_items' => 'Requestable Items', + 'requestable_items' => 'Barang Dapat Diminta', 'requested' => 'Diminta', 'requested_date' => 'Tanggal Permintaan', 'requested_assets' => 'Aset yang Diminta', 'requested_assets_menu' => 'Aset yang Diminta', 'request_canceled' => 'Permintaan Dibatalkan', - 'request_item' => 'Request this item', + 'request_item' => 'Perminta barang ini', 'external_link_tooltip' => 'External link to', 'save' => 'Simpan', 'select_var' => 'Pilih :thing... ', // this will eventually replace all of our other selects @@ -285,7 +285,7 @@ return [ 'suppliers' => 'Pemasok', 'sure_to_delete' => 'Yakin ingin menghapusnya', 'sure_to_delete_var' => 'Apakah Anda yakin untuk menghapus kategori ini?', - 'delete_what' => 'Delete :item', + 'delete_what' => 'Hapus :item', 'submit' => 'Menyerahkan', 'target' => 'Target', 'time_and_date_display' => 'Tampilan Waktu dan Tanggal', @@ -405,7 +405,7 @@ return [ 'accessory_name' => 'Nama Aksesoris:', 'clone_item' => 'Duplikasi', 'checkout_tooltip' => 'Keluar-kan barang ini', - 'checkin_tooltip' => 'Check this item in so that it is available for re-issue, re-imaging, etc', + 'checkin_tooltip' => 'Simpan barang ini agar tersedia untuk terbit ulang, citra ulang, dll', 'checkout_user_tooltip' => 'Keluar-kan barang ini untuk pengguna', 'checkin_to_diff_location' => 'You can choose to check this asset in to a location other than this asset\'s default location of :default_location if one is set', 'maintenance_mode' => 'Layanan sedang dalam proses pembaharuan. Mohon kunjungi di lain waktu.', @@ -457,7 +457,7 @@ return [ 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Catatan: Membuat tag aset penambahan otomatis diaktifkan sehingga aset akan dibuat untuk baris yang tidak berisi "Tag Aset". Baris yang berisi "Tag Aset" akan diperbarui dengan informasi yang diberikan.', 'send_welcome_email_to_users' => ' Kirim Email Selamat Datang untuk Pengguna baru?', 'send_email' => 'Send Email', - 'call' => 'Call number', + 'call' => 'No. Panggilan', 'back_before_importing' => 'Cadangkan sebelum mengimpor?', 'csv_header_field' => 'Kolom Tajuk CSV', 'import_field' => 'Impor Kolom', @@ -467,7 +467,7 @@ return [ 'errors_importing' => 'Beberapa Kesalahan terjadi saat mengimpor: ', 'warning' => 'PERINGATAN: :warning', 'success_redirecting' => '"Berhasil... Mengalihkan.', - 'cancel_request' => 'Cancel this item request', + 'cancel_request' => 'Batalkan permintaan barang ini', 'setup_successful_migrations' => 'Tabel database Anda telah dibuat', 'setup_migration_output' => 'Keluaran migrasi:', 'setup_migration_create_user' => 'Selanjutnya: Buat Pengguna', @@ -479,7 +479,7 @@ return [ 'no_autoassign_licenses_help' => 'Jangan sertakan pengguna untuk penetapan massal melalui tampilan antarmuka lisensi atau alat cli.', 'modal_confirm_generic' => 'Apakah anda yakin?', 'cannot_be_deleted' => 'Barang ini tidak dapat dihapus', - 'cannot_be_edited' => 'This item cannot be edited.', + 'cannot_be_edited' => 'Barang ini tak dapat disunting.', 'undeployable_tooltip' => 'Item ini tidak dapat diperiksa. Periksa kuantitas yang tersisa.', 'serial_number' => 'Nomor Seri', 'item_notes' => ':Catatan benda', @@ -517,7 +517,7 @@ return [ 'copied' => 'Copied!', 'status_compatibility' => 'If assets are already assigned, they cannot be changed to a non-deployable status type and this value change will be skipped.', 'rtd_location_help' => 'This is the location of the asset when it is not checked out', - 'item_not_found' => ':item_type ID :id does not exist or has been deleted', + 'item_not_found' => ':item_type ID :id tidak ada atau sudah dihapus', 'action_permission_denied' => 'You do not have permission to :action :item_type ID :id', 'action_permission_generic' => 'You do not have permission to :action this :item_type', 'edit' => 'ubah', @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Lebih Lanjut', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Kadaluarsa', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/id-ID/mail.php b/resources/lang/id-ID/mail.php index afff161462..10274c21da 100644 --- a/resources/lang/id-ID/mail.php +++ b/resources/lang/id-ID/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Saya telah membaca dan menyetujui persyaratan penggunaan, dan telah menerima barang ini.', 'inventory_report' => 'Laporan Inventori', 'item' => 'Barang:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Ada :count lisensi yang masa berlakunya akan habis dalam :threshold hari.|Ada :count lisensi yang masa berlakunya akan habis dalam :threshold hari.', 'link_to_update_password' => 'Silahkan klik pada link berikut untuk mengupdate: password web anda:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Ada :count aset yang akan diaudit dalam :threshold hari.|Ada :count aset yang akan diaudit dalam :threshold hari.', 'user' => 'Pengguna', 'username' => 'Nama Pengguna', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Selamat datang: nama', 'welcome_to' => 'Selamat Datang di: web!', 'your_assets' => 'Lihat Aset Anda', 'your_credentials' => 'Kredensial Snipe-IT Anda', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/id-ID/validation.php b/resources/lang/id-ID/validation.php index 3d20f64887..7bd5292af2 100644 --- a/resources/lang/id-ID/validation.php +++ b/resources/lang/id-ID/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ': Atribut harus diterima.', - 'active_url' => ': Atribut ini URL-nya tidak valid.', - 'after' => ': Atribut harus tanggal setelah: tanggal.', - 'after_or_equal' => 'The: atribut harus tanggal setelah atau sama dengan: tanggal.', - 'alpha' => ': Atribut hanya boleh berisi huruf.', - 'alpha_dash' => ': Atribut hanya boleh berisi angka, huruf dan garis.', - 'alpha_num' => ': Atribut hanya boleh berisi huruf dan angka.', - 'array' => 'The: atribut harus berupa array.', - 'before' => ': Atribut harus tanggal sebelum: tanggal.', - 'before_or_equal' => 'The: atribut harus tanggal sebelum atau sama dengan: tanggal.', - 'between' => [ - 'numeric' => ': Atribut harus di antara: min -: maks.', - 'file' => ': Atribut harus di antara: min -: maks kilobytes.', - 'string' => ': Atribut harus di antara: min -: maks jumlah karakter.', - 'array' => 'The: atribut harus antara: min dan: max item.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Bidang atribut: harus benar atau salah.', - 'confirmed' => 'Konfirmasi :attribute tidak cocok.', - 'date' => 'Tanggal :attribute tidak valid.', - 'date_format' => ':attribute tidak cocok dengan format :format.', - 'different' => ':attribute dan :other harus berbeda.', - 'digits' => ':attribute harus dengan :digits digit.', - 'digits_between' => 'Digit :attribute harus di antara :min dan :max.', - 'dimensions' => 'Atribut: atribut memiliki dimensi gambar yang tidak benar.', - 'distinct' => 'Bidang atribut: memiliki nilai duplikat.', - 'email' => 'Format :attribute tidak benar.', - 'exists' => ':attribute yang di pilih tidak benar.', - 'file' => 'The: atribut harus berupa file.', - 'filled' => 'Bidang atribut: harus memiliki nilai.', - 'image' => ':attribute harus dalam bentuk gambar.', + 'boolean' => 'Bidang atribut: harus benar atau salah.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Bidang atribut: memiliki nilai duplikat.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => ':attribute yang di pilih tidak benar.', + 'exists' => ':attribute yang di pilih tidak benar.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Bidang atribut: harus memiliki nilai.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => ':attribute yang di pilih tidak benar.', - 'in_array' => 'Bidang atribut: tidak ada di: other.', - 'integer' => ':attribute harus dalam bentuk integer.', - 'ip' => ':attribute harus memilik alamat IP yang benar.', - 'ipv4' => 'Atribut: harus alamat IPv4 yang valid.', - 'ipv6' => 'Atribut: harus alamat IPv6 yang valid.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Atribut: harus string JSON yang valid.', - 'max' => [ - 'numeric' => ':attribute tidak boleh lebih dari :max.', - 'file' => ':attribute tidak boleh lebih dari :max kilobyte.', - 'string' => ':attribute tidak boleh lebih dari :max karakter.', - 'array' => 'Atribut: mungkin tidak lebih dari: item maks.', + 'in' => ':attribute yang di pilih tidak benar.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute harus memiliki tipe data :values.', - 'mimetypes' => 'The: atribut harus berupa file tipe:: values.', - 'min' => [ - 'numeric' => ':attribute seharusnya :min.', - 'file' => ':attribute harus memiliki :min kilobyte.', - 'string' => ':attribute harus memiliki :min jumlah karakter.', - 'array' => 'Atribut: setidaknya harus memiliki: item min.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute harus dimulai dengan salah satu dari berikut ini: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => ':attribute yang di pilih tidak benar.', - 'numeric' => ':attribute harus dalam angka.', - 'present' => 'Bidang atribut: harus ada.', - 'valid_regex' => 'Itu bukan regex yang valid. ', - 'regex' => 'Format :attribute tidak benar.', - 'required' => 'Kolom :attribute wajib di-isi.', - 'required_if' => 'Kolom :attribute wajib di-isi ketika :other nya :value.', - 'required_unless' => 'Bidang atribut: diperlukan kecuali: lainnya ada dalam: nilai.', - 'required_with' => 'Kolom :attribute wajib di-isi ketika terdapat :values.', - 'required_with_all' => 'Bidang atribut: diperlukan saat: nilai ada.', - 'required_without' => 'Kolom :attribute wajib di-isi ketika :values tidak ada.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => ':attribute yang di pilih tidak benar.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Bidang atribut: harus ada.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Kolom :attribute wajib di-isi.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Kolom :attribute wajib di-isi ketika :other nya :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Bidang atribut: diperlukan kecuali: lainnya ada dalam: nilai.', + 'required_with' => 'Kolom :attribute wajib di-isi ketika terdapat :values.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Kolom :attribute wajib di-isi ketika :values tidak ada.', 'required_without_all' => 'Bidang atribut: diperlukan bila tidak ada: nilai yang ada.', - 'same' => ':attribute dan :other harus cocok.', - 'size' => [ - 'numeric' => 'Ukuran :attribute harus :size.', - 'file' => ':attribute harus memiliki :size kilobyte.', - 'string' => ':attribute harus memiliki :size karakter.', - 'array' => 'Atribut: harus berisi: item ukuran.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The: atribut harus berupa string.', - 'timezone' => 'Atribut: harus merupakan zona yang valid.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute sudah digunakan.', - 'uploaded' => 'Atribut: gagal diupload.', - 'url' => 'Format :attribute tidak benar.', 'unique_undeleted' => ':attribute harus unik.', 'non_circular' => ':attribute tidak boleh membuat referensi melingkar.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute sudah digunakan.', + 'uploaded' => 'Atribut: gagal diupload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/is-IS/account/general.php b/resources/lang/is-IS/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/is-IS/account/general.php +++ b/resources/lang/is-IS/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/is-IS/admin/accessories/message.php b/resources/lang/is-IS/admin/accessories/message.php index 0d29fab9b1..c97c909f4a 100644 --- a/resources/lang/is-IS/admin/accessories/message.php +++ b/resources/lang/is-IS/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Aukabúnaður fór ekki í úttekt, vinsamlegast reyndu aftur!', 'success' => 'Aukabúnaður fór í úttekt.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Notandinn er ónothæfur. Vinsamlegast reyndu aftur.' + 'user_does_not_exist' => 'Notandinn er ónothæfur. Vinsamlegast reyndu aftur.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/is-IS/admin/consumables/general.php b/resources/lang/is-IS/admin/consumables/general.php index c9544dd8dd..51b77e9068 100644 --- a/resources/lang/is-IS/admin/consumables/general.php +++ b/resources/lang/is-IS/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Eftir', 'total' => 'Samtals', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/is-IS/admin/consumables/message.php b/resources/lang/is-IS/admin/consumables/message.php index ada4f4b348..1270cebac4 100644 --- a/resources/lang/is-IS/admin/consumables/message.php +++ b/resources/lang/is-IS/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/is-IS/admin/custom_fields/message.php b/resources/lang/is-IS/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/is-IS/admin/custom_fields/message.php +++ b/resources/lang/is-IS/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/is-IS/admin/hardware/message.php b/resources/lang/is-IS/admin/hardware/message.php index 4091f932e2..cc54d93f76 100644 --- a/resources/lang/is-IS/admin/hardware/message.php +++ b/resources/lang/is-IS/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Varúð: Þessi eign hefur verið merkt sem ónothæf að svo stöddu. - Ef ástand hennar hefur breyst skaltu uppfæra stöðu eignarinnar.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Þessi eign finnst ekki.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/is-IS/admin/licenses/general.php b/resources/lang/is-IS/admin/licenses/general.php index 883fa14329..6fd5ea6c78 100644 --- a/resources/lang/is-IS/admin/licenses/general.php +++ b/resources/lang/is-IS/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Hugbúnaðarleyfi', 'user' => 'Notandi', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/is-IS/admin/licenses/message.php b/resources/lang/is-IS/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/is-IS/admin/licenses/message.php +++ b/resources/lang/is-IS/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/is-IS/admin/models/message.php b/resources/lang/is-IS/admin/models/message.php index 351ed87979..6e2d25dd04 100644 --- a/resources/lang/is-IS/admin/models/message.php +++ b/resources/lang/is-IS/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'VIÐVÖRUN! Eignategund fyrir þennan hlut er ógilt eða vantar!', 'no_association_fix' => 'Þetta mun brjóta hlutina á undarlegan og hræðilegan hátt. Breyttu þessari eign núna til að úthluta henni fyrirmynd.', 'assoc_users' => 'Þessi tegund er sem stendur tengt einni eða fleiri eignum og ekki er hægt að eyða því. Vinsamlegast eyddu eignunum og reyndu síðan að eyða aftur. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Tegundin var ekki búið til, vinsamlegast reyndu aftur.', diff --git a/resources/lang/is-IS/admin/settings/general.php b/resources/lang/is-IS/admin/settings/general.php index 7270151d76..d1a6023ff7 100644 --- a/resources/lang/is-IS/admin/settings/general.php +++ b/resources/lang/is-IS/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Leyfa ógild SSL skírteini', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Niðurstöður á síðu', 'php' => 'PHP útgáfa', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/is-IS/button.php b/resources/lang/is-IS/button.php index 2418057aad..d8f0b4e033 100644 --- a/resources/lang/is-IS/button.php +++ b/resources/lang/is-IS/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Skrá inn allt / Eyða notenda', 'delete' => 'Eyða', 'edit' => 'Breyta', + 'clone' => 'Clone', 'restore' => 'Endurheimta', 'remove' => 'Fjarlægja', 'request' => 'Óska eftir', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Bæta við viðhaldi', 'append' => 'Bæta við', 'new' => 'Nýtt', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/is-IS/general.php b/resources/lang/is-IS/general.php index f9294b2c56..f47850a753 100644 --- a/resources/lang/is-IS/general.php +++ b/resources/lang/is-IS/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Nánar', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires (útrunnið)', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/is-IS/mail.php b/resources/lang/is-IS/mail.php index 9163a1702f..c474ad3449 100644 --- a/resources/lang/is-IS/mail.php +++ b/resources/lang/is-IS/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Notandi', 'username' => 'Notendanafn', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Velkomin/inn :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'Skoða þínar eignir', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/is-IS/validation.php b/resources/lang/is-IS/validation.php index 34dffb25c7..7ef26d728e 100644 --- a/resources/lang/is-IS/validation.php +++ b/resources/lang/is-IS/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => ':attribute verður að vera skrá.', - 'filled' => 'The :attribute field must have a value.', - 'image' => ':attribute verður að vera mynd.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Gildi fyrir :fieldname getur ekki verið núll.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => ':attribute verður að vera heiltala.', - 'ip' => ':attribute verður að vera gild IP-tala.', - 'ipv4' => ':attribute verður að vera gild IPv4-tala.', - 'ipv6' => ':attribute verður að vera gild IPv6-tala.', - 'is_unique_department' => ':attribute verður að vera einkvæmt fyrir þessa staðsetningu fyrirtækis', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => ':attribute verður að vera tala.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/it-IT/account/general.php b/resources/lang/it-IT/account/general.php index 1260a5b7c4..0082f2a9e0 100644 --- a/resources/lang/it-IT/account/general.php +++ b/resources/lang/it-IT/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Chiavi API Personali', + 'personal_access_token' => 'Token Di Accesso Personale', + 'personal_api_keys_success' => 'Chiave API personale :key creata con successo', + 'here_is_api_key' => 'Ecco il tuo nuovo token di accesso personale. Questa è l\'unica volta che ti verrà mostrato, quindi non perderlo! Ora puoi usare il token per fare richieste API.', 'api_key_warning' => 'Quando si genera un token API, copialo immediatamente perché dopo non sarà più visibile.', 'api_base_url' => 'Il tuo URL di base API è:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'I token API scadranno fra:', 'api_reference' => 'Controlla la Guida di Riferimento delle API per trovare specifici endpoint API e documentazione aggiuntiva.', 'profile_updated' => 'Account aggiornato con successo', + 'no_tokens' => 'Non hai creato nessun token di accesso personale.', ); diff --git a/resources/lang/it-IT/admin/accessories/message.php b/resources/lang/it-IT/admin/accessories/message.php index 9adb529708..c3042d5560 100644 --- a/resources/lang/it-IT/admin/accessories/message.php +++ b/resources/lang/it-IT/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'L\'accessorio non è stato assegnato, si prega di riprovare', 'success' => 'Accessorio assegnato correttamente.', 'unavailable' => 'Accessorio non disponibile per l\'assegnazione. Controlla la quantità disponibile', - 'user_does_not_exist' => 'Questo utente non è valido. Riprova.' + 'user_does_not_exist' => 'Questo utente non è valido. Riprova.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/it-IT/admin/consumables/general.php b/resources/lang/it-IT/admin/consumables/general.php index 3f3a766459..0ef9eb7726 100644 --- a/resources/lang/it-IT/admin/consumables/general.php +++ b/resources/lang/it-IT/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Rimanenti', 'total' => 'Totale', 'update' => 'Aggiorna Consumabile', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/it-IT/admin/consumables/message.php b/resources/lang/it-IT/admin/consumables/message.php index 4421da54a0..35fa55dab2 100644 --- a/resources/lang/it-IT/admin/consumables/message.php +++ b/resources/lang/it-IT/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'La categoria deve essere consumabile.', 'does_not_exist' => 'Il consumabile non esiste.', 'create' => array( diff --git a/resources/lang/it-IT/admin/custom_fields/message.php b/resources/lang/it-IT/admin/custom_fields/message.php index 0c0ccc2808..6e62fd4d96 100644 --- a/resources/lang/it-IT/admin/custom_fields/message.php +++ b/resources/lang/it-IT/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Il campo non esiste.', 'already_added' => 'Campo già aggiunto', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Campo non creato, riprova.', diff --git a/resources/lang/it-IT/admin/hardware/message.php b/resources/lang/it-IT/admin/hardware/message.php index 2c22d66c1b..2d0fb8f573 100644 --- a/resources/lang/it-IT/admin/hardware/message.php +++ b/resources/lang/it-IT/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Attenzione: Questo asset è stato marcato come non distribuibile. - Se lo stato è cambiato,aggiorna lo stato dell\'asset.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Questo Asset non esiste.', 'does_not_exist_var'=> 'Bene con tag :asset_tag non trovato.', 'no_tag' => 'Nessun tag del Bene è stato fornito.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Alcuni elementi non sono stati importati correttamente.', 'errorDetail' => 'Gli articoli seguenti non sono stati importati correttamente a causa di errori.', 'success' => 'Il file è stato importato con successo', diff --git a/resources/lang/it-IT/admin/licenses/general.php b/resources/lang/it-IT/admin/licenses/general.php index ad3b34d98d..83a1e5d948 100644 --- a/resources/lang/it-IT/admin/licenses/general.php +++ b/resources/lang/it-IT/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informazioni Licenza', 'license_seats' => 'Licenza Sede', 'seat' => 'Sede', + 'seat_count' => 'Seat :count', 'seats' => 'Sedi', 'software_licenses' => 'Licenze Software', 'user' => 'Utente', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Check-in di tutte le postazioni', - 'modal' => 'Ciò effettuerà il check-in di una postazione. | Ciò effettuerà il check-in di :checkedout_seats_count postazioni per questa licenza.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Check-in di TUTTE le postazioni di questa licenza, sia di utenti che di beni', 'disabled_tooltip' => 'Disattivato perché non ci sono postazioni assegnate', 'disabled_tooltip_reassignable' => 'Disattivato a causa della licenza non reassegnabile', 'success' => 'Check-in della licenza effettuato! | Check-in di tutte le licenze effettuato!', - 'log_msg' => 'Check-in effettuato tramite GUI di assegnazione massiva di licenze', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/it-IT/admin/licenses/message.php b/resources/lang/it-IT/admin/licenses/message.php index 74122fea60..55dcac1013 100644 --- a/resources/lang/it-IT/admin/licenses/message.php +++ b/resources/lang/it-IT/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'C\'è stato un problema nell\'estrazione della licenza. Riprova.', 'success' => 'La licenza è stata estratta con successo', 'not_enough_seats' => 'Non ci sono abbastanza copie della licenza disponibili per l\'assegnazione', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/it-IT/admin/models/message.php b/resources/lang/it-IT/admin/models/message.php index 5a4b000030..0a85f2dd79 100644 --- a/resources/lang/it-IT/admin/models/message.php +++ b/resources/lang/it-IT/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ATTENZIONE! Il modello di bene per questo oggetto non è valido o è mancante!', 'no_association_fix' => 'Ciò romperà cose in modi strani e brutti. Modifica questo bene per assegnargli un modello.', 'assoc_users' => 'Questo modello è attualmente associato ad uno o più beni e non può essere eliminato. Eliminare i beni e poi provare a eliminare nuovamente. ', - + 'invalid_category_type' => 'La categoria deve essere quella di un Bene.', 'create' => array( 'error' => 'Il modello non è stato creato, si prega di riprovare.', diff --git a/resources/lang/it-IT/admin/settings/general.php b/resources/lang/it-IT/admin/settings/general.php index d0a499c663..de6ee08eea 100644 --- a/resources/lang/it-IT/admin/settings/general.php +++ b/resources/lang/it-IT/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Questo verifica solamente che LDAP possa sincronizzare correttamente. Se la tua query di autenticazione LDAP non è corretta, gli utenti potrebbero non essere ancora in grado di accedere. DEVI SALVARE LE IMPOSTAZIONI LDAP PRIMA DI EFFETTUARE QUESTO TEST.', 'ldap_manager' => 'Manager LDAP', 'ldap_server' => 'Server LDAP', - 'ldap_server_help' => 'Questo dovrebbe iniziare con ldap: // (per unencrypted o TLS) o ldaps: // (per SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validazione certificato SSL di LDAP', 'ldap_server_cert_ignore' => 'Consenti Certificato SSL non valido', 'ldap_server_cert_help' => 'Seleziona questa casella se stai utilizzando un certificato SSL autofirmato e vuoi accettare un certificato SSL non valido.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test Sincronizzazione Ldap', 'license' => 'Licenza software', - 'load_remote' => 'Usa Gravatar', - 'load_remote_help_text' => 'Deseleziona questa casella se la tua installazione non può caricare script da internet esterna. Ciò impedirà a Snipe-IT di provare a caricare le immagini da Gravatar.', + 'load_remote' => 'Carica Avatar Remoti', + 'load_remote_help_text' => 'Deseleziona questa casella se la tua installazione non può caricare gli script dall\'esterno. Questo impedirà a Snipe-IT di provare il caricamento degli avatar da Gravatar o da altre fonti esterne.', 'login' => 'Tentativi di Accesso', 'login_attempt' => 'Tentativo di Accesso', 'login_ip' => 'Indirizzo IP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Fuso orario', 'profile_edit' => 'Modifica Profilo', 'profile_edit_help' => 'Consenti agli utenti di modificare i propri profili.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/it-IT/button.php b/resources/lang/it-IT/button.php index e317cd51ad..d32b7647dd 100644 --- a/resources/lang/it-IT/button.php +++ b/resources/lang/it-IT/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Restituisci tutto / Elimina utente', 'delete' => 'Cancella', 'edit' => 'Modifica', + 'clone' => 'Clone', 'restore' => 'Ripristina', 'remove' => 'Rimuovi', 'request' => 'Richiedi', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Aggiungi Manutenzione', 'append' => 'Aggiungi', 'new' => 'Nuovo', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/it-IT/general.php b/resources/lang/it-IT/general.php index bef6213960..7e788cf200 100644 --- a/resources/lang/it-IT/general.php +++ b/resources/lang/it-IT/general.php @@ -158,7 +158,7 @@ return [ 'image_upload' => 'Carica immagine', 'filetypes_accepted_help' => 'Tipo di file accettato :types. Dimensione massima di caricamento :size.|Tipi di file accettati :types. Dimensione massima di caricamento :size.', 'filetypes_size_help' => 'Dimensione massima di caricamento :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'I tipi di file accettati sono jpg, webp, png, gif, svg e avif. La dimensione massima consentita è :size.', 'unaccepted_image_type' => 'Questo immagine non è leggibile. I tipi di file accettati sono jpg, webp, png, gif e svg. Il tipo di questo file è :mimetype.', 'import' => 'Importa', 'import_this_file' => 'Mappa i campi ed elabora questo file', @@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => 'Permesso negato. Impossibile aggiornare le informazioni utente per i superadmin sulla demo.', 'pwd_reset_not_sent' => 'L\'utente non è attivato, è sincronizzato con LDAP o non ha un indirizzo email', 'error_sending_email' => 'Errore nell\'invio dell\'email', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Triste panda. Non sei autorizzato a fare questa cosa. Forse vuoi tornare al cruscotto iniziale, oppure contattare il tuo amministratore.', 'bulk' => [ 'delete' => [ @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Disponibilità Licenza|:count Disponibilità Licenza', 'consumables' => ':count Consumabile|:count Consumabili', 'components' => ':count Componente|:count Componenti', - ] + ], + 'more_info' => 'Altre informazioni', + 'quickscan_bulk_help' => 'Selezionando questa casella verrà modificata la posizione di questo bene. Non selezionandola, il luogo verrà semplicemente annotato nel log di controllo. Nota che se questo bene è assegnato, non verrà modificata la posizione della persona, del bene o della posizione a cui è assegnato.', + 'whoops' => 'Ops!', + 'something_went_wrong' => 'Qualcosa è andato storto con la tua richiesta.', + 'close' => 'Chiudi', + 'expires' => 'Scade', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/it-IT/mail.php b/resources/lang/it-IT/mail.php index e9f67d59e3..6d50e26e14 100644 --- a/resources/lang/it-IT/mail.php +++ b/resources/lang/it-IT/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ho letto e accetto i termini di utilizzo e ho ricevuto questo elemento.', 'inventory_report' => 'Rapporto Inventario', 'item' => 'Articolo:', + 'item_checked_reminder' => 'Promemoria: attualmente hai :count elementi assegnati che non hai né accettato né rifiutato. Clicca sul link qui sotto per confermare la tua decisione.', 'license_expiring_alert' => 'Tra :threshold giorni sta per scadere :count licenza. |Tra :threshold giorni stanno per scadere :count licenze.', 'link_to_update_password' => 'Per favore clicca sul seguente collegamento per aggiornare la tua password per :web :', 'login' => 'Accesso:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'C\'è :count Bene da inventariare entro :threshold giorni.|Ci sono :count beni da inventariare entro :threshold giorni.', 'user' => 'Utente', 'username' => 'Nome utente', + 'unaccepted_asset_reminder' => 'Hai dei beni non accettati.', 'welcome' => 'Benvenuto :name', 'welcome_to' => 'Benvenuti in :web!', 'your_assets' => 'Visualizza i tuoi Beni', 'your_credentials' => 'Le tue credenziali Snipe-IT', + 'mail_sent' => 'Email inviata correttamente!', ]; diff --git a/resources/lang/it-IT/validation.php b/resources/lang/it-IT/validation.php index bfe552ec6c..753136c6ae 100644 --- a/resources/lang/it-IT/validation.php +++ b/resources/lang/it-IT/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute deve essere accettato.', - 'active_url' => ':attribute non è un URL valido.', - 'after' => ':attribute deve essere una data oltre il :date.', - 'after_or_equal' => ':attribute deve essere una data successiva o uguale a :date .', - 'alpha' => ':attribute può contenere solo lettere.', - 'alpha_dash' => ':attribute può contenere solo lettere numeri e trattini.', - 'alpha_num' => ':attribute può contenere solo lettere e numeri.', - 'array' => ':attribute deve essere un array.', - 'before' => ':attribute deve essere una data precedente il :date .', - 'before_or_equal' => ':attribute deve essere una data precedente o uguale al :date .', - 'between' => [ - 'numeric' => ':attribute deve essere tra :min - :max .', - 'file' => 'il :attribute deve essere tra :min - :max kilobytes.', - 'string' => 'il :attribute deve essere tra :min - :max caratteri.', - 'array' => ':attribute deve avere tra: min e: max elementi.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute deve essere o vero o falso.', - 'confirmed' => 'La conferma di :attribute non corrisponde.', - 'date' => ':attribute non è una data valida.', - 'date_format' => 'il :attribute non corrisponde al :format.', - 'different' => ':attribute e :other devono essere differenti.', - 'digits' => ':attribute deve essere :digits cifre.', - 'digits_between' => ':attribute deve essere tra :min e :max cifre.', - 'dimensions' => ':attribute ha dimensioni di immagine non valide.', - 'distinct' => 'Il campo :attribute ha un valore duplicato.', - 'email' => 'Il formato di :attribute non è valido.', - 'exists' => ':attribute selezionato non è valido.', - 'file' => ':attribute deve essere un file.', - 'filled' => 'Il campo :attribute deve avere un valore.', - 'image' => ':attribute deve essere un\'immagine.', + 'boolean' => 'Il campo: attributo deve essere vero o falso.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Il campo :attribute ha un valore duplicato.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'L\' :attribute selezionato è invalido.', + 'exists' => ':attribute selezionato non è valido.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Il campo :attribute deve avere un valore.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => ':fieldname non può essere vuoto.', - 'in' => ':attribute selezionato non è valido.', - 'in_array' => 'Il campo :attribute non esiste in :other.', - 'integer' => ':attribute deve essere un numero intero.', - 'ip' => ':attribute deve essere un indirizzo IP valido.', - 'ipv4' => ':attribute deve essere un indirizzo IPv4 valido.', - 'ipv6' => ':attribute deve essere un indirizzo IPv6 valido.', - 'is_unique_department' => ':attribute deve essere unico per questa sede aziendale', - 'json' => ':attribute deve essere una stringa JSON valida.', - 'max' => [ - 'numeric' => ':attribute non può essere maggiore di :max.', - 'file' => ':attribute non può essere maggiore di :max kilobytes.', - 'string' => ':attribute non può essere maggiore di :max caratteri.', - 'array' => ':attribute non può avere più di :max elementi.', + 'in' => ':attribute selezionato non è valido.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute deve essere un file di formato: :values.', - 'mimetypes' => ':attribute deve essere un file di formato: :values.', - 'min' => [ - 'numeric' => ':attribute deve essere almeno :min.', - 'file' => ':attribute deve essere almeno :min kilobytes.', - 'string' => ':attribute deve essere di almeno :min caratteri.', - 'array' => ':attribute deve avere almeno :min elementi.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute deve iniziare con uno dei seguenti: :values.', - 'ends_with' => ':attribute deve finire con uno dei seguenti: :values.', - - 'not_in' => ':attribute selezionato non è valido.', - 'numeric' => ':attribute dev\'essere un numero.', - 'present' => 'Il campo :attribute deve essere presente.', - 'valid_regex' => 'Questa non è una espressione regolare valida. ', - 'regex' => 'Il formato di :attribute non è valido.', - 'required' => 'Il campo :attribute è obbligatorio.', - 'required_if' => 'Il campo :attribute è obbligatorio quando :other è :value.', - 'required_unless' => 'Il campo :attribute è obbligatorio a meno che :other sia in :values.', - 'required_with' => 'Il campo :attribute è obbligatorio quando :values è presente.', - 'required_with_all' => 'Il campo :attribute è obbligatorio quando :values è presente.', - 'required_without' => 'Il campo :attribute è obbligatorio quando :values non è presente.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => ':attribute selezionato non è valido.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Il campo :attribute deve essere presente.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Il campo :attribute è obbligatorio.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Il campo :attribute è obbligatorio quando :other è :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Il campo :attribute è obbligatorio a meno che :other sia in :values.', + 'required_with' => 'Il campo :attribute è obbligatorio quando :values è presente.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Il campo :attribute è obbligatorio quando :values non è presente.', 'required_without_all' => 'Il campo :attribute è obbligatorio quando nessuno dei valori :values è presente.', - 'same' => ':attribute e :other devono corrispondere.', - 'size' => [ - 'numeric' => ':attribute deve essere :size.', - 'file' => ':attribute deve essere :size kilobytes.', - 'string' => ':attribute deve essere :size caratteri.', - 'array' => ':attribute deve contenere :size elementi.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute deve essere una stringa.', - 'timezone' => ':attribute deve essere una zona valida.', 'two_column_unique_undeleted' => ':attribute deve essere univoco tra :table1 e :table2 . ', - 'unique' => ':attribute è già stato preso.', - 'uploaded' => 'Non è stato possibile caricare :attribute.', - 'url' => 'Il formato di :attribute non è valido.', 'unique_undeleted' => ':attribute deve essere unico.', 'non_circular' => ':attribute non deve creare un riferimento circolare.', 'not_array' => ':attribute non può essere un array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'La password deve contenere almeno un numero.', 'case_diff' => 'La password deve utilizzare maiuscole e minuscole.', 'symbols' => 'La password deve contenere simboli.', - 'gte' => [ - 'numeric' => 'Il valore non può essere negativo' - ], - 'checkboxes' => ':attribute contiene opzioni non valide.', - 'radio_buttons' => ':attribute non è valido.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute è già stato preso.', + 'uploaded' => 'Non è stato possibile caricare :attribute.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute deve essere in formato AAAA-MM-GG', 'last_audit_date.date_format' => ':attribute deve essere in formato AAAA-MM-GG hh:mm:ss', 'expiration_date.date_format' => ':attribute deve essere in formato AAAA-MM-GG', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute deve essere in formato AAAA-MM-GG', 'start_date.date_format' => ':attribute deve essere in formato AAAA-MM-GG', 'end_date.date_format' => ':attribute deve essere in formato AAAA-MM-GG', - - ], - + 'checkboxes' => ':attribute contiene opzioni non valide.', + 'radio_buttons' => ':attribute non è valido.', + 'invalid_value_in_field' => 'Valore non valido incluso in questo campo', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valore non valido incluso in questo campo', + + 'generic' => [ + 'invalid_value_in_field' => 'Valore non valido incluso in questo campo', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/iu-NU/account/general.php b/resources/lang/iu-NU/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/iu-NU/account/general.php +++ b/resources/lang/iu-NU/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/iu-NU/admin/accessories/message.php b/resources/lang/iu-NU/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/iu-NU/admin/accessories/message.php +++ b/resources/lang/iu-NU/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/iu-NU/admin/consumables/general.php b/resources/lang/iu-NU/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/iu-NU/admin/consumables/general.php +++ b/resources/lang/iu-NU/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/iu-NU/admin/consumables/message.php b/resources/lang/iu-NU/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/iu-NU/admin/consumables/message.php +++ b/resources/lang/iu-NU/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/iu-NU/admin/custom_fields/message.php b/resources/lang/iu-NU/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/iu-NU/admin/custom_fields/message.php +++ b/resources/lang/iu-NU/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/iu-NU/admin/hardware/message.php b/resources/lang/iu-NU/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/iu-NU/admin/hardware/message.php +++ b/resources/lang/iu-NU/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/iu-NU/admin/licenses/general.php b/resources/lang/iu-NU/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/iu-NU/admin/licenses/general.php +++ b/resources/lang/iu-NU/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/iu-NU/admin/licenses/message.php b/resources/lang/iu-NU/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/iu-NU/admin/licenses/message.php +++ b/resources/lang/iu-NU/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/iu-NU/admin/models/message.php b/resources/lang/iu-NU/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/iu-NU/admin/models/message.php +++ b/resources/lang/iu-NU/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/iu-NU/admin/settings/general.php b/resources/lang/iu-NU/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/iu-NU/admin/settings/general.php +++ b/resources/lang/iu-NU/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/iu-NU/button.php b/resources/lang/iu-NU/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/iu-NU/button.php +++ b/resources/lang/iu-NU/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/iu-NU/general.php b/resources/lang/iu-NU/general.php index 5b1d0e9b3c..b3a6b34320 100644 --- a/resources/lang/iu-NU/general.php +++ b/resources/lang/iu-NU/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/iu-NU/mail.php b/resources/lang/iu-NU/mail.php index 759ff0f5e8..edb1683200 100644 --- a/resources/lang/iu-NU/mail.php +++ b/resources/lang/iu-NU/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/iu-NU/validation.php b/resources/lang/iu-NU/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/iu-NU/validation.php +++ b/resources/lang/iu-NU/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ja-JP/account/general.php b/resources/lang/ja-JP/account/general.php index dfb543b43c..8559381dff 100644 --- a/resources/lang/ja-JP/account/general.php +++ b/resources/lang/ja-JP/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => '個人用APIキー', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'APIベースURLは以下の場所です:', 'api_base_url_endpoint' => '/<エンドポイント>', 'api_token_expiration_time' => 'APIトークンの有効期限:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ja-JP/admin/accessories/message.php b/resources/lang/ja-JP/admin/accessories/message.php index 75c7f45a9a..870630c169 100644 --- a/resources/lang/ja-JP/admin/accessories/message.php +++ b/resources/lang/ja-JP/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => '付属品がチェックされませんでした。もう一度、やり直して下さい。', 'success' => '付属品のチェックが終了しました。', 'unavailable' => '付属品はチェックアウト中のため利用できません。', - 'user_does_not_exist' => 'その利用者は不正です。もう一度、やり直して下さい。' + 'user_does_not_exist' => 'その利用者は不正です。もう一度、やり直して下さい。', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ja-JP/admin/consumables/general.php b/resources/lang/ja-JP/admin/consumables/general.php index 58cb5d89c2..106f5bfae9 100644 --- a/resources/lang/ja-JP/admin/consumables/general.php +++ b/resources/lang/ja-JP/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => '残数', 'total' => '合計', 'update' => '消耗品を更新', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ja-JP/admin/consumables/message.php b/resources/lang/ja-JP/admin/consumables/message.php index 1a1ab5af5c..8ebd564536 100644 --- a/resources/lang/ja-JP/admin/consumables/message.php +++ b/resources/lang/ja-JP/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => '消耗品は存在しません。', 'create' => array( diff --git a/resources/lang/ja-JP/admin/custom_fields/message.php b/resources/lang/ja-JP/admin/custom_fields/message.php index 96843f192d..feee235b68 100644 --- a/resources/lang/ja-JP/admin/custom_fields/message.php +++ b/resources/lang/ja-JP/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'フィールドがありません。', 'already_added' => 'フィールドはすでに追加されています', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'フォルダーは作成されませんでした。もう一度やり直してください。', diff --git a/resources/lang/ja-JP/admin/hardware/message.php b/resources/lang/ja-JP/admin/hardware/message.php index fe58100878..6f0f83470d 100644 --- a/resources/lang/ja-JP/admin/hardware/message.php +++ b/resources/lang/ja-JP/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => '警告:この資産は、現在 未配備としてマークされています。 - この状態が変更された場合は、資産のステータスを更新してください。', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => '資産が存在しません。', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'いくつかの項目は正しくインポートされませんでした。', 'errorDetail' => '以下のアイテムはエラーのためインポートできませんでした', 'success' => 'ファイルはインポートされました。', diff --git a/resources/lang/ja-JP/admin/licenses/general.php b/resources/lang/ja-JP/admin/licenses/general.php index fa5b778eca..e056beb0c8 100644 --- a/resources/lang/ja-JP/admin/licenses/general.php +++ b/resources/lang/ja-JP/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'ライセンス情報', 'license_seats' => 'ライセンスシート', 'seat' => 'シート', + 'seat_count' => 'Seat :count', 'seats' => 'シート数', 'software_licenses' => 'ソフトウェア・ライセンス', 'user' => '利用者', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => '全てのシートをチェックイン', - 'modal' => 'このアクションは、1つのシートをチェックインします。 | このアクションは、このライセンスのすべての :checkedout_seats_count シートをチェックインします。', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'ユーザーとアセットの両方から、このライセンスのすべてのシートをチェックインします', 'disabled_tooltip' => '現在チェックアウトされているシートがないため、これは無効です', 'disabled_tooltip_reassignable' => 'ライセンスが再割り当てできないため、これは無効です', 'success' => 'ライセンスのチェックインに成功しました! | すべてのライセンスは正常にチェックインされました!', - 'log_msg' => 'ライセンスGUIで一括ライセンスチェックアウトを行いました', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ja-JP/admin/licenses/message.php b/resources/lang/ja-JP/admin/licenses/message.php index d81b1ba717..af52cb9b1d 100644 --- a/resources/lang/ja-JP/admin/licenses/message.php +++ b/resources/lang/ja-JP/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'ライセンスのチェックを外す際に問題が発生しました。もう一度、やり直して下さい。', 'success' => 'ライセンスのチェックを外しました。', 'not_enough_seats' => '購入可能なライセンスシートが不足しています', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ja-JP/admin/models/message.php b/resources/lang/ja-JP/admin/models/message.php index b608d9e6d1..86a9a98b3c 100644 --- a/resources/lang/ja-JP/admin/models/message.php +++ b/resources/lang/ja-JP/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => '警告!このアイテムのアセットモデルが無効または不足しています!', 'no_association_fix' => 'モデルを割り当てるために今すぐこの資産を編集してください。', 'assoc_users' => 'この減価償却は複数のモデルに関係付けられているため削除することができません。モデルを削除してから再度実行してください。 ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => '型番が作成できませんでした。もう一度やり直して下さい。', diff --git a/resources/lang/ja-JP/admin/settings/general.php b/resources/lang/ja-JP/admin/settings/general.php index 20cc46a609..87b17bce73 100644 --- a/resources/lang/ja-JP/admin/settings/general.php +++ b/resources/lang/ja-JP/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'これは、LDAPが正しく同期できることをテストするだけです。 LDAP認証クエリが正しくない場合、ユーザーはまだログインできない場合があります。その前に必ず更新後のLDAP設定を保存しておいてください。', 'ldap_manager' => 'LDAPマネージャー', 'ldap_server' => 'LDAP サーバ', - 'ldap_server_help' => 'LDAP を使用開始 ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL 認証', 'ldap_server_cert_ignore' => '無効な SSL 証明書を許可します。', 'ldap_server_cert_help' => '自己署名 SSL 証明書を使用して無効な SSL 証明書を受け入れたい場合は、このチェック ボックスを選択します。', @@ -124,8 +124,8 @@ return [ 'ldap_test' => 'LDAPをテスト', 'ldap_test_sync' => 'LDAP同期のテスト', 'license' => 'ソフトウェアライセンス', - 'load_remote' => 'Gravatarを使用', - 'load_remote_help_text' => 'インストールがスクリプトを外部から読み込めない場合は、このチェックボックスをオフにしてください。Snipe-IT が Gravatar から画像を読み込むのを防ぎます。', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'ログイン試行', 'login_attempt' => 'ログイン試行', 'login_ip' => 'IPアドレス', @@ -153,7 +153,7 @@ return [ 'optional' => 'オプション', 'per_page' => 'ページ毎の結果', 'php' => 'PHPバージョン', - 'php_info' => 'PHPの情報', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHPシステム情報', @@ -378,5 +378,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ja-JP/button.php b/resources/lang/ja-JP/button.php index 029faa5857..63b37c894d 100644 --- a/resources/lang/ja-JP/button.php +++ b/resources/lang/ja-JP/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'すべてチェックイン/ユーザー削除', 'delete' => '削除', 'edit' => '編集', + 'clone' => 'Clone', 'restore' => '復元', 'remove' => '削除', 'request' => 'リクエスト', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'メンテナンスを追加', 'append' => '追加', 'new' => '新規', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ja-JP/general.php b/resources/lang/ja-JP/general.php index b745f342d5..e253003f32 100644 --- a/resources/lang/ja-JP/general.php +++ b/resources/lang/ja-JP/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count個のライセンスシート', 'consumables' => ':count 消耗品数', 'components' => ':count コンポーネント', - ] + ], + 'more_info' => '詳細', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => '保証失効日', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ja-JP/mail.php b/resources/lang/ja-JP/mail.php index 2e63263129..32ad1f8665 100644 --- a/resources/lang/ja-JP/mail.php +++ b/resources/lang/ja-JP/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => '私は使用条件を読み、同意し、このアイテムを受け取りました。', 'inventory_report' => 'インベントリレポート', 'item' => 'アイテム:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => ':threshold 日後に:count ライセンスが失効します。', 'link_to_update_password' => '次のリンクをクリックして、パスワードを更新してください。 :web password:', 'login' => 'ログイン:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => ':threshold 日以内に監査が行われる資産は :count 個です。|:threshold 日以内に監査が行われる予定の資産が :count 個あります。', 'user' => 'ユーザ', 'username' => 'ユーザ名', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'ようこそ、 :name さん', 'welcome_to' => ':web にようこそ!', 'your_assets' => 'あなたの資産を表示', 'your_credentials' => 'Snipe-IT クレデンシャル', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ja-JP/validation.php b/resources/lang/ja-JP/validation.php index 98f080b3e2..7fd961d139 100644 --- a/resources/lang/ja-JP/validation.php +++ b/resources/lang/ja-JP/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute は、承認される必要があります。', - 'active_url' => ':attribute は、有効なURLではありません。', - 'after' => ':attribute は :date よりも後の日付にして下さい。', - 'after_or_equal' => ':attribute は :date よりも後の日付か同じ日にして下さい。', - 'alpha' => ':attribute は、文字が含まれている必要があります。', - 'alpha_dash' => ':attribute は、文字列、数字、ダッシュ(−)のみ含めることが出来ます。', - 'alpha_num' => ':attribute は、文字列と数字のみ含めることが出来ます。', - 'array' => ':attribute は配列にして下さい。', - 'before' => ':attribute は :date よりも前の日付にして下さい。', - 'before_or_equal' => ':attribute は :date よりも前の日付か同じ日にして下さい。', - 'between' => [ - 'numeric' => ':attribute は :min - :max の範囲内にして下さい。', - 'file' => ':attribute は :min - :max キロバイトの範囲内にして下さい。', - 'string' => ':attribute は :min - :max 文字の範囲内にして下さい。', - 'array' => ':attribute は :min ~ :max 内の数値にして下さい。', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute は、 true もしくは false にしてください。', - 'confirmed' => ':attribute が、一致しませんでした。', - 'date' => ':attribute は、無効な日付です。', - 'date_format' => ':attribute フォーマット :format に一致しません。', - 'different' => ':attribute と :other は、異なっている必要があります。', - 'digits' => ':attribute は :digits 数値にして下さい。', - 'digits_between' => ':attribute は :min - :max 内の数値にして下さい。', - 'dimensions' => ':attribute に無効な画像サイズがあります。', - 'distinct' => ':attribute フィールドに重複する値があります。', - 'email' => ':attribute フォーマットが不正です。', - 'exists' => '選択された :attribute は不正です。', - 'file' => ':attribute はファイルにして下さい。', - 'filled' => ':attribute フィールドは空に出来ません。', - 'image' => ':attribute は画像にして下さい。', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ':attribute フィールドに重複する値があります。', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => '選択された :attribute は不正です。', + 'exists' => '選択された :attribute は不正です。', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ':attribute フィールドは空に出来ません。', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => ':fieldname の値は null にはできません。', - 'in' => '選択された :attribute は不正です。', - 'in_array' => ':attribute フィールドが :other に存在しません。', - 'integer' => ':attribute は整数にして下さい。', - 'ip' => ':attribute は有効なIPアドレスにして下さい。', - 'ipv4' => ':attribute は有効なIPアドレスにして下さい。', - 'ipv6' => ':attribute は有効なIPv6アドレスにして下さい。', - 'is_unique_department' => ':attribute は、この会社の場所に一意である必要があります。', - 'json' => ':attribute は有効なJSON文字列にして下さい。', - 'max' => [ - 'numeric' => ':attribute は :max 以上にして下さい。', - 'file' => ':attribute は :max キロバイト以上にして下さい。', - 'string' => ':attribute は :max 文字以上にして下さい。', - 'array' => ':attribute は :max 以上のアイテムを持つことは出来ません。', + 'in' => '選択された :attribute は不正です。', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute は ファイルタイプ :values にして下さい。', - 'mimetypes' => ':attribute はファイルタイプ :values にして下さい。', - 'min' => [ - 'numeric' => ':attribute は、少なくとも :min 以上にして下さい。', - 'file' => ':attribute は、少なくとも :min キロバイト以上にして下さい。', - 'string' => ':attribute は、少なくとも :min 文字以上にして下さい。', - 'array' => ':attribute は少なくとも :min 以上にして下さい。', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute は、いずれかの値で始まる必要があります: :values.', - 'ends_with' => ':attribute は、以下のいずれかの :values で終了する必要があります。', - - 'not_in' => '選択された :attribute は不正です。', - 'numeric' => ':attribute は数字にして下さい。', - 'present' => ':attribute フィールドは必須です。', - 'valid_regex' => '有効な正規表現ではありません。', - 'regex' => ':attribute フォーマットが不正です。', - 'required' => ':attribute フィールドは、必須です。', - 'required_if' => ':other が :value の時、:attribute フィールドは必須です。', - 'required_unless' => ':other が :value の時でなければ、:attribute フィールドは必須です。', - 'required_with' => ':value が存在する場合、:attribute フィールドは必須です。', - 'required_with_all' => ':value が存在する場合、:attribute フィールドは必須です。', - 'required_without' => ':value が存在しな場合、:attribute フィールドは必須です。', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => '選択された :attribute は不正です。', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ':attribute フィールドは必須です。', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute フィールドは、必須です。', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':other が :value の時、:attribute フィールドは必須です。', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => ':other が :value の時でなければ、:attribute フィールドは必須です。', + 'required_with' => ':value が存在する場合、:attribute フィールドは必須です。', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':value が存在しな場合、:attribute フィールドは必須です。', 'required_without_all' => ':value が存在しない場合、:attribute フィールドは必須です。', - 'same' => ':attribute と :other は、一致しなければなりません。', - 'size' => [ - 'numeric' => ':attribute は :size にして下さい。', - 'file' => ':attribute は :size キロバイトにして下さい。', - 'string' => ':attribute は :size 文字にして下さい。', - 'array' => ':attribute には、 :size が含まれていなければなりません。', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute は文字列にして下さい。', - 'timezone' => ':attribute は有効なゾーンにして下さい。', 'two_column_unique_undeleted' => ':attributeは:table1と:table2で一意である必要があります。 ', - 'unique' => ':attribute は、取得済みです。', - 'uploaded' => ':attribute のアップロードに失敗しました。', - 'url' => ':attribute フォーマットが不正です。', 'unique_undeleted' => ':attribute は 一意の値である必要があります。', 'non_circular' => ':attribute は、循環参照を作成してはいけません。', 'not_array' => ':attributeには配列を指定できません。', @@ -102,12 +163,13 @@ return [ 'numbers' => 'パスワードには数字が1つ以上必要です。', 'case_diff' => 'パスワードは英字と数字を混在させる必要があります。', 'symbols' => 'パスワードには記号を含める必要があります', - 'gte' => [ - 'numeric' => '負の値にすることはできません' - ], - 'checkboxes' => ':attribute に無効なオプションが含まれています。', - 'radio_buttons' => ':attribute は不正です。', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute は、取得済みです。', + 'uploaded' => ':attribute のアップロードに失敗しました。', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute は YYYY-MM-DD 形式の有効な日付にして下さい', 'last_audit_date.date_format' => ':attribute は YYYY-MM-DD hh:mm:ss 形式の有効な日時にして下さい', 'expiration_date.date_format' => ':attribute は YYYY-MM-DD 形式の有効な日付にして下さい', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute は YYYY-MM-DD 形式の有効な日付にして下さい', 'start_date.date_format' => ':attribute は YYYY-MM-DD 形式の有効な日付にして下さい', 'end_date.date_format' => ':attribute は YYYY-MM-DD 形式の有効な日付にして下さい', - - ], - + 'checkboxes' => ':attribute に無効なオプションが含まれています。', + 'radio_buttons' => ':attribute は不正です。', + 'invalid_value_in_field' => 'このフィールドに含まれる値が無効です', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'このフィールドに含まれる値が無効です', + + 'generic' => [ + 'invalid_value_in_field' => 'このフィールドに含まれる値が無効です', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/km-KH/account/general.php b/resources/lang/km-KH/account/general.php index 42074ab0a6..3a02971b3a 100644 --- a/resources/lang/km-KH/account/general.php +++ b/resources/lang/km-KH/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'សោ API ផ្ទាល់ខ្លួន', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Url មូលដ្ឋាន API របស់អ្នកមានទីតាំងនៅ៖', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'និមិត្តសញ្ញា API ត្រូវបានកំណត់ឱ្យផុតកំណត់នៅក្នុង៖', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'ធ្វើបច្ចុប្បន្នភាពគណនីដោយជោគជ័យ', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/km-KH/admin/accessories/message.php b/resources/lang/km-KH/admin/accessories/message.php index 3539fe6ed5..95065a8812 100644 --- a/resources/lang/km-KH/admin/accessories/message.php +++ b/resources/lang/km-KH/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'គ្រឿងបន្លាស់មិនchecked outទេ សូមព្យាយាមម្តងទៀត', 'success' => 'គ្រឿងបន្លាស់ត្រូវchecked out ដោយជោគជ័យ។', 'unavailable' => 'គ្រឿងបន្លាស់មិនមានសម្រាប់ checkout ទេ។ ពិនិត្យបរិមាណដែលអាចប្រើបាន', - 'user_does_not_exist' => 'អ្នកប្រើប្រាស់នោះមិនត្រឹមត្រូវទេ។ សូម​ព្យាយាម​ម្តង​ទៀត។' + 'user_does_not_exist' => 'អ្នកប្រើប្រាស់នោះមិនត្រឹមត្រូវទេ។ សូម​ព្យាយាម​ម្តង​ទៀត។', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/km-KH/admin/consumables/general.php b/resources/lang/km-KH/admin/consumables/general.php index 046006b608..ea972d19d9 100644 --- a/resources/lang/km-KH/admin/consumables/general.php +++ b/resources/lang/km-KH/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'សរុប', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/km-KH/admin/consumables/message.php b/resources/lang/km-KH/admin/consumables/message.php index 59158d407f..1a8cdd422a 100644 --- a/resources/lang/km-KH/admin/consumables/message.php +++ b/resources/lang/km-KH/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/km-KH/admin/custom_fields/message.php b/resources/lang/km-KH/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/km-KH/admin/custom_fields/message.php +++ b/resources/lang/km-KH/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/km-KH/admin/hardware/message.php b/resources/lang/km-KH/admin/hardware/message.php index 055602f2a8..fc6b562ea5 100644 --- a/resources/lang/km-KH/admin/hardware/message.php +++ b/resources/lang/km-KH/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'ការព្រមាន៖ ទ្រព្យសកម្មនេះត្រូវបានសម្គាល់ថាមិនអាចប្រើប្រាស់បាននាពេលបច្ចុប្បន្ន។ - ប្រសិនបើស្ថានភាពនេះត្រូវបានផ្លាស់ប្តូរ សូមធ្វើបច្ចុប្បន្នភាពស្ថានភាពទ្រព្យសម្បត្តិ។', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'ទ្រព្យសកម្មមិនមានទេ។', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'ឯកសាររបស់អ្នកត្រូវបាននាំចូល', diff --git a/resources/lang/km-KH/admin/licenses/general.php b/resources/lang/km-KH/admin/licenses/general.php index 73770ee0b7..90d83411e1 100644 --- a/resources/lang/km-KH/admin/licenses/general.php +++ b/resources/lang/km-KH/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'ព័ត៌មានអាជ្ញាប័ណ្ណ', 'license_seats' => 'ចំនួនអាជ្ញាប័ណ្ណ', 'seat' => 'ចំនួន', + 'seat_count' => 'Seat :count', 'seats' => 'កៅអី', 'software_licenses' => 'អាជ្ញាប័ណ្ណកម្មវិធី', 'user' => 'អ្នក​ប្រើ', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/km-KH/admin/licenses/message.php b/resources/lang/km-KH/admin/licenses/message.php index c0d06bb1fc..585a980cfb 100644 --- a/resources/lang/km-KH/admin/licenses/message.php +++ b/resources/lang/km-KH/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/km-KH/admin/models/message.php b/resources/lang/km-KH/admin/models/message.php index 10ad33e85d..3814f924d5 100644 --- a/resources/lang/km-KH/admin/models/message.php +++ b/resources/lang/km-KH/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ព្រមាន! គំរូទ្រព្យសកម្មសម្រាប់ធាតុនេះមិនត្រឹមត្រូវ ឬបាត់!', 'no_association_fix' => 'វា​នឹង​បំបែក​រឿង​ក្នុង​វិធី​ចម្លែក និង​គួរ​ឲ្យ​រន្ធត់។ កែសម្រួលទ្រព្យសកម្មនេះឥឡូវនេះ ដើម្បីចាត់ឱ្យវាជាគំរូមួយ។', 'assoc_users' => 'បច្ចុប្បន្ន ម៉ូដែលនេះត្រូវបានភ្ជាប់ជាមួយទ្រព្យសកម្មមួយ ឬច្រើន ហើយមិនអាចលុបបានទេ។ សូមលុបទ្រព្យសម្បត្តិ ហើយបន្ទាប់មកព្យាយាមលុបម្តងទៀត។ ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'គំរូមិនត្រូវបានបង្កើតទេ សូមព្យាយាមម្តងទៀត។', diff --git a/resources/lang/km-KH/admin/settings/general.php b/resources/lang/km-KH/admin/settings/general.php index 96ac502e83..17c3bf7f8c 100644 --- a/resources/lang/km-KH/admin/settings/general.php +++ b/resources/lang/km-KH/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'អនុញ្ញាតឱ្យវិញ្ញាបនបត្រ SSL មិនត្រឹមត្រូវ', 'ldap_server_cert_help' => 'ជ្រើសរើសប្រអប់ធីកនេះ ប្រសិនបើអ្នកកំពុងប្រើវិញ្ញាបនបត្រ SSL ដែលបានចុះហត្ថលេខាដោយខ្លួនឯង ហើយចង់ទទួលយកវិញ្ញាបនបត្រ SSL ដែលមិនត្រឹមត្រូវ។', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'អាជ្ញាប័ណ្ណកម្មវិធី', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'ការប៉ុនប៉ងចូល', 'login_attempt' => 'ការប៉ុនប៉ងចូល', 'login_ip' => 'អាសយដ្ឋាន IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'លទ្ធផលក្នុងមួយទំព័រ', 'php' => 'កំណែ PHP', - 'php_info' => 'ព័ត៌មាន PHP', + 'php_info' => 'PHP info', 'php_overview' => 'ព័ត៌មាន PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/km-KH/button.php b/resources/lang/km-KH/button.php index 9afcf24983..6c5450a041 100644 --- a/resources/lang/km-KH/button.php +++ b/resources/lang/km-KH/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin ទាំងអស់ / លុបអ្នកប្រើប្រាស់', 'delete' => 'លុប', 'edit' => 'កែសម្រួល', + 'clone' => 'Clone', 'restore' => 'ស្តារ', 'remove' => 'ដកចេញ', 'request' => 'ស្នើសុំ', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'បន្ថែមការថែទាំ', 'append' => 'បន្ថែម', 'new' => 'ថ្មី', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/km-KH/general.php b/resources/lang/km-KH/general.php index 87a8be446e..3fb07c6d68 100644 --- a/resources/lang/km-KH/general.php +++ b/resources/lang/km-KH/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'ព័​ត៍​មាន​បន្ថែម', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'ផុតកំណត់', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/km-KH/mail.php b/resources/lang/km-KH/mail.php index f38d7dbfe7..39335859aa 100644 --- a/resources/lang/km-KH/mail.php +++ b/resources/lang/km-KH/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'ខ្ញុំបានអាន និងយល់ព្រមតាមលក្ខខណ្ឌនៃការប្រើប្រាស់ ហើយបានទទួលធាតុនេះ។', 'inventory_report' => 'របាយការណ៍សារពើភ័ណ្ឌ', 'item' => 'ធាតុ', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'មាន :count License ផុតកំណត់ក្នុង :threshold days បន្ទាប់។ | មាន :count licenses ផុតកំណត់ក្នុង :threshold days បន្ទាប់។', 'link_to_update_password' => 'សូមចុចលើតំណខាងក្រោមដើម្បីធ្វើបច្ចុប្បន្នភាព៖ពាក្យសម្ងាត់បណ្ដាញរបស់អ្នក៖', 'login' => 'ចូល', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'មាន : រាប់ទ្រព្យសកម្មដែលនឹងមកដល់សម្រាប់សវនកម្មក្នុងរយៈពេល : threshold days។|មាន : រាប់ទ្រព្យសកម្មដែលនឹងមកដល់សម្រាប់សវនកម្មក្នុងរយៈពេល : threshold days ។', 'user' => 'អ្នក​ប្រើ', 'username' => 'ឈ្មោះ​អ្នកប្រើប្រាស់', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'សូមស្វាគមន៍៖ ឈ្មោះ', 'welcome_to' => 'សូមស្វាគមន៍មកកាន់៖ គេហទំព័រ!', 'your_assets' => 'មើលទ្រព្យសកម្មរបស់អ្នក', 'your_credentials' => 'លិខិតសម្គាល់ Snipe-IT របស់អ្នក។', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/km-KH/validation.php b/resources/lang/km-KH/validation.php index cd6d9d7e8b..b33548e2ff 100644 --- a/resources/lang/km-KH/validation.php +++ b/resources/lang/km-KH/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'គុណលក្ខណៈ : ត្រូវតែទទួលយក។', - 'active_url' => ':attribute មិនមែនជា URL ត្រឹមត្រូវទេ។', - 'after' => ':attribute ត្រូវតែជាកាលបរិច្ឆេទបន្ទាប់ពី :date ។', - 'after_or_equal' => ':attribute ត្រូវតែជាកាលបរិច្ឆេទបន្ទាប់ពី ឬស្មើនឹង :date។', - 'alpha' => ':attribute អាចមានត្រឹមតែអក្សរប៉ុណ្ណោះ។', - 'alpha_dash' => ':attribute អាចមានតែអក្សរ លេខ និងសញ្ញាដាច់ៗប៉ុណ្ណោះ។', - 'alpha_num' => ':attribute អាចមានត្រឹមតែអក្សរ និងលេខប៉ុណ្ណោះ។', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ko-KR/account/general.php b/resources/lang/ko-KR/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/ko-KR/account/general.php +++ b/resources/lang/ko-KR/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ko-KR/admin/accessories/general.php b/resources/lang/ko-KR/admin/accessories/general.php index 2a50e01294..f10b90d86e 100644 --- a/resources/lang/ko-KR/admin/accessories/general.php +++ b/resources/lang/ko-KR/admin/accessories/general.php @@ -16,7 +16,7 @@ return array( 'update' => '부속품 갱신', 'use_default_eula' => '대체 기본 사용권 계약서를 사용합니다.', 'use_default_eula_disabled' => '대체 기본 사용권 계약서를 사용합니다. 기본 사용권 계약서가 정의되지 않았습니다. 설정에서 하나를 추가해 주세요.', - 'clone' => 'Clone Accessory', + 'clone' => '부속품 복제', 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/ko-KR/admin/accessories/message.php b/resources/lang/ko-KR/admin/accessories/message.php index 31598aceb4..0040cfa65d 100644 --- a/resources/lang/ko-KR/admin/accessories/message.php +++ b/resources/lang/ko-KR/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => '부속품이 반출되지 않았습니다. 다시 시도해 주세요.', 'success' => '부속품이 반출 되었습니다.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => '잘못된 사용자 입니다. 다시 시도해 주세요.' + 'user_does_not_exist' => '잘못된 사용자 입니다. 다시 시도해 주세요.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ko-KR/admin/consumables/general.php b/resources/lang/ko-KR/admin/consumables/general.php index c6e5e93d1b..4e5a310d66 100644 --- a/resources/lang/ko-KR/admin/consumables/general.php +++ b/resources/lang/ko-KR/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => '잔여수량', 'total' => '총계', 'update' => '소모품 갱신', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ko-KR/admin/consumables/message.php b/resources/lang/ko-KR/admin/consumables/message.php index 69257d8e83..afbf0eb940 100644 --- a/resources/lang/ko-KR/admin/consumables/message.php +++ b/resources/lang/ko-KR/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => '소모품이 존재하지 않습니다.', 'create' => array( diff --git a/resources/lang/ko-KR/admin/custom_fields/message.php b/resources/lang/ko-KR/admin/custom_fields/message.php index 11ee554203..460f04249c 100644 --- a/resources/lang/ko-KR/admin/custom_fields/message.php +++ b/resources/lang/ko-KR/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => '그 항목은 없습니다.', 'already_added' => '이미 추가한 항목입니다.', + 'none_selected' => 'No field selected', 'create' => array( 'error' => '항목을 생성하지 못했습니다. 재시도해 주십시오.', diff --git a/resources/lang/ko-KR/admin/hardware/message.php b/resources/lang/ko-KR/admin/hardware/message.php index c938451dc5..1e8f507091 100644 --- a/resources/lang/ko-KR/admin/hardware/message.php +++ b/resources/lang/ko-KR/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => '경고: 이 자산은 현재 사용불가 상태입니다. - 이 상태를 변경하시려면, 자산 상태를 갱신하세요.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => '자산이 존재하지 않습니다.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => '몇몇 품목들을 정확하게 읽어오지 못했습니다.', 'errorDetail' => '다음 품목들은 오류로 읽어오지 못했습니다.', 'success' => '파일에서 읽어오기가 완료되었습니다', diff --git a/resources/lang/ko-KR/admin/licenses/general.php b/resources/lang/ko-KR/admin/licenses/general.php index 9a52ad00b9..fdcabffbc2 100644 --- a/resources/lang/ko-KR/admin/licenses/general.php +++ b/resources/lang/ko-KR/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => '라이선스 정보', 'license_seats' => '라이선스 Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => '소프트웨어 라이선스', 'user' => '사용자', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ko-KR/admin/licenses/message.php b/resources/lang/ko-KR/admin/licenses/message.php index 7353e10ff4..f0ab3ac956 100644 --- a/resources/lang/ko-KR/admin/licenses/message.php +++ b/resources/lang/ko-KR/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => '라이선스 반출 중 문제가 발생했습니다. 다시 시도해 주세요.', 'success' => '라이선스가 반출 되었습니다.', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ko-KR/admin/models/message.php b/resources/lang/ko-KR/admin/models/message.php index 02929bd7b5..0e23515b54 100644 --- a/resources/lang/ko-KR/admin/models/message.php +++ b/resources/lang/ko-KR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => '이 모델은 현재 하나 이상의 자산들과 연결되어 있기에 삭제 할 수 없습니다. 자산들을 삭제하고 다시 삭제하길 시도하세요. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => '모델이 생성되지 않았습니다. 다시 시도하세요.', diff --git a/resources/lang/ko-KR/admin/settings/general.php b/resources/lang/ko-KR/admin/settings/general.php index b376dae2e4..9e2def2bdb 100644 --- a/resources/lang/ko-KR/admin/settings/general.php +++ b/resources/lang/ko-KR/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => '이것은 LDAP가 올바르게 동기화 될 수 있는지 테스트합니다. LDAP 인증 질의어가 올바르지 않으면 사용자가 여전히 로그인하지 못할 수 있습니다. 반드시 업데이트 된 LDAP 설정을 먼저 저장해야합니다.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP 서버', - 'ldap_server_help' => '이것은 (복호화또는 TLS 용) ldap로 시작합니다:// 또는 (SSL용) ldaps://', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL 인증서 확인', 'ldap_server_cert_ignore' => '유효하지 않은 SSL 인증서 허용', 'ldap_server_cert_help' => '자체 서명한 SSL 인증서를 사용하고, 유효하지 않은 SSL 인증서 사용을 승인하고자 하는 경우, 이 확인 상자를 선택하십시오.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => '소프트웨어 라이센스', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => '선택 사항', 'per_page' => '페이지 당 결과', 'php' => 'PHP 버전', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ko-KR/button.php b/resources/lang/ko-KR/button.php index f58979fe3a..fc4b5d3444 100644 --- a/resources/lang/ko-KR/button.php +++ b/resources/lang/ko-KR/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => '삭제', 'edit' => '편집', + 'clone' => 'Clone', 'restore' => '복원', 'remove' => '삭제', 'request' => '요청', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => '유지 보수 정보 추가', 'append' => 'Append', 'new' => '신규', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ko-KR/general.php b/resources/lang/ko-KR/general.php index c04230465d..b3d2e0137d 100644 --- a/resources/lang/ko-KR/general.php +++ b/resources/lang/ko-KR/general.php @@ -1,22 +1,22 @@ '2FA reset', + '2FA_reset' => '2FA 리셋', 'accessories' => '부속품들', 'activated' => '활성화', - 'accepted_date' => 'Date Accepted', + 'accepted_date' => '반영일', 'accessory' => '부속품', 'accessory_report' => '부속품 보고서', 'action' => '작업', 'activity_report' => '활동 보고서', 'address' => '주소', 'admin' => '관리자', - 'admin_tooltip' => 'This user has admin privileges', - 'superuser' => 'Superuser', - 'superuser_tooltip' => 'This user has superuser privileges', + 'admin_tooltip' => '현재 사용자는 어드민 권한을 가지고 있습니다.', + 'superuser' => '슈퍼유저', + 'superuser_tooltip' => '현재 사용자는 슈퍼유저 권한을 가지고 있습니다.', 'administrator' => '관리자', 'add_seats' => '추가한 Seat', - 'age' => "Age", + 'age' => "나이", 'all_assets' => '모든 자산들', 'all' => '전체', 'archived' => '보관됨', @@ -27,18 +27,18 @@ return [ 'asset_tag' => '자산 태그', 'asset_tags' => '자산 태그', 'assets_available' => '사용 가능한 자산', - 'accept_assets' => 'Accept Assets :name', + 'accept_assets' => '승인된 자산 :name', 'accept_assets_menu' => '승인된 자산', 'audit' => '감사', 'audit_report' => '감사 기록', 'assets' => '자산', 'assets_audited' => '자산 감사', - 'assets_checked_in_count' => 'assets checked in', - 'assets_checked_out_count' => 'assets checked out', - 'asset_deleted_warning' => 'This asset has been deleted. You must restore it before you can assign it to someone.', - 'assigned_date' => 'Date Assigned', - 'assigned_to' => 'Assigned to :name', - 'assignee' => 'Assigned to', + 'assets_checked_in_count' => '반입된 자산', + 'assets_checked_out_count' => '반출된 자산', + 'asset_deleted_warning' => '이 자산은 삭제되었습니다. 다시 할당하기 전에 복원해야 합니다.', + 'assigned_date' => '할당일', + 'assigned_to' => '수령인 :name', + 'assignee' => '수령인', 'avatar_delete' => '아바타 삭제', 'avatar_upload' => '아바타 올리기', 'back' => '이전', @@ -46,9 +46,9 @@ return [ 'bulkaudit' => '대량 감사', 'bulkaudit_status' => '감사 상태', 'bulk_checkout' => '대량 반출', - 'bulk_edit' => 'Bulk Edit', - 'bulk_delete' => 'Bulk Delete', - 'bulk_actions' => 'Bulk Actions', + 'bulk_edit' => '일괄 편집', + 'bulk_delete' => '일괄 삭제', + 'bulk_actions' => '일괄 작업', 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', 'byod' => 'BYOD', 'byod_help' => 'This device is owned by the user', @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => '자세한 정보', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => '만료', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ko-KR/mail.php b/resources/lang/ko-KR/mail.php index 4b285e17f1..5bda6a3967 100644 --- a/resources/lang/ko-KR/mail.php +++ b/resources/lang/ko-KR/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => '사용 조약을 읽고 동의 하며, 이 품목을 수령했습니다.', 'inventory_report' => 'Inventory Report', 'item' => '품목:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => '다음 :threshold 일 내에 만료되는 라이선스가 :count 개 있습니다.|다음 :threshold 일 내에 만료되는 라이선스가 :count 개 있습니다.', 'link_to_update_password' => ':web 비밀번호를 수정하려면 다음 링크를 클릭하세요:', 'login' => '로그인:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => '사용자', 'username' => '사용자명', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => '환영합니다 :name', 'welcome_to' => '환영합니다 :web!', 'your_assets' => '자산 확인', 'your_credentials' => '당신의 Snipe-IT 인증들', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ko-KR/validation.php b/resources/lang/ko-KR/validation.php index edd447f250..3e1d42d4a6 100644 --- a/resources/lang/ko-KR/validation.php +++ b/resources/lang/ko-KR/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute 가 수락되었습니다.', - 'active_url' => ':attribute 는 잘못된 URL 입니다.', - 'after' => ':attribute 는 :date 뒤에 오는 날짜 형식이어야 합니다.', - 'after_or_equal' => ':attribute 는 :date 이후거나 같아야 합니다.', - 'alpha' => ':attribute 는 문자만 포함해야 합니다.', - 'alpha_dash' => ':attribute는 문자, 숫자, 대쉬기호만 포함 할 수 있습니다.', - 'alpha_num' => ':attribute 는 문자와 숫자만 포함할 수 있습니다.', - 'array' => ':attribute는 배열이어야 합니다.', - 'before' => ':attribute 는 :date 앞의 날짜 형식이 되야 합니다.', - 'before_or_equal' => ':attribute 는 :date 이전이거나 같아야 합니다.', - 'between' => [ - 'numeric' => ':attribute 는 :min - :max 사이의 값입니다.', - 'file' => ':attribute 는 :min - :max Kbyte 사이의 값입니다.', - 'string' => ':attribute 는 :min - :max 자 사이의 문자입니다.', - 'array' => ':attribute 는 :min - :max 품목 사이여야 합니다.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute 는 참 또는 거짓의 속성만 지정 가능합니다.', - 'confirmed' => ':attribute 확인이 일치 하지 않습니다.', - 'date' => ':attribute 는 잘못된 날짜 입니다.', - 'date_format' => ':attribute 는 :format 형식과 일치하지 않습니다.', - 'different' => ':attribute 와 :other 는 서로 달라야 합니다.', - 'digits' => ':attribute 는 :digits 자리수여야 합니다.', - 'digits_between' => ':attribute 는 :min - :max 자릿수 사이여야 합니다.', - 'dimensions' => ':attribute에 잘못된 이미지 크기가 있습니다.', - 'distinct' => ':attribute 항목은 중복된 값입니다.', - 'email' => ':attribute 형식이 부정확 합니다.', - 'exists' => '선택한 :attribute 가 부정확 합니다.', - 'file' => ':attribute는 파일이어야 합니다.', - 'filled' => ':attribute 항목은 값이 있어야 합니다.', - 'image' => ':attribute 는 이미지 형식만 가능합니다.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ':attribute 항목은 중복된 값입니다.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => '선택한 :attribute 가 부정확 합니다.', + 'exists' => '선택한 :attribute 가 부정확 합니다.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ':attribute 항목은 값이 있어야 합니다.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => '선택한 :attribute 가 부정확 합니다.', - 'in_array' => ':attribute항목이 :other에 없습니다.', - 'integer' => ':attribute 는 정수이어야 합니다.', - 'ip' => ':attribute 는 유효한 IP 주소이어야 합니다.', - 'ipv4' => ':attribute는 유효한 IPv4 주소여야 합니다.', - 'ipv6' => ':attribute는 유효한 IPv6 주소여야 합니다.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => ':attribute는 유효한 JSON 문자값이어야 합니다.', - 'max' => [ - 'numeric' => ':attribute 는 :max 보다 작아야 합니다.', - 'file' => ':attribute 는 :max Kbyte보다 작아야 합니다.', - 'string' => ':attribute 는 :max 자보다 작아야 합니다.', - 'array' => ':attribute는 :max 항목보다 작어야 합니다.', + 'in' => '선택한 :attribute 가 부정확 합니다.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute 는 :values 형식의 파일만 가능합니다.', - 'mimetypes' => ':attribute 는 :values 형식의 파일만 가능합니다.', - 'min' => [ - 'numeric' => ':attribute 는 최소 :min 이어야 합니다.', - 'file' => ':attribute 는 최소 :min Kbyte 이어야 합니다.', - 'string' => ':attribute 는 최소 :min 자 이어야 합니다.', - 'array' => ':attribute는 최소 :min 항목이어야 합니다.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => '선택한 :attribute 가 부정확 합니다.', - 'numeric' => ':attribute 는 숫자만 가능합니다.', - 'present' => ':attribute 항목이 있어야 합니다.', - 'valid_regex' => '그것은 유효한 정규 표현식이 아닙니다. ', - 'regex' => ':attribute 형식이 부정확 합니다.', - 'required' => ':attribute 항목을 입력해 주세요.', - 'required_if' => ':attribute 항목은 :other가 :value 일때 필요합니다.', - 'required_unless' => ':values에 :other가 있는 경우 : attribute 항목은 필요하지 않습니다.', - 'required_with' => ':attribute 항목은 :values 가 존재할 때 필요합니다.', - 'required_with_all' => ':attribute 항목은 :values가 있을 때 필요합니다.', - 'required_without' => ':attribute 항목은 :values 가 존재하지 않을 때 필요합니다.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => '선택한 :attribute 가 부정확 합니다.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ':attribute 항목이 있어야 합니다.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute 항목을 입력해 주세요.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute 항목은 :other가 :value 일때 필요합니다.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => ':values에 :other가 있는 경우 : attribute 항목은 필요하지 않습니다.', + 'required_with' => ':attribute 항목은 :values 가 존재할 때 필요합니다.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute 항목은 :values 가 존재하지 않을 때 필요합니다.', 'required_without_all' => ':attribute 항목은 :values 가 전혀 없다면 필수입니다.', - 'same' => ':attribute 와 :other 는 일치해야 합니다.', - 'size' => [ - 'numeric' => ':attribute 는 :size 가 되야 합니다.', - 'file' => ':attribute 는 :size Kbyte 가 되야 합니다.', - 'string' => ':attribute 는 :size 자가 되야 합니다.', - 'array' => ':attribute 는 :size 품목에 포함되야 합니다.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute는 글자여야 합니다.', - 'timezone' => ':attribute는 유효한 지역이어야 합니다.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute 는 이미 획득하였습니다.', - 'uploaded' => ':attribute는 업로드 하지 못했습니다.', - 'url' => ':attribute 형식이 부정확 합니다.', 'unique_undeleted' => ':attribute 는 고유의 값만 가져야 합니다.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute 는 이미 획득하였습니다.', + 'uploaded' => ':attribute는 업로드 하지 못했습니다.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/lt-LT/account/general.php b/resources/lang/lt-LT/account/general.php index 6ec3ef8009..3b13aa1e8c 100644 --- a/resources/lang/lt-LT/account/general.php +++ b/resources/lang/lt-LT/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Asmeniniai API raktai', + 'personal_access_token' => 'Asmeninis prieigos raktas', + 'personal_api_keys_success' => 'Asmeninis API raktas :key sėkmingai sukurtas', + 'here_is_api_key' => 'Čia yra jūsų naujas asmeninis prieigos raktas. Tai vienintelis kartas, kada jis yra rodomas, todėl nepraraskite jo! Nuo šiol šį raktą galite naudoti API užklausoms teikti.', 'api_key_warning' => 'Generuodami API prieigos raktą būtinai jį išsisaugokite, nes vėliau jis nebebus matomas.', 'api_base_url' => 'Jūsų API bazinė nuoroda yra:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API prieigos raktai nustos galioti:', 'api_reference' => 'Peržiūrėkite API informaciją, kad rastumėte konkrečius API galinius taškus ir papildomą API dokumentaciją.', 'profile_updated' => 'Paskyra atnaujinta sėkmingai', + 'no_tokens' => 'Nesate sukūrę jokių asmeninių prieigos raktų.', ); diff --git a/resources/lang/lt-LT/admin/accessories/general.php b/resources/lang/lt-LT/admin/accessories/general.php index f208fb2c1d..8451fe88dc 100644 --- a/resources/lang/lt-LT/admin/accessories/general.php +++ b/resources/lang/lt-LT/admin/accessories/general.php @@ -8,8 +8,8 @@ return array( 'create' => 'Sukurti priedą', 'edit' => 'Redaguoti priedą', 'eula_text' => 'Kategorijos licencinis sutikimas (EULA)', - 'eula_text_help' => 'Šis laukas leidžia pritaikyti licencinius sutikimus (EULA) skirtingoms įrangos grupėms. Jei jūs turite vieną EULA visai įrangai, tuomet galite pažymėti žemiau esantį langelį, kad visuomet būtų naudojamas pirminis numatytasis.', - 'require_acceptance' => 'Reikalauti, kad naudotojai patvirtintų šios kategorijos įrangos gavimą.', + 'eula_text_help' => 'Šis laukas leidžia pritaikyti licencinius sutikimus (EULA) skirtingoms turto grupėms. Jei jūs turite vieną EULA visam turtui, tuomet galite pažymėti žemiau esantį langelį, kad visuomet būtų naudojamas pirminis numatytasis.', + 'require_acceptance' => 'Reikalauti, kad naudotojai patvirtintų šios kategorijos turto gavimą.', 'no_default_eula' => 'Nerastas pirminis numatytasis licencinis sutikimas (EULA). Pridėkite jį nustatymuose.', 'total' => 'Iš viso', 'remaining' => 'Laisva', diff --git a/resources/lang/lt-LT/admin/accessories/message.php b/resources/lang/lt-LT/admin/accessories/message.php index 41afaedb15..3ca3df6450 100644 --- a/resources/lang/lt-LT/admin/accessories/message.php +++ b/resources/lang/lt-LT/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Priedo nepavyko išduoti, bandykite dar kartą', 'success' => 'Priedas išduotas sėkmingai.', 'unavailable' => 'Priedo išduoti negalima. Patikrinkite likutį', - 'user_does_not_exist' => 'Neteisingas naudotojas. Bandykite dar kartą.' + 'user_does_not_exist' => 'Neteisingas naudotojas. Bandykite dar kartą.', + 'checkout_qty' => array( + 'lte' => 'Šiuo metu yra tik vienas šio tipo priedas, o jūs bandote išduoti :checkout_qty. Pakoreguokite išduodamą arba bendrą šio priedo atsargų kiekį ir bandykite dar kartą.|Yra :number_currently_remaining šio priedo vienetai (-ų), o jūs bandote išduoti :checkout_qty. Pakoreguokite išduodamą arba bendrą šio priedo atsargų kiekį ir bandykite dar kartą.', + ), + ), 'checkin' => array( diff --git a/resources/lang/lt-LT/admin/asset_maintenances/form.php b/resources/lang/lt-LT/admin/asset_maintenances/form.php index f9037a3a39..e2e8483f96 100644 --- a/resources/lang/lt-LT/admin/asset_maintenances/form.php +++ b/resources/lang/lt-LT/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Įrangos aptarnavimo tipas', + 'asset_maintenance_type' => 'Turto aptarnavimo tipas', 'title' => 'Antraštė', 'start_date' => 'Pradžios data', 'completion_date' => 'Pabaigos data', 'cost' => 'Kaina', 'is_warranty' => 'Išplėstinė garantija', - 'asset_maintenance_time' => 'Įrangos aptarnavimo trukmė (dienomis)', + 'asset_maintenance_time' => 'Turto aptarnavimo trukmė (dienomis)', 'notes' => 'Pastabos', - 'update' => 'Atnaujinti įrangos aptarnavimo informaciją', - 'create' => 'Registruoti įrangos aptarnavimą' + 'update' => 'Atnaujinti turto aptarnavimo informaciją', + 'create' => 'Registruoti turto aptarnavimą' ]; diff --git a/resources/lang/lt-LT/admin/asset_maintenances/general.php b/resources/lang/lt-LT/admin/asset_maintenances/general.php index edc8efe0ec..9e0eba4da9 100644 --- a/resources/lang/lt-LT/admin/asset_maintenances/general.php +++ b/resources/lang/lt-LT/admin/asset_maintenances/general.php @@ -1,10 +1,10 @@ 'Įrangos aptarnavimas', - 'edit' => 'Redaguoti įrangos aptarnavimą', - 'delete' => 'Panaikinti įrangos aptarnavimą', - 'view' => 'Peržiūrėti įrangos aptarnavimo informaciją', + 'asset_maintenances' => 'Turto aptarnavimas', + 'edit' => 'Redaguoti turto aptarnavimą', + 'delete' => 'Panaikinti turto aptarnavimą', + 'view' => 'Peržiūrėti turto aptarnavimo informaciją', 'repair' => 'Remontas', 'maintenance' => 'Aptarnavimas', 'upgrade' => 'Pagerinimas', diff --git a/resources/lang/lt-LT/admin/asset_maintenances/message.php b/resources/lang/lt-LT/admin/asset_maintenances/message.php index 2b28b99f28..7971ac90c1 100644 --- a/resources/lang/lt-LT/admin/asset_maintenances/message.php +++ b/resources/lang/lt-LT/admin/asset_maintenances/message.php @@ -1,19 +1,19 @@ 'Jūsų ieškomas įrangos aptarnavimas nebuvo rastas!', + 'not_found' => 'Jūsų ieškomas turto aptarnavimas nebuvo rastas!', 'delete' => [ - 'confirm' => 'Ar tikrai norite panaikinti šį įrangos aptarnavimą?', - 'error' => 'Bandant panaikinti įrangos aptarnavimą įvyko klaida. Bandykite dar kartą.', - 'success' => 'Įrangos aptarnavimas panaikintas sėkmingai.', + 'confirm' => 'Ar tikrai norite panaikinti šį turto aptarnavimą?', + 'error' => 'Bandant panaikinti turto aptarnavimą įvyko klaida. Bandykite dar kartą.', + 'success' => 'Turto aptarnavimas panaikintas sėkmingai.', ], 'create' => [ - 'error' => 'Įrangos aptarnavimas nebuvo sukurtas, bandykite dar kartą.', - 'success' => 'Įrangos aptarnavimas sukurtas sėkmingai.', + 'error' => 'Turto aptarnavimas nebuvo sukurtas, bandykite dar kartą.', + 'success' => 'Turto aptarnavimas sukurtas sėkmingai.', ], 'edit' => [ - 'error' => 'Įrangos aptarnavimas nebuvo pakeistas, bandykite dar kartą.', - 'success' => 'Įrangos aptarnavimas redaguotas sėkmingai.', + 'error' => 'Turto aptarnavimas nebuvo pakeistas, bandykite dar kartą.', + 'success' => 'Turto aptarnavimas redaguotas sėkmingai.', ], 'asset_maintenance_incomplete' => 'Nebaigta', 'warranty' => 'Garantinis', diff --git a/resources/lang/lt-LT/admin/asset_maintenances/table.php b/resources/lang/lt-LT/admin/asset_maintenances/table.php index 00190729ab..244411cee5 100644 --- a/resources/lang/lt-LT/admin/asset_maintenances/table.php +++ b/resources/lang/lt-LT/admin/asset_maintenances/table.php @@ -1,8 +1,8 @@ 'Įrangos aptarnavimas', - 'asset_name' => 'Įrangos pavadinimas', + 'title' => 'Turto aptarnavimas', + 'asset_name' => 'Turto pavadinimas', 'is_warranty' => 'Garantija', 'dl_csv' => 'Atsisiųsti CSV', ]; diff --git a/resources/lang/lt-LT/admin/categories/general.php b/resources/lang/lt-LT/admin/categories/general.php index ad58f44a3e..6f0eccbddc 100644 --- a/resources/lang/lt-LT/admin/categories/general.php +++ b/resources/lang/lt-LT/admin/categories/general.php @@ -1,7 +1,7 @@ 'Įrangos kategorijos', + 'asset_categories' => 'Turto kategorijos', 'category_name' => 'Kategorijos pavadinimas', 'checkin_email' => 'Siųsti el. laišką naudotojui, paimant/išduodant turtą.', 'checkin_email_notification' => 'Šis naudotojas gaus el. laišką, paimant/išduodant turtą.', @@ -11,9 +11,9 @@ return array( 'email_will_be_sent_due_to_global_eula' => 'Naudotojui bus išsiųstas el. laiškas, nes yra naudojamas visuotinis licencinis sutikimas (EULA).', 'email_will_be_sent_due_to_category_eula' => 'Naudotojui bus išsiųstas el. laiškas, nes šiai kategorijai nustatytas licencinis sutikimas (EULA).', 'eula_text' => 'Kategorijos licencinis sutikimas (EULA)', - 'eula_text_help' => 'Šis laukas leidžia pritaikyti licencinį sutikimą (EULA) atskiroms įrangos grupėms. Jei jūs naudojate vieną EULA visoms įrangos grupėms, tuomet pažymėkite žemiau esantį langelį, kad būtų naudojamas pirminis numatytasis EULA.', + 'eula_text_help' => 'Šis laukas leidžia pritaikyti licencinį sutikimą (EULA) atskiroms turto grupėms. Jei jūs naudojate vieną EULA visoms turto grupėms, tuomet pažymėkite žemiau esantį langelį, kad būtų naudojamas pirminis numatytasis EULA.', 'name' => 'Kategorijos pavadinimas', - 'require_acceptance' => 'Reikalauti, kad naudotojai patvirtintų šios kategorijos įrangos gavimą.', + 'require_acceptance' => 'Reikalauti, kad naudotojai patvirtintų šios kategorijos turto gavimą.', 'required_acceptance' => 'Šiam naudotojui bus išsiųstas el. laiškas su nuoroda šio elemento gavimo patvirtinimui.', 'required_eula' => 'Šiam naudotojui bus išsiųsta licencinio sutikimo (EULA) kopija', 'no_default_eula' => 'Nerastas pirminis numatytasis licencinis sutikimas (EULA). Pridėkite jį nustatymuose.', diff --git a/resources/lang/lt-LT/admin/categories/table.php b/resources/lang/lt-LT/admin/categories/table.php index 49b5cd36e3..acf91cd841 100644 --- a/resources/lang/lt-LT/admin/categories/table.php +++ b/resources/lang/lt-LT/admin/categories/table.php @@ -5,6 +5,6 @@ return array( 'id' => 'ID', 'parent' => 'Pagrindinė', 'require_acceptance' => 'Sutikimas', - 'title' => 'Įrangos kategorijos pavadinimas', + 'title' => 'Turto kategorijos pavadinimas', ); diff --git a/resources/lang/lt-LT/admin/companies/general.php b/resources/lang/lt-LT/admin/companies/general.php index efe68dc94e..ce9eca1576 100644 --- a/resources/lang/lt-LT/admin/companies/general.php +++ b/resources/lang/lt-LT/admin/companies/general.php @@ -3,5 +3,5 @@ return [ 'select_company' => 'Pasirinkite įmonę', 'about_companies' => 'Apie įmones', - 'about_companies_description' => ' Galite naudoti įmones kaip paprastą informacinį lauką arba norėdami apriboti įrenginių matomumą ir prieinamumą konkrečios įmonės naudotojams, Administratoriaus nustatymuose įjungę „Pilną kelių įmonių palaikymą“.', + 'about_companies_description' => ' Galite naudoti įmones kaip paprastą informacinį lauką arba norėdami apriboti turto matomumą ir prieinamumą konkrečios įmonės naudotojams, Administratoriaus nustatymuose įjungę „Pilną kelių įmonių palaikymą“.', ]; diff --git a/resources/lang/lt-LT/admin/consumables/general.php b/resources/lang/lt-LT/admin/consumables/general.php index d90754d056..8a7f930a1b 100644 --- a/resources/lang/lt-LT/admin/consumables/general.php +++ b/resources/lang/lt-LT/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Likutis', 'total' => 'Iš viso', 'update' => 'Atnaujinti eksploatacinę medžiagą', + 'inventory_warning' => 'Šių eksploatacinių medžiagų atsargos yra mažesnės už minimalų kiekį :min_count', ); diff --git a/resources/lang/lt-LT/admin/consumables/message.php b/resources/lang/lt-LT/admin/consumables/message.php index 9eb01c25e0..ce694f402b 100644 --- a/resources/lang/lt-LT/admin/consumables/message.php +++ b/resources/lang/lt-LT/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'Kategorija turi būti eksploatacinių medžiagų kategorija.', 'does_not_exist' => 'Tokios eksploatacinės medžiagos nėra.', 'create' => array( diff --git a/resources/lang/lt-LT/admin/custom_fields/general.php b/resources/lang/lt-LT/admin/custom_fields/general.php index cc7e7ed470..6a6872cdaa 100644 --- a/resources/lang/lt-LT/admin/custom_fields/general.php +++ b/resources/lang/lt-LT/admin/custom_fields/general.php @@ -5,7 +5,7 @@ return [ 'manage' => 'Tvarkyti', 'field' => 'Laukas', 'about_fieldsets_title' => 'Apie laukų grupes', - 'about_fieldsets_text' => 'Laukų rinkiniai leidžia kurti pritaikytų laukų grupes, kurios dažnai naudojamos konkretiems įrangos modelių tipams.', + 'about_fieldsets_text' => 'Laukų rinkiniai leidžia kurti pritaikytų laukų grupes, kurios dažnai naudojamos konkretiems turto modelių tipams.', 'custom_format' => 'Tinkintas Regex formatas...', 'encrypt_field' => 'Šifruoti šio lauko reikšmę duomenų bazėje', 'encrypt_field_help' => 'ĮSPĖJIMAS: Užšifravus lauką, jo nebebus galima ieškoti.', @@ -37,7 +37,7 @@ return [ 'show_in_email' => 'Įtraukti šio lauko reikšmę į išdavimo el. laiškus, siunčiamus naudotojams? Šifruotų laukų į el. laiškus įtraukti negalima', 'show_in_email_short' => 'Įtraukti į el. laiškus.', 'help_text' => 'Pagalbos tekstas', - 'help_text_description' => 'Tai yra nebūtinas tekstas, kuris redaguojant įrangą, bus rodomas po formos elementais, kad suteiktų kontekstą tam laukui.', + 'help_text_description' => 'Tai yra nebūtinas tekstas, kuris redaguojant turtą, bus rodomas po formos elementais, kad suteiktų kontekstą tam laukui.', 'about_custom_fields_title' => 'Apie pritaikytus laukus', 'about_custom_fields_text' => 'Pritaikyti laukai leidžia turtui pridėti pasirinktinių atributų.', 'add_field_to_fieldset' => 'Įtraukti lauką į rinkinį', @@ -46,16 +46,16 @@ return [ 'reorder' => 'Perrikiuoti', 'db_field' => 'DB laukas', 'db_convert_warning' => 'ĮSPĖJIMAS. Šis laukas pritaikytų laukų lentelėje yra kaip :db_column, bet turėtų būti :expected.', - 'is_unique' => 'Ši reikšmė tui būti unikali visai įrangai', + 'is_unique' => 'Ši reikšmė turi būti unikali visam turtui', 'unique' => 'Unikalu', - 'display_in_user_view' => 'Leisti įrangą gavusiam naudotojui peržiūrėti šias reikšmes puslapyje „Peržiūrėti gautą įrangą“', + 'display_in_user_view' => 'Leisti turtą gavusiam naudotojui peržiūrėti šias reikšmes puslapyje „Peržiūrėti gautą turtą“', 'display_in_user_view_table' => 'Matoma naudotojui', 'auto_add_to_fieldsets' => 'Automatiškai pridėti prie kiekvieno naujo laukų rinkinio', 'add_to_preexisting_fieldsets' => 'Pridėti prie esamų laukų rinkinių', 'show_in_listview' => 'Standartiškai rodyti sąrašo rodiniuose. Įgalioti naudotojai vis tiek galės pasirinkti, rodyti ar slėpti stulpelį, naudodami parinkiklį', 'show_in_listview_short' => 'Rodyti sąrašuose', - 'show_in_requestable_list_short' => 'Rodyti užsakomos įrangos sąraše', - 'show_in_requestable_list' => 'Rodyti reikšmę užsakomos įrangos sąraše. Šifruoti laukai nebus rodomi', + 'show_in_requestable_list_short' => 'Rodyti užsakomo turto sąraše', + 'show_in_requestable_list' => 'Rodyti reikšmę užsakomo turto sąraše. Šifruoti laukai nebus rodomi', 'encrypted_options' => 'Šis laukas yra užšifruotas, todėl kai kurios rodymo parinktys nebus pasiekiamos.', ]; diff --git a/resources/lang/lt-LT/admin/custom_fields/message.php b/resources/lang/lt-LT/admin/custom_fields/message.php index 6ed6858fa4..a23d097e97 100644 --- a/resources/lang/lt-LT/admin/custom_fields/message.php +++ b/resources/lang/lt-LT/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Tokio lauko nėra.', 'already_added' => 'Laukas jau pridėtas', + 'none_selected' => 'Nepasirinktas joks laukas', 'create' => array( 'error' => 'Laukas nebuvo sukurtas, bandykite dar kartą.', diff --git a/resources/lang/lt-LT/admin/depreciations/general.php b/resources/lang/lt-LT/admin/depreciations/general.php index 14b79782f2..463fccd8d9 100644 --- a/resources/lang/lt-LT/admin/depreciations/general.php +++ b/resources/lang/lt-LT/admin/depreciations/general.php @@ -1,9 +1,9 @@ 'Apie įrangos nusidėvėjimą', - 'about_depreciations' => 'Jūs galite nustatyti įrangos nusidėvėjimą pagal tiesinį nusidėvėjimo modelį.', - 'asset_depreciations' => 'Įrangos nusidėvėjimas', + 'about_asset_depreciations' => 'Apie turto nusidėvėjimą', + 'about_depreciations' => 'Jūs galite nustatyti turto nusidėvėjimą pagal tiesinį nusidėvėjimo modelį.', + 'asset_depreciations' => 'Turto nusidėvėjimas', 'create' => 'Sukurti nusidėvėjimą', 'depreciation_name' => 'Nusidėvėjimo pavadinimas', 'depreciation_min' => 'Minimali nusidėvėjimo reikšmė', diff --git a/resources/lang/lt-LT/admin/hardware/form.php b/resources/lang/lt-LT/admin/hardware/form.php index 4c203ecd2c..8a5848ea1f 100644 --- a/resources/lang/lt-LT/admin/hardware/form.php +++ b/resources/lang/lt-LT/admin/hardware/form.php @@ -1,16 +1,16 @@ 'Patvirtinkite masinį įrangos panaikinimą', - 'bulk_restore' => 'Patvirtinkite masinį įrangos atkūrimą', - 'bulk_delete_help' => 'Peržiūrėkite įrangą, kurią norite panaikinti. Panaikintą įrangą galima atkurti, tačiau ji nebebus susieta su tais naudotojais, kuriems šiuo metu yra išduota.', - 'bulk_restore_help' => 'Peržiūrėkite įrangą, kurią norite atkurti. Atkūrus įrangą, ji nebus susieta su tais naudotojais, kuriems anksčiau buvo išduota.', - 'bulk_delete_warn' => 'Bus panaikinta įrangos vienetų: :asset_count.', - 'bulk_restore_warn' => 'Bus atkurta įrangos vienetų: :asset_count.', - 'bulk_update' => 'Masinis įrangos atnaujinimas', - 'bulk_update_help' => 'Ši forma suteikia galimybę atnaujinti iškart kelis įrangos vienetus. Užpildykite tik tuos laukus, kuriuos norite pakeisti. Laukai, kuriuos paliksite tuščius, liks nepakeisti. ', - 'bulk_update_warn' => 'Ketinate redaguoti vienos įrangos ypatybes.|Ketinate redaguoti :asset_count įrangų ypatybes.', - 'bulk_update_with_custom_field' => 'Atminkite, kad įranga yra :asset_model_count skirtingų modelių tipų.', + 'bulk_delete' => 'Patvirtinkite masinį turto panaikinimą', + 'bulk_restore' => 'Patvirtinkite masinį turto atkūrimą', + 'bulk_delete_help' => 'Peržiūrėkite turtą, kurį norite panaikinti. Panaikintą turtą galima atkurti, tačiau jis nebebus susietas su tais naudotojais, kuriems šiuo metu yra išduotas.', + 'bulk_restore_help' => 'Peržiūrėkite turtą, kurį norite atkurti. Atkūrus turtą, jis nebus susietas su tais naudotojais, kuriems anksčiau buvo išduotas.', + 'bulk_delete_warn' => 'Bus panaikinta turto vienetų: :asset_count.', + 'bulk_restore_warn' => 'Bus atkurta turto vienetų: :asset_count.', + 'bulk_update' => 'Masinis turto atnaujinimas', + 'bulk_update_help' => 'Ši forma suteikia galimybę atnaujinti iškart kelis turto vienetus. Užpildykite tik tuos laukus, kuriuos norite pakeisti. Laukai, kuriuos paliksite tuščius, liks nepakeisti. ', + 'bulk_update_warn' => 'Ketinate redaguoti vieno turto vieneto ypatybes.|Ketinate redaguoti :asset_count turto vienetų ypatybes.', + 'bulk_update_with_custom_field' => 'Atminkite, kad turtas yra :asset_model_count skirtingų modelių tipų.', 'bulk_update_model_prefix' => 'Modeliams', 'bulk_update_custom_field_unique' => 'Tai unikalus laukas, todėl jo negalima redaguoti masinio redagavimo būdu.', 'checkedout_to' => 'Išduota', @@ -18,7 +18,7 @@ return [ 'checkin_date' => 'Paėmimo data', 'checkout_to' => 'Išduoti', 'cost' => 'Pirkimo kaina', - 'create' => 'Sukurti įrangą', + 'create' => 'Sukurti turtą', 'date' => 'Pirkimo data', 'depreciation' => 'Nusidėvėjimas', 'depreciates_on' => 'Nusidėvėjimo data', @@ -29,16 +29,16 @@ return [ 'expected_checkin' => 'Numatoma paėmimo data', 'expires' => 'Baigsis', 'fully_depreciated' => 'Visiškai nusidėvėjo', - 'help_checkout' => 'Jei norite nedelsiant išduoti šią įrangą, aukščiau esančiame būsenų sąraše pasirinkite „Paruošta naudojimui“. ', + 'help_checkout' => 'Jei norite nedelsiant išduoti šį turtą, aukščiau esančiame būsenų sąraše pasirinkite „Paruoštas naudojimui“. ', 'mac_address' => 'MAC adresas', 'manufacturer' => 'Gamintojas', 'model' => 'Modelis', 'months' => 'mėnesiai', - 'name' => 'Įrangos pavadinimas', + 'name' => 'Turto pavadinimas', 'notes' => 'Pastabos', 'order' => 'Užsakymo numeris', 'qr' => 'QR kodas', - 'requestable' => 'Naudotojai gali užsakyti šią įrangą', + 'requestable' => 'Naudotojai gali užsakyti šį turtą', 'redirect_to_all' => 'Grįžti prie visų :type', 'redirect_to_type' => 'Eiti į :type', 'redirect_to_checked_out_to' => 'Eiti į išduotus', @@ -46,16 +46,16 @@ return [ 'serial' => 'Serijos numeris', 'status' => 'Būsena', 'tag' => 'Inventorinis numeris', - 'update' => 'Įrangos atnaujinimas', + 'update' => 'Turto atnaujinimas', 'warranty' => 'Garantija', 'warranty_expires' => 'Garantija baigiasi', 'years' => 'metai', - 'asset_location' => 'Atnaujinti įrangos vietą', + 'asset_location' => 'Atnaujinti turto vietą', 'asset_location_update_default_current' => 'Atnaujinti numatytąją vietą IR faktinę vietą', 'asset_location_update_default' => 'Atnaujinti tik numatytąją vietą', 'asset_location_update_actual' => 'Atnaujinti tik faktinę vietą', - 'asset_not_deployable' => 'Įrangos būsena netinkama išdavimui, todėl ši įranga negali būti išduota.', - 'asset_deployable' => 'Įrangos būsena tinkama išdavimui, todėl ši įranga gali būti išduota.', + 'asset_not_deployable' => 'Turto būsena netinkama išdavimui, todėl šis turtas negali būti išduotas.', + 'asset_deployable' => 'Turto būsena tinkama išdavimui, todėl šis turtas gali būti išduotas.', 'processing_spinner' => 'Apdorojama... (Dideliems failams gali šiek tiek užtrukti)', 'optional_infos' => 'Papildoma informacija', 'order_details' => 'Su užsakymu susijusi informacija' diff --git a/resources/lang/lt-LT/admin/hardware/general.php b/resources/lang/lt-LT/admin/hardware/general.php index 4502d02237..dbeaf08e48 100644 --- a/resources/lang/lt-LT/admin/hardware/general.php +++ b/resources/lang/lt-LT/admin/hardware/general.php @@ -1,33 +1,33 @@ 'Apie įrangą', - 'about_assets_text' => 'Įranga, tai turtas, kurį galima sekti pagal serijos ar inventoriaus numerį. Įprastai, tai yra didesnės vertės daiktai, kurių individualus identifikavimas yra svarbus.', + 'about_assets_title' => 'Apie turtą', + 'about_assets_text' => 'Turtas, tai daiktai, kuriuos galima sekti pagal serijinį ar inventorinį numerį. Įprastai, tai yra didesnės vertės daiktai, kurių individualus identifikavimas yra svarbus.', 'archived' => 'Archyvuota', - 'asset' => 'Įranga', - 'bulk_checkout' => 'Išduoti įrangą', - 'bulk_checkin' => 'Paimti įrangą', - 'checkin' => 'Paimti įrangą', - 'checkout' => 'Išduoti įrangą', - 'clone' => 'Klonuoti įrangą', + 'asset' => 'Turtas', + 'bulk_checkout' => 'Išduoti turtą', + 'bulk_checkin' => 'Paimti turtą', + 'checkin' => 'Paimti turtą', + 'checkout' => 'Išduoti turtą', + 'clone' => 'Klonuoti turtą', 'deployable' => 'Galima naudoti', - 'deleted' => 'Ši įranga buvo panaikinta.', - 'delete_confirm' => 'Ar tikrai norite panaikinti šią įrangą?', - 'edit' => 'Redaguoti įrangą', - 'model_deleted' => 'Šis įrangos modelis buvo panaikintas. Pirmiau turite atkurti modelį, tada galėsite atkurti įrangą.', - 'model_invalid' => 'Šiai įrangai šis modelis netinka.', - 'model_invalid_fix' => 'Įranga turi būti atnaujinta parenkant tinkamą įrangos modelį, kad ją būtų galima išduoti/paimti ar audituoti.', + 'deleted' => 'Šis turtas buvo panaikintas.', + 'delete_confirm' => 'Ar tikrai norite panaikinti šį turtą?', + 'edit' => 'Redaguoti turtą', + 'model_deleted' => 'Šis turto modelis buvo panaikintas. Pirmiau turite atkurti modelį, tada galėsite atkurti patį turtą.', + 'model_invalid' => 'Šiam turtui šis modelis netinka.', + 'model_invalid_fix' => 'Turtas turi būti atnaujintas parenkant tinkamą turto modelį, kad jį būtų galima išduoti/paimti ar audituoti.', 'requestable' => 'Užsakoma', 'requested' => 'Užsakyta', 'not_requestable' => 'Neužsakoma', 'requestable_status_warning' => 'Nekeisti užsakomos įrangos būsenos', - 'restore' => 'Atkurti įrangą', + 'restore' => 'Atkurti turtą', 'pending' => 'Ruošiama', 'undeployable' => 'Negalimas naudoti', - 'undeployable_tooltip' => 'Ši įranga yra pažymėta kaip neišduotina, todėl šiuo metu jos negalima išduoti.', - 'view' => 'Peržiūrėti įrangą', + 'undeployable_tooltip' => 'Šis turtas yra pažymėtas kaip neišduotinas, todėl šiuo metu jo negalima išduoti.', + 'view' => 'Peržiūrėti turtą', 'csv_error' => 'Jūsų CSV faile yra klaida:', - 'import_text' => '

Įkelkite CSV, kuriame yra įrangos istorija. Įranga ir naudotojai PRIVALO būti sistemoje, kitaip jie bus praleisti. Atliekant istorijos importavimą, įranga yra susiejama pagal inventorinį numerį. Bandysime rasti atitinkantį naudotoją pagal jūsų pateiktą naudotojo vardą ir žemiau pasirinktus kriterijus. Jei nepasirinksite jokio kriterijaus, tiesiog bus bandoma atlikti susiejimą pagal naudotojo vardo formatą, kurį pasirininkote Administratorius > Bendrieji nustatymai nustatymuose.

Į CSV įtraukti laukai turi atitikti antraštes: Inventorinis numeris, Pavadinimas, Išdavimo data, Paėmimo data. Visi papildomi laukai bus ignoruojami.

Paėmimo data: tuščia arba nurodyta būsima paėmimo data – įranga bus išduota susijusiam naudotojui. Nepasirinkus stulpelio „Paėmimo data“, bus sukurta paėmimo data su šiandienos data.

+ 'import_text' => '

Įkelkite CSV, kuriame yra turto istorija. Turtas ir naudotojai PRIVALO būti sistemoje, kitaip jie bus praleisti. Atliekant istorijos importavimą, turtas yra susiejamas pagal inventorinį numerį. Bus bandoma rasti atitinkantį naudotoją pagal jūsų pateiktą naudotojo vardą ir žemiau pasirinktus kriterijus. Jei nepasirinksite jokio kriterijaus, tiesiog bus bandoma atlikti susiejimą pagal naudotojo vardo formatą, kurį pasirinkote Administratorius > Bendrieji nustatymai nustatymuose.

Į CSV įtraukti laukai turi atitikti antraštes: Inventorinis numeris, Pavadinimas, Išdavimo data, Paėmimo data. Visi papildomi laukai bus ignoruojami.

Paėmimo data: tuščia arba nurodyta būsima paėmimo data – turtas bus priskirtas susijusiam naudotojui. Nepasirinkus stulpelio „Paėmimo data“, bus sukurta paėmimo data su šiandienos data.

', 'csv_import_match_f-l' => 'Bandyti susieti naudotojus pagal formatą vardas.pavardė (vardenis.pavardenis)', 'csv_import_match_initial_last' => 'Bandyti susieti naudotojus pagal formatą pirmoji vardo raidė ir pavardė (vpavardenis)', diff --git a/resources/lang/lt-LT/admin/hardware/message.php b/resources/lang/lt-LT/admin/hardware/message.php index 9a93985916..db8a4d61fc 100644 --- a/resources/lang/lt-LT/admin/hardware/message.php +++ b/resources/lang/lt-LT/admin/hardware/message.php @@ -2,38 +2,38 @@ return [ - 'undeployable' => 'Įspėjimas: Ši įranga pažymėta kaip negalima išduoti. Jei ši būsena pasikeitė, atnaujinkite ją.', - 'does_not_exist' => 'Tokios įrangos nėra.', - 'does_not_exist_var'=> 'Įranga su numeriu :asset_tag nerasta.', + 'undeployable' => 'Įspėjimas: Šis turtas pažymėtas kaip negalimas išduoti. Jei šio turto būsena pasikeitė, atnaujinkite būsenos žymą.', + 'does_not_exist' => 'Tokio turto nėra.', + 'does_not_exist_var'=> 'Turtas su numeriu :asset_tag nerastas.', 'no_tag' => 'Nenurodytas inventorinis numeris.', - 'does_not_exist_or_not_requestable' => 'Tokios įrangos nėra arba jos negalima užsakyti.', - 'assoc_users' => 'Ši įranga šiuo metu yra išduota naudotojui ir negali būti panaikinta. Pirmiausia paimkite įrangą ir tuomet vėl bandykite panaikinti. ', - 'warning_audit_date_mismatch' => 'Šios įrangos kito audito data (:next_audit_date) yra ankstesnė už paskutinio audito datą (:last_audit_date). Atnaujinkite kito audito datą.', + 'does_not_exist_or_not_requestable' => 'Tokio turto nėra arba jo negalima užsakyti.', + 'assoc_users' => 'Šis turtas šiuo metu yra išduotas naudotojui ir negali būti panaikintas. Pirmiausia paimkite turtą ir tuomet vėl bandykite jį panaikinti. ', + 'warning_audit_date_mismatch' => 'Šio turto kito audito data (:next_audit_date) yra ankstesnė už paskutinio audito datą (:last_audit_date). Atnaujinkite kito audito datą.', 'create' => [ - 'error' => 'Įrangos sukurti nepavyko, bandykite dar kartą.', - 'success' => 'Įranga sukurta sėkmingai.', - 'success_linked' => 'Įranga su žyma :tag sukurta sėkmingai. Spustelėkite čia, kad peržiūrėtumėte.', + 'error' => 'Turto sukurti nepavyko, bandykite dar kartą.', + 'success' => 'Turtas sukurtas sėkmingai.', + 'success_linked' => 'Turtas su žyma :tag sukurtas sėkmingai. Spustelėkite čia, kad peržiūrėtumėte.', ], 'update' => [ - 'error' => 'Įrangos atnaujinti nepavyko, bandykite dar kartą', - 'success' => 'Įranga atnaujinta sėkmingai.', - 'encrypted_warning' => 'Įranga buvo atnaujinta sėkmingai, tačiau dėl trūkstamų teisių, užšifruoti pasirinktiniai laukai nebuvo atnaujinti', + 'error' => 'Turto atnaujinti nepavyko, bandykite dar kartą', + 'success' => 'Turtas atnaujintas sėkmingai.', + 'encrypted_warning' => 'Turtas buvo atnaujintas sėkmingai, tačiau dėl nepakankamų teisių, užšifruoti pasirinktiniai laukai nebuvo atnaujinti', 'nothing_updated' => 'Nebuvo pasirinktas nei vienas laukas, todėl niekas nebuvo atnaujinta.', - 'no_assets_selected' => 'Nebuvo pasirinkta jokia įranga, todėl nieko nebuvo atnaujinta.', - 'assets_do_not_exist_or_are_invalid' => 'Pasirinkta įranga negali būti atnaujinta.', + 'no_assets_selected' => 'Nebuvo pasirinkta jokio turto, todėl nieko nebuvo atnaujinta.', + 'assets_do_not_exist_or_are_invalid' => 'Pasirinktas turtas negali būti atnaujintas.', ], 'restore' => [ - 'error' => 'Įrangos atkurti nepavyko, bandykite dar kartą', - 'success' => 'Įranga atkurta sėkmingai.', - 'bulk_success' => 'Įranga atkurta sėkmingai.', - 'nothing_updated' => 'Nebuvo pasirinkta jokia įranga, todėl nieko nebuvo atkurta.', + 'error' => 'Turto atkurti nepavyko, bandykite dar kartą', + 'success' => 'Turtas atkurtas sėkmingai.', + 'bulk_success' => 'Turtas atkurtas sėkmingai.', + 'nothing_updated' => 'Nebuvo pasirinkta jokio turto, todėl nieko nebuvo atkurta.', ], 'audit' => [ - 'error' => 'Įrangos auditas nesėkmingas: :error ', + 'error' => 'Turto auditas nesėkmingas: :error ', 'success' => 'Turto auditas sėkmingai užregistruotas.', ], @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Vykdyti importavimą', 'error' => 'Kai kurie elementai nebuvo tinkamai importuoti.', 'errorDetail' => 'Šie elementai nebuvo importuoti dėl klaidų.', 'success' => 'Jūsų failas buvo importuotas', @@ -63,31 +64,31 @@ return [ 'delete' => [ - 'confirm' => 'Ar tikrai norite panaikinti šią įrangą?', - 'error' => 'Bandant panaikinti įrangą įvyko klaida. Bandykite dar kartą.', - 'nothing_updated' => 'Nebuvo pasirinkta jokia įranga, todėl nieko nebuvo panaikinta.', - 'success' => 'Įranga sėkmingai panaikinta.', + 'confirm' => 'Ar tikrai norite panaikinti šį turtą?', + 'error' => 'Bandant panaikinti turtą įvyko klaida. Bandykite dar kartą.', + 'nothing_updated' => 'Nebuvo pasirinkta jokio turto, todėl nieko nebuvo panaikinta.', + 'success' => 'Turtas sėkmingai panaikintas.', ], 'checkout' => [ - 'error' => 'Įranga nebuvo išduota, bandykite dar kartą', - 'success' => 'Įranga išduota sėkmingai.', + 'error' => 'Turtas nebuvo išduotas, bandykite dar kartą', + 'success' => 'Turtas išduotas sėkmingai.', 'user_does_not_exist' => 'Neteisingas naudotojas. Bandykite dar kartą.', - 'not_available' => 'Ši įranga negali būti išduodama!', - 'no_assets_selected' => 'Turite pasirinkti bent vieną įrangą iš sąrašo', + 'not_available' => 'Šis turtas negali būti išduodamas!', + 'no_assets_selected' => 'Turite pasirinkti bent vieną turto vienetą iš sąrašo', ], 'checkin' => [ - 'error' => 'Įranga nebuvo paimta, bandykite dar kartą', - 'success' => 'Įranga paimta sėkmingai.', + 'error' => 'Turtas nebuvo paimtas, bandykite dar kartą', + 'success' => 'Turtas paimtas sėkmingai.', 'user_does_not_exist' => 'Neteisingas naudotojas. Bandykite dar kartą.', - 'already_checked_in' => 'Ši įranga jau yra paimta.', + 'already_checked_in' => 'Šis turtas jau yra paimtas.', ], 'requests' => [ - 'error' => 'Įranga nebuvo užsakyta, bandykite dar kartą', - 'success' => 'Įranga užsakyta sėkmingai.', + 'error' => 'Turtas nebuvo užsakytas, bandykite dar kartą', + 'success' => 'Turtas užsakytas sėkmingai.', 'canceled' => 'Išdavimo prašymas sėkmingai atšauktas', ], diff --git a/resources/lang/lt-LT/admin/hardware/table.php b/resources/lang/lt-LT/admin/hardware/table.php index 320cb80bb1..46db8515c5 100644 --- a/resources/lang/lt-LT/admin/hardware/table.php +++ b/resources/lang/lt-LT/admin/hardware/table.php @@ -21,7 +21,7 @@ return [ 'purchase_date' => 'Nupirkta', 'serial' => 'Serijos numeris', 'status' => 'Būsena', - 'title' => 'Įranga ', + 'title' => 'Turtas ', 'image' => 'Įrenginio atvaizdas', 'days_without_acceptance' => 'Dienų skaičius laukiant patvirtinimo', 'monthly_depreciation' => 'Mėnesinis nusidėvėjimas', diff --git a/resources/lang/lt-LT/admin/kits/general.php b/resources/lang/lt-LT/admin/kits/general.php index e75b4e6a2d..ba4db1e8bf 100644 --- a/resources/lang/lt-LT/admin/kits/general.php +++ b/resources/lang/lt-LT/admin/kits/general.php @@ -2,14 +2,14 @@ return [ 'about_kits_title' => 'Apie iš anksto nustatytus rinkinius', - 'about_kits_text' => 'Iš anksto nustatyti rinkiniai leidžia greitai išduoti daiktų rinkinius (įrangą, licencijas ir kt.) naudotojui. Tai patogu, kai įrangos išdavimo procesas yra vieningas ir naudotojai gauna analogiškos įrangos komplektus.', + 'about_kits_text' => 'Iš anksto nustatyti rinkiniai leidžia greitai išduoti daiktų rinkinius (turtą, licencijas ir kt.) naudotojui. Tai patogu, kai turto išdavimo procesas yra vieningas ir naudotojai gauna analogiško turto komplektus.', 'checkout' => 'Išduoti rinkinį ', 'create_success' => 'Rinkinys buvo sukurtas sėkmingai.', 'create' => 'Sukurti iš anksto nustatytą rinkinį', 'update' => 'Atnaujinti iš anksto nustatytą rinkinį', 'delete_success' => 'Rinkinys buvo panaikintas sėkmingai.', 'update_success' => 'Rinkinys buvo atnaujintas sėkmingai.', - 'none_models' => 'Nepakanka laisvos įrangos :model išdavimui. Reikalingas likutis: :qty. ', + 'none_models' => 'Nepakanka laisvo turto :model išdavimui. Reikalingas kiekis: :qty. ', 'none_licenses' => 'Nepakanka laisvų licencijos vietų :license išdavimui. Reikalingas likutis: :qty. ', 'none_consumables' => 'Nepakanka laisvų eksploatacinių medžiagų :consumable išdavimui. Reikalingas likutis: :qty. ', 'none_accessory' => 'Nepakanka laisvų priedų :accessory išdavimui. Reikalingas likutis: :qty. ', diff --git a/resources/lang/lt-LT/admin/licenses/form.php b/resources/lang/lt-LT/admin/licenses/form.php index 4df77341db..0b52c7465d 100644 --- a/resources/lang/lt-LT/admin/licenses/form.php +++ b/resources/lang/lt-LT/admin/licenses/form.php @@ -2,7 +2,7 @@ return array( - 'asset' => 'Įranga', + 'asset' => 'Turtas', 'checkin' => 'Paimti', 'create' => 'Sukurti licenciją', 'expiration' => 'Galiojimo pabaiga', @@ -18,5 +18,5 @@ return array( 'to_email' => 'Licencija priskirta el. paštui', 'to_name' => 'Licencija išduota šiuo vardu', 'update' => 'Atnaujinti licenciją', - 'checkout_help' => 'Licenciją galima priskirti įrangai arba asmeniui. Galima pasirinkti ir abu, tačiau įrangos ir licencijos naudotojas privalės būti tas pats asmuo.' + 'checkout_help' => 'Licenciją galima priskirti turtui arba asmeniui. Galima pasirinkti ir abu, tačiau turto ir licencijos naudotoju privalės būti tas pats asmuo.' ); diff --git a/resources/lang/lt-LT/admin/licenses/general.php b/resources/lang/lt-LT/admin/licenses/general.php index 27e0b56244..3d8818eadc 100644 --- a/resources/lang/lt-LT/admin/licenses/general.php +++ b/resources/lang/lt-LT/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Licencijos informacija', 'license_seats' => 'Licencijos vietų skaičius', 'seat' => 'Vieta', + 'seat_count' => 'Vietos :count', 'seats' => 'Vietos', 'software_licenses' => 'Programinės įrangos licencijos', 'user' => 'Naudotojas', @@ -24,11 +25,11 @@ return array( 'checkin_all' => [ 'button' => 'Paimti visas vietas', 'modal' => 'Šis veiksmas paims vieną vietą. | Šis veiksmas paims visas :checkedout_seats_count šios licencijos vietas.', - 'enabled_tooltip' => 'Paimkite VISAS licencijos vietas – tiek iš naudotojų, tiek iš įrangos', + 'enabled_tooltip' => 'Paimkite VISAS licencijos vietas – tiek iš naudotojų, tiek iš turto', 'disabled_tooltip' => 'Išjungta, kadangi šiuo metu nėra išduotų vietų', 'disabled_tooltip_reassignable' => 'Išjungta, kadangi licencijos negalima perskirti', 'success' => 'Licencija paimta sėkmingai! | Visos licencijos paimtos sėkmingai!', - 'log_msg' => 'Paimta naudojant masinio licencijų išdavimo sąsają', + 'log_msg' => 'Paimta naudojant masinio licencijų paėmimo sąsają', ], 'checkout_all' => [ diff --git a/resources/lang/lt-LT/admin/licenses/message.php b/resources/lang/lt-LT/admin/licenses/message.php index 486aa0e31f..c502d60cb7 100644 --- a/resources/lang/lt-LT/admin/licenses/message.php +++ b/resources/lang/lt-LT/admin/licenses/message.php @@ -4,10 +4,10 @@ return array( 'does_not_exist' => 'Tokios licencijos nėra arba jūs neturite teisės ją peržiūrėti.', 'user_does_not_exist' => 'Tokio naudotojo nėra arba jūs neturite teisės jo peržiūrėti.', - 'asset_does_not_exist' => 'Tokios įrangos, kurią bandote susieti su šia licencija, nėra.', - 'owner_doesnt_match_asset' => 'Įranga, kurią bandote susieti su šia licencija, yra išduota kažkam kitam, o ne asmeniui, pasirinktam iš sąrašo.', + 'asset_does_not_exist' => 'Tokio turto, kurį bandote susieti su šia licencija, nėra.', + 'owner_doesnt_match_asset' => 'Turtas, kurį bandote susieti su šia licencija, yra išduotas kažkam kitam, o ne asmeniui, pasirinktam iš sąrašo.', 'assoc_users' => 'Ši licencija šiuo metu yra išduota naudotojui ir negali būti panaikinta. Pirmiausia paimkite licenciją ir tuomet vėl bandykite panaikinti. ', - 'select_asset_or_person' => 'Turite pasirinkti įrangą arba naudotoją, bet ne abu.', + 'select_asset_or_person' => 'Turite pasirinkti turtą arba naudotoją, bet ne abu.', 'not_found' => 'Licencija nerasta', 'seats_available' => 'Liko vietų: :seat_count', @@ -44,6 +44,8 @@ return array( 'error' => 'Bandant išduoti licenciją įvyko klaida. Bandykite dar kartą.', 'success' => 'Licencija išduota sėkmingai', 'not_enough_seats' => 'Turimų laisvų vietų nepakanka licencijos išdavimui', + 'mismatch' => 'Pateikta licencijos vieta nesutampa su licencija', + 'unavailable' => 'Šios licencijos negalima išduoti.', ), 'checkin' => array( diff --git a/resources/lang/lt-LT/admin/locations/message.php b/resources/lang/lt-LT/admin/locations/message.php index 8047f9cce3..ec078970ed 100644 --- a/resources/lang/lt-LT/admin/locations/message.php +++ b/resources/lang/lt-LT/admin/locations/message.php @@ -3,10 +3,10 @@ return array( 'does_not_exist' => 'Tokios vietos nėra.', - 'assoc_users' => 'Šios vietos negalima panaikinti, nes ji yra bent vienos įrangos ar naudotojo vieta, jai yra priskirta įranga arba ji yra nurodyta kaip pagrindinė kitos vietos vieta. Atnaujinkite savo įrangą, naudotojus ir vietas, kad jie nebeturėtų sąsajų su šia vieta ir bandykite dar kartą. ', - 'assoc_assets' => 'Ši vieta šiuo metu yra susieta bent su viena įranga ir negali būti panaikinta. Atnaujinkite savo įrangą, kad nebebūtų sąsajos su šia vieta, ir bandykite dar kartą. ', + 'assoc_users' => 'Šios vietos negalima panaikinti, nes ji yra bent vieno turto vieneto ar naudotojo vieta, jai yra priskirtas turtas arba ji yra nurodyta kaip pagrindinė kitos vietos vieta. Atnaujinkite savo turtą, naudotojus ir vietas, kad jie nebeturėtų sąsajų su šia vieta ir bandykite dar kartą. ', + 'assoc_assets' => 'Ši vieta šiuo metu yra susieta bent su vienu turto vienetu ir negali būti panaikinta. Atnaujinkite savo turtą, kad nebebūtų sąsajos su šia vieta, ir bandykite dar kartą. ', 'assoc_child_loc' => 'Ši vieta šiuo metu yra kaip pagrindinė bent vienai žemesnio lygio vietai ir negali būti panaikinta. Atnaujinkite savo žemesnio lygio vietas, kad nebebūtų sąsajos su šia vieta, ir bandykite dar kartą. ', - 'assigned_assets' => 'Priskirta įranga', + 'assigned_assets' => 'Priskirtas turtas', 'current_location' => 'Dabartinė vieta', diff --git a/resources/lang/lt-LT/admin/locations/table.php b/resources/lang/lt-LT/admin/locations/table.php index 0fde6df773..1180b8f040 100644 --- a/resources/lang/lt-LT/admin/locations/table.php +++ b/resources/lang/lt-LT/admin/locations/table.php @@ -2,9 +2,9 @@ return [ 'about_locations_title' => 'Apie vietas', - 'about_locations' => 'Vietos naudojamos stebėti naudotojų, įrangos ir kitų objektų buvimo vietą', - 'assets_rtd' => 'Įranga', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. - 'assets_checkedout' => 'Priskirta įranga', + 'about_locations' => 'Vietos naudojamos stebėti naudotojų, turto ir kitų objektų buvimo vietą', + 'assets_rtd' => 'Turtas', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. + 'assets_checkedout' => 'Priskirtas turtas', 'id' => 'ID', 'city' => 'Miestas', 'state' => 'Rajonas', diff --git a/resources/lang/lt-LT/admin/manufacturers/message.php b/resources/lang/lt-LT/admin/manufacturers/message.php index c4e026dc7b..512e45b0ba 100644 --- a/resources/lang/lt-LT/admin/manufacturers/message.php +++ b/resources/lang/lt-LT/admin/manufacturers/message.php @@ -2,7 +2,7 @@ return array( - 'support_url_help' => 'Kintamieji: {LOCALE}, {SERIAL}, {MODEL_NUMBER} ir {MODEL_NAME} gali būti naudojami jūsų URL, kad šios reikšmės būtų automatiškai įvestos peržiūrint išteklius, pvz., https://checkcoverage.apple.com/{LOCALE}/{SERIAL}.', + 'support_url_help' => 'Kintamieji: {LOCALE}, {SERIAL}, {MODEL_NUMBER} ir {MODEL_NAME} gali būti naudojami jūsų URL, kad šios reikšmės būtų automatiškai įvestos, kai peržiūrite turtą. Pvz., https://checkcoverage.apple.com/{LOCALE}/{SERIAL}.', 'does_not_exist' => 'Tokio gamintojo nėra.', 'assoc_users' => 'Šis gamintojas šiuo metu yra susieta bent su vienu modeliu ir negali būti panaikintas. Atnaujinkite savo modelius, kad nebebūtų sąsajos su šiuo gamintoju, ir bandykite dar kartą. ', diff --git a/resources/lang/lt-LT/admin/manufacturers/table.php b/resources/lang/lt-LT/admin/manufacturers/table.php index 0acbec69a1..d7d883d8ca 100644 --- a/resources/lang/lt-LT/admin/manufacturers/table.php +++ b/resources/lang/lt-LT/admin/manufacturers/table.php @@ -2,8 +2,8 @@ return array( 'about_manufacturers_title' => 'Apie gamintojus', - 'about_manufacturers_text' => 'Gamintojai yra įmonės, pagaminusios jūsų įrangą. Čia galite saugoti svarbią jų palaikymo kontaktinę informaciją, kuri bus rodoma jūsų įrangos išsamios informacijos puslapiuose.', - 'asset_manufacturers' => 'Įrangos gamintojai', + 'about_manufacturers_text' => 'Gamintojai yra įmonės, pagaminusios jūsų turtą. Čia galite saugoti svarbią jų palaikymo kontaktinę informaciją, kuri bus rodoma jūsų turto išsamios informacijos puslapiuose.', + 'asset_manufacturers' => 'Turto gamintojai', 'create' => 'Sukurti gamintoją', 'id' => 'ID', 'name' => 'Pavadinimas', diff --git a/resources/lang/lt-LT/admin/models/general.php b/resources/lang/lt-LT/admin/models/general.php index 2ca1e8d9b9..3adbebc195 100644 --- a/resources/lang/lt-LT/admin/models/general.php +++ b/resources/lang/lt-LT/admin/models/general.php @@ -1,15 +1,15 @@ 'Apie įrangos modelius', - 'about_models_text' => 'Įrangos modeliai yra būdas grupuoti identišką įrangą. („MBP 2013“, „IPhone 6s“ ir kt.)', + 'about_models_title' => 'Apie turto modelius', + 'about_models_text' => 'Turto modeliai yra būdas grupuoti identišką turtą. („MBP 2013“, „IPhone 6s“ ir kt.)', 'deleted' => 'Šis modelis buvo panaikintas.', - 'bulk_delete' => 'Panaikinti kelis modelius', - 'bulk_delete_help' => 'Naudokite žemiau esančius žymimuosius laukelius, kad patvirtintumėte pasirinktų įrangos modelių panaikinimą. Įrangos modelių, su kuriais yra susieta įranga, negalima ištrinti tol, kol ši įranga nebus susieti su kitu modeliu.', - 'bulk_delete_warn' => 'Ketinate panaikinti vieną įrangos modelį.|Ketinate panaikinti :model_count įrangos modelius.', + 'bulk_delete' => 'Panaikinti kelis turto modelius', + 'bulk_delete_help' => 'Naudokite žemiau esančius žymimuosius laukelius, kad patvirtintumėte pasirinktų turto modelių panaikinimą. Turto modelių, su kuriais yra susietas turtas, negalima ištrinti tol, kol šis turtas nebus susietas su kitu modeliu.', + 'bulk_delete_warn' => 'Ketinate panaikinti vieną turto modelį.|Ketinate panaikinti :model_count turto modelius (-ų).', 'restore' => 'Atkurti modelį', 'requestable' => 'Naudotojai gali užsakyti šį modelį', - 'show_mac_address' => 'Rodyti MAC adreso lauką šio modelio įrangai', + 'show_mac_address' => 'Rodyti MAC adreso lauką šio modelio turtui', 'view_deleted' => 'Peržiūrėti panaikintus', 'view_models' => 'Peržiūrėti modelius', 'fieldset' => 'Laukų rinkinys', diff --git a/resources/lang/lt-LT/admin/models/message.php b/resources/lang/lt-LT/admin/models/message.php index 188724cdf6..339e888d3e 100644 --- a/resources/lang/lt-LT/admin/models/message.php +++ b/resources/lang/lt-LT/admin/models/message.php @@ -2,17 +2,17 @@ return array( - 'deleted' => 'Panaikintas įrangos modelis', + 'deleted' => 'Panaikintas turto modelis', 'does_not_exist' => 'Tokio modelio nėra.', - 'no_association' => 'ĮSPĖJIMAS! Tokio įrangos modelio nėra arba jis netinkamas!', - 'no_association_fix' => 'Tai sugadins dalykus keistais ir siaubingais būdais. Nedelsdami redaguokite šią įrangą ir priskirkite jai modelį.', - 'assoc_users' => 'Šis modelis šiuo metu susietas su bent vienu įrangos vienetu, todėl negali būti panaikintas. Panaikinkite šią įrangą, tuomet vėl bandykite panaikinti modelį. ', - + 'no_association' => 'ĮSPĖJIMAS! Tokio turto modelio nėra arba jis neteisingas!', + 'no_association_fix' => 'Tai sugadins dalykus keistais ir siaubingais būdais. Nedelsdami redaguokite šį turtą ir priskirkite jam modelį.', + 'assoc_users' => 'Šis modelis šiuo metu susietas su bent vienu turto vienetu, todėl negali būti panaikintas. Panaikinkite šį turtą, tuomet vėl bandykite panaikinti modelį. ', + 'invalid_category_type' => 'Kategorija turi būti turto kategorija.', 'create' => array( 'error' => 'Modelis nebuvo panaikintas, bandykite dar kartą.', 'success' => 'Modelis sukurtas sėkmingai.', - 'duplicate_set' => 'Įrangos modelis su tokiu pavadinimu, gamintoju ir modelio numeriu jau yra.', + 'duplicate_set' => 'Turto modelis su tokiu pavadinimu, gamintoju ir modelio numeriu jau yra.', ), 'update' => array( @@ -21,7 +21,7 @@ return array( ), 'delete' => array( - 'confirm' => 'Ar tikrai norite panaikinti šį įrangos modelį?', + 'confirm' => 'Ar tikrai norite panaikinti šį turto modelį?', 'error' => 'Bandant panaikinti modelį įvyko klaida. Bandykite dar kartą.', 'success' => 'Modelis panaikintas sėkmingai.' ), @@ -40,8 +40,8 @@ return array( 'bulkdelete' => array( 'error' => 'Nebuvo pasirinktas joks modelis, todėl niekas nebuvo panaikinta.', - 'success' => 'Modelis panaikintas!|:success_count modeliai panaikinti!', - 'success_partial' => 'Panaikinti modeliai – :success_count, tačiau dar :fail_count nepavyko panaikinti, nes vis dar yra su jais susietos įrangos.' + 'success' => 'Modelis panaikintas! :success_count modeliai panaikinti!', + 'success_partial' => 'Panaikinti modeliai – :success_count, tačiau dar :fail_count nepavyko panaikinti, nes vis dar yra su jais susieto turto.' ), ); diff --git a/resources/lang/lt-LT/admin/models/table.php b/resources/lang/lt-LT/admin/models/table.php index 696a2c1fdb..ac9059f566 100644 --- a/resources/lang/lt-LT/admin/models/table.php +++ b/resources/lang/lt-LT/admin/models/table.php @@ -2,16 +2,16 @@ return array( - 'create' => 'Sukurti įrangos modelį', + 'create' => 'Sukurti turto modelį', 'created_at' => 'Sukurta', 'eol' => 'Nurašymo data', 'modelnumber' => 'Modelio Nr.', - 'name' => 'Įrangos modelio pavadinimas', - 'numassets' => 'Įranga', - 'title' => 'Įrangos modeliai', - 'update' => 'Atnaujinti įrangos modelį', - 'view' => 'Peržiūrėti įrangos modelį', - 'update' => 'Atnaujinti įrangos modelį', + 'name' => 'Turto modelio pavadinimas', + 'numassets' => 'Turtas', + 'title' => 'Turto modeliai', + 'update' => 'Atnaujinti turto modelį', + 'view' => 'Peržiūrėti turto modelį', + 'update' => 'Atnaujinti turto modelį', 'clone' => 'Klonuoti modelį', 'edit' => 'Redaguoti modelį', ); diff --git a/resources/lang/lt-LT/admin/reports/general.php b/resources/lang/lt-LT/admin/reports/general.php index 62e2a81aa7..608d65fe68 100644 --- a/resources/lang/lt-LT/admin/reports/general.php +++ b/resources/lang/lt-LT/admin/reports/general.php @@ -1,7 +1,7 @@ 'Pasirinkite tai, ką norite matyti savo įrangos ataskaitoje.', + 'info' => 'Pasirinkite tai, ką norite matyti savo turto ataskaitoje.', 'deleted_user' => 'Panaikintas naudotojas', 'send_reminder' => 'Siųsti priminimą', 'reminder_sent' => 'Priminimas išsiųstas', diff --git a/resources/lang/lt-LT/admin/settings/general.php b/resources/lang/lt-LT/admin/settings/general.php index ca73055180..e3ec774a6a 100644 --- a/resources/lang/lt-LT/admin/settings/general.php +++ b/resources/lang/lt-LT/admin/settings/general.php @@ -20,11 +20,11 @@ return [ 'alert_inv_threshold' => 'Įspėjimo apie atsargas slenkstis (vienetais)', 'allow_user_skin' => 'Įgalinti naudotojo temas', 'allow_user_skin_help_text' => 'Pažymėjus šį langelį, naudotojas galės pasikeisti numatytąją sąsajos temą kita.', - 'asset_ids' => 'Įrangos ID', + 'asset_ids' => 'Turto ID', 'audit_interval' => 'Audito intervalas', - 'audit_interval_help' => 'Jei jums reikia reguliariai fiziškai tikrinti savo įrangą, nurodykite naudojamą intervalą mėnesiais. Atnaujinus šią reikšmę, bus atnaujintos visos „kito audito datos“ tai įrangai, kuriai yra nurodyta būsimo audito data.', + 'audit_interval_help' => 'Jei jums reikia reguliariai fiziškai audituoti savo turtą, nurodykite naudojamą intervalą mėnesiais. Atnaujinus šią reikšmę, bus atnaujintos visos „kito audito datos“ tam turtui, kuriam yra nurodyta būsimo audito data.', 'audit_warning_days' => 'Išankstinis įspėjimas apie auditą', - 'audit_warning_days_help' => 'Prieš kiek dienų turėtume jus įspėti, kai turi būti atliktas įrangos auditas?', + 'audit_warning_days_help' => 'Prieš kiek dienų turėtume jus įspėti, kad turi būti atliktas turto auditas?', 'auto_increment_assets' => 'Generuoti automatiškai didėjančius inventorinius numerius', 'auto_increment_prefix' => 'Prefiksas (pasirinktinai)', 'auto_incrementing_help' => 'Norėdami tai nustatyti, pirmiausia įjunkite automatiškai didėjančius inventorinius numerius', @@ -48,9 +48,9 @@ return [ 'default_currency' => 'Numatytoji valiuta', 'default_eula_text' => 'Numatytasis licencinis sutikimas (EULA)', 'default_language' => 'Numatytoji kalba', - 'default_eula_help_text' => 'Taip pat galite susieti tinkintus licencinius sutikimus (EULA) su konkrečiomis įrangos grupėmis.', + 'default_eula_help_text' => 'Taip pat galite susieti tinkintus licencinius sutikimus (EULA) su konkrečiomis turto grupėmis.', 'acceptance_note' => 'Pridėkite pastabą prie savo sprendimo (nebūtina)', - 'display_asset_name' => 'Rodyti įrangos pavadinimą', + 'display_asset_name' => 'Rodyti turto pavadinimą', 'display_checkout_date' => 'Rodyti išdavimo datą', 'display_eol' => 'Rodyti įrangos nurašymo datas lentelės rodinyje', 'display_qr' => 'Rodyti kvadratinius kodus', @@ -75,7 +75,7 @@ return [ 'header_color' => 'Atraštės spalva', 'info' => 'Šie nustatymai leidžia tinkinti tam tikrus diegimo aspektus.', 'label_logo' => 'Etiketės logotipas', - 'label_logo_size' => 'Kvadratiniai logotipai atrodo geriausiai – bus rodomi kiekvienos įrangos etiketės viršuje, dešinėje. ', + 'label_logo_size' => 'Kvadratiniai logotipai atrodo geriausiai – bus rodomi kiekvienos turto etiketės viršuje, dešinėje. ', 'laravel' => 'Laravel versija', 'ldap' => 'LDAP', 'ldap_default_group' => 'Numatytoji teisių grupė', @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Tai tik patikrina ar LDAP sinchronizuoja teisingai. Jei jūsų LDAP autentifikavimo užklausa neteisinga, naudotojai vis tiek negalės prisijungti. PIRMIAUSIA TURITE IŠSAUGOTI ATNAUJINTUS LDAP NUSTATYMUS.', 'ldap_manager' => 'LDAP vadovas', 'ldap_server' => 'LDAP serveris', - 'ldap_server_help' => 'Turėtų prasidėti su ldap:// (nešifruotas arba TLS) arba ldaps:// (jei tai SSL)', + 'ldap_server_help' => 'Turėtų prasidėti su ldap:// (nešifruotas) arba ldaps:// (jei tai TLS arba SSL)', 'ldap_server_cert' => 'LDAP SSL sertifikato tikrinimas', 'ldap_server_cert_ignore' => 'Leisti negaliojantį SSL sertifikatą', 'ldap_server_cert_help' => 'Pažymėkite šį laukelį, jei naudojate paties pasirašytą SSL sertifikatą ir norite leisti naudoti negaliojantį SSL sertifikatą.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Testuoti LDAP', 'ldap_test_sync' => 'Testuoti LDAP sinchronizavimą', 'license' => 'Programinės įrangos licencija', - 'load_remote' => 'Naudoti „Gravatar“', - 'load_remote_help_text' => 'Atžymėkite šį langelį, jei jūsų diegimas negali vykdyti skriptų iš interneto. Tai neleis „Snipe-IT“ bandyti įkelti vaizdų iš „Gravatar“.', + 'load_remote' => 'Įkelti nuotolinius avatarus', + 'load_remote_help_text' => 'Atžymėkite šį langelį, jei jūsų diegimas negali vykdyti skriptų iš interneto. Tai neleis „Snipe-IT“ bandyti įkelti avatarų iš „Gravatar“ ar kitų išorinių šaltinių.', 'login' => 'Prisijungimo bandymai', 'login_attempt' => 'Prisijungimo bandymas', 'login_ip' => 'IP adresas', @@ -143,8 +143,8 @@ return [ 'login_remote_user_header_name_help' => 'Naudoti nurodytą antraštę, o ne REMOTE_USER', 'logo' => 'Logotipas', 'logo_print_assets' => 'Naudoti spaudiniuose', - 'logo_print_assets_help' => 'Naudoti ženklinimą spausdinamuose įrangos sąrašuose ', - 'full_multiple_companies_support_help_text' => 'Naudotojams (įskaitant administratorius), susietiems su konkrečia įmone, leisti pasiekti tik tos įmonės įrangą.', + 'logo_print_assets_help' => 'Naudoti ženklinimą spausdinamuose turto sąrašuose ', + 'full_multiple_companies_support_help_text' => 'Naudotojams (įskaitant administratorius), susietiems su konkrečia įmone, leisti pasiekti tik tos įmonės turtą.', 'full_multiple_companies_support_text' => 'Pilnas kelių įmonių palaikymas', 'show_in_model_list' => 'Rodyti modelių išskleidžiamuosiuose meniu', 'optional' => 'pasirinktinai', @@ -195,12 +195,12 @@ return [ 'setting' => 'Nustatymas', 'settings' => 'Nustatymai', 'show_alerts_in_menu' => 'Rodyti įspėjimus viršutiniame meniu', - 'show_archived_in_list' => 'Archyvuota įranga', - 'show_archived_in_list_text' => 'Rodyti archyvuotą įrangą „visos įrangos“ sąraše', - 'show_assigned_assets' => 'Rodyti įrangą, priskirtą kitai įrangai', - 'show_assigned_assets_help' => 'Rodyti įrangą, kuri buvo priskirta kitai įrangai, skiltyse: „Peržiūrėti naudotoją -> Įranga“, „Peržiūrėti naudotoją -> Informacija -> Spausdinti visą įrangą“ ir „Paskyra -> Peržiūrėti priskirtą įrangą".', + 'show_archived_in_list' => 'Archyvuotas turtas', + 'show_archived_in_list_text' => 'Rodyti archyvuotą turtą „viso turto“ sąraše', + 'show_assigned_assets' => 'Rodyti turtą, priskirtą kitam turtui', + 'show_assigned_assets_help' => 'Rodyti turtą, kuris buvo priskirtas kitam turtui, skiltyse: „Peržiūrėti naudotoją -> Turtas“, „Peržiūrėti naudotoją -> Informacija -> Spausdinti visą turtą“ ir „Paskyra -> Peržiūrėti priskirtą turtą".', 'show_images_in_email' => 'Rodyti atvaizdus el. laiškuose', - 'show_images_in_email_help' => 'Nuimkite žymelę jeigu jūsų Snipe-IT diegimas yra už VPN arba uždarame tinkle, kitaip tinkle nesantys išorės naudotojai negalės įkelti el. laiškuose pateiktų atvaizdų.', + 'show_images_in_email_help' => 'Nuimkite žymelę jeigu jūsų Snipe-IT diegimas yra už VPN arba uždarame tinkle, kitaip tinkle nesantys išorės naudotojai negalės matyti el. laiškuose pateiktų atvaizdų.', 'site_name' => 'Puslapio pavadinimas', 'integrations' => 'Integracijos', 'slack' => 'Slack', @@ -267,7 +267,7 @@ return [ 'two_factor_reset_error' => 'Dviejų veiksnių įrenginio nustatymas iš naujo nepavyko', 'two_factor_enabled_warning' => 'Įjungus dviejų veiksnių autentifikaciją (jei ji šiuo metu nėra įjungta) būsite iš karto priversti autentifikuotis naudojant „Google Authenticator“ užregistruotą įrenginį. Jei šiuo metu neturite užregistruoto įrenginio, tai turėsite galimybę jį užregistruoti.', 'two_factor_enabled_help' => 'Bus įjungta dviejų veiksnių autentifikacija naudojant „Google Authenticator“.', - 'two_factor_optional' => 'Atrankinis (vartotojai gali įjungti arba išjungti, jei tai leidžiama)', + 'two_factor_optional' => 'Pasirinktinis (naudotojai gali įjungti arba išjungti, jei tai leidžiama)', 'two_factor_required' => 'Privalomas visiems naudotojams', 'two_factor_disabled' => 'Išjungta', 'two_factor_enter_code' => 'Įveskite dviejų veiksnių kodą', @@ -275,7 +275,7 @@ return [ 'two_factor_enabled_edit_not_allowed' => 'Jūsų administratorius neleidžia keisti šio nustatymo.', 'two_factor_enrollment_text' => "Būtina dviejų veiksnių autentifikacija, tačiau jūsų dar nesate užregistravę įrenginio. Norėdami užregistruoti įrenginį, jame atidarykite „Google Authenticator“ programą ir nuskaitykite čia pateiktą QR kodą. Užregistravę įrenginį, įveskite jo ekrane rodomą kodą į žemiau esantį lauką", 'require_accept_signature' => 'Reikalauti parašo', - 'require_accept_signature_help_text' => 'Jei įjungsite šią funkciją, naudotojai turės fiziškai pasirašyti už jiems išduodamą įrangą.', + 'require_accept_signature_help_text' => 'Jei įjungsite šią funkciją, naudotojai turės fiziškai pasirašyti už jiems išduodamą turtą.', 'left' => 'kairėje', 'right' => 'dešinėje', 'top' => 'viršuje', @@ -283,7 +283,7 @@ return [ 'vertical' => 'vertikalus', 'horizontal' => 'horizontalus', 'unique_serial' => 'Unikalus serijinis numeris', - 'unique_serial_help_text' => 'Pažymėjus šį langelį, bus užtikrinamas įrangos serijinių numerių unikalumas', + 'unique_serial_help_text' => 'Pažymėjus šį langelį, bus užtikrinamas turto serijinių numerių unikalumas', 'zerofill_count' => 'Inventorinių numerių ilgis, įskaitant priekinius nulius', 'username_format_help' => 'Šis nustatymas bus naudojamas importavimo procese tik tuo atveju, jei naudotojo vardas nebus pateiktas ir mes turėsime sugeneruoti naudotojo vardą.', 'oauth_title' => 'OAuth API nustatymai', @@ -348,9 +348,9 @@ return [ 'label2_template_help' => 'Pasirinkite, kurį šabloną naudoti etikečių generavimui', 'label2_title' => 'Antraštė', 'label2_title_help' => 'Antraštė, kuri atvaizduojama tai palaikančiose etiketėse', - 'label2_title_help_phold' => 'Vietaženklis {COMPANY} bus pakeistas įrangos įmonės pavadinimu', - 'label2_asset_logo' => 'Naudoti įrangos logotipą', - 'label2_asset_logo_help' => 'Naudokite įrangai priskirtos įmonės logotipą, o ne :setting_name reikšmę', + 'label2_title_help_phold' => 'Vietaženklis {COMPANY} bus pakeistas turto įmonės pavadinimu', + 'label2_asset_logo' => 'Naudoti turto logotipą', + 'label2_asset_logo_help' => 'Naudokite turtui priskirtos įmonės logotipą, o ne :setting_name reikšmę', 'label2_1d_type' => '1D brūkšninio kodo tipas', 'label2_1d_type_help' => '1D brūkšninio kodo formatas', 'label2_2d_type' => '2D brūkšninio kodo tipas', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Laiko juosta', 'profile_edit' => 'Redaguoti profilį', 'profile_edit_help' => 'Leisti naudotojams redaguoti savo profilius.', + 'default_avatar' => 'Įkelti pasirinktinį numatytąjį avatarą', + 'default_avatar_help' => 'Jei naudotojas neturi profilio nuotraukos, šis atvaizdas bus rodomas jo profilyje.', + 'restore_default_avatar' => 'Atkurti pradinį sistemos numatytąjį avatarą', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/lt-LT/admin/settings/message.php b/resources/lang/lt-LT/admin/settings/message.php index 770d47187a..a92026b404 100644 --- a/resources/lang/lt-LT/admin/settings/message.php +++ b/resources/lang/lt-LT/admin/settings/message.php @@ -29,7 +29,7 @@ return [ 'testing' => 'Tikrinamas LDAP ryšys, susiejimas ir užklausos...', '500' => '500 serverio klaida. Norėdami gauti daugiau informacijos, patikrinkite savo serverio žurnalus.', 'error' => 'Kažkas ne taip :(', - 'sync_success' => 'Pavyzdys 10 vartotojų, grąžintų iš LDAP serverio, pagal jūsų nustatymus:', + 'sync_success' => '10 naudotojų, gautų iš LDAP serverio, pagal jūsų nustatymus:', 'testing_authentication' => 'Tikrinamas LDAP autentifikavimas...', 'authentication_success' => 'Naudotojas sėkmingai atpažintas naudojant LDAP!' ], diff --git a/resources/lang/lt-LT/admin/statuslabels/message.php b/resources/lang/lt-LT/admin/statuslabels/message.php index 2c41d938ae..63d605c0a3 100644 --- a/resources/lang/lt-LT/admin/statuslabels/message.php +++ b/resources/lang/lt-LT/admin/statuslabels/message.php @@ -4,7 +4,7 @@ return [ 'does_not_exist' => 'Tokios būsenos žymos nėra.', 'deleted_label' => 'Panaikinta būsenos žyma', - 'assoc_assets' => 'Ši būsenos žyma šiuo metu yra susieta bent su viena įranga ir negali būti panaikinta. Atnaujinkite savo įrangą, kad nebebūtų sąsajos su šia būsenos žyma, ir bandykite dar kartą. ', + 'assoc_assets' => 'Ši būsenos žyma šiuo metu yra susieta bent su vienu turto vienetu ir negali būti panaikinta. Atnaujinkite savo turtą, kad nebebūtų sąsajos su šia būsenos žyma, ir bandykite dar kartą. ', 'create' => [ 'error' => 'Būsenos žyma nebuvo sukurta, bandykite dar kartą.', @@ -23,10 +23,10 @@ return [ ], 'help' => [ - 'undeployable' => 'Ši įranga negali būti niekam priskiriama.', - 'deployable' => 'Ši įranga gali būti išduodama. Išdavus įrangą, jos meta būsena pasikeis į Naudojama.', - 'archived' => 'Šios įrangos negalima išduoti, ji bus matoma tik archyviniame rodinyje. Ši būsena naudinga, norint išsaugoti duomenis apie įrangą biudžetavimo ar kitiems tikslams, tuo pačiu pašalinant ją iš kasdienių įrangos sąrašų.', - 'pending' => 'Ši įranga dar negali būti kam nors priskirta. Ši būsena dažniausiai naudojama, kai įranga yra perduota remontui, bet planuojama ją sugrąžinti į apyvartą.', + 'undeployable' => 'Šis turtas negali būti niekam priskiriamas.', + 'deployable' => 'Šis turtas gali būti išduodamas. Išdavus turtą, jo meta būsena pasikeis į Naudojamas.', + 'archived' => 'Šio turto negalima išduoti, jis bus matomas tik archyviniame rodinyje. Ši būsena naudinga, norint išsaugoti duomenis apie turtą biudžetavimo ar kitiems tikslams, tuo pačiu pašalinant jį iš kasdienių turto sąrašų.', + 'pending' => 'Šis turtas dar negali būti kam nors priskirtas. Ši būsena dažniausiai naudojama, kai turtas yra perduotas remontui, bet planuojama jį sugrąžinti į apyvartą.', ], ]; diff --git a/resources/lang/lt-LT/admin/statuslabels/table.php b/resources/lang/lt-LT/admin/statuslabels/table.php index 328e07c75b..11f90c4b24 100644 --- a/resources/lang/lt-LT/admin/statuslabels/table.php +++ b/resources/lang/lt-LT/admin/statuslabels/table.php @@ -6,9 +6,9 @@ return array( 'create' => 'Kurti būsenos žymą', 'color' => 'Diagramos spalva', 'default_label' => 'Numatytoji žyma', - 'default_label_help' => 'Tai naudojama siekiant užtikrinti, kad kuriant ar redaguojant įrangą, dažniausiai naudojamos būsenos žymos būtų rodomos pasirinkimo lauko viršuje.', + 'default_label_help' => 'Tai naudojama siekiant užtikrinti, kad kuriant ar redaguojant turtą, dažniausiai naudojamos būsenos žymos būtų rodomos pasirinkimo lauko viršuje.', 'deployable' => 'Naudotini', - 'info' => 'Būsenos žymos nusako galimas jūsų įrangos būsenas. Pavyzdžiui, įranga gali būti perduota remontui, pamesta/pavogta ir kt. Čia galite kurti naujas būsenos žymai naudotinai, ruošiamai ir archyvuotai įrangai.', + 'info' => 'Būsenos žymos nusako galimas jūsų turto būsenas. Pavyzdžiui, turtas gali būti perduotas remontui, pamestas/pavogtas ir kt. Čia galite kurti naujas būsenos žymas naudotinam, ruošiamam ir archyvuotam turtui.', 'name' => 'Būsenos pavadinimas', 'pending' => 'Ruošiama', 'status_type' => 'Būsenos tipas', diff --git a/resources/lang/lt-LT/admin/suppliers/message.php b/resources/lang/lt-LT/admin/suppliers/message.php index a06ff0dc60..65116c705b 100644 --- a/resources/lang/lt-LT/admin/suppliers/message.php +++ b/resources/lang/lt-LT/admin/suppliers/message.php @@ -20,9 +20,9 @@ return array( 'confirm' => 'Ar tikrai norite panaikinti šį tiekėją?', 'error' => 'Bandant panaikinti tiekėją įvyko klaida. Bandykite dar kartą.', 'success' => 'Tiekėjas panaikintas sėkmingai.', - 'assoc_assets' => 'Šis tiekėjas šiuo metu yra susietas su :asset_count įranga (-omis) ir negali būti panaikintas. Atnaujinkite savo įrangą, kad nebebūtų sąsajos su šiuo tiekėju, ir bandykite dar kartą. ', + 'assoc_assets' => 'Šis tiekėjas šiuo metu yra susietas su :asset_count turto vienetu (-ais) ir negali būti panaikintas. Atnaujinkite savo turtą, kad nebebūtų sąsajos su šiuo tiekėju, ir bandykite dar kartą. ', 'assoc_licenses' => 'Šis tiekėjas šiuo metu yra susietas su :licenses_count licencija (-omis) ir negali būti panaikintas. Atnaujinkite savo licencijas, kad nebebūtų sąsajos su šiuo tiekėju, ir bandykite dar kartą. ', - 'assoc_maintenances' => 'Šis tiekėjas šiuo metu yra susietas su :asset_maintenances_count įrangos aptarnavimu (-ais) ir negali būti panaikintas. Atnaujinkite savo įrangos aptarnavimus, kad nebebūtų sąsajos su šiuo tiekėju, ir bandykite dar kartą. ', + 'assoc_maintenances' => 'Šis tiekėjas šiuo metu yra susietas su :asset_maintenances_count turto aptarnavimu (-ais) ir negali būti panaikintas. Atnaujinkite savo turto aptarnavimus, kad nebebūtų sąsajos su šiuo tiekėju, ir bandykite dar kartą. ', ) ); diff --git a/resources/lang/lt-LT/admin/suppliers/table.php b/resources/lang/lt-LT/admin/suppliers/table.php index d7dbcae7dc..d2bc6dff84 100644 --- a/resources/lang/lt-LT/admin/suppliers/table.php +++ b/resources/lang/lt-LT/admin/suppliers/table.php @@ -4,7 +4,7 @@ return array( 'about_suppliers_title' => 'Apie tiekėjus', 'about_suppliers_text' => 'Tiekėjai naudojami daiktų šaltiniui stebėti', 'address' => 'Tiekėjo adresas', - 'assets' => 'Įranga', + 'assets' => 'Turtas', 'city' => 'Miestas', 'contact' => 'Kontaktinis asmuo', 'country' => 'Šalis', @@ -20,7 +20,7 @@ return array( 'suppliers' => 'Tiekėjai', 'update' => 'Atnaujinti tiekėją', 'view' => 'Peržiūrėti tiekėją', - 'view_assets_for' => 'Įrangos peržiūra –', + 'view_assets_for' => 'Turto peržiūra –', 'zip' => 'Pašto kodas', ); diff --git a/resources/lang/lt-LT/admin/users/general.php b/resources/lang/lt-LT/admin/users/general.php index 409058a67a..bfc8e454d6 100644 --- a/resources/lang/lt-LT/admin/users/general.php +++ b/resources/lang/lt-LT/admin/users/general.php @@ -3,10 +3,10 @@ return [ 'activated_help_text' => 'Šis naudotojas gali prisijungti', 'activated_disabled_help_text' => 'Negalite redaguoti savo paskyros aktyvinimo būsenos.', - 'assets_user' => 'Įranga išduota :name', + 'assets_user' => 'Turtas išduotas :name', 'bulk_update_warn' => 'Ketinate redaguoti :user_count naudotojų savybes. Atminkite, kad naudodami šią formą, savo naudotojo atributų keisti negalite – savo naudotoją turite redaguoti atskirai.', 'bulk_update_help' => 'Ši forma suteikia galimybę atnaujinti iškart kelis naudotojus. Užpildykite tik tuos laukus, kuriuos norite pakeisti. Laukai, kuriuos paliksite tuščius, liks nepakeisti.', - 'current_assets' => 'Šiam naudotojui išduota įranga', + 'current_assets' => 'Šiam naudotojui išduotas turtas', 'clone' => 'Klonuoti naudotoją', 'contact_user' => 'Susisiekti su :name', 'edit' => 'Redaguoti naudotoją', @@ -36,7 +36,7 @@ return [ 'admin_permission_warning' => 'Tik administratoriai ir aukštesnes teises turintys naudotojai gali suteikti administratoriaus prieigą.', 'remove_group_memberships' => 'Pašalinti grupių narystes', 'warning_deletion_information' => 'Ketinate paimti VISUS elementus iš žemiau išvardintų :count naudotojų. Superadministratorių vardai yra paryškinti raudonai.', - 'update_user_assets_status' => 'Atnaujinti visos šių naudotojų įrangos būsenas į šią būseną', + 'update_user_assets_status' => 'Atnaujinti viso šių naudotojų turto būsenas į šią būseną', 'checkin_user_properties' => 'Paimti visą su šiais naudotojais susietą turtą', 'remote_label' => 'Tai nuotolinis naudotojas', 'remote' => 'Nuotolinis', diff --git a/resources/lang/lt-LT/admin/users/message.php b/resources/lang/lt-LT/admin/users/message.php index 3c7d800c05..4704a9f82f 100644 --- a/resources/lang/lt-LT/admin/users/message.php +++ b/resources/lang/lt-LT/admin/users/message.php @@ -2,16 +2,16 @@ return array( - 'accepted' => 'Jūs sėkmingai priėmėte šią įrangą.', - 'declined' => 'Jūs sėkmingai atsisakėte priimti šią įrangą.', + 'accepted' => 'Jūs sėkmingai priėmėte šį turtą.', + 'declined' => 'Jūs sėkmingai atsisakėte priimti šį turtą.', 'bulk_manager_warn' => 'Jūsų naudotojai buvo sėkmingai atnaujinti, tačiau tiesioginio vadovo informacija nebuvo išsaugota, nes jūsų nurodytas tiesioginis vadovas taip pat buvo redaguojamų naudotojų sąraše. Naudotojas negali būti savo paties tiesioginiu vadovu, todėl dar kartą pasirinkite naudotojus, neįtraukdami tiesioginio vadovo.', 'user_exists' => 'Toks naudotojas jau yra!', 'user_not_found' => 'Tokio naudotojo nėra.', 'user_login_required' => 'Prisijungimo laukas yra privalomas', - 'user_has_no_assets_assigned' => 'Naudotojui neišduota jokia įranga.', + 'user_has_no_assets_assigned' => 'Naudotojui neišduotas joks turtas.', 'user_password_required' => 'Slaptažodis yra privalomas.', 'insufficient_permissions' => 'Nepakanka teisių.', - 'user_deleted_warning' => 'Šis naudotojas buvo panaikintas. Turėsite atkurti naudotoją, jeigu norėsite jį redaguoti ar priskirti jam naują įrangą.', + 'user_deleted_warning' => 'Šis naudotojas buvo panaikintas. Turėsite atkurti naudotoją, jeigu norėsite jį redaguoti ar priskirti jam naują turtą.', 'ldap_not_configured' => 'LDAP integracija nebuvo sukonfigūruota šiam diegimui.', 'password_resets_sent' => 'Pasirinktiems naudotojams, kurie yra aktyvuoti ir turi galiojančius el. pašto adresus, buvo išsiųsta slaptažodžio nustatymo iš naujo nuoroda.', 'password_reset_sent' => 'Slaptažodžio nustatymo iš naujo nuoroda buvo išsiųsta į :email!', @@ -36,18 +36,18 @@ return array( 'create' => 'Bandant sukurti naudotoją įvyko klaida. Bandykite dar kartą.', 'update' => 'Bandant atnaujinti naudotoją įvyko klaida. Bandykite dar kartą.', 'delete' => 'Bandant panaikinti naudotoją įvyko klaida. Bandykite dar kartą.', - 'delete_has_assets' => 'Šis naudotojas turi jam išduotų elementų, todėl jo panaikinti negalima.', - 'delete_has_assets_var' => 'Šiam naudotojui yra išduota įranga. Pirmiausia paimkite ją.|Šiam naudotojui yra išduotos :count įrangos (-ų). Pirmiausia paimkite jų įrangą.', + 'delete_has_assets' => 'Šis naudotojas turi jam išduotų daiktų, todėl jo panaikinti negalima.', + 'delete_has_assets_var' => 'Šiam naudotojui yra išduotas turtas. Pirmiausia paimkite jį.|Šiam naudotojui yra išduoti :count vienetai (-ų) turto. Pirmiausia paimkite jų turtą.', 'delete_has_licenses_var' => 'Šiam naudotojui yra priskirta licencija. Pirmiausia paimkite ją.|Šiam naudotojui yra priskirtos :count licencijos (-ų). Pirmiausia paimkite jas.', 'delete_has_accessories_var' => 'Šiam naudotojui yra išduotas priedas. Pirmiausia paimkite jį.|Šiam naudotojui yra išduoti :count priedai (-ų). Pirmiausia paimkite juos.', 'delete_has_locations_var' => 'Šis naudotojas vis dar atsakingas už vieną vietą. Pirmiausia parinkite kitą valdytoją.|Šis naudotojas vis dar atsakingas už :count vietas (-ų). Pirmiausia parinkite kitą valdytoją.', 'delete_has_users_var' => 'Šis naudotojas vis dar turi pavaldinį. Pirmiausia parinkite kitą tiesioginį vadovą šiam pavaldiniui.|Šis naudotojas vis dar turi :count pavaldinius (-ių). Pirmiausia parinkite kitą tiesioginį vadovą šiems naudotojams.', 'unsuspend' => 'Bandant įjungti naudotoją įvyko klaida. Bandykite dar kartą.', 'import' => 'Bandant importuoti naudotojus įvyko klaida. Bandykite dar kartą.', - 'asset_already_accepted' => 'Ši įranga jau buvo priimta.', - 'accept_or_decline' => 'Turite arba priimti šią įrangą, arba jos atsisakyti.', + 'asset_already_accepted' => 'Šis turtas jau buvo priimtas.', + 'accept_or_decline' => 'Turite arba priimti šį turtą, arba jo atsisakyti.', 'cannot_delete_yourself' => 'Jaustumėmės labai blogai, jei panaikintumėte save, dar kartą apsvarstykite.', - 'incorrect_user_accepted' => 'Įranga kurią bandote priimti, nebuvo jums priskirta.', + 'incorrect_user_accepted' => 'Turtas kurį bandote priimti, nebuvo jums išduotas.', 'ldap_could_not_connect' => 'Nepavyko prisijungti prie LDAP serverio. Patikrinkite LDAP serverio konfigūraciją LDAP konfigūracijos faile.
LDAP serverio klaida:', 'ldap_could_not_bind' => 'Nepavyko susieti su LDAP serveriu. Patikrinkite LDAP serverio konfigūraciją LDAP konfigūracijos faile.
LDAP serverio klaida: ', 'ldap_could_not_search' => 'Nepavyko paieška LDAP serveryje. Patikrinkite LDAP serverio konfigūraciją LDAP konfigūracijos faile.
LDAP serverio klaida:', diff --git a/resources/lang/lt-LT/admin/users/table.php b/resources/lang/lt-LT/admin/users/table.php index f934e8e909..8c14178349 100644 --- a/resources/lang/lt-LT/admin/users/table.php +++ b/resources/lang/lt-LT/admin/users/table.php @@ -3,7 +3,7 @@ return array( 'activated' => 'Aktyvus', 'allow' => 'Leisti', - 'checkedout' => 'Įranga', + 'checkedout' => 'Turtas', 'created_at' => 'Sukurta', 'createuser' => 'Sukurti naudotoją', 'deny' => 'Neleisti', @@ -31,7 +31,7 @@ return array( 'show_deleted' => 'Rodyti panaikintus naudotojus', 'title' => 'Antraštė', 'to_restore_them' => 'juos atkurti.', - 'total_assets_cost' => "Bendra įrangos vertė", + 'total_assets_cost' => "Bendra turto vertė", 'updateuser' => 'Atnaujinti naudotoją', 'username' => 'Naudotojo vardas', 'user_deleted_text' => 'Šis naudotojas buvo pažymėtas kaip panaikintas.', diff --git a/resources/lang/lt-LT/button.php b/resources/lang/lt-LT/button.php index 953062939e..a07a949632 100644 --- a/resources/lang/lt-LT/button.php +++ b/resources/lang/lt-LT/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Paimti viską / Panaikinti naudotoją', 'delete' => 'Panaikinti', 'edit' => 'Redaguoti', + 'clone' => 'Klonuoti', 'restore' => 'Atkurti', 'remove' => 'Pašalinti', 'request' => 'Užsakyti', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Pridėti įrangos aptarnavimą', 'append' => 'Papildyti', 'new' => 'Naujas', + 'var' => [ + 'clone' => 'Klonuoti :item_type', + 'edit' => 'Redaguoti :item_type', + 'delete' => 'Panaikinti :item_type', + 'restore' => 'Panaikinti :item_type', + 'create' => 'Kurti naują :item_type', + 'checkout' => 'Išduoti :item_type', + 'checkin' => 'Paimti :item_type', + ] ]; diff --git a/resources/lang/lt-LT/general.php b/resources/lang/lt-LT/general.php index 240ebed59b..0cea9225f2 100644 --- a/resources/lang/lt-LT/general.php +++ b/resources/lang/lt-LT/general.php @@ -17,25 +17,25 @@ return [ 'administrator' => 'Administratorius', 'add_seats' => 'Pridėtos licencijos vietos', 'age' => "Amžius", - 'all_assets' => 'Visa įranga', + 'all_assets' => 'Visas turtas', 'all' => 'Viskas', 'archived' => 'Archyvuota', - 'asset_models' => 'Įrangos modeliai', + 'asset_models' => 'Turto modeliai', 'asset_model' => 'Modelis', - 'asset' => 'Įranga', - 'asset_report' => 'Įrangos ataskaita', + 'asset' => 'Turtas', + 'asset_report' => 'Turto ataskaita', 'asset_tag' => 'Inventorinis numeris', 'asset_tags' => 'Inventoriniai numeriai', - 'assets_available' => 'Turima įranga', - 'accept_assets' => 'Priimti įrangą :name', - 'accept_assets_menu' => 'Priimti įrangą', + 'assets_available' => 'Turimas turtas', + 'accept_assets' => 'Priimti turtą :name', + 'accept_assets_menu' => 'Priimti turtą', 'audit' => 'Auditas', 'audit_report' => 'Audito žurnalas', - 'assets' => 'Įranga', - 'assets_audited' => 'audituota įranga', - 'assets_checked_in_count' => 'įranga paimta', - 'assets_checked_out_count' => 'įranga išduota', - 'asset_deleted_warning' => 'Ši įranga buvo panaikinta. Jūs turite ją atkurti, kad galėtumėte vėl ją kam nors išduoti.', + 'assets' => 'Turtas', + 'assets_audited' => 'audituotas turtas', + 'assets_checked_in_count' => 'paimtas turtas', + 'assets_checked_out_count' => 'išduotas turtas', + 'asset_deleted_warning' => 'Šis turtas buvo panaikintas. Jūs turite jį atkurti, kad galėtumėte vėl jį kam nors išduoti.', 'assigned_date' => 'Išdavimo data', 'assigned_to' => 'Išduota :name', 'assignee' => 'Išduota', @@ -80,7 +80,7 @@ return [ 'not_deleted' => ':item_type nėra panaikintas, todėl negali būti atkurtas', 'create' => 'Sukurti naują', 'created' => 'Elementas sukurtas', - 'created_asset' => 'įranga sukurta', + 'created_asset' => 'sukurtas turtas', 'created_at' => 'Sukurta', 'created_by' => 'Sukūrė', 'record_created' => 'Įrašas sukurtas', @@ -89,7 +89,7 @@ return [ 'current' => 'Dabartinis', 'current_password' => 'Dabartinis slaptažodis', 'customize_report' => 'Individualizuoti ataskaitą', - 'custom_report' => 'Individualizuota įrangos ataskaita', + 'custom_report' => 'Individualizuota turto ataskaita', 'dashboard' => 'Valdymo skydas', 'days' => 'dienos', 'days_to_next_audit' => 'Dienos iki kito audito', @@ -118,8 +118,8 @@ return [ 'employee_number' => 'Darbuotojo numeris', 'email_domain_help' => 'Naudojama el. pašto adresų generavimui importavimo metu.', 'error' => 'Klaida', - 'exclude_archived' => 'Neįtraukti archyvuotos įrangos', - 'exclude_deleted' => 'Neįtraukti panaikintos įrangos', + 'exclude_archived' => 'Neįtraukti archyvuoto turto', + 'exclude_deleted' => 'Neįtraukti panaikinto turto', 'example' => 'Pavyzdys: ', 'filastname_format' => 'Vardo pirmoji raidė, Pavardė (vpavarde@example.com)', 'firstname_lastname_format' => 'Vardas.Pavardė (vardas.pavarde@example.com)', @@ -154,7 +154,7 @@ return [ 'id' => 'ID', 'image' => 'Atvaizdas', 'image_delete' => 'Ištrinti atvaizdą', - 'include_deleted' => 'Įtraukti panaikintą įrangą', + 'include_deleted' => 'Įtraukti panaikintą turtą', 'image_upload' => 'Įkelti atvaizdą', 'filetypes_accepted_help' => 'Leidžiamas failo tipas yra :types. Didžiausias leistinas įkeliamo failo dydis yra :size.|Leidžiami failų tipai yra :types. Didžiausias leistinas įkeliamų failų dydis yra :size.', 'filetypes_size_help' => 'Didžiausias leistinas įkeliamų failų dydis yra :size.', @@ -163,11 +163,11 @@ return [ 'import' => 'Importavimas', 'import_this_file' => 'Susieti laukus ir apdoroti šį failą', 'importing' => 'Importuojama', - 'importing_help' => 'Galite importuoti įrangą, priedus, licencijas, komponentus, eksploatacines medžiagas ir vartotojus naudodami CSV failą.

CSV reikšmės turėtų būti atskirtos kableliais, o failas suformatuotas su antraštėmis, kurios atitinka esančias CSV pavyzdžiuose.', + 'importing_help' => 'Galite importuoti turtą, priedus, licencijas, komponentus, eksploatacines medžiagas ir naudotojus, naudodami CSV failą.

CSV reikšmės turėtų būti atskirtos kableliais, o failas suformuotas su antraštėmis, kurios sutampa su esančiomis CSV pavyzdžiuose.', 'import-history' => 'Importuoti istoriją', - 'asset_maintenance' => 'Įrangos aptarnavimas', - 'asset_maintenance_report' => 'Įrangos aptarnavimo ataskaita', - 'asset_maintenances' => 'Įrangos aptarnavimas', + 'asset_maintenance' => 'Turto aptarnavimas', + 'asset_maintenance_report' => 'Turto aptarnavimo ataskaita', + 'asset_maintenances' => 'Turto aptarnavimai', 'item' => 'Elementas', 'item_name' => 'Elemento pavadinimas', 'import_file' => 'importuoti CSV failą', @@ -201,13 +201,13 @@ return [ 'min_amt_help' => 'Mažiausias turimų elementų kiekis, kurį pasiekus yra aktyvuojamas įspėjimas. Palikite lauką "Mažiausias kiekis" tuščią, jei nenorite gauti įspėjimų apie mažą atsargų likutį.', 'model_no' => 'Modelio Nr.', 'months' => 'mėnesiai', - 'moreinfo' => 'Daugiau informacijos', + 'moreinfo' => 'Detaliau', 'name' => 'Vardas', 'new_password' => 'Naujas slaptažodis', 'next' => 'Kitas', 'next_audit_date' => 'Kito audito data', 'next_audit_date_help' => 'Jei organizacijoje naudojate auditą, įprastai tai yra apskaičiuojama automatiškai, atsižvelgiant į paskutinio audito datą ir dažnumą, todėl šį lauką (skiltyje Administratoriaus nustatymai > Įspėjimai) galite palikti tuščią. Jei reikia, rankiniu būdu čia galite nustatyti šią datą, tačiau ji privalo būti vėlesnė nei paskutinio audito data. ', - 'audit_images_help' => 'Audito atvaizdus galite rasti įrangos skirtuke „Istorija“.', + 'audit_images_help' => 'Audito atvaizdus galite rasti turto skirtuke „Istorija“.', 'no_email' => 'Su šiuo naudotoju nėra susietas joks el. pašto adresas', 'last_audit' => 'Paskutinis auditas', 'new' => 'naujas!', @@ -216,7 +216,7 @@ return [ 'no' => 'Ne', 'notes' => 'Pastabos', 'order_number' => 'Užsakymo numeris', - 'only_deleted' => 'Tik panaikinta įranga', + 'only_deleted' => 'Tik panaikintas turtas', 'page_menu' => 'Rodomi _MENU_ elementai', 'pagination_info' => 'Rodomi nuo _START_ iki _END_ iš _TOTAL_ vienetų', 'pending' => 'Ruošiama', @@ -243,8 +243,8 @@ return [ 'requestable_items' => 'Užsakomi daiktai', 'requested' => 'Užsakyta', 'requested_date' => 'Prašymo data', - 'requested_assets' => 'Prašoma įranga', - 'requested_assets_menu' => 'Prašoma įranga', + 'requested_assets' => 'Prašomas turtas', + 'requested_assets_menu' => 'Prašomas turtas', 'request_canceled' => 'Prašymas atšauktas', 'request_item' => 'Užsakyti šį daiktą', 'external_link_tooltip' => 'Išorinė nuoroda', @@ -265,7 +265,7 @@ return [ 'select_date' => 'Pasirinkite datą (MMMM-MM-DD)', 'select_statuslabel' => 'Pasirinkti būseną', 'select_company' => 'Pasirinkite įmonę', - 'select_asset' => 'Pasirinkite įrangą', + 'select_asset' => 'Pasirinkite turtą', 'settings' => 'Nustatymai', 'show_deleted' => 'Rodyti panaikintus', 'show_current' => 'Rodyti dabartinį', @@ -289,7 +289,7 @@ return [ 'submit' => 'Pateikti', 'target' => 'Tikslas', 'time_and_date_display' => 'Laiko ir datos rodymas', - 'total_assets' => 'iš viso įrangos', + 'total_assets' => 'iš viso turto', 'total_licenses' => 'iš viso licencijų', 'total_accessories' => 'iš viso priedų', 'total_consumables' => 'iš viso eksploatacinių medžiagų', @@ -306,11 +306,11 @@ return [ 'declined' => 'nepriimta', 'declined_note' => 'Atsisakymo pastabos', 'unassigned' => 'Nepriskirta', - 'unaccepted_asset_report' => 'Nepriimta įranga', + 'unaccepted_asset_report' => 'Nepriimtas turtas', 'users' => 'Naudotojai', 'viewall' => 'Rodyti viską', - 'viewassets' => 'Peržiūrėti priskirtą įrangą', - 'viewassetsfor' => 'Peržiūrėti :name įrangą', + 'viewassets' => 'Peržiūrėti priskirtą turtą', + 'viewassetsfor' => 'Peržiūrėti turtą – :name', 'website' => 'Internetinis puslapis', 'welcome' => 'Sveiki, :name', 'years' => 'metai', @@ -323,10 +323,10 @@ return [ 'token_expired' => 'Jūsų sesija baigėsi. Bandykite dar kartą.', 'login_enabled' => 'Prisijungimas įjungtas', 'audit_due' => 'Laukia audito', - 'audit_due_days' => 'Įranga, kuriai turi būti atliktas auditas per :days dieną|Įranga, kuriai turi būti atliktas auditas per :days dienas', + 'audit_due_days' => 'Turtas, kuriam turi būti atliktas auditas per :days dieną|Turtas, kuriam turi būti atliktas auditas per :days dienas (-ų)', 'checkin_due' => 'Laukia paėmimo', 'checkin_overdue' => 'Vėluojama paimti', - 'checkin_due_days' => 'Įranga, kuri turi būti paimta per :days dieną|Įranga, kuri turi būti paimta per :days dienas', + 'checkin_due_days' => 'Turtas, kuris turi būti paimtas per :days dieną|Turtas, kuris turi būti paimtas per :days dienas (-ų)', 'audit_overdue' => 'Audito laikas praėjęs', 'accept' => 'Priimti :asset', 'i_accept' => 'Aš sutinku', @@ -361,7 +361,7 @@ return [ 'changed' => 'Pakeista', 'to' => 'Iki', 'report_fields_info' => '

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

-

Jei norite eksportuoti tik tam tikrą įrangą, naudokite žemiau pateiktas parinktis, kad patikslintumėte rezultatus.

', +

Jei norite eksportuoti tik tam tikrą turtą, naudokite žemiau pateiktas parinktis, kad patikslintumėte rezultatus.

', 'range' => 'Intervalas', 'bom_remark' => 'Pridėti BOM (byte-order mark) prie šio CSV', 'improvements' => 'Patobulinimai', @@ -378,14 +378,14 @@ return [ 'invalid_item_category_single' => 'Neteisinga :type kategorija arba tokios kategorijos nėra. Prieš bandydami išduoti daiktą, atnaujinkite šią :type kategoriją, kad joje būtų tinkama kategorija.', 'dashboard_info' => 'Tai jūsų valdymo skydas. Yra daug panašių, bet šis yra jūsų.', '60_percent_warning' => '60% baigta (įspėjimas)', - 'dashboard_empty' => 'Atrodo, kad dar nieko nepridėjote, todėl neturime nieko nuostabaus, ką parodyti. Pradėkite dabar, pridėdami įrangos, priedų, eksploatacinių medžiagų ar licencijų!', - 'new_asset' => 'Nauja įranga', + 'dashboard_empty' => 'Atrodo, kad dar nieko nepridėjote, todėl neturime nieko nuostabaus, ką parodyti. Pradėkite dabar, pridėdami turto, priedų, eksploatacinių medžiagų ar licencijų!', + 'new_asset' => 'Naujas turtas', 'new_license' => 'Nauja licencija', 'new_accessory' => 'Naujas priedas', 'new_consumable' => 'Nauja eksploatacinė medžiaga', 'collapse' => 'Sutraukti', 'assigned' => 'Priskirta', - 'asset_count' => 'Įrangos kiekis', + 'asset_count' => 'Turto kiekis', 'accessories_count' => 'Priedų kiekis', 'consumables_count' => 'Eksploatacinių medžiagų kiekis', 'components_count' => 'Komponentų kiekis', @@ -396,9 +396,9 @@ return [ 'notification_success' => 'Pavyko', 'notification_warning' => 'Įspėjimas', 'notification_info' => 'Informacija', - 'asset_information' => 'Įrangos informacija', + 'asset_information' => 'Turto informacija', 'model_name' => 'Modelio pavadinimas', - 'asset_name' => 'Įrangos pavadinimas', + 'asset_name' => 'Turto pavadinimas', 'consumable_information' => 'Eksploatacinės medžiagos informacija:', 'consumable_name' => 'Eksploatacinės medžiagos pavadinimas:', 'accessory_information' => 'Priedo informacija:', @@ -407,10 +407,10 @@ return [ 'checkout_tooltip' => 'Išduoti šį daiktą', 'checkin_tooltip' => 'Paimti šį daiktą, kad jį būtų galima pakartotinai išduoti, atlikti jam aptarnavimą ir pan.', 'checkout_user_tooltip' => 'Išduoti šį daiktą naudotojui', - 'checkin_to_diff_location' => 'Paimamą įrangą galite perkelti ir į kitą, o ne į numatytąją vietą :default_location (jei tokia yra nurodyta)', + 'checkin_to_diff_location' => 'Paimamą turtą galite perkelti ir į kitą, o ne į numatytąją :default_location vietą (jei tokia yra nurodyta)', 'maintenance_mode' => 'Paslauga laikinai nepasiekiama dėl sistemos naujinimo. Bandykite dar kartą vėliau.', 'maintenance_mode_title' => 'Sistema laikinai nepasiekiama', - 'ldap_import' => 'Vartotojo slaptažodis neturėtų būti valdomas LDAP. (Tai leidžia siųsti užklausas dėl pamiršto slaptažodžio.)', + 'ldap_import' => 'Naudotojo slaptažodis neturėtų būti valdomas LDAP. (Tai leidžia siųsti užklausas dėl pamiršto slaptažodžio.)', 'purge_not_allowed' => 'Panaikintų duomenų valymas .env faile yra išjungtas. Susisiekite su palaikymo tarnyba arba savo sistemos administratoriumi.', 'backup_delete_not_allowed' => 'Atsarginių kopijų trynimas .env faile yra išjungtas. Susisiekite su palaikymo tarnyba arba savo sistemos administratoriumi.', 'additional_files' => 'Papildomi failai', @@ -418,11 +418,11 @@ return [ 'bulk_soft_delete' =>'Taip pat, panaikinti šiuos naudotojus. Jų turto istorija išliks nepakitusi, kol neišvalysite ištrintų įrašų administratoriaus nustatymuose.', 'bulk_checkin_delete_success' => 'Jūsų pasirinkti naudotojai buvo panaikinti, o jų elementai buvo paimti.', 'bulk_checkin_success' => 'Nurodytų naudotojų elementai buvo paimti.', - 'set_to_null' => 'Išvalyti šios įrangos reikšmes|Išvalyti visų :asset_count įrangų reikšmes ', + 'set_to_null' => 'Išvalyti šio turto reikšmes|Išvalyti visų :asset_count turto vienetų reikšmes ', 'set_users_field_to_null' => 'Išvalyti :field reikšmes šiam naudotojui|Išvalyti :field reikšmes visiems :user_count naudotojams ', 'na_no_purchase_date' => 'N/D - Nenurodyta įsigijimo data', - 'assets_by_status' => 'Įranga pagal būseną', - 'assets_by_status_type' => 'Įranga pagal būsenos tipą', + 'assets_by_status' => 'Turtas pagal būseną', + 'assets_by_status_type' => 'Turtas pagal būsenos tipą', 'pie_chart_type' => 'Valdymo skydo skritulinės diagramos tipas', 'hello_name' => 'Sveiki, :name!', 'unaccepted_profile_warning' => 'Turite :count elementus, kuriuos reikia priimti. Spustelėkite čia, jei norite juos priimti arba atmesti', @@ -443,8 +443,8 @@ return [ 'integration_option' => 'Integravimo galimybė', 'log_does_not_exist' => 'Nerasta atitinkančių žurnalo įrašų.', 'merge_users' => 'Sujungti naudotojus', - 'merge_information' => 'Bus sujungti :count naudotojai į vieną. Pasirinkite naudotoją, prie kurio prijungsite kitus. Visa susijusi įranga, licencijos ir kt. bus perkelta pasirinktam naudotojui, o kiti naudotojai bus pažymėti kaip panaikinti.', - 'warning_merge_information' => 'Šis veiksmas yra NEGRĮŽTAMAS ir jį reiktų naudoti TIK tada, kai reikia sujungti vartotojus po blogo importavimo arba sinchronizavimo. Būtinai pirmiau sukurkite atsarginę kopiją.', + 'merge_information' => 'Bus sujungti :count naudotojai į vieną. Pasirinkite naudotoją, prie kurio prijungsite kitus. Visas susijęs turtas, licencijos ir kt. bus perkelta pasirinktam naudotojui, o kiti naudotojai bus pažymėti kaip panaikinti.', + 'warning_merge_information' => 'Šis veiksmas yra NEGRĮŽTAMAS ir jį reiktų naudoti TIK tada, kai reikia sujungti naudotojus po blogo importavimo arba sinchronizavimo. Būtinai pirmiau sukurkite atsarginę kopiją.', 'no_users_selected' => 'Nepasirinktas joks naudotojas', 'not_enough_users_selected' => 'Turi būti pasirinkti bent :count naudotojai', 'merge_success' => ':count naudotojai sėkmingai sujungti į :into_username!', @@ -454,7 +454,7 @@ return [ 'clear_and_save' => 'Išvalyti ir išsaugoti', 'update_existing_values' => 'Atnaujinti esamas reikšmes?', 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Automatiškai didėjančių inventorinių numerių generavimas yra išjungtas, todėl visose eilutėse, laukas „Inventorinis numeris“ privalo būti užpildytas.', - 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Pastaba: įjungtas automatiškai didėjančių inventorinių numerių generavimas, todėl eilutėms, kuriose nėra užpildytas laukas „Inventorinis numeris“, bus sukurta nauja įranga. Eilutėse, kuriose laukas „Inventorinis numeris“ yra užpildytas, bus atnaujinta pateikta informacija.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Pastaba: įjungtas automatiškai didėjančių inventorinių numerių generavimas, todėl eilutėms, kuriose nėra užpildytas laukas „Inventorinis numeris“, bus sukurtas naujas turtas. Eilutėse, kuriose laukas „Inventorinis numeris“ yra užpildytas, bus atnaujinta pateikta informacija.', 'send_welcome_email_to_users' => ' Siųsti sveikinimo laišką naujiems naudotojams?', 'send_email' => 'Siųsti laišką', 'call' => 'Skambinti numeriu', @@ -484,8 +484,8 @@ return [ 'serial_number' => 'Serijos numeris', 'item_notes' => ':item Pastabos', 'item_name_var' => ':item Pavadinimas', - 'error_user_company' => 'Paskirties ir įrangos įmonės nesutampa', - 'error_user_company_accept_view' => 'Jums paskirta įranga priklauso kitai įmonei, todėl Jūs negalite jos priimti ar atmesti, pasitarkite su savo vadovu', + 'error_user_company' => 'Paskirties ir turto įmonės nesutampa', + 'error_user_company_accept_view' => 'Jums paskirtas turtas priklauso kitai įmonei, todėl jūs negalite jo priimti arba atsisakyti. Kreipkitės į savo vadovą.', 'importer' => [ 'checked_out_to_fullname' => 'Išduota: vardas, pavardė', 'checked_out_to_first_name' => 'Išduota: vardas', @@ -515,8 +515,8 @@ return [ 'upload_error' => 'Klaida įkeliant failą. Patikrinkite, ar nėra tuščių eilučių ir besidubliuojančių stulpelių pavadinimų.', 'copy_to_clipboard' => 'Kopijuoti į iškarpinę', 'copied' => 'Nukopijuota!', - 'status_compatibility' => 'Jei įranga jau yra išduota, jos būsena negali būti pakeista į neišduodamos būsenos tipą, todėl šios reikšmės pakeitimas nebus atliekamas.', - 'rtd_location_help' => 'Tai yra įrangos buvimo vieta, kai ji nėra išduota', + 'status_compatibility' => 'Jei turtas jau yra išduotas, jo būsena negali būti pakeista į neišduodamos būsenos tipą, todėl šios reikšmės pakeitimas nebus atliekamas.', + 'rtd_location_help' => 'Tai yra turto buvimo vieta, kai jis nėra išduotas', 'item_not_found' => ':item_type ID :id neegzistuoja arba buvo panaikintas', 'action_permission_denied' => 'Neturite teisių atlikti :action :item_type ID :id', 'action_permission_generic' => 'Neturite teisių atlikti :action šiam :item_type', @@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => 'Leidimas nesuteiktas. Demonstraciniame režime negalite keisti superadministratoriaus naudotojo informacijos.', 'pwd_reset_not_sent' => 'Naudotojas nesuaktyvintas, yra sinchronizuotas LDAP arba neturi el. pašto adreso', 'error_sending_email' => 'Siunčiant el. laišką įvyko klaida', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Liūdna panda. Jūs neturite reikiamų teisių šiam veiksmui. Verčiau grįžkite į valdymo skydą arba susisiekite su administratoriumi.', 'bulk' => [ 'delete' => [ @@ -540,15 +540,23 @@ return [ 'partial' => 'Panaikinti :success_count :object_type, bet :error_count :object_type negali būti panaikinti', ], ], - 'no_requestable' => 'Nėra užsakomos įrangos arba įrangos modelių.', + 'no_requestable' => 'Nėra užsakomo turto arba turto modelių.', 'countable' => [ 'accessories' => ':count Priedas|:count Priedai', - 'assets' => ':count Įranga|:count Įranga', + 'assets' => ':count turto vienetas|:count turto vienetai (-ų)', 'licenses' => ':count Licencija|:count Licencijos', 'license_seats' => ':count Licencijos vieta|:count Licencijos vietos', 'consumables' => ':count Eksploatacinė medžiaga|:count Eksploatacinės medžiagos', 'components' => ':count Komponentas|:count Komponentai', - ] + ], + 'more_info' => 'Detaliau', + 'quickscan_bulk_help' => 'Pažymėjus šį langelį, turto įrašas bus atnaujintas, kad atspindėtų šią naują vietą. Jei paliksite jį nepažymėtą, vieta bus pažymėta tik audito žurnale. Atkreipkite dėmesį, kad jei šis turtas bus išduotas, tai nepakeis to asmens, turto ar vietos, kuriems išduodamas turtas, buvimo vietos.', + 'whoops' => 'Oi!', + 'something_went_wrong' => 'Kažkas negerai su jūsų užklausa.', + 'close' => 'Uždaryti', + 'expires' => 'Baigiasi', + 'map_fields'=> 'Susieti :item_type lauką', + 'remaining_var' => ':count liko', ]; diff --git a/resources/lang/lt-LT/help.php b/resources/lang/lt-LT/help.php index f4a9039305..99f79a9f73 100644 --- a/resources/lang/lt-LT/help.php +++ b/resources/lang/lt-LT/help.php @@ -15,21 +15,21 @@ return [ 'more_info_title' => 'Detaliau', - 'audit_help' => 'Pažymėjus šį langelį, įrangos įrašas bus atnaujintas, kad atspindėtų šią naują vietą. Jei paliksite jį nepažymėtą, vieta bus pažymėta tik audito žurnale.

Atkreipkite dėmesį, kad jei ši įranga bus išduota, tai nepakeis asmens, įrangos ar vietos, kuriems išduodama įranga, buvimo vietos.', + 'audit_help' => 'Pažymėjus šį langelį, turto įrašas bus atnaujintas, kad atspindėtų šią naują vietą. Jei paliksite jį nepažymėtą, vieta bus pažymėta tik audito žurnale.

Atkreipkite dėmesį, kad jei šis turtas bus išduotas, tai nepakeis to asmens, turto ar vietos, kuriems išduodamas turtas, buvimo vietos.', - 'assets' => 'Įranga, tai turtas, kurį galima sekti pagal serijos ar inventoriaus numerį. Įprastai, tai yra didesnės vertės daiktai, kurių individualus identifikavimas yra svarbus.', + 'assets' => 'Turtas, tai daiktai, kuriuos galima sekti pagal serijinį ar inventorinį numerį. Įprastai, tai yra didesnės vertės daiktai, kurių individualus identifikavimas yra svarbus.', 'categories' => 'Kategorijos padeda tvarkyti elementus. Pavyzdžiui, gali būti tokios kategorijos: „Staliniai kompiuteriai“, „Nešiojamieji kompiuteriai“, „Mobilieji telefonai“, „Planšetiniai kompiuteriai“ ir pan., bet kategorijas galite naudoti bet kokiu jums patogiu būdu.', 'accessories' => 'Priedai – viskas, ką išduodate naudotojams, bet be serijinio numerio (arba jums nėra aktualu šiuos daiktus sekti individualiai). Pavyzdžiui, kompiuterių pelės ar klaviatūros.', - 'companies' => 'Galite naudoti įmones kaip paprastą informacinį lauką arba siekdami apriboti įrangos, naudotojų ir pan. matomumą, Administratoriaus nustatymuose įjungę „Pilną kelių įmonių palaikymą“.', + 'companies' => 'Galite naudoti įmones kaip paprastą informacinį lauką arba siekdami apriboti turto, naudotojų ir kt. matomumą, Administratoriaus nustatymuose įjungę „Pilną kelių įmonių palaikymą“.', - 'components' => 'Komponentai yra įrangos sudedamosios dalys, pvz., HDD/SSD diskai, RAM atminties moduliai ir kt.', + 'components' => 'Komponentai yra turto sudedamosios dalys, pvz., HDD/SSD diskai, RAM atminties moduliai ir kt.', 'consumables' => 'Eksploatacinės medžiagos – viskas, kas įsigyta ir laikui bėgant bus sunaudota. Pavyzdžiui, spausdintuvo rašalas arba kopijavimo popierius.', - 'depreciations' => 'Jūs galite nustatyti įrangos nusidėvėjimą pagal tiesinį nusidėvėjimo modelį.', + 'depreciations' => 'Jūs galite nustatyti turto nusidėvėjimą pagal tiesinį nusidėvėjimo modelį.', 'empty_file' => 'Importavimo vedlys aptiko, kad šis failas yra tuščias.' ]; diff --git a/resources/lang/lt-LT/mail.php b/resources/lang/lt-LT/mail.php index e29e198e34..16e2e00965 100644 --- a/resources/lang/lt-LT/mail.php +++ b/resources/lang/lt-LT/mail.php @@ -4,20 +4,20 @@ return [ 'Accessory_Checkin_Notification' => 'Priedas paimtas', 'Accessory_Checkout_Notification' => 'Priedas išduotas', - 'Asset_Checkin_Notification' => 'Įranga paimta', - 'Asset_Checkout_Notification' => 'Įranga išduota', + 'Asset_Checkin_Notification' => 'Turtas paimtas', + 'Asset_Checkout_Notification' => 'Turtas išduotas', 'Confirm_Accessory_Checkin' => 'Priedo paėmimo patvirtinimas', - 'Confirm_Asset_Checkin' => 'Įrangos paėmimo patvirtinimas', + 'Confirm_Asset_Checkin' => 'Turto paėmimo patvirtinimas', 'Confirm_accessory_delivery' => 'Priedo pristatymo patvirtinimas', - 'Confirm_asset_delivery' => 'Įrangos pristatymo patvirtinimas', + 'Confirm_asset_delivery' => 'Turto pristatymo patvirtinimas', 'Confirm_consumable_delivery' => 'Eksploatacinės medžiagos pristatymo patvirtinimas', 'Confirm_license_delivery' => 'Licencijos pristatymo patvirtinimas', 'Consumable_checkout_notification' => 'Eksploatacinė medžiaga išduota', 'Days' => 'Dienos', - 'Expected_Checkin_Date' => 'Jums yra išduota įranga, kuri bus iš jūsų paimta :date', + 'Expected_Checkin_Date' => 'Jums yra išduotas turtas, kuris bus iš jūsų paimtas :date d.', 'Expected_Checkin_Notification' => 'Priminimas: artėja :name paėmimo terminas', - 'Expected_Checkin_Report' => 'Numatomos paimti įrangos ataskaita', - 'Expiring_Assets_Report' => 'Bebaigiančios galioti įrangos ataskaita.', + 'Expected_Checkin_Report' => 'Numatomo paimti turto ataskaita', + 'Expiring_Assets_Report' => 'Bebaigiančio galioti turto ataskaita.', 'Expiring_Licenses_Report' => 'Bebaigiančių galioti licencijų ataskaita.', 'Item_Request_Canceled' => 'Įrangos užsakymas atšauktas', 'Item_Requested' => 'Įranga užsakyta', @@ -31,11 +31,11 @@ return [ 'accessory_name' => 'Priedo pavadinimas:', 'additional_notes' => 'Papildomos pastabos:', 'admin_has_created' => 'Administratorius sukūrė jums paskyrą :web svetainėje.', - 'asset' => 'Įranga:', - 'asset_name' => 'Įrangos pavadinimas:', - 'asset_requested' => 'Užsakyta įranga', + 'asset' => 'Turtas:', + 'asset_name' => 'Turto pavadinimas:', + 'asset_requested' => 'Turtas užsakytas', 'asset_tag' => 'Inventorinis numeris', - 'assets_warrantee_alert' => 'Yra :count įranga, kurios garantija baigiasi per kitas :threshold dienas.|Yra :count įrangos (-ų), kurių garantija baigiasi per kitas :threshold dienas (-ų).', + 'assets_warrantee_alert' => 'Yra :count turto vienetas, kurio garantija baigiasi per kitas :threshold dienas (-ų).|Yra :count turto vienetai (-ų), kurių garantija baigiasi per kitas :threshold dienas (-ų).', 'assigned_to' => 'Išduota', 'best_regards' => 'Pagarbiai,', 'canceled' => 'Atšauktas:', @@ -45,7 +45,7 @@ return [ 'checkedin_from' => 'Paimta iš', 'checked_into' => 'Paimta į', 'click_on_the_link_accessory' => 'Spustelėkite nuorodą apačioje, kad patvirtintumėte, jog gavote priedą.', - 'click_on_the_link_asset' => 'Spustelėkite nuorodą apačioje, kad patvirtintumėte, jog gavote įrangą.', + 'click_on_the_link_asset' => 'Spustelėkite nuorodą apačioje, kad patvirtintumėte, jog gavote turtą.', 'click_to_confirm' => 'Spustelėkite šią nuorodą, kad patvirtintumėte savo :web paskyrą:', 'current_QTY' => 'Esamas kiekis', 'days' => 'Dienos', @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Aš perskaičiau ir sutinku su naudojimo sąlygomis, ir patvirtinu, kad gavau šį daiktą.', 'inventory_report' => 'Inventoriaus ataskaita', 'item' => 'Daiktas:', + 'item_checked_reminder' => 'Tai priminimas, kad šiuo metu jums yra išduoti :count daiktai, kurių nepriėmėte arba neatmetėte. Spustelėkite toliau pateiktą nuorodą, kad patvirtintumėte savo sprendimą.', 'license_expiring_alert' => 'Yra :count licencija, kuri baigiasi per kitas :threshold dienas.|Yra :count licencijos (-ų), kurios baigiasi per kitas :threshold dienas (-ų).', 'link_to_update_password' => 'Spustelėkite šią nuorodą, kad atnaujintumėte savo :web slaptažodį:', 'login' => 'Prisijungti:', @@ -68,7 +69,7 @@ return [ 'password' => 'Slaptažodis:', 'password_reset' => 'Slaptažodžio nustatymas iš naujo', 'read_the_terms' => 'Perskaitykite žemiau pateiktas naudojimo sąlygas.', - 'read_the_terms_and_click' => 'Perskaitykite žemiau pateiktas naudojimo sąlygas ir spustelėti apačioje esančią nuorodą, kad patvirtintumėte jog perskaitėte ir sutinkate su jomis, bei kad gavote įrangą.', + 'read_the_terms_and_click' => 'Perskaitykite žemiau pateiktas naudojimo sąlygas ir spustelėti apačioje esančią nuorodą, kad patvirtintumėte jog perskaitėte ir sutinkate su jomis, bei kad gavote turtą.', 'requested' => 'Užsakyta:', 'reset_link' => 'Jūsų slaptažodžio nustatymo iš naujo nuoroda', 'reset_password' => 'Spustelėkite čia norėdami iš naujo nustatyti slaptažodį:', @@ -79,15 +80,17 @@ return [ 'supplier' => 'Tiekėjas', 'tag' => 'Žyma', 'test_email' => 'Bandomasis laiškas iš „Snipe-IT“', - 'test_mail_text' => 'Tai yra „Snipe-IT“ turto valdymo sistemos testas. Jei tai gavote, vadinasi paštas veikia.', + 'test_mail_text' => 'Tai yra „Snipe-IT“ turto valdymo sistemos testas. Jei gavote šį pranešimą, vadinasi paštas veikia.', 'the_following_item' => 'Šis daiktas buvo paimtas: ', 'to_reset' => 'Norėdami iš naujo nustatyti savo :web slaptažodį, užpildykite šią formą:', 'type' => 'Tipas', - 'upcoming-audits' => 'Yra :count įranga, kuriai per :threshold dienas (-ų) turi būti atliktas auditas.|Yra :count įrangos (-ų), kurioms per :threshold dienas (-ų) turi būti atliktas auditas.', + 'upcoming-audits' => 'Yra :count turto vienetas, kuriam per :threshold dienas (-ų) turi būti atliktas auditas.|Yra :count turto vienetai (-ų), kuriems per :threshold dienas (-ų) turi būti atliktas auditas.', 'user' => 'Naudotojas', 'username' => 'Naudotojo vardas', + 'unaccepted_asset_reminder' => 'Turite nepriimto turto.', 'welcome' => 'Sveiki :vardas', 'welcome_to' => 'Sveiki apsilankę :web!', - 'your_assets' => 'Peržiūrėti jūsų įrangą', + 'your_assets' => 'Peržiūrėti jūsų turtą', 'your_credentials' => 'Jūsų „Snipe-IT“ prisijungimo duomenys', + 'mail_sent' => 'Laiškas sėkmingai išsiųstas!', ]; diff --git a/resources/lang/lt-LT/validation.php b/resources/lang/lt-LT/validation.php index aa3bcaf690..40818e45bc 100644 --- a/resources/lang/lt-LT/validation.php +++ b/resources/lang/lt-LT/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute turi būti patvirtintas.', - 'active_url' => ':attribute nėra tinkamas interentinis puslapis.', - 'after' => ':attribute privalo būti data po :date.', - 'after_or_equal' => ':attribute privalo būti data lygi arba vėlesnė negu :date.', - 'alpha' => ':attribute gali būti tik raidės.', - 'alpha_dash' => ':attribute gali būti tik raidės, skaičiai ir brūkšneliai.', - 'alpha_num' => ':attribute gali būti tik raidės ir skaičiai.', - 'array' => ':attribute turi būti masyvas.', - 'before' => ':attribute turi būti data prieš :date.', - 'before_or_equal' => ':attribute privalo būti data ankstesnė arba lygi :date.', - 'between' => [ - 'numeric' => ':attribute privalo būti tarp :min - :max.', - 'file' => ':attribute privalo būti tarp :min - :max kilobaitų.', - 'string' => ':attribute privalo būti tarp :min - :max simbolių.', - 'array' => ':attribute turi būti tarp :min ir :max elementų.', + 'accepted' => ':attribute laukas turi būti patvirtintas.', + 'accepted_if' => ':attribute laukas turi būti patvirtintas, kai :other yra :value.', + 'active_url' => ':attribute lauke turi būti galiojantis URL adresas.', + 'after' => ':attribute lauke turi būti data po :date.', + 'after_or_equal' => ':attribute lauke turi būti data lygi arba vėlesnė negu :date.', + 'alpha' => ':attribute lauke gali būti tik raidės.', + 'alpha_dash' => ':attribute lauke gali būti tik raidės, skaičiai ir brūkšneliai.', + 'alpha_num' => ':attribute lauke gali būti tik raidės ir skaičiai.', + 'array' => ':attribute lauke turi būti masyvas.', + 'ascii' => ':attribute lauke turi būti tik vieno baito raidės, skaičiai ir simboliai.', + 'before' => ':attribute lauke turi būti data iki :date.', + 'before_or_equal' => ':attribute lauke turi būti data lygi arba ankstesnė negu :date.', + 'between' => [ + 'array' => ':attribute lauke turi būti nuo :min iki :max elementų.', + 'file' => ':attribute laukas turi būti nuo :min iki :max kilobaitų.', + 'numeric' => ':attribute laukas turi būti nuo :min iki :max.', + 'string' => ':attribute lauke turi būti nuo :min iki :max simbolių.', ], - 'boolean' => ':attribute turi būti „Teisinga“ arba „Klaidinga“.', - 'confirmed' => ':attribute patvirtinimas nesutampa.', - 'date' => ':attribute nėra galiojanti data.', - 'date_format' => ':attribute neatitinka formato :format.', - 'different' => ':attribute ir :other turi būti skirtingi.', - 'digits' => ':attribute privalo būti :digits skaitmenų.', - 'digits_between' => ':attribute privalo būti tarp :min ir:max skaitmenų.', - 'dimensions' => ':attribute atvaizdo matmenys yra netinkami.', - 'distinct' => ':attribute lauke yra pasikartojanti reikšmė.', - 'email' => ':attribute formatas neteisingas.', - 'exists' => 'Pasirinktas :attribute yra neteisingas.', - 'file' => ':attribute turi būti failas.', - 'filled' => ':attribute laukas turi turėti reikšmę.', - 'image' => ':attribute privalo būti atvaizdas.', + 'boolean' => ':attribute lauke turi būti „Taip“ arba „Ne“.', + 'can' => ':attribute lauke yra neleistina reikšmė.', + 'confirmed' => ':attribute lauko patvirtinimas nesutampa.', + 'contains' => ':attribute lauke trūksta privalomos reikšmės.', + 'current_password' => 'Neteisingas slaptažodis.', + 'date' => ':attribute lauke turi būti teisinga data.', + 'date_equals' => ':attribute lauke turi būti data, lygi :date.', + 'date_format' => ':attribute laukas turi atitikti formatą :format.', + 'decimal' => ':attribute lauke turi būti :decimal skaičiai po kablelio.', + 'declined' => ':attribute laukas turi būti atmestas.', + 'declined_if' => ':attribute laukas turi būti atmestas, kai :other yra :value.', + 'different' => ':attribute laukas ir :other turi būti skirtingi.', + 'digits' => ':Attribute lauke turi būti :digits skaitmenys.', + 'digits_between' => ':attribute lauke turi būti nuo :min iki :max skaitmenų.', + 'dimensions' => ':attribute lauke esančio atvaizdo matmenys yra netinkami.', + 'distinct' => ':attribute lauke yra pasikartojanti reikšmė.', + 'doesnt_end_with' => ':attribute laukas negali baigtis vienu iš šių: :values.', + 'doesnt_start_with' => ':attribute laukas negali prasidėti vienu iš šių: :values.', + 'email' => ':attribute lauke turi būti teisingas el. pašto adresas.', + 'ends_with' => ':attribute laukas privalo baigtis vienu iš šių: :values.', + 'enum' => 'Pasirinktas :attribute yra neteisingas.', + 'exists' => 'Pasirinktas :attribute yra neteisingas.', + 'extensions' => ':attribute laukas privalo turėti vieną iš šių plėtinių: :values.', + 'file' => ':attribute lauke turi būti failas.', + 'filled' => ':attribute laukas turi turėti reikšmę.', + 'gt' => [ + 'array' => ':attribute lauke turi būti daugiau nei :value elementai (-ų).', + 'file' => ':attribute laukas turi būti didesnis nei :max kilobaitai (-ų).', + 'numeric' => ':attribute laukas turi būti didesnis nei :value.', + 'string' => ':attribute lauke turi būti daugiau nei :value simboliai (-ių).', + ], + 'gte' => [ + 'array' => ':attribute lauke turi būti :value arba daugiau elementų.', + 'file' => ':attribute laukas turi būti didesnis arba lygus :value kilobaitams (-ų).', + 'numeric' => ':attribute laukas turi būti didesnis arba lygus :value.', + 'string' => ':attribute laukas turi būti didesnis arba lygus :value simboliams (-ų).', + ], + 'hex_color' => ':attribute lauke turi būti teisinga šešioliktainė spalva.', + 'image' => ':attribute lauke turi būti atvaizdas.', 'import_field_empty' => ':fieldname reikšmė negali būti tuščia.', - 'in' => 'Pasirinktas :attribute neteisingas.', - 'in_array' => 'Lauko :attribute nėra :other.', - 'integer' => ':attribute turi būti sveikas skaičius.', - 'ip' => ':attribute privalo būti tinkamas IP adresas.', - 'ipv4' => ':attribute privalo būti tinkamas IPv4 adresas.', - 'ipv6' => ':attribute privalo būti tinkamas IPv6 adresas.', - 'is_unique_department' => ':attribute turi būti unikalus šiai įmonės vietai', - 'json' => ':attribute turi būti tinkama JSON eilutė.', - 'max' => [ - 'numeric' => ':attribute negali būti didesnis nei :max.', - 'file' => ':attribute negali būti didesnis nei :max kilobaitų.', - 'string' => ':attribute negali būti didesnis nei :max simboliai.', - 'array' => ':attribute negali turėti daugiau nei :max elementų.', + 'in' => 'Pasirinktas :attribute neteisingas.', + 'in_array' => ':attribute laukas turi egzistuoti :other.', + 'integer' => ':attribute lauke turi būti sveikasis skaičius.', + 'ip' => ':attribute lauke turi būti teisingas IP adresas.', + 'ipv4' => ':attribute lauke turi būti teisingas IPv4 adresas.', + 'ipv6' => ':attribute lauke turi būti teisingas IPv6 adresas.', + 'json' => ':attribute lauke turi būti teisinga JSON eilutė.', + 'list' => ':attribute lauke turi būti sąrašas.', + 'lowercase' => ':attribute lauke turi būti tik mažosios raidės.', + 'lt' => [ + 'array' => ':attribute lauke turi būti mažiau nei :value elementai (-ų).', + 'file' => ':attribute laukas turi būti mažesnis nei :max kilobaitai (-ų).', + 'numeric' => ':attribute laukas turi būti mažesnis nei :value.', + 'string' => ':attribute lauke turi būti mažiau nei :value simboliai (-ių).', ], - 'mimes' => ':attribute privalo būti failas, kurio formatas :values.', - 'mimetypes' => ':attribute turi būti failas, kurio formatas: :values.', - 'min' => [ - 'numeric' => ':attribute privalo būti ne mažesnis nei :min.', - 'file' => ':attribute turi būti bent :min kilobaitų.', - 'string' => ':attribute privalo būti bent :min simbolių.', - 'array' => ':attribute turi turėti bent :min elementų.', + 'lte' => [ + 'array' => ':attribute lauke turi būti mažiau nei :value elementai (-ų).', + 'file' => ':attribute laukas turi būti mažesnis arba lygus :value kilobaitams (-ų).', + 'numeric' => ':attribute laukas turi būti mažesnis arba lygus :value.', + 'string' => ':attribute laukas turi būti mažesnis arba lygus :value simboliams (-ų).', ], - 'starts_with' => ':attribute turi prasidėti viena iš šių: :values.', - 'ends_with' => ':attribute turi baigtis viena iš šių: :values.', - - 'not_in' => 'Pasirinktas :attribute yra neteisingas.', - 'numeric' => ':attribute privalo būti skaičius.', - 'present' => 'Laukas :attribute turi būti pateiktas.', - 'valid_regex' => 'Tai nėra tinkamas regex. ', - 'regex' => ':attribute formatas neteisingas.', - 'required' => ':attribute laukas yra privalomas.', - 'required_if' => ':attribute laukas yra privalomas, kai :other yra :value.', - 'required_unless' => ':attribute laukas yra būtinas, nebent :other yra :values.', - 'required_with' => ':attribute laukas yra privalomas, kai :values yra nurodyta.', - 'required_with_all' => 'Laukas :attribute yra privalomas, kai :values yra nurodyta.', - 'required_without' => ':attribute laukelis privalomas kai :values yra nenurodytas.', - 'required_without_all' => 'Atributo laukas reikalingas, kai nėra nė vieno iš: vertės.', - 'same' => ':attribute ir :other privalo sutapti.', - 'size' => [ - 'numeric' => ':attribute privalo būti :size.', - 'file' => ':attribute privalo būti :size kilobaitų.', - 'string' => ':attribute privalo būti :size ženklų.', - 'array' => 'Atributas turi būti: dydžio elementai.', + 'mac_address' => ':attribute lauke turi būti teisingas MAC adresas.', + 'max' => [ + 'array' => ':attribute lauke negali būti daugiau nei :max elementai (-ų).', + 'file' => ':attribute laukas negali būti didesnis nei :max kilobaitai (-ų).', + 'numeric' => ':attribute laukas negali būti didesnis nei :max.', + 'string' => ':attribute lauke negali būti daugiau nei :max simboliai (-ių).', ], + 'max_digits' => ':attribute lauke negali būti daugiau nei :max skaitmenys (-ų).', + 'mimes' => ':attribute lauke turi būti failas, kurio formatas: :values.', + 'mimetypes' => ':attribute lauke turi būti failas, kurio formatas: :values.', + 'min' => [ + 'array' => ':attribute lauke turi būti bent :min elementai (-ų).', + 'file' => ':attribute laukas turi būti bent :min kilobaito (-ų).', + 'numeric' => ':attribute laukas turi būti ne mažesnis nei :min.', + 'string' => ':attribute lauke turi būti bent :min simboliai (-ių).', + ], + 'min_digits' => ':attribute lauke turi būti bent :min skaitmenys.', + 'missing' => ':attribute lauko turi nebūti.', + 'missing_if' => ':attribute lauko turi nebūti, kai :other yra :value.', + 'missing_unless' => ':attribute lauko turi nebūti, nebent :other yra :value.', + 'missing_with' => ':attribute lauko turi nebūti, kai egzistuoja :values.', + 'missing_with_all' => ':attribute lauko turi nebūti, kai egzistuoja :values.', + 'multiple_of' => ':attribute laukas turi būti :value kartotinis.', + 'not_in' => 'Pasirinktas :attribute yra neteisingas.', + 'not_regex' => ':attribute lauko formatas neteisingas.', + 'numeric' => ':attribute lauke turi būti skaičius.', + 'password' => [ + 'letters' => ':attribute lauke turi būti bent viena raidė.', + 'mixed' => ':attribute lauke turi būti bent viena didžioji ir viena mažoji raidė.', + 'numbers' => ':attribute lauke turi būti bent vienas skaičius.', + 'symbols' => ':attribute lauke turi būti bent vienas simbolis.', + 'uncompromised' => 'Pateiktas :attribute buvo rastas tarp nutekėjusių duomenų. Pasirinkite kitą :attribute.', + ], + 'present' => ':attribute laukas turi būti esamas.', + 'present_if' => ':attribute laukas turi egzistuoti, kai :other yra :value.', + 'present_unless' => ':attribute laukas turi egzistuoti, nebent :other yra :value.', + 'present_with' => ':attribute laukas turi egzistuoti, kai egzistuoja :values.', + 'present_with_all' => ':attribute laukas turi egzistuoti, kai egzistuoja :values.', + 'prohibited' => ':attribute laukas yra draudžiamas.', + 'prohibited_if' => ':attribute laukas yra draudžiamas, kai :other yra :value.', + 'prohibited_unless' => ':attribute laukas yra draudžiamas, nebent :other yra :values.', + 'prohibits' => ':attribute laukas uždraudžia :other egzistavimą.', + 'regex' => ':attribute lauko formatas neteisingas.', + 'required' => ':attribute laukas yra privalomas.', + 'required_array_keys' => ':attribute lauke turi būti įrašų, skirtų: :values.', + 'required_if' => ':attribute laukas yra privalomas, kai :other yra :value.', + 'required_if_accepted' => ':attribute laukas yra privalomas, kai :other yra priimta.', + 'required_if_declined' => ':attribute laukas yra privalomas, kai :other yra atmesta.', + 'required_unless' => ':attribute laukas yra būtinas, nebent :other yra :values.', + 'required_with' => ':attribute laukas yra privalomas, kai :values yra nurodyta.', + 'required_with_all' => ':attribute laukas yra privalomas, kai nurodyta :values.', + 'required_without' => ':attribute laukelis privalomas kai :values yra nenurodytas.', + 'required_without_all' => ':attribute laukas ir privalomas, kai nėra nei vienos iš :values.', + 'same' => ':attribute laukas turi sutapti su :other.', + 'size' => [ + 'array' => ':attribute lauke turi būti :size elementai (-ų).', + 'file' => ':attribute laukas turi būti :size kilobaito (-ų).', + 'numeric' => ':attribute laukas turi būti :size.', + 'string' => ':attribute lauke turi būti :size simboliai (-ių).', + ], + 'starts_with' => ':attribute laukas turi prasidėti vienu iš šių: :values.', 'string' => ':attribute turi būti eilutė.', - 'timezone' => ':attribute turi būti tinkama zona.', 'two_column_unique_undeleted' => ':attribute turi būti unikalus :table1 ir :table2. ', - 'unique' => ':attribute jau užimtas.', - 'uploaded' => ':attribute įkelti nepavyko.', - 'url' => ':attribute formatas neteisingas.', 'unique_undeleted' => ':attribute turi būti unikalus.', 'non_circular' => ':attribute neturi kurti žiedinės nuorodos.', 'not_array' => ':attribute negali būti masyvas.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Slaptažodyje turi būti bent vienas skaičius.', 'case_diff' => 'Slaptažodyje turi būti naudojamos didžiosios ir mažosios raidės.', 'symbols' => 'Slaptažodyje turi būti simbolių.', - 'gte' => [ - 'numeric' => 'Reikšmė negali būti neigiama' - ], - 'checkboxes' => ':attribute yra neteisingų parinkčių.', - 'radio_buttons' => ':atributas yra neteisingas.', - + 'timezone' => ':attribute lauke turi būti teisinga laiko juosta.', + 'unique' => ':attribute jau užimtas.', + 'uploaded' => ':attribute įkelti nepavyko.', + 'uppercase' => ':attribute lauke turi būti tik didžiosios raidės.', + 'url' => ':attribute lauke turi būti galiojantis URL adresas.', + 'ulid' => ':attribute lauke turi būti galiojantis ULID identifikatorius.', + 'uuid' => ':attribute lauke turi būti galiojantis UUID identifikatorius.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute turi būti galiojanti data YYYY-MM-DD formatu', 'last_audit_date.date_format' => ':attribute turi būti galiojanti data YYYY-MM-DD hh:mm:ss formatu', 'expiration_date.date_format' => ':attribute turi būti galiojanti data YYYY-MM-DD formatu', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute turi būti galiojanti data YYYY-MM-DD formatu', 'start_date.date_format' => ':attribute turi būti galiojanti data YYYY-MM-DD formatu', 'end_date.date_format' => ':attribute turi būti galiojanti data YYYY-MM-DD formatu', - - ], - + 'checkboxes' => ':attribute yra neteisingų parinkčių.', + 'radio_buttons' => ':attribute yra neteisingas.', + 'invalid_value_in_field' => 'Šiame lauke yra neteisinga reikšmė', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Į šį lauką įtraukta netinkama reikšmė', + + 'generic' => [ + 'invalid_value_in_field' => 'Šiame lauke yra neteisinga reikšmė', + 'required' => 'Šis laukas yra privalomas', + 'email' => 'Įveskite galiojantį el. pašto adresą', + ], + + ]; diff --git a/resources/lang/lv-LV/account/general.php b/resources/lang/lv-LV/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/lv-LV/account/general.php +++ b/resources/lang/lv-LV/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/lv-LV/admin/accessories/message.php b/resources/lang/lv-LV/admin/accessories/message.php index c18c673ff0..9e1b0877a3 100644 --- a/resources/lang/lv-LV/admin/accessories/message.php +++ b/resources/lang/lv-LV/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Piederums netika pārbaudīts, lūdzu, mēģiniet vēlreiz', 'success' => 'Piederums ir veiksmīgi izrakstīts.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Šis lietotājs ir nederīgs. Lūdzu mēģiniet vēlreiz.' + 'user_does_not_exist' => 'Šis lietotājs ir nederīgs. Lūdzu mēģiniet vēlreiz.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/lv-LV/admin/consumables/general.php b/resources/lang/lv-LV/admin/consumables/general.php index 138e40cdf1..9edec42349 100644 --- a/resources/lang/lv-LV/admin/consumables/general.php +++ b/resources/lang/lv-LV/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Atlikušais', 'total' => 'Kopā', 'update' => 'Atjaunināt patērējamu', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/lv-LV/admin/consumables/message.php b/resources/lang/lv-LV/admin/consumables/message.php index 3a675b7f5c..3de958adfa 100644 --- a/resources/lang/lv-LV/admin/consumables/message.php +++ b/resources/lang/lv-LV/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Patērējamais nav.', 'create' => array( diff --git a/resources/lang/lv-LV/admin/custom_fields/message.php b/resources/lang/lv-LV/admin/custom_fields/message.php index 5173f5a099..357bb0ac25 100644 --- a/resources/lang/lv-LV/admin/custom_fields/message.php +++ b/resources/lang/lv-LV/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Šis lauks neeksistē.', 'already_added' => 'Lauks jau ir pievienots', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Lauks nav izveidots, lūdzu, mēģiniet vēlreiz.', diff --git a/resources/lang/lv-LV/admin/hardware/message.php b/resources/lang/lv-LV/admin/hardware/message.php index 4b01482a28..6303a0ced1 100644 --- a/resources/lang/lv-LV/admin/hardware/message.php +++ b/resources/lang/lv-LV/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Ievadīšana: Šis īpašums ir atzīmēts kā pašlaik nederīgs. Ja šis statuss ir mainījies, lūdzu, atjauniniet aktīvu statusu.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Aktīvs neeksistē.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Daži vienumi netika pareizi importēti.', 'errorDetail' => 'Tālāk minētie vienumi netika importēti kļūdu dēļ.', 'success' => 'Jūsu fails ir importēts', diff --git a/resources/lang/lv-LV/admin/labels/message.php b/resources/lang/lv-LV/admin/labels/message.php index 96785f0754..c81991a764 100644 --- a/resources/lang/lv-LV/admin/labels/message.php +++ b/resources/lang/lv-LV/admin/labels/message.php @@ -2,10 +2,10 @@ return [ - 'invalid_return_count' => 'Invalid count returned from :name. Expected :expected, got :actual.', - 'invalid_return_type' => 'Invalid type returned from :name. Expected :expected, got :actual.', - 'invalid_return_value' => 'Invalid value returned from :name. Expected :expected, got :actual.', + 'invalid_return_count' => 'Atgriezts neatbilstošs skaits :name. Paredzēts :expected, iegūts :actual.', + 'invalid_return_type' => 'Atgriezts neatbilstošs tips :name. Paredzēts :expected, iegūts :actual.', + 'invalid_return_value' => 'Atgriezta neatbilstoša vērtība :name. Paredzēts :expected, iegūts :actual.', - 'does_not_exist' => 'Label does not exist', + 'does_not_exist' => 'Etiķete neeksistē', ]; diff --git a/resources/lang/lv-LV/admin/licenses/general.php b/resources/lang/lv-LV/admin/licenses/general.php index f564867c27..52a6ed7fc0 100644 --- a/resources/lang/lv-LV/admin/licenses/general.php +++ b/resources/lang/lv-LV/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Licences informācija', 'license_seats' => 'Licences vietas', 'seat' => 'Sēdeklis', + 'seat_count' => 'Seat :count', 'seats' => 'Sēdvietas', 'software_licenses' => 'Programmatūras licences', 'user' => 'Lietotājs', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/lv-LV/admin/licenses/message.php b/resources/lang/lv-LV/admin/licenses/message.php index 9854d5ec0e..57c5fd8431 100644 --- a/resources/lang/lv-LV/admin/licenses/message.php +++ b/resources/lang/lv-LV/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Pārbaudot licenci, radās problēma. Lūdzu mēģiniet vēlreiz.', 'success' => 'Licence tika veiksmīgi pārbaudīta', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/lv-LV/admin/models/message.php b/resources/lang/lv-LV/admin/models/message.php index 084c092a56..6c87d6cb75 100644 --- a/resources/lang/lv-LV/admin/models/message.php +++ b/resources/lang/lv-LV/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Šobrīd šis modelis ir saistīts ar vienu vai vairākiem aktīviem, un tos nevar izdzēst. Lūdzu, izdzēsiet aktīvus un pēc tam mēģiniet vēlreiz dzēst.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Modelis netika izveidots, lūdzu, mēģiniet vēlreiz.', diff --git a/resources/lang/lv-LV/admin/settings/general.php b/resources/lang/lv-LV/admin/settings/general.php index 4197184d6a..28e8018df8 100644 --- a/resources/lang/lv-LV/admin/settings/general.php +++ b/resources/lang/lv-LV/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Šis tikai pārbauda vai darbojas LDAP sinhronizācija. Ja LDAP autentifikācijas vaicājums nav pareizs, lietotāji, iespējams, joprojām nevarēs pierakstīties. VISPIRMS SAGLABĀJIET ATJAUNINĀTOS LDAP IESTATĪJUMUS.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP serveris', - 'ldap_server_help' => 'Tam vajadzētu sākt ar ldap: // (nešifrētiem vai TLS) vai ldaps: // (attiecībā uz SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL sertifikātu validācija', 'ldap_server_cert_ignore' => 'Atļaut nederīgu SSL sertifikātu', 'ldap_server_cert_help' => 'Atzīmējiet šo izvēles rūtiņu, ja izmantojat pašrakstītu SSL sertifikātu un vēlaties pieņemt nederīgu SSL sertifikātu.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Programmatūras licence', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'pēc izvēles', 'per_page' => 'Rezultāti lapā', 'php' => 'PHP versija', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/lv-LV/button.php b/resources/lang/lv-LV/button.php index b0aeb0cbab..a288ea35e0 100644 --- a/resources/lang/lv-LV/button.php +++ b/resources/lang/lv-LV/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Dzēst', 'edit' => 'Rediģēt', + 'clone' => 'Clone', 'restore' => 'Atjaunot', 'remove' => 'Remove', 'request' => 'Pieprasījums', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Jauns', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/lv-LV/general.php b/resources/lang/lv-LV/general.php index 5bdad8a25b..b0bcb6372a 100644 --- a/resources/lang/lv-LV/general.php +++ b/resources/lang/lv-LV/general.php @@ -1,22 +1,22 @@ '2FA reset', + '2FA_reset' => '2FA atiestatīšana', 'accessories' => 'Aksesuāri', 'activated' => 'Aktivizēts', - 'accepted_date' => 'Date Accepted', + 'accepted_date' => 'Datums pieņemts', 'accessory' => 'Piederums', 'accessory_report' => 'Piederumu pārskats', 'action' => 'Darbība', 'activity_report' => 'Darbības pārskats', 'address' => 'Adrese', 'admin' => 'Administrators', - 'admin_tooltip' => 'This user has admin privileges', - 'superuser' => 'Superuser', - 'superuser_tooltip' => 'This user has superuser privileges', + 'admin_tooltip' => 'Šim lietotājam ir administratora tiesības', + 'superuser' => 'Galvenais lietotājs', + 'superuser_tooltip' => 'Šim lietotājam ir glavenā lietotāja tiesības', 'administrator' => 'Administrators', 'add_seats' => 'Pievienoti sēdekļi', - 'age' => "Age", + 'age' => "Vecums", 'all_assets' => 'Visi aktīvi', 'all' => 'Viss', 'archived' => 'Arhivēts', @@ -32,13 +32,13 @@ return [ 'audit' => 'Audits', 'audit_report' => 'Revīzijas žurnāls', 'assets' => 'Aktīvi', - 'assets_audited' => 'assets audited', - 'assets_checked_in_count' => 'assets checked in', - 'assets_checked_out_count' => 'assets checked out', - 'asset_deleted_warning' => 'This asset has been deleted. You must restore it before you can assign it to someone.', - 'assigned_date' => 'Date Assigned', - 'assigned_to' => 'Assigned to :name', - 'assignee' => 'Assigned to', + 'assets_audited' => 'inventārs pārbaudīts', + 'assets_checked_in_count' => 'inventārs noliktavā', + 'assets_checked_out_count' => 'inventārs izsniegts', + 'asset_deleted_warning' => 'Šis inventārs ir dzēsts. Jums tas ir jāatjauno pirms izsniedzat kādam citam.', + 'assigned_date' => 'Izsniegšanas Datums', + 'assigned_to' => 'Izsniegta :name', + 'assignee' => 'Izsniegts', 'avatar_delete' => 'Izdzēst Avatar', 'avatar_upload' => 'Augšupielādēt Avatar', 'back' => 'Atpakaļ', @@ -49,9 +49,9 @@ return [ 'bulk_edit' => 'Lielapjoma rediģēšana', 'bulk_delete' => 'Lielapjoma dzēšana', 'bulk_actions' => 'Lielapjoma darbības', - 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'bulk_checkin_delete' => 'Lielapjoma Lietotāju Reģistrēšana / Dzēšana', 'byod' => 'BYOD', - 'byod_help' => 'This device is owned by the user', + 'byod_help' => 'Šī iekārta pieder lietotājam', 'bystatus' => 'pēc statusa', 'cancel' => 'Atcelt', 'categories' => 'Kategorijas', @@ -76,13 +76,13 @@ return [ 'consumable' => 'Izlietojams', 'consumables' => 'Izejmateriāli', 'country' => 'Valsts', - 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'could_not_restore' => 'Kļūda atjaunojot :item_type: :error', + 'not_deleted' => ':item_type nevar atjaunot, jo tas nav izdzēsts', 'create' => 'Izveidot jaunu', 'created' => 'Izveidots vienums', 'created_asset' => 'izveidots aktīvu', - 'created_at' => 'Created At', - 'created_by' => 'Created By', + 'created_at' => 'Izveidots', + 'created_by' => 'Izveidoja', 'record_created' => 'Ieraksts izceidots', 'updated_at' => 'Atjaunināts vietnē', 'currency' => '$', // this is deprecated @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Šī lietojumprogramma darbojas ražošanas režīmā ar iespējotu atkļūdošanu. Tas var pakļaut sensitīvus datus, ja jūsu pieteikums ir pieejams ārpasauli. Atspējošanas atkļūdošanas režīms, iestatot APP_DEBUG vērtību savam .env failam uz false.', 'delete' => 'Dzēst', 'delete_confirm' => 'Vai tiešām vēlaties dzēst :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Vai esat pārliecināti, ka vēlaties dzēst šo :item? Tas būs neatgriezeniski.', 'deleted' => 'Svītrots', 'delete_seats' => 'Izdzēstās vietas', 'deletion_failed' => 'Dzēšana neizdevās', @@ -118,29 +118,29 @@ return [ 'employee_number' => 'Darbinieka numurs', 'email_domain_help' => 'To izmanto, lai importētu e-pasta adreses', 'error' => 'Kļūda', - 'exclude_archived' => 'Exclude Archived Assets', - 'exclude_deleted' => 'Exclude Deleted Assets', - 'example' => 'Example: ', + 'exclude_archived' => 'Neiekļaut Arhivētu Inventāru', + 'exclude_deleted' => 'Neiekļaut Dzēstu Inventāru', + 'example' => 'Piemērs: ', 'filastname_format' => 'Pirmais sākotnējais uzvārds (jsmith@example.com)', 'firstname_lastname_format' => 'Vārds un uzvārds (jane.smith@example.com)', 'firstname_lastname_underscore_format' => 'Vārds Uzvārds (jane_smith@example.com)', 'lastnamefirstinitial_format' => 'Uzvārds un vārda pirmais burts (berzinsj@epasts.lv)', 'firstintial_dot_lastname_format' => 'Vārds un uzvārds (j.smith@example.com)', - 'firstname_lastname_display' => 'First Name Last Name (Jane Smith)', - 'lastname_firstname_display' => 'Last Name First Name (Smith Jane)', - 'name_display_format' => 'Name Display Format', + 'firstname_lastname_display' => 'Vārds Uzvārds (Liene Ozoliņa)', + 'lastname_firstname_display' => 'Uzvārds Vārds (Ozoliņa Liene)', + 'name_display_format' => 'Vārda Attēlošanas Formāts', 'first' => 'Vispirms', 'firstnamelastname' => 'Vārds Uzvārds (jane_smith@example.com)', 'lastname_firstinitial' => 'Uzvārds un vārda pirmais burts (berzinsj@epasts.lv)', 'firstinitial.lastname' => 'Vārds un uzvārds (j.smith@example.com)', 'firstnamelastinitial' => 'Vārds Uzvārds (jane_smith@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Uzvārds Vārds (ozoliņa.liene@epasts.lv)', 'first_name' => 'Vārds', 'first_name_format' => 'Vārds (jane@example.com)', 'files' => 'Datnes', 'file_name' => 'Fails', 'file_type' => 'Faila tips', - 'filesize' => 'File Size', + 'filesize' => 'Datnes lielums', 'file_uploads' => 'Faila augšupielāde', 'file_upload' => 'Faila augšupielāde', 'generate' => 'Izveidot', @@ -148,57 +148,57 @@ return [ 'github_markdown' => 'Šajā laukā tiek pieņemts Github pieņemtais marķējums.', 'groups' => 'Grupas', 'gravatar_email' => 'Gravatar e-pasta adrese', - 'gravatar_url' => 'Change your avatar at Gravatar.com.', + 'gravatar_url' => 'Izmaini savu tēlu Gravatar.com.', 'history' => 'Vēsture', 'history_for' => 'Vēsture par', 'id' => 'ID', 'image' => 'Attēls', 'image_delete' => 'Dzēst attēlu', - 'include_deleted' => 'Include Deleted Assets', + 'include_deleted' => 'Iekļaut Dzēstu Inventāru', 'image_upload' => 'Augšupielādēt attēlu', 'filetypes_accepted_help' => 'Atļautie failu tipi :types. Maksimālais atļautais failu izmērs :size.|Atļautie failu tipi :types. Maksimālais atļautais failu izmārs :size.', 'filetypes_size_help' => 'Maksimālais atļautais failu izmērs :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', - 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', + 'image_filetypes_help' => 'Atlautie failu tipi ir: jpg, webp, png, gif, svg, and avif. Maks. augšupielādes lielums ir :size.', + 'unaccepted_image_type' => 'Šis attēls nebija izmantojams. Atļautie failu tipi ir: jpg, webp, png, gif, and svg. Šī faila tips ir :mimetype.', 'import' => 'Importēt', - 'import_this_file' => 'Map fields and process this file', - 'importing' => 'Importing', - 'importing_help' => 'You can import assets, accessories, licenses, components, consumables, and users via CSV file.

The CSV should be comma-delimited and formatted with headers that match the ones in the sample CSVs in the documentation.', + 'import_this_file' => 'Kartējiet laukus un apstrādājiet šo failu', + 'importing' => 'Notiek ielāde', + 'importing_help' => 'Jūs ar CSV failu varat ielādēt inventāru, piederumus, licences, sastāvdaļas, izlietojamus materiālus un lietotājus.

CSV failam jālieto atdalītājs - komats un jābūt formētam ar datiem galvenē, kas atbilst prasībām kas norādīta CSV dokumentācijā.', 'import-history' => 'Importa vēsture', 'asset_maintenance' => 'Aktīvu uzturēšana', 'asset_maintenance_report' => 'Aktīvu uzturēšanas pārskats', 'asset_maintenances' => 'Aktīvu uzturēšana', 'item' => 'Vienums', - 'item_name' => 'Item Name', - 'import_file' => 'import CSV file', - 'import_type' => 'CSV import type', + 'item_name' => 'Lietas Nosaukums', + 'import_file' => 'ielādēt CSV failu', + 'import_type' => 'CSV ielādes tips', 'insufficient_permissions' => 'Nepietiekamas atļaujas!', - 'kits' => 'Predefined Kits', + 'kits' => 'Iepriekšnoteikti komplekti', 'language' => 'Valoda', 'last' => 'Pēdējais', 'last_login' => 'Pēdējais pieteikšanās', 'last_name' => 'Uzvārds', 'license' => 'Licence', 'license_report' => 'Licences atskaite', - 'licenses_available' => 'Licenses available', + 'licenses_available' => 'Pieejamās licences', 'licenses' => 'Licences', 'list_all' => 'Saraksts viss', - 'loading' => 'Loading... please wait....', - 'lock_passwords' => 'This field value will not be saved in a demo installation.', + 'loading' => 'Ielādēju... lūdzu uzgaidiet...', + 'lock_passwords' => 'Šī lauka vērtība netiks saglabāta parauga instalācijā.', 'feature_disabled' => 'Demonstrācijas instalēšanai šī funkcija ir atspējota.', 'location' => 'Atrašanās vieta', - 'location_plural' => 'Location|Locations', + 'location_plural' => 'Atrašanās vieta|Atrašanās vietas', 'locations' => 'Atrašanās vietas', - 'logo_size' => 'Square logos look best with Logo + Text. Logo maximum display size is 50px high x 500px wide. ', + 'logo_size' => 'Kvadrāta logotips vislabāk izskatās ar "Logotips + Teksts" ar maksimālo izmēru 50px augsts x 500px plats. ', 'logout' => 'Izlogoties', 'lookup_by_tag' => 'Meklēt pēc Asset Tag', 'maintenances' => 'Apkope', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Pārvaldīt API atslēgas', 'manufacturer' => 'Ražotājs', 'manufacturers' => 'Ražotāji', 'markdown' => 'Šajā laukā ir iespējota Github aromatizēta atzīme.', 'min_amt' => 'Min. QTY', - 'min_amt_help' => 'Minimum number of items that should be available before an alert gets triggered. Leave Min. QTY blank if you do not want to receive alerts for low inventory.', + 'min_amt_help' => 'Mazākais lietu daudzums, kam vienmēr jābūt pieejamam pirms nostrādā brīdinājums. Atstājiet "Maz.daudz." tukšu, ja Jūs negribat saņemt brīdinājumus par zemu inventāra līmeni.', 'model_no' => 'Modelis Nr.', 'months' => 'mēneši', 'moreinfo' => 'Vairāk informācijas', @@ -206,9 +206,9 @@ return [ 'new_password' => 'Jauna parole', 'next' => 'Nākamais', 'next_audit_date' => 'Nākamā audita datums', - 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', - 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', - 'no_email' => 'No email address associated with this user', + 'next_audit_date_help' => 'Ja Jūs organizācijā veicat auditu, tas tiek automātiski aprēķināts balstoties uz inventāra' pēdējā audita datumu un audita biežumu (Admin iestatījumi > Paziņojumi) un to šo atstāt tukšu. Jūs varat iestatīt šeit datumu, ja tas ir nepieciešams, bet tam jābūt pēc pēdējā audita datuma. ', + 'audit_images_help' => 'Jūs varat atrast audita attēlus inventāra Vēstures cilnē.', + 'no_email' => 'Šim lietotājam nav norādīta epasta adrese', 'last_audit' => 'Pēdējais audits', 'new' => 'jauns!', 'no_depreciation' => 'Nav nolietojuma', @@ -216,7 +216,7 @@ return [ 'no' => 'Nē', 'notes' => 'Piezīmes', 'order_number' => 'Pasūtījuma numurs', - 'only_deleted' => 'Only Deleted Assets', + 'only_deleted' => 'Tikai Dzēsts Inventārs', 'page_menu' => 'Rāda _MENU_ vienumus', 'pagination_info' => 'Rāda _START_ līdz _END_ no _TOTAL_ vienumiem', 'pending' => 'Gaida', @@ -229,9 +229,9 @@ return [ 'purchase_date' => 'Pirkuma datums', 'qty' => 'QTY', 'quantity' => 'Daudzums', - 'quantity_minimum' => 'You have :count items below or almost below minimum quantity levels', - 'quickscan_checkin' => 'Quick Scan Checkin', - 'quickscan_checkin_status' => 'Checkin Status', + 'quantity_minimum' => 'Jums ir :count lietas zem vai gandrīz zem minimālā daudzuma sliekšņa', + 'quickscan_checkin' => 'Ātrā Skenēšana un Pieņemšana', + 'quickscan_checkin_status' => 'Reģistrēšanās Statuss', 'ready_to_deploy' => 'Gatavs izvietot', 'recent_activity' => 'Pēdējās aktivitātes', 'remaining' => 'Atlikušais', @@ -239,22 +239,22 @@ return [ 'reports' => 'Ziņojumi', 'restored' => 'atjaunots', 'restore' => 'Atjaunot', - 'requestable_models' => 'Requestable Models', - 'requestable_items' => 'Requestable Items', + 'requestable_models' => 'Pieprasāmie modeļi', + 'requestable_items' => 'Pieprasāmās lietas', 'requested' => 'Pieprasīts', - 'requested_date' => 'Requested Date', - 'requested_assets' => 'Requested Assets', - 'requested_assets_menu' => 'Requested Assets', + 'requested_date' => 'Pieprasīšanas datums', + 'requested_assets' => 'Pieprasītais inventārs', + 'requested_assets_menu' => 'Pieprasītais inventārs', 'request_canceled' => 'Pieprasījums atcelts', - 'request_item' => 'Request this item', - 'external_link_tooltip' => 'External link to', + 'request_item' => 'Pieprasīt šo lietu', + 'external_link_tooltip' => 'Ārējā saite', 'save' => 'Saglabājiet', - 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects + 'select_var' => 'Izvēlēties :thing... ', // this will eventually replace all of our other selects 'select' => 'Izvēlieties', - 'select_all' => 'Select All', + 'select_all' => 'Atlasīt Visu', 'search' => 'Meklēt', 'select_category' => 'Izvēlies kategoriju', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Atlasīt Datu avotu', 'select_department' => 'Izvēlieties nodaļu', 'select_depreciation' => 'Atlasiet nolietojuma veidu', 'select_location' => 'Izvēlieties atrašanās vietu', @@ -271,21 +271,21 @@ return [ 'show_current' => 'Rādīt pašreizējo', 'sign_in' => 'Ielogoties', 'signature' => 'Paraksts', - 'signed_off_by' => 'Signed Off By', + 'signed_off_by' => 'Izsniedza', 'skin' => 'Dizains', - 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_msg_note' => 'Paziņojums tiks nosūtīts ar webhook', + 'webhook_test_msg' => 'Sveiks! Tava :app integrācija ar Snipe-IT darbojas!', 'some_features_disabled' => 'DEMO MODE: dažas instalācijas funkcijas ir atspējotas.', 'site_name' => 'Vietnes nosaukums', 'state' => 'Valsts', 'status_labels' => 'Statusa etiķetes', 'status' => 'Statuss', - 'accept_eula' => 'Acceptance Agreement', + 'accept_eula' => 'Pieņemšanas Līgums', 'supplier' => 'Piegādātājs', 'suppliers' => 'Piegādātāji', 'sure_to_delete' => 'Vai tiešām vēlaties dzēst', 'sure_to_delete_var' => 'Vai tiešām vēlaties dzēst :item?', - 'delete_what' => 'Delete :item', + 'delete_what' => 'Izdzēst :item', 'submit' => 'Iesniegt', 'target' => 'Mērķis', 'time_and_date_display' => 'Laika un datuma displejs', @@ -299,161 +299,161 @@ return [ 'username_format' => 'Lietotājvārds formāts', 'username' => 'Lietotājvārds', 'update' => 'Atjaunināt', - 'upload_filetypes_help' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, xls, xlsx, txt, lic, xml, zip, rtf and rar. Max upload size allowed is :size.', + 'upload_filetypes_help' => 'Atļautie failu veidi ir: png, gif, jpg, jpeg, doc, docx, pdf, xls, xlsx, txt, lic, xml, zip, rtf un rar. Maks. augšupielādes izmērs ir: :size.', 'uploaded' => 'Augšupielādēts', 'user' => 'Lietotājs', 'accepted' => 'pieņemts', 'declined' => 'noraidīja', - 'declined_note' => 'Declined Notes', - 'unassigned' => 'Unassigned', + 'declined_note' => 'Noraidītās Piezīmes', + 'unassigned' => 'Nepiešķirts', 'unaccepted_asset_report' => 'Nepieņemtie aktīvi', 'users' => 'Lietotāji', - 'viewall' => 'View All', + 'viewall' => 'Skatīt visus', 'viewassets' => 'Apskatīt piešķirtos aktīvus', - 'viewassetsfor' => 'View Assets for :name', + 'viewassetsfor' => 'Skatīt :name inventāru', 'website' => 'Tīmekļa vietne', 'welcome' => 'Laipni lūdzam: vārds', 'years' => 'gadiem', 'yes' => 'Jā', 'zip' => 'Zip', 'noimage' => 'Nav augšupielādēts attēls vai attēls nav atrasts.', - 'file_does_not_exist' => 'The requested file does not exist on the server.', - 'file_upload_success' => 'File upload success!', - 'no_files_uploaded' => 'File upload success!', + 'file_does_not_exist' => 'Prasītais fails neatrodas uz šī servera.', + 'file_upload_success' => 'Faila augšupielāde veiksmīga!', + 'no_files_uploaded' => 'Faila augšupielāde veiksmīga!', 'token_expired' => 'Jūsu veidlapas sesija ir beidzies. Lūdzu mēģiniet vēlreiz.', - 'login_enabled' => 'Login Enabled', - 'audit_due' => 'Due for Audit', - 'audit_due_days' => 'Assets Due for Audit Within :days Day|Assets Due for Audit Within :days Days', - 'checkin_due' => 'Due for Checkin', - 'checkin_overdue' => 'Overdue for Checkin', - 'checkin_due_days' => 'Assets Due for Checkin Within :days Day|Assets Due for Checkin Within :days Days', - 'audit_overdue' => 'Overdue for Audit', - 'accept' => 'Accept :asset', - 'i_accept' => 'I accept', - 'i_decline' => 'I decline', - 'accept_decline' => 'Accept/Decline', - 'sign_tos' => 'Sign below to indicate that you agree to the terms of service:', - 'clear_signature' => 'Clear Signature', - 'show_help' => 'Show help', - 'hide_help' => 'Hide help', - 'view_all' => 'view all', - 'hide_deleted' => 'Hide Deleted', + 'login_enabled' => 'Pieteikšanās Iespējota', + 'audit_due' => 'Gaida Auditu', + 'audit_due_days' => 'Inventāra Audits pēc :days dienas|Inventāra Audits pēc :days dienām', + 'checkin_due' => 'Jāpieņem', + 'checkin_overdue' => 'Aizkavējusies Pieņemšana', + 'checkin_due_days' => 'Inventāra Pieņemšana pēc :days dienas|Inventāra Pieņemšana pēc :days dienām', + 'audit_overdue' => 'Aizkavējies Audits', + 'accept' => 'Apstiprināt :asset', + 'i_accept' => 'Es pieņemu', + 'i_decline' => 'Es noraidu', + 'accept_decline' => 'Pieņemt/Noraidīt', + 'sign_tos' => 'Parakstieties apakšā, lai apstiprinātu, ka pieņemat pakalpojuma nosacījumus:', + 'clear_signature' => 'Dzēst Parakstu', + 'show_help' => 'Parādīt palīdzību', + 'hide_help' => 'Paslēpt palīdzību', + 'view_all' => 'skatīt visu', + 'hide_deleted' => 'Slēpt Dzēstos', 'email' => 'E-pasts', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', - 'user_manual' => 'User\'s Manual', - 'setup_step_1' => 'Step 1', - 'setup_step_2' => 'Step 2', - 'setup_step_3' => 'Step 3', - 'setup_step_4' => 'Step 4', - 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', - 'setup_done' => 'Finished!', - 'bulk_edit_about_to' => 'You are about to edit the following: ', + 'do_not_change' => 'Nemainīt', + 'bug_report' => 'Ziņot par kļūdu', + 'user_manual' => 'Lietotāja rokasgrāmata', + 'setup_step_1' => '1. Solis', + 'setup_step_2' => '2. Solis', + 'setup_step_3' => '3. Solis', + 'setup_step_4' => '4. Solis', + 'setup_config_check' => 'Konfigurācijas pārbaude', + 'setup_create_database' => 'Izveidot Datubāzes Tabulas', + 'setup_create_admin' => 'Izveidot Admin lietotāju', + 'setup_done' => 'Gatavs!', + 'bulk_edit_about_to' => 'Jūs tūlīt rediģēsiet sekojošo: ', 'checked_out' => 'Izrakstīts', - 'checked_out_to' => 'Checked out to', - 'fields' => 'Fields', - 'last_checkout' => 'Last Checkout', - 'due_to_checkin' => 'The following :count items are due to be checked in soon:', - 'expected_checkin' => 'Expected Checkin', - 'reminder_checked_out_items' => 'This is a reminder of the items currently checked out to you. If you feel this list is inaccurate (something is missing, or something appears here that you believe you never received), please email :reply_to_name at :reply_to_address.', - 'changed' => 'Changed', - 'to' => 'To', - 'report_fields_info' => '

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

-

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

', - 'range' => 'Range', - 'bom_remark' => 'Add a BOM (byte-order mark) to this CSV', - 'improvements' => 'Improvements', - 'information' => 'Information', - 'permissions' => 'Permissions', - 'managed_ldap' => '(Managed via LDAP)', - 'export' => 'Export', - 'ldap_sync' => 'LDAP Sync', - 'ldap_user_sync' => 'LDAP User Sync', - 'synchronize' => 'Synchronize', - 'sync_results' => 'Synchronization Results', - 'license_serial' => 'Serial/Product Key', - 'invalid_category' => 'Invalid or missing category', - 'invalid_item_category_single' => 'Invalid or missing :type category. Please update the category of this :type to include a valid category before checking out.', - 'dashboard_info' => 'This is your dashboard. There are many like it, but this one is yours.', - '60_percent_warning' => '60% Complete (warning)', - 'dashboard_empty' => 'It looks like you have not added anything yet, so we do not have anything awesome to display. Get started by adding some assets, accessories, consumables, or licenses now!', - 'new_asset' => 'New Asset', - 'new_license' => 'New License', - 'new_accessory' => 'New Accessory', - 'new_consumable' => 'New Consumable', - 'collapse' => 'Collapse', + 'checked_out_to' => 'Izsniegta', + 'fields' => 'Lauki', + 'last_checkout' => 'Pēdējā Izsniegšana', + 'due_to_checkin' => 'Sekojošās :count lietas drīz tiks izsniegtas:', + 'expected_checkin' => 'Paredzamais reģistrēšanas datums', + 'reminder_checked_out_items' => 'Šis ir atgādinājums par lietām, kas šobrīd Jums ir izsniegtas. Ja Jums liekas, ka sarakstā ir kļūda (kaut kas trūkst vai attēlots kaut kas, kas Jums nav izsniegts), lūdzu atsūtiet :reply_to_name epastu uz :reply_to_address.', + 'changed' => 'Izmainīts', + 'to' => 'Kam', + 'report_fields_info' => '

Izvēlieties laukus, kurus vēlaties iekļaut Jūsu pielāgotā atskaitē un nospiediet "Izveidot". Fails (pielāgoto-aktīvu-pārskats-YYYY-mm-dd.csv) automātiski lejupielādēsies un Jūs to varat atvērt Excel.

+

Ja Jūs vēlaties eksportēt tikai dažas lietas, izmantojiet iespējas zemāk pielāgot Jūsu atskaites rezultātus.

', + 'range' => 'Diapazons', + 'bom_remark' => 'Pievienot BOM (baitu secības zīmi) šim CSV', + 'improvements' => 'Uzlabojumi', + 'information' => 'Informācija', + 'permissions' => 'Atļaujas', + 'managed_ldap' => '(Pārvalda ar LDAP)', + 'export' => 'Eksports', + 'ldap_sync' => 'LDAP Sinhronizācija', + 'ldap_user_sync' => 'LDAP Lietotāju Sinhr', + 'synchronize' => 'Sinhronizēt', + 'sync_results' => 'Sinhronizēšanas rezultāti', + 'license_serial' => 'Kārtas Nr./ Produkta atslēga', + 'invalid_category' => 'Nepareiza vai trūkstoša kategorija', + 'invalid_item_category_single' => 'Nepareiza vai trūkstoša :type kategorija. Lūdzu atjaunojiet šī veida :type kategoriju, lai iekļautu pareizo kategoriju pirms izsniegšanas.', + 'dashboard_info' => 'Šis ir Jūsu panelis. Ir daudz līdzīgu, bet šis ir Jūsu.', + '60_percent_warning' => '60% Pabeigts (brīdinājums)', + 'dashboard_empty' => 'Šķiet, ka vēl neesat neko pievienojuši, tāpēc mums nav nekā lieliska ko attēlot. Sāciet ar inventāru, piederumiem, palīgmateriāliem vai licencēm tagad!', + 'new_asset' => 'Jauns inventārs', + 'new_license' => 'Jauna licence', + 'new_accessory' => 'Jauns piederums', + 'new_consumable' => 'Jauns palīgmateriāls', + 'collapse' => 'Sakļaut', 'assigned' => 'Izsniegts', - 'asset_count' => 'Asset Count', - 'accessories_count' => 'Accessories Count', - 'consumables_count' => 'Consumables Count', - 'components_count' => 'Components Count', - 'licenses_count' => 'Licenses Count', + 'asset_count' => 'Inventāra skaits', + 'accessories_count' => 'Piederumu skaits', + 'consumables_count' => 'Palīgmateriālu skaits', + 'components_count' => 'Sastāvdaļu skaits', + 'licenses_count' => 'Licenču skaits', 'notification_error' => 'Kļūda', - 'notification_error_hint' => 'Please check the form below for errors', - 'notification_bulk_error_hint' => 'The following fields had validation errors and were not edited:', - 'notification_success' => 'Success', + 'notification_error_hint' => 'Lūdzu pārbaudiet vai ir kļūdas zemāk esošajā formā', + 'notification_bulk_error_hint' => 'Šiem laukiem bija pārbaudes kļūdas un tie netika rediģēti:', + 'notification_success' => 'Izdevās', 'notification_warning' => 'Brīdinājums', 'notification_info' => 'Info', - 'asset_information' => 'Asset Information', - 'model_name' => 'Model Name', + 'asset_information' => 'Inventāra informācija', + 'model_name' => 'Modeļa nosaukums', 'asset_name' => 'Aktīva nosaukums', - 'consumable_information' => 'Consumable Information:', + 'consumable_information' => 'Palīgmateriāla informācija:', 'consumable_name' => 'Paturējamais nosaukums:', - 'accessory_information' => 'Accessory Information:', + 'accessory_information' => 'Piederuma informācija:', 'accessory_name' => 'Piederumu nosaukums:', - 'clone_item' => 'Clone Item', - 'checkout_tooltip' => 'Check this item out', - 'checkin_tooltip' => 'Check this item in so that it is available for re-issue, re-imaging, etc', - 'checkout_user_tooltip' => 'Check this item out to a user', - 'checkin_to_diff_location' => 'You can choose to check this asset in to a location other than this asset\'s default location of :default_location if one is set', - 'maintenance_mode' => 'The service is temporarily unavailable for system updates. Please check back later.', - 'maintenance_mode_title' => 'System Temporarily Unavailable', - 'ldap_import' => 'User password should not be managed by LDAP. (This allows you to send forgotten password requests.)', - 'purge_not_allowed' => 'Purging deleted data has been disabled in the .env file. Contact support or your systems administrator.', - 'backup_delete_not_allowed' => 'Deleting backups has been disabled in the .env file. Contact support or your systems administrator.', - 'additional_files' => 'Additional Files', - 'shitty_browser' => 'No signature detected. If you are using an older browser, please use a more modern browser to complete your asset acceptance.', - 'bulk_soft_delete' =>'Also soft-delete these users. Their asset history will remain intact unless/until you purge deleted records in the Admin Settings.', - 'bulk_checkin_delete_success' => 'Your selected users have been deleted and their items have been checked in.', - 'bulk_checkin_success' => 'The items for the selected users have been checked in.', - 'set_to_null' => 'Delete values for this asset|Delete values for all :asset_count assets ', - 'set_users_field_to_null' => 'Delete :field values for this user|Delete :field values for all :user_count users ', - 'na_no_purchase_date' => 'N/A - No purchase date provided', - 'assets_by_status' => 'Assets by Status', - 'assets_by_status_type' => 'Assets by Status Type', - 'pie_chart_type' => 'Dashboard Pie Chart Type', - 'hello_name' => 'Hello, :name!', - 'unaccepted_profile_warning' => 'You have :count items requiring acceptance. Click here to accept or decline them', - 'start_date' => 'Start Date', - 'end_date' => 'End Date', - 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit', - 'file_not_found' => 'File not found', - 'preview_not_available' => '(no preview)', - 'setup' => 'Setup', - 'pre_flight' => 'Pre-Flight', - 'skip_to_main_content' => 'Skip to main content', - 'toggle_navigation' => 'Toggle navigation', - 'alerts' => 'Alerts', - 'tasks_view_all' => 'View all tasks', - 'true' => 'True', - 'false' => 'False', - 'integration_option' => 'Integration Option', - 'log_does_not_exist' => 'No matching log record exists.', - 'merge_users' => 'Merge Users', - 'merge_information' => 'This will merge the :count users into a single user. Select the user you wish to merge the others into below, and the associated assets, licenses, etc will be moved over to the selected user and the other users will be marked as deleted.', - 'warning_merge_information' => 'This action CANNOT be undone and should ONLY be used when you need to merge users because of a bad import or sync. Be sure to run a backup first.', - 'no_users_selected' => 'No users selected', - 'not_enough_users_selected' => 'At least :count users must be selected', - 'merge_success' => ':count users merged successfully into :into_username!', - 'merged' => 'merged', - 'merged_log_this_user_into' => 'Merged this user (ID :to_id - :to_username) into user ID :from_id (:from_username) ', - 'merged_log_this_user_from' => 'Merged user ID :from_id (:from_username) into this user (ID :to_id - :to_username)', - 'clear_and_save' => 'Clear & Save', - 'update_existing_values' => 'Update Existing Values?', - 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Generating auto-incrementing asset tags is disabled so all rows need to have the "Asset Tag" column populated.', + 'clone_item' => 'Klonēt ierakstu', + 'checkout_tooltip' => 'Izsniegt šo inventāru', + 'checkin_tooltip' => 'Pieņemiet šo inventāru, lai tas ir pieejams atkārtotai izsniegšanai, pārklonēšanai, utt', + 'checkout_user_tooltip' => 'Izsniegt inventāru lietotājam', + 'checkin_to_diff_location' => 'Jūs varat izvēlēties reģistrēt inventāru citā atrašanās vietā nekā tās noklusēta atrašanās vieta ::default_location ja tāda ir iestatīta.', + 'maintenance_mode' => 'Šim servisam pagaidām nav pieejami sistēmas atjauninājumi. Lūdzu pārbaudiet vēlāk.', + 'maintenance_mode_title' => 'Sistēma pagaidām nav pieejama', + 'ldap_import' => 'Lietotāja paroli nevajadzētu pārvaldīt LDAP. (Tas ļauj pieprasījumos izmantot novecojušas paroles)', + 'purge_not_allowed' => 'Dzēstu datu iznīcināšana ir atspējota .env failā. Sazinieties ar Jūsu sistēmas administratoru.', + 'backup_delete_not_allowed' => 'Rezerves kopiju dzēšana ir atspējota .env failā. Sazinieties ar Jūsu sistēmas administratoru.', + 'additional_files' => 'Papildus faili', + 'shitty_browser' => 'Paraksts nav pieņemts. Ja Jūs lietojat vecāku pārlūkprogrammu, lūdzu lietojiet modernu pārlūkprogrammu, lai pabeigtu inventāra pieņemšanu.', + 'bulk_soft_delete' =>'Arī gandrīz-dzēsiet šos lietotājus. Viņu inventāra vēsture būs neskarta līdz Jūs iztīrīsiet dzēstos ierakstus Admin Iestatījumos.', + 'bulk_checkin_delete_success' => 'Jūsu atlasītie lietotāji ir dzēsti un ar tiem saistītais inventārs statusā Pieņemts.', + 'bulk_checkin_success' => 'Inventārs atlasītajiem lietotājiem ir ar statusu Pieņemts.', + 'set_to_null' => 'Dzēst šī inventāra vērtības|Dzēst vērtīibas visam :asset_count inventāram ', + 'set_users_field_to_null' => 'Dzēst lietotāja :field vērtības|Dzēst :field vērtīibas visiem :user_count lietotājiem ', + 'na_no_purchase_date' => 'N/A - Iegādes datums nav norādīts', + 'assets_by_status' => 'Inventārs pēc Statusa', + 'assets_by_status_type' => 'Inventārs pēc Statusa veida', + 'pie_chart_type' => 'Pīrāga diagrammas panelis', + 'hello_name' => 'Sveiki, :name!', + 'unaccepted_profile_warning' => 'Jums :count lietām nepieciešama pieņemšana. Nospiediet šeit lai tās pieņemtu vai noraidītu', + 'start_date' => 'Sākuma datums', + 'end_date' => 'Beigu datums', + 'alt_uploaded_image_thumbnail' => 'Augšuplādēt sīktēlu', + 'placeholder_kit' => 'Izvēlēties komplektu', + 'file_not_found' => 'Fails nav atrasts', + 'preview_not_available' => '(nav priekšskatījuma)', + 'setup' => 'Iestatīt', + 'pre_flight' => 'Pirmspārbaude', + 'skip_to_main_content' => 'Doties uz galveno saturu', + 'toggle_navigation' => 'Pārslēgt navigāciju', + 'alerts' => 'Brīdinājumi', + 'tasks_view_all' => 'Skatīt visus uzdevumus', + 'true' => 'Patiesi', + 'false' => 'Nepatiesi', + 'integration_option' => 'Integrācijas iespējas', + 'log_does_not_exist' => 'Nav neviena atbilstoša ieraksta.', + 'merge_users' => 'Sapludināt lietotājus', + 'merge_information' => 'Šis sapludinās :count lietotājus vienā lietotājā. Izvēlieties lietotāju, kurā vēlaties iekļaut zemāk esošos lietotājus. Ar tiem saistīto inventāru, licences, u.c. tiks pārcelts uz izvēlēto lietotāju, bet pārējie lietotāji tiks atzīmēti kā dzēsti.', + 'warning_merge_information' => 'Šo darbību NEVAR atsaukt un to vajadzētu lietot TIKAI lietotāju sapludināšanai sliktas sinhronizācijas vai importa dēļ. Vispirms izveidojiet rezerves kopiju.', + 'no_users_selected' => 'Nav izvēlēts neviens lietotājs', + 'not_enough_users_selected' => 'Vismaz :count lietotājiem jābūt izvēlētiem', + 'merge_success' => ':count lietotāji veiksmīgi sapludināti lietotājā :into_username!', + 'merged' => 'sapludināts', + 'merged_log_this_user_into' => 'Sapludināts lietotājs (ID :to_id - :to_username) iekļaujot to lietotājā ID :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Sapludināts lietotāja ID :from_id (:from_username) iekļaujot šajā lietotājā (ID :to_id - :to_username)', + 'clear_and_save' => 'Notīrīt un Saglabāt', + 'update_existing_values' => 'Vai atjaunot esošās vērtības?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Auto-pieaugošu inventāra zīmes ģenerēšana ir atspējota lai visām rindām tiktu aizpildīta kolonna "Inventāra Nr.".', 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Note: Generating auto-incrementing asset tags is enabled so assets will be created for rows that do not have "Asset Tag" populated. Rows that do have "Asset Tag" populated will be updated with the provided information.', 'send_welcome_email_to_users' => ' Send Welcome Email for new Users?', 'send_email' => 'Send Email', @@ -477,27 +477,27 @@ return [ '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', - 'cannot_be_edited' => 'This item cannot be edited.', - 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - 'serial_number' => 'Serial Number', - 'item_notes' => ':item Notes', - 'item_name_var' => ':item Name', - 'error_user_company' => 'Checkout target company and asset company do not match', - 'error_user_company_accept_view' => 'An Asset assigned to you belongs to a different company so you can\'t accept nor deny it, please check with your manager', + 'modal_confirm_generic' => 'Vai Jūs esat pārliecināts?', + 'cannot_be_deleted' => 'Šo ierakstu nevar dzēst', + 'cannot_be_edited' => 'Šo ierakstu nevar dzēst.', + 'undeployable_tooltip' => 'Šo inventāru nevar izsniegt. Pārbaudiet atlikumu.', + 'serial_number' => 'Kārtas Nr.', + 'item_notes' => ':item Piezīmes', + 'item_name_var' => ':item Vārds', + 'error_user_company' => 'Izsniegšanas uzņēmums un inventāra uzņēmums nesakrīt', + 'error_user_company_accept_view' => 'Jums izsniegtais inventārs pieder citam uzņēmumam tapēc Jūs nevarat to pieņemt vai atteikties. Lūdzu sazinieties ar savu vadītāju', 'importer' => [ - 'checked_out_to_fullname' => 'Checked Out to: Full Name', - 'checked_out_to_first_name' => 'Checked Out to: First Name', - 'checked_out_to_last_name' => 'Checked Out to: Last Name', - 'checked_out_to_username' => 'Checked Out to: Username', - 'checked_out_to_email' => 'Checked Out to: Email', - 'checked_out_to_tag' => 'Checked Out to: Asset Tag', - 'manager_first_name' => 'Manager First Name', - 'manager_last_name' => 'Manager Last Name', - 'manager_full_name' => 'Manager Full Name', - 'manager_username' => 'Manager Username', - 'checkout_type' => 'Checkout Type', + 'checked_out_to_fullname' => 'Izsniegts: Vārds Uzvārds', + 'checked_out_to_first_name' => 'Izsniegts: Vārds', + 'checked_out_to_last_name' => 'Izsniegts: Uzvārds', + 'checked_out_to_username' => 'Izsniegts: lietotāja vārds', + 'checked_out_to_email' => 'Izsniegts: epasts', + 'checked_out_to_tag' => 'Izsniegts: Inventāra Nr.', + 'manager_first_name' => 'Vadītāja Vārds', + 'manager_last_name' => 'Vadītāja Uzvārds', + 'manager_full_name' => 'Vadītāja Vārds Uzvārds', + 'manager_username' => 'Vadītāja Lietotājs', + 'checkout_type' => 'Izsniegšanas veids', 'checkout_location' => 'Checkout to Location', 'image_filename' => 'Image Filename', 'do_not_import' => 'Do Not Import', @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Vairāk informācijas', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Beidzas', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/lv-LV/localizations.php b/resources/lang/lv-LV/localizations.php index f1232dd138..4feb987925 100644 --- a/resources/lang/lv-LV/localizations.php +++ b/resources/lang/lv-LV/localizations.php @@ -2,40 +2,40 @@ return [ - 'select_language' => 'Select a language', + 'select_language' => 'Izvēlieties valodu', 'languages' => [ - 'en-US'=> 'English, US', - 'en-GB'=> 'English, UK', - 'am-ET' => 'Amharic', - 'af-ZA'=> 'Afrikaans', - 'ar-SA'=> 'Arabic', - 'bg-BG'=> 'Bulgarian', - 'zh-CN'=> 'Chinese Simplified', - 'zh-TW'=> 'Chinese Traditional', - 'ca-ES' => 'Catalan', - 'hr-HR'=> 'Croatian', - 'cs-CZ'=> 'Czech', - 'da-DK'=> 'Danish', - 'nl-NL'=> 'Dutch', - 'en-ID'=> 'English, Indonesia', - 'et-EE'=> 'Estonian', - 'fil-PH'=> 'Filipino', - 'fi-FI'=> 'Finnish', - 'fr-FR'=> 'French', - 'de-DE'=> 'German', - 'de-if'=> 'German (Informal)', - 'el-GR'=> 'Greek', - 'he-IL'=> 'Hebrew', - 'hu-HU'=> 'Hungarian', - 'is-IS' => 'Icelandic', + 'en-US'=> 'Angļu, ASV', + 'en-GB'=> 'Angļu, UK', + 'am-ET' => 'Amharu', + 'af-ZA'=> 'Āfrikāņu', + 'ar-SA'=> 'Arābu', + 'bg-BG'=> 'Bulgāru', + 'zh-CN'=> 'Ķīniešu Vienkāršota', + 'zh-TW'=> 'Ķīniešu Tradicionāla', + 'ca-ES' => 'Kataloniešu', + 'hr-HR'=> 'Horvātu', + 'cs-CZ'=> 'Čehu', + 'da-DK'=> 'Dāņu', + 'nl-NL'=> 'Nīderlandiešu', + 'en-ID'=> 'Angļu, Indonēzija', + 'et-EE'=> 'Igauņu', + 'fil-PH'=> 'Filipīniešu', + 'fi-FI'=> 'Somu', + 'fr-FR'=> 'Franču', + 'de-DE'=> 'Vācu', + 'de-if'=> 'Vācu (neformāls)', + 'el-GR'=> 'Grieķu', + 'he-IL'=> 'Ebreju', + 'hu-HU'=> 'Ungāru', + 'is-IS' => 'Islandiešu', 'id-ID'=> 'Indonesian', - 'ga-IE'=> 'Irish', - 'it-IT'=> 'Italian', - 'ja-JP'=> 'Japanese', + 'ga-IE'=> 'Īru', + 'it-IT'=> 'Itāļu', + 'ja-JP'=> 'Japāņu', 'km-KH'=>'Khmer', - 'ko-KR'=> 'Korean', - 'lt-LT'=>'Lithuanian', - 'lv-LV'=> 'Latvian', + 'ko-KR'=> 'Korejiešu', + 'lt-LT'=>'Lietuviešu', + 'lv-LV'=> 'Latviešu', 'mk-MK'=> 'Macedonian', 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', @@ -46,13 +46,13 @@ return [ 'pt-PT'=> 'Portuguese', 'pt-BR'=> 'Portuguese, Brazilian', 'ro-RO'=> 'Romanian', - 'ru-RU'=> 'Russian', - 'sr-CS' => 'Serbian (Latin)', - 'sk-SK'=> 'Slovak', - 'sl-SI'=> 'Slovenian', - 'so-SO'=> 'Somali', - 'es-ES'=> 'Spanish', - 'es-CO'=> 'Spanish, Colombia', + 'ru-RU'=> 'Krievu', + 'sr-CS' => 'Serbu (Latīņu)', + 'sk-SK'=> 'Slovāku', + 'sl-SI'=> 'Slovēņu', + 'so-SO'=> 'Somāļu', + 'es-ES'=> 'Spāņu', + 'es-CO'=> 'Spāņu, Kolubija', 'es-MX'=> 'Spanish, Mexico', 'es-VE'=> 'Spanish, Venezuela', 'sv-SE'=> 'Swedish', diff --git a/resources/lang/lv-LV/mail.php b/resources/lang/lv-LV/mail.php index 28e30dc3ab..2f7ad4e7eb 100644 --- a/resources/lang/lv-LV/mail.php +++ b/resources/lang/lv-LV/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Esmu izlasījis un piekrītu lietošanas noteikumiem un saņēmu šo preci.', 'inventory_report' => 'Inventory Report', 'item' => 'Vienība:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Pēc :threshold dienām beigsies termiņš :count licencei.| Pēc :threshold dienām beigsies termiņš :threshold :count licencēm.', 'link_to_update_password' => 'Lūdzu, noklikšķiniet uz šīs saites, lai atjauninātu savu: web paroli:', 'login' => 'Pieslēgties:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Lietotājs', 'username' => 'Lietotājvārds', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Sveicināti: vārds', 'welcome_to' => 'Laipni lūdzam: tīmeklī!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Jūsu Snipe-IT akreditācijas dati', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/lv-LV/validation.php b/resources/lang/lv-LV/validation.php index bb08c9734a..c136471424 100644 --- a/resources/lang/lv-LV/validation.php +++ b/resources/lang/lv-LV/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Atribūts jāpieņem.', - 'active_url' => 'Atribūts nav derīgs URL.', - 'after' => 'Atribūtam jābūt datumam pēc: datuma.', - 'after_or_equal' => 'Atribūtam jābūt datumam pēc datuma vai pēc tā: datums.', - 'alpha' => 'Atribūts var saturēt tikai burti.', - 'alpha_dash' => 'Atribūts var saturēt tikai burti, ciparus un domuzīmes.', - 'alpha_num' => 'Atribūts var saturēt tikai burti un ciparus.', - 'array' => 'Atribūtam jābūt masīvam.', - 'before' => 'Atribūtam jābūt datumam: datums.', - 'before_or_equal' => 'Atribūtam jābūt datumam pirms vai vienāds ar: datumu.', - 'between' => [ - 'numeric' => 'Atribūtam jābūt starp: min un: max.', - 'file' => 'Atribūtam jābūt starp: min un: max kilobaitiem.', - 'string' => 'Atribūtam jābūt no: min un max max rakstzīmēm.', - 'array' => 'Atribūtam jābūt starp: min un: max vienumiem.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Atribūta laukam jābūt patiesam vai nepatiesam.', - 'confirmed' => 'Atribūta apstiprinājums neatbilst.', - 'date' => 'Atribūts nav derīgs datums.', - 'date_format' => 'Atribūts neatbilst formātam: formātā.', - 'different' => 'Atribūts: un citam jābūt citam.', - 'digits' => 'Atribūtam jābūt: ciparu cipariem.', - 'digits_between' => 'Atribūtam jābūt starp: min un: max cipariem.', - 'dimensions' => 'Atribūts: nederīgie attēla izmēri.', - 'distinct' => 'Atribūta laukam ir dublikāta vērtība.', - 'email' => 'Atribūtam jābūt derīgai e-pasta adresei.', - 'exists' => 'Atlasītais: atribūts nav derīgs.', - 'file' => 'Atribūts ir jābūt failam.', - 'filled' => 'Atribūta laukam jābūt vērtībai.', - 'image' => 'Atribūts ir jābūt attēlam.', + 'boolean' => 'Atribūta laukam jābūt patiesam vai nepatiesam.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Atribūta laukam ir dublikāta vērtība.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Atlasītais: atribūts nav derīgs.', + 'exists' => 'Atlasītais: atribūts nav derīgs.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Atribūta laukam jābūt vērtībai.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Atlasītais: atribūts nav derīgs.', - 'in_array' => 'Atribūta lauks neeksistē: citā.', - 'integer' => 'Atribūts ir jābūt veselam skaitlim.', - 'ip' => 'Atribūtam jābūt derīgai IP adresei.', - 'ipv4' => 'Atribūtam jābūt derīgai IPv4 adresei.', - 'ipv6' => 'Atribūtam jābūt derīgai IPv6 adresei.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Atribūtam jābūt derīgai JSON virknei.', - 'max' => [ - 'numeric' => 'Atribūts: nedrīkst būt lielāks par: max.', - 'file' => 'Atribūts: nedrīkst būt lielāks par: maks. Kilobaitus.', - 'string' => 'Atribūts: nedrīkst būt lielāks par: max rakstzīmēm.', - 'array' => 'Atribūts: nedrīkst būt vairāk par: max vienumiem.', + 'in' => 'Atlasītais: atribūts nav derīgs.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Atribūtam jābūt failam ar tipu:: values.', - 'mimetypes' => 'Atribūtam jābūt failam ar tipu:: values.', - 'min' => [ - 'numeric' => 'Atribūtam jābūt vismaz: min.', - 'file' => 'Atribūtam jābūt vismaz: min kilobaitiem.', - 'string' => 'Atribūts: jābūt vismaz: min rakstzīmēm.', - 'array' => 'Atribūtam jābūt vismaz: min vienumiem.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Atlasītais: atribūts nav derīgs.', - 'numeric' => 'Atribūts ir jābūt skaitlim.', - 'present' => 'Atribūta laukam jābūt klāt.', - 'valid_regex' => 'regex nav derīgs.', - 'regex' => 'Atribūta formāts nav derīgs.', - 'required' => 'Atribūta lauks ir nepieciešams.', - 'required_if' => 'Atribūta lauks ir nepieciešams, ja: cits ir: vērtība.', - 'required_unless' => 'Atribūta lauks ir nepieciešams, ja vien: citā ir: vērtības.', - 'required_with' => 'Atribūta lauks ir nepieciešams, ja: ir vērtības.', - 'required_with_all' => 'Atribūta lauks ir nepieciešams, ja: ir vērtības.', - 'required_without' => 'Atribūta lauks ir nepieciešams, ja: vērtības nav.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Atlasītais: atribūts nav derīgs.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Atribūta laukam jābūt klāt.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Atribūta lauks ir nepieciešams.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Atribūta lauks ir nepieciešams, ja: cits ir: vērtība.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Atribūta lauks ir nepieciešams, ja vien: citā ir: vērtības.', + 'required_with' => 'Atribūta lauks ir nepieciešams, ja: ir vērtības.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Atribūta lauks ir nepieciešams, ja: vērtības nav.', 'required_without_all' => 'Atribūta lauks ir nepieciešams, ja neviena no: vērtības nav.', - 'same' => 'Atribūts: un citam jāatbilst.', - 'size' => [ - 'numeric' => 'Atribūts: jābūt lielumam.', - 'file' => 'Atribūts: jābūt kilobaitiem.', - 'string' => 'Atribūts: jābūt lieluma burtiem.', - 'array' => 'Atribūts: jāiekļauj: lieluma vienumi.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Atribūtam jābūt virknei.', - 'timezone' => 'Atribūtam jābūt derīgai zonai.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Atribūts jau ir pieņemts.', - 'uploaded' => 'Atribūts neizdevās augšupielādēt.', - 'url' => 'Atribūta formāts nav derīgs.', 'unique_undeleted' => ':attribute jābūt unikālam.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Atribūts jau ir pieņemts.', + 'uploaded' => 'Atribūts neizdevās augšupielādēt.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/mi-NZ/account/general.php b/resources/lang/mi-NZ/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/mi-NZ/account/general.php +++ b/resources/lang/mi-NZ/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/mi-NZ/admin/accessories/message.php b/resources/lang/mi-NZ/admin/accessories/message.php index dbc766c9aa..2719c7022b 100644 --- a/resources/lang/mi-NZ/admin/accessories/message.php +++ b/resources/lang/mi-NZ/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Kaore ano kia uruhia te uru, ka ngana ano', 'success' => 'He pai te tirotiro i te Accessory.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'He muhu te kaiwhakamahi. Tena ngana ano.' + 'user_does_not_exist' => 'He muhu te kaiwhakamahi. Tena ngana ano.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/mi-NZ/admin/consumables/general.php b/resources/lang/mi-NZ/admin/consumables/general.php index c1567d7b5d..af84154e0f 100644 --- a/resources/lang/mi-NZ/admin/consumables/general.php +++ b/resources/lang/mi-NZ/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Te noho', 'total' => 'Te tapeke', 'update' => 'Whakahou Whakamahia', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/mi-NZ/admin/consumables/message.php b/resources/lang/mi-NZ/admin/consumables/message.php index 593d59bc76..a544bab369 100644 --- a/resources/lang/mi-NZ/admin/consumables/message.php +++ b/resources/lang/mi-NZ/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Kaore e taea te whakamahi.', 'create' => array( diff --git a/resources/lang/mi-NZ/admin/custom_fields/message.php b/resources/lang/mi-NZ/admin/custom_fields/message.php index 14381a5bb2..382b48d578 100644 --- a/resources/lang/mi-NZ/admin/custom_fields/message.php +++ b/resources/lang/mi-NZ/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Kāore te mara i te tīariari.', 'already_added' => 'Kua tapirihia te mara', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Kāore i hanga te mara, tēnā whakamātau anō.', diff --git a/resources/lang/mi-NZ/admin/hardware/message.php b/resources/lang/mi-NZ/admin/hardware/message.php index 558a794bca..6d129be019 100644 --- a/resources/lang/mi-NZ/admin/hardware/message.php +++ b/resources/lang/mi-NZ/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Warning: Kua tohua tenei taonga i te mea kaore i te rongonui. Mena kua hurihia tenei mana, whakahouhia te mana o te taonga.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Kaore he tahua.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Kāore i tika te kawemai o etahi o nga mea.', 'errorDetail' => 'Ko nga mea e whai ake nei kihai i kawemai no te mea he hapa.', 'success' => 'I kawemai to kōnae', diff --git a/resources/lang/mi-NZ/admin/licenses/general.php b/resources/lang/mi-NZ/admin/licenses/general.php index d810e6739c..4b7b868c4a 100644 --- a/resources/lang/mi-NZ/admin/licenses/general.php +++ b/resources/lang/mi-NZ/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Raihana Raihana', 'license_seats' => 'Waahi Raihana', 'seat' => 'Noho', + 'seat_count' => 'Seat :count', 'seats' => 'Nga moenga', 'software_licenses' => 'Raihana Pūmanawa', 'user' => 'Kaiwhakamahi', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/mi-NZ/admin/licenses/message.php b/resources/lang/mi-NZ/admin/licenses/message.php index 720c9e765c..63c285cb83 100644 --- a/resources/lang/mi-NZ/admin/licenses/message.php +++ b/resources/lang/mi-NZ/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'I puta he take hei tirotiro i te raihana. Tena ngana ano.', 'success' => 'I tohua te raihana', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/mi-NZ/admin/models/message.php b/resources/lang/mi-NZ/admin/models/message.php index 830db6f425..4e10e5d407 100644 --- a/resources/lang/mi-NZ/admin/models/message.php +++ b/resources/lang/mi-NZ/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Kei te hono tenei tauira ki te kotahi, neke atu ranei nga rawa, kaore e taea te muku. Nganahia nga rawa, ka ngana ki te muku ano.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Kāore i hangaia te tauira, tēnā whakamātau anō.', diff --git a/resources/lang/mi-NZ/admin/settings/general.php b/resources/lang/mi-NZ/admin/settings/general.php index e1d4bc5cee..af2985c3e2 100644 --- a/resources/lang/mi-NZ/admin/settings/general.php +++ b/resources/lang/mi-NZ/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'Tūmau LDAP', - 'ldap_server_help' => 'Me tīmata tenei ki te ldap: // (mo te whakakoretanga, TLS ranei), mo te hiri: // (mo te SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Tiwhikete Tiwhikete SSL LDAP', 'ldap_server_cert_ignore' => 'Tukua te Tiwhikete SSL muhu', 'ldap_server_cert_help' => 'Tīpakohia tenei pouakataki mēnā kei te whakamahi koe i te cert SSL kua hainatia e koe, me te hiahia ki te whakaae i tetahi tiwhikete SSL muhu.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'kōwhiringa', 'per_page' => 'Nga Hua Nga Whārangi', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/mi-NZ/button.php b/resources/lang/mi-NZ/button.php index 529958f096..38152826b7 100644 --- a/resources/lang/mi-NZ/button.php +++ b/resources/lang/mi-NZ/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Mukua', 'edit' => 'Whakatika', + 'clone' => 'Clone', 'restore' => 'Whakaora', 'remove' => 'Remove', 'request' => 'Tono', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Hou', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/mi-NZ/general.php b/resources/lang/mi-NZ/general.php index 89a571f7d4..ce2afa6ad7 100644 --- a/resources/lang/mi-NZ/general.php +++ b/resources/lang/mi-NZ/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'He Korero Ano', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Ka puta', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/mi-NZ/mail.php b/resources/lang/mi-NZ/mail.php index fa5e76fc7b..861707aef5 100644 --- a/resources/lang/mi-NZ/mail.php +++ b/resources/lang/mi-NZ/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Kua korerohia e au, kua whakaae ki nga tikanga whakamahi, kua riro mai hoki tenei mea.', 'inventory_report' => 'Inventory Report', 'item' => 'Te nama:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Koahia te hono e whai ake nei hei whakahou i to: kupuhipahipa:', 'login' => 'Whakauru:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Kaiwhakamahi', 'username' => 'Ingoa Kaiwhakamahi', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Nau mai: ingoa', 'welcome_to' => 'Nau mai ki: web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Nga tohu tohu Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/mi-NZ/validation.php b/resources/lang/mi-NZ/validation.php index 6aff446fe4..6417ae8b38 100644 --- a/resources/lang/mi-NZ/validation.php +++ b/resources/lang/mi-NZ/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Ko te: me whakaae te huanga.', - 'active_url' => 'Ko: ko te huanga ehara i te URL whaimana.', - 'after' => 'Ko: ko te huanga me te ra i muri i: ra.', - 'after_or_equal' => 'Ko: ko te huanga me te ra i muri i te waa ranei: te ra.', - 'alpha' => 'Ko te: ko te huanga anake he reta.', - 'alpha_dash' => 'Ko te: ko te huanga anake he reta, he tau, he panga.', - 'alpha_num' => 'Ko te: ko te huanga anake he reta me nga tau.', - 'array' => 'Ko te: me tohu he huanga.', - 'before' => 'Ko: ko te huanga me te ra i mua i: ra.', - 'before_or_equal' => 'Ko: ko te huanga me he ra i mua atu i te wa ranei: te ra.', - 'between' => [ - 'numeric' => 'Te: ko te tohu i waenganui i: min me te: max.', - 'file' => 'Ko: ko te tohu i waenganui i: min me te: max kilobytes.', - 'string' => 'Ko te: ko te tohu i waenganui i: min me te: max.', - 'array' => 'Ko te: ko te tohu i waenganui i: min me te: max max.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Ko: Ko te waahi tohu he pono, he teka ranei.', - 'confirmed' => 'Ko: ko te tohu whakatairanga kaore e taurite.', - 'date' => 'Ko: ko te huanga ehara i te ra whaimana.', - 'date_format' => 'Ko: ko te huanga kaore e rite ki te horopaki: te whakatakotoranga.', - 'different' => 'Ko: te huanga me: me wehe ke atu.', - 'digits' => 'Ko: ko te tohu: ko nga nama tau.', - 'digits_between' => 'Ko te: ko te tohu i waenganui i: min me te: max tohu.', - 'dimensions' => 'Ko te: ko te ahuatanga o te ahua o te ahua o te whakapakoko.', - 'distinct' => 'Ko te: ko te tahua huanga ko te uara taapiri.', - 'email' => 'Ko te: ko te huanga he wahitau īmēra tika.', - 'exists' => 'Ko te mea i tīpakohia: he muhu te huanga.', - 'file' => 'Ko: ko te huanga he kōnae.', - 'filled' => 'Ko: Ko te waahi tohu ka whai hua.', - 'image' => 'Ko te: me kii he huanga.', + 'boolean' => 'Ko: Ko te waahi tohu he pono, he teka ranei.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Ko te: ko te tahua huanga ko te uara taapiri.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Ko te mea i tīpakohia: he muhu te huanga.', + 'exists' => 'Ko te mea i tīpakohia: he muhu te huanga.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Ko: Ko te waahi tohu ka whai hua.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Ko te mea i tīpakohia: he muhu te huanga.', - 'in_array' => 'Ko te: ko te waahi huanga kaore i roto i: atu.', - 'integer' => 'Ko te: ko te huanga me he tau.', - 'ip' => 'Ko: ko te huanga me waiho he wāhitau IP tika.', - 'ipv4' => 'Ko: ko te huanga me waiho he wāhitau IPv4 tika.', - 'ipv6' => 'Ko te: me tohu he huanga IPv6 tika.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Ko: he tohu JSON tika te huanga.', - 'max' => [ - 'numeric' => 'Ko te: ko te huanga ka nui atu i te: max.', - 'file' => 'Ko te: ko te huanga ka nui atu i te: max kilobytes.', - 'string' => 'Ko te: ko te huanga kaore e nui atu i: max tohu.', - 'array' => 'Ko te: ko te huanga kaore i nui atu i: te maha o nga mea.', + 'in' => 'Ko te mea i tīpakohia: he muhu te huanga.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Ko: ko te huanga he kōnae o te momo:: uara.', - 'mimetypes' => 'Ko: ko te huanga he kōnae o te momo:: uara.', - 'min' => [ - 'numeric' => 'Ko: ko te tikanga kia iti ake: min.', - 'file' => 'Ko te: ko te tikanga kia iti ake: min kilobytes.', - 'string' => 'Ko te: ko te tohu ko te iti rawa: min.', - 'array' => 'Ko te: me whai i te huanga: iti rawa nga taonga.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Ko te mea i tīpakohia: he muhu te huanga.', - 'numeric' => 'Ko te: me tohu he huanga.', - 'present' => 'Ko te: ko te waahi tohu kia noho.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'Ko te: ko te hōputu huanga he muhu.', - 'required' => 'Ko te: e hiahiatia ana te waahi huanga.', - 'required_if' => 'Ko te: ka hiahiatia te waahi huanga ina: ko etahi atu: te uara.', - 'required_unless' => 'Ko: E hiahiatia ana te waahi huanga engari: ko etahi atu kei roto: nga uara.', - 'required_with' => 'Ko: e hiahiatia ana te waahi huanga ina: kei te waahi nga uara.', - 'required_with_all' => 'Ko: e hiahiatia ana te waahi huanga ina: kei te waahi nga uara.', - 'required_without' => 'Ko: e hiahiatia ana te waahi huanga ka: kaore nga uara i te wa.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Ko te mea i tīpakohia: he muhu te huanga.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Ko te: ko te waahi tohu kia noho.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Ko te: e hiahiatia ana te waahi huanga.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Ko te: ka hiahiatia te waahi huanga ina: ko etahi atu: te uara.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Ko: E hiahiatia ana te waahi huanga engari: ko etahi atu kei roto: nga uara.', + 'required_with' => 'Ko: e hiahiatia ana te waahi huanga ina: kei te waahi nga uara.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Ko: e hiahiatia ana te waahi huanga ka: kaore nga uara i te wa.', 'required_without_all' => 'Ko te: ka hiahiatia te waahi huanga kaore he: ko nga uara kei reira.', - 'same' => 'Ko: te huanga me te: me uru atu tetahi atu.', - 'size' => [ - 'numeric' => 'Ko: ko te huanga: te rahi.', - 'file' => 'Ko te: ko te tohu: ko te rahi o nga kaitao.', - 'string' => 'Ko: ko te tohu: ko te rahi o te kaituhi.', - 'array' => 'Ko te: me whai kohinga: nga taonga rahi.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Ko te: me tohu he huanga.', - 'timezone' => 'Ko: ko te huanga he waa whaimana.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Ko te: kua tangohia te huanga.', - 'uploaded' => 'Ko te: ko te huanga i rahua te tuku.', - 'url' => 'Ko te: ko te hōputu huanga he muhu.', 'unique_undeleted' => 'Ko te: me tino ahurei te huanga.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Ko te: kua tangohia te huanga.', + 'uploaded' => 'Ko te: ko te huanga i rahua te tuku.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/mk-MK/account/general.php b/resources/lang/mk-MK/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/mk-MK/account/general.php +++ b/resources/lang/mk-MK/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/mk-MK/admin/accessories/message.php b/resources/lang/mk-MK/admin/accessories/message.php index b3d37a9a94..258cac76ac 100644 --- a/resources/lang/mk-MK/admin/accessories/message.php +++ b/resources/lang/mk-MK/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Додатокот не беше задолжен, обидете се повторно', 'success' => 'Додатокот е задолжен.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Тој корисник е неважечки. Обидете се повторно.' + 'user_does_not_exist' => 'Тој корисник е неважечки. Обидете се повторно.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/mk-MK/admin/consumables/general.php b/resources/lang/mk-MK/admin/consumables/general.php index 3a92336c0e..b6e398241e 100644 --- a/resources/lang/mk-MK/admin/consumables/general.php +++ b/resources/lang/mk-MK/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Останува', 'total' => 'Вкупно', 'update' => 'Ажурирај потрошен материјал', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/mk-MK/admin/consumables/message.php b/resources/lang/mk-MK/admin/consumables/message.php index 1a827fc97b..991fc7909d 100644 --- a/resources/lang/mk-MK/admin/consumables/message.php +++ b/resources/lang/mk-MK/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Потрошниот материјал не постои.', 'create' => array( diff --git a/resources/lang/mk-MK/admin/custom_fields/message.php b/resources/lang/mk-MK/admin/custom_fields/message.php index 2429045f3d..ab57e00e3c 100644 --- a/resources/lang/mk-MK/admin/custom_fields/message.php +++ b/resources/lang/mk-MK/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Poleto не постои.', 'already_added' => 'Полето веќе е додадено', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Полето не е креирано, обидете се повторно.', diff --git a/resources/lang/mk-MK/admin/hardware/message.php b/resources/lang/mk-MK/admin/hardware/message.php index 3aca4a6492..896d8c3cc6 100644 --- a/resources/lang/mk-MK/admin/hardware/message.php +++ b/resources/lang/mk-MK/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Предупредување: Ова основно средство е означено како нераспоредливо. Ако овој статус е променет, ве молиме да го ажурирате статусот на средството.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Основното средство не постои.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Некои ставки не се увезоа правилно.', 'errorDetail' => 'Следниве елементи не се увезени поради грешки.', 'success' => 'Вашата датотека е увезена', diff --git a/resources/lang/mk-MK/admin/licenses/general.php b/resources/lang/mk-MK/admin/licenses/general.php index d8c0d1d6b5..f392c6797d 100644 --- a/resources/lang/mk-MK/admin/licenses/general.php +++ b/resources/lang/mk-MK/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Информации за лиценцата', 'license_seats' => 'Лиценци за места', 'seat' => 'Место', + 'seat_count' => 'Seat :count', 'seats' => 'Места', 'software_licenses' => 'Лиценци за софтвер', 'user' => 'Корисник', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/mk-MK/admin/licenses/message.php b/resources/lang/mk-MK/admin/licenses/message.php index 5508319c1d..88b229ef33 100644 --- a/resources/lang/mk-MK/admin/licenses/message.php +++ b/resources/lang/mk-MK/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Имаше проблем со задолжување на лиценцата. Обидете се повторно.', 'success' => 'Лиценцата беше успешно задолжена', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/mk-MK/admin/models/message.php b/resources/lang/mk-MK/admin/models/message.php index 20be4201c0..4d31fd6810 100644 --- a/resources/lang/mk-MK/admin/models/message.php +++ b/resources/lang/mk-MK/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Моделот во моментов е поврзан со едно или повеќе основни средства и не може да се избрише. Ве молиме избришете ги основните средствата, а потоа пробајте повторно да го избришете. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Моделот не е креиран, обидете се повторно.', diff --git a/resources/lang/mk-MK/admin/settings/general.php b/resources/lang/mk-MK/admin/settings/general.php index a54b0c62c6..b779ade2a9 100644 --- a/resources/lang/mk-MK/admin/settings/general.php +++ b/resources/lang/mk-MK/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Дозволи неважечки SSL сертификат', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Лиценца за софтвер', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'опционално', 'per_page' => 'Резултати по страница', 'php' => 'PHP верзија', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/mk-MK/button.php b/resources/lang/mk-MK/button.php index 04d8a2197a..d2a19916b7 100644 --- a/resources/lang/mk-MK/button.php +++ b/resources/lang/mk-MK/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Избриши', 'edit' => 'Ажурирај', + 'clone' => 'Clone', 'restore' => 'Врати', 'remove' => 'Remove', 'request' => 'Побарај', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Ново', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/mk-MK/general.php b/resources/lang/mk-MK/general.php index d810132f25..87d35aeb8c 100644 --- a/resources/lang/mk-MK/general.php +++ b/resources/lang/mk-MK/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Повеќе информации', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Истекува', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/mk-MK/mail.php b/resources/lang/mk-MK/mail.php index 80d5046de7..18e46c943e 100644 --- a/resources/lang/mk-MK/mail.php +++ b/resources/lang/mk-MK/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ги прочитав и се согласив со условите за користење и го примив ова средство.', 'inventory_report' => 'Inventory Report', 'item' => 'Средство:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Ве молиме кликнете на следната врска за да ја обновите вашата :web лозинка:', 'login' => 'Најава:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Корисник', 'username' => 'Корисничко име', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Добредојдовте :name', 'welcome_to' => 'Добредојдовте на :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Вашите корисничко име и лозинка', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/mk-MK/validation.php b/resources/lang/mk-MK/validation.php index 457dc73d11..258c77c3f3 100644 --- a/resources/lang/mk-MK/validation.php +++ b/resources/lang/mk-MK/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute мора да биде прифатен.', - 'active_url' => ':attribute не е валидна врска (URL).', - 'after' => ':attribute мора да биде датум после :date.', - 'after_or_equal' => ':attribute мора да биде датум после или на :date.', - 'alpha' => ':attribute може да содржи само букви.', - 'alpha_dash' => ':attribute може да содржи само букви, бројки и цртички.', - 'alpha_num' => ':attribute може да содржи само букви и броеви.', - 'array' => ':attribute мора да биде низа.', - 'before' => ':attribute мора да биде датум пред :date.', - 'before_or_equal' => ':attribute мора да биде датум пред или на :date.', - 'between' => [ - 'numeric' => ':attribute мора да биде помеѓу :min - :max.', - 'file' => ':attribute мора да биде помеѓу :min - :max килобајти.', - 'string' => ':attribute мора да биде помеѓу :min - :max знаци.', - 'array' => ':attribute мора да содржи помеѓу :min - :max ставки.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute мора да биде точно/неточно.', - 'confirmed' => 'Потврдата за :attribute не се совпаѓа.', - 'date' => ':attribute не е валиден датум.', - 'date_format' => ':attribute не се совпаѓа со форматот :format.', - 'different' => ':attribute и :other мора да се различни.', - 'digits' => ':attribute мора да биде :digits цифри.', - 'digits_between' => ':attribute мора да содржи помеѓу :min и :max цифри.', - 'dimensions' => ':attribute има неважечки димензии на сликата.', - 'distinct' => 'Полето :attribute има дупликат вредност.', - 'email' => 'Форматот на :attribute не е валиден.', - 'exists' => 'Избраниот :attribute не е валиден.', - 'file' => ':attribute мора да биде датотека.', - 'filled' => 'Полето :attribute мора да има дупликат.', - 'image' => ':attribute мора да биде слика.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Полето :attribute има дупликат вредност.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Избраниот :attribute не е валиден.', + 'exists' => 'Избраниот :attribute не е валиден.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Полето :attribute мора да има дупликат.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Избраниот :attribute не е валиден.', - 'in_array' => 'Полето :attribute не постои во :other.', - 'integer' => ':attribute мора да биде цел број.', - 'ip' => ':attribute мора да биде валидна IP адреса.', - 'ipv4' => ':attribute мора да биде валидна IPv4 адреса.', - 'ipv6' => ':attribute мора да биде валидна IPv6 адреса.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => ':attribute мора да биде валиден JSON стринг.', - 'max' => [ - 'numeric' => ':attribute не може да биде поголем од :max.', - 'file' => ':attribute не може да биде поголем од :max килобајти.', - 'string' => ':attribute не може да биде поголем од :max значи.', - 'array' => ':attribute не може да содржи повеќе од :max ставки.', + 'in' => 'Избраниот :attribute не е валиден.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute мора да биде датотека од тип: :values.', - 'mimetypes' => ':attribute мора да биде датотека од тип: :values.', - 'min' => [ - 'numeric' => ':attribute мора да биде поголем од :min.', - 'file' => ':attribute мора да биде поголем од :min килобајти.', - 'string' => ':attribute мора да биде поголем од :min знаци.', - 'array' => ':attribute мора да содржи најмалку :min ставки.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Избраниот :attribute не е валиден.', - 'numeric' => ':attribute мора да биде број.', - 'present' => 'Полето :attribute е задолжително.', - 'valid_regex' => 'Тоа не е валиден regex. ', - 'regex' => 'Форматот на :attribute не е валиден.', - 'required' => 'Полето за :attribute е задолжително.', - 'required_if' => 'Полето :attribute е задолжително, кога :other е :values.', - 'required_unless' => 'Полето :attribute е задолжително, освен ако :other е :values.', - 'required_with' => 'Полето :attribute е задолжително кога постојат :values.', - 'required_with_all' => 'Полето :attribute е задолжително кога постојат :values.', - 'required_without' => 'Полето :attribute е задолжително кога не постојат :values.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Избраниот :attribute не е валиден.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Полето :attribute е задолжително.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Полето за :attribute е задолжително.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Полето :attribute е задолжително, кога :other е :values.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Полето :attribute е задолжително, освен ако :other е :values.', + 'required_with' => 'Полето :attribute е задолжително кога постојат :values.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Полето :attribute е задолжително кога не постојат :values.', 'required_without_all' => 'Полето :attribute е задолжително кога не постои ниту една :values.', - 'same' => ':attribute и :other мора да одговараат.', - 'size' => [ - 'numeric' => ':attribute мора да биде :size.', - 'file' => ':attribute мора да биде :size килобајти.', - 'string' => ':attribute мора да биде :size знаци.', - 'array' => ':attribute мора да содржи :size ставки.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute мора да биде стринг.', - 'timezone' => ':attribute мора да биде валидна зона.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute е веќе зафатен.', - 'uploaded' => ':attribute не е прикачен.', - 'url' => 'Форматот на :attribute не е валиден.', 'unique_undeleted' => ':attribute мора да биде уникатен.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute е веќе зафатен.', + 'uploaded' => ':attribute не е прикачен.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ml-IN/account/general.php b/resources/lang/ml-IN/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/ml-IN/account/general.php +++ b/resources/lang/ml-IN/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ml-IN/admin/accessories/message.php b/resources/lang/ml-IN/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/ml-IN/admin/accessories/message.php +++ b/resources/lang/ml-IN/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ml-IN/admin/consumables/general.php b/resources/lang/ml-IN/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/ml-IN/admin/consumables/general.php +++ b/resources/lang/ml-IN/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ml-IN/admin/consumables/message.php b/resources/lang/ml-IN/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/ml-IN/admin/consumables/message.php +++ b/resources/lang/ml-IN/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/ml-IN/admin/custom_fields/message.php b/resources/lang/ml-IN/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/ml-IN/admin/custom_fields/message.php +++ b/resources/lang/ml-IN/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/ml-IN/admin/hardware/message.php b/resources/lang/ml-IN/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/ml-IN/admin/hardware/message.php +++ b/resources/lang/ml-IN/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/ml-IN/admin/licenses/general.php b/resources/lang/ml-IN/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/ml-IN/admin/licenses/general.php +++ b/resources/lang/ml-IN/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ml-IN/admin/licenses/message.php b/resources/lang/ml-IN/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/ml-IN/admin/licenses/message.php +++ b/resources/lang/ml-IN/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ml-IN/admin/models/message.php b/resources/lang/ml-IN/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/ml-IN/admin/models/message.php +++ b/resources/lang/ml-IN/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/ml-IN/admin/settings/general.php b/resources/lang/ml-IN/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/ml-IN/admin/settings/general.php +++ b/resources/lang/ml-IN/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ml-IN/button.php b/resources/lang/ml-IN/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/ml-IN/button.php +++ b/resources/lang/ml-IN/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ml-IN/general.php b/resources/lang/ml-IN/general.php index 964016eb5b..b4b6430766 100644 --- a/resources/lang/ml-IN/general.php +++ b/resources/lang/ml-IN/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ml-IN/mail.php b/resources/lang/ml-IN/mail.php index 759ff0f5e8..edb1683200 100644 --- a/resources/lang/ml-IN/mail.php +++ b/resources/lang/ml-IN/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ml-IN/validation.php b/resources/lang/ml-IN/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/ml-IN/validation.php +++ b/resources/lang/ml-IN/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/mn-MN/account/general.php b/resources/lang/mn-MN/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/mn-MN/account/general.php +++ b/resources/lang/mn-MN/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/mn-MN/admin/accessories/message.php b/resources/lang/mn-MN/admin/accessories/message.php index 3a826ff5fd..6a6d83eb4f 100644 --- a/resources/lang/mn-MN/admin/accessories/message.php +++ b/resources/lang/mn-MN/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Дагалдах хэрэгсэл шалгагдаагүй байна, дахин оролдоно уу', 'success' => 'Дагалдах хэрэгсэл амжилттай шалгасан.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Энэ хэрэглэгч буруу байна. Дахин оролдоно уу.' + 'user_does_not_exist' => 'Энэ хэрэглэгч буруу байна. Дахин оролдоно уу.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/mn-MN/admin/consumables/general.php b/resources/lang/mn-MN/admin/consumables/general.php index c3c78d0399..7386adc590 100644 --- a/resources/lang/mn-MN/admin/consumables/general.php +++ b/resources/lang/mn-MN/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Үлдсэн', 'total' => 'Нийт', 'update' => 'Боломжийн талаар шинэчиллээ', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/mn-MN/admin/consumables/message.php b/resources/lang/mn-MN/admin/consumables/message.php index ae87d63f92..a8ac2a536e 100644 --- a/resources/lang/mn-MN/admin/consumables/message.php +++ b/resources/lang/mn-MN/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Хадгалах боломжгүй.', 'create' => array( diff --git a/resources/lang/mn-MN/admin/custom_fields/message.php b/resources/lang/mn-MN/admin/custom_fields/message.php index 3be14c1bd2..3709684dc6 100644 --- a/resources/lang/mn-MN/admin/custom_fields/message.php +++ b/resources/lang/mn-MN/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Энэ талбар байхгүй байна.', 'already_added' => 'Талбай нэмэгдсэн байна', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Талбар үүсгэгдсэнгүй, дахин оролдоно уу.', diff --git a/resources/lang/mn-MN/admin/hardware/message.php b/resources/lang/mn-MN/admin/hardware/message.php index 3d8844cb7e..f3fa5cecb0 100644 --- a/resources/lang/mn-MN/admin/hardware/message.php +++ b/resources/lang/mn-MN/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Анхааруулга: Энэ хөрөнгө нь одоогоор хүчингүй болсон гэж тэмдэглэгдсэн байна. Хэрэв энэ байдал өөрчлөгдсөн бол хөрөнгийн статусыг шинэчлэнэ үү.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Хөрөнгө байхгүй байна.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Зарим зүйлс зөв импорт хийгдээгүй байна.', 'errorDetail' => 'Дараах зүйлсийг алдааны улмаас импортолсонгүй.', 'success' => 'Таны файл импортлогдсон байна', diff --git a/resources/lang/mn-MN/admin/licenses/general.php b/resources/lang/mn-MN/admin/licenses/general.php index 717ba1b76c..31bc40804f 100644 --- a/resources/lang/mn-MN/admin/licenses/general.php +++ b/resources/lang/mn-MN/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Лицензийн мэдээлэл', 'license_seats' => 'Лицензийн суудал', 'seat' => 'Суудал', + 'seat_count' => 'Seat :count', 'seats' => 'Суудал', 'software_licenses' => 'Програм хангамжийн лиценз', 'user' => 'Хэрэглэгч', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/mn-MN/admin/licenses/message.php b/resources/lang/mn-MN/admin/licenses/message.php index c7b60d5fd8..1fd203eedc 100644 --- a/resources/lang/mn-MN/admin/licenses/message.php +++ b/resources/lang/mn-MN/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Лицензийг шалгах асуудал гарлаа. Дахин оролдоно уу.', 'success' => 'Лицензийг амжилттай шалгасан', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/mn-MN/admin/models/message.php b/resources/lang/mn-MN/admin/models/message.php index 05953b693f..5921c7e3c8 100644 --- a/resources/lang/mn-MN/admin/models/message.php +++ b/resources/lang/mn-MN/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Энэ загвар одоогоор нэг буюу хэд хэдэн хөрөнгөтэй холбоотой бөгөөд устгаж болохгүй. Хөрөнгө устгаж, дараа нь устгахыг оролдоно уу.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Загвар үүсгэгдсэнгүй, дахин оролдоно уу.', diff --git a/resources/lang/mn-MN/admin/settings/general.php b/resources/lang/mn-MN/admin/settings/general.php index e6a745396f..d9761f2792 100644 --- a/resources/lang/mn-MN/admin/settings/general.php +++ b/resources/lang/mn-MN/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Энэ нь зөвхөн LDAP-ийг зөв синхрончлох боломжтой эсэхийг шалгадаг. Хэрэв таны LDAP баталгаажуулалтын асуулга буруу байвал хэрэглэгчид нэвтрэх боломжгүй хэвээр байх магадлалтай. ТА ЭХЛЭЭД ШИНЭЧЛЭГДСЭН LDAP ТОХИРГООГОО ХАДГАЛАХ ЁСТОЙ.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'LDAP сервер', - 'ldap_server_help' => 'Энэ нь ldap: // (unrrypted буюу TLS) эсвэл ldaps-ээр эхлэх ёстой: // (SSL нь)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL гэрчилгээ баталгаажуулалт', 'ldap_server_cert_ignore' => 'Хүчингүй SSL гэрчилгээг зөвшөөрөх', 'ldap_server_cert_help' => 'Хэрэв та өөрийгөө гарын үсэг зурсан SSL сертификат ашиглаж байгаа бол энэ сонголтыг сонгож хүчингүй SSL сертификатыг хүлээн авахыг хүсч байна.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Програм хангамжийн лиценз', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'Нэмэлт', 'per_page' => 'Нэг хуудасны үр дүн', 'php' => 'PHP хувилбар', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/mn-MN/button.php b/resources/lang/mn-MN/button.php index db7ced26c4..50d3b99a14 100644 --- a/resources/lang/mn-MN/button.php +++ b/resources/lang/mn-MN/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Устгах', 'edit' => 'Засах', + 'clone' => 'Clone', 'restore' => 'Сэргээх', 'remove' => 'Remove', 'request' => 'Хүсэлт', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Шинэ', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/mn-MN/general.php b/resources/lang/mn-MN/general.php index 0775a036ce..09b1e1c47e 100644 --- a/resources/lang/mn-MN/general.php +++ b/resources/lang/mn-MN/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Илүү мэдээлэл', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Хугацаа дуусна', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/mn-MN/mail.php b/resources/lang/mn-MN/mail.php index a76f7283dc..5e47c2bcdb 100644 --- a/resources/lang/mn-MN/mail.php +++ b/resources/lang/mn-MN/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Би ашиглалтын нөхцөлийг уншиж, зөвшөөрч, энэ зүйлийг хүлээн авсан.', 'inventory_report' => 'Inventory Report', 'item' => 'Зүйл:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => ':count ширхэг лизенц :threshhold өдрийн дотор дуусна.|:count ширхэг лизенц :threshhold өдрийн дотор дуусна.', 'link_to_update_password' => 'Вэбсайтаа шинэчлэхийн тулд дараах холбоос дээр дарна уу:', 'login' => 'Нэвтрэх:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Хэрэглэгч', 'username' => 'Нэвтрэх нэр', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Тавтай морилно уу: нэр', 'welcome_to' => 'Тавтай морилно уу: Вэб хуудас!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Таны Snipe-IT итгэмжлэлүүд', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/mn-MN/validation.php b/resources/lang/mn-MN/validation.php index 70a99c5323..01b9e5e416 100644 --- a/resources/lang/mn-MN/validation.php +++ b/resources/lang/mn-MN/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Үүнд: аттрибут хүлээн авах ёстой.', - 'active_url' => 'Үүнд: атрибут нь зөв URL биш байна.', - 'after' => 'Үүнд: аттрибут нь дараах огноо байх ёстой: date.', - 'after_or_equal' => 'Үүнд: аттрибут нь дараах огноо эсвэл тэнцүү байх огноо байх ёстой.', - 'alpha' => 'Үүнд: аттрибут нь зөвхөн үсэг агуулдаг.', - 'alpha_dash' => 'Үүнд: аттрибут нь зөвхөн үсэг, тоо, зураас агуулсан байж болно.', - 'alpha_num' => 'Үүнд: аттрибут нь зөвхөн үсэг, тоо агуулж болно.', - 'array' => 'Үүнд: атрибут нь массив байх ёстой.', - 'before' => 'Үүнд: аттрибут нь огноогоос өмнө он сар байх ёстой.', - 'before_or_equal' => 'Үүнд: аттрибут нь огноогоос өмнө эсвэл огноо байх ёстой.', - 'between' => [ - 'numeric' => 'Үүнд: атрибут нь дараах байх ёстой: min ба: max.', - 'file' => 'Үүнд: аттрибут нь: min ба: max килобайт хооронд байх ёстой.', - 'string' => 'Үүнд: аттрибут нь дараах байх ёстой: min ба: max тэмдэгтүүд.', - 'array' => 'Үүнд: аттрибут нь дараах байх ёстой: min ба: max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Үүнд: аттрибутын талбар нь үнэн эсвэл худал байна.', - 'confirmed' => 'Үүнд: атрибут баталгаажуулалт таарахгүй байна.', - 'date' => 'Үүнд: атрибут нь хүчинтэй хугацаа биш.', - 'date_format' => 'Үүнд: атрибут формат хэлбэрээр тохирохгүй байна.', - 'different' => 'Үүнд: аттрибут болон бусад нь өөр байх ёстой.', - 'digits' => 'Үүнд: аттрибут нь: цифрүүд цифр байна.', - 'digits_between' => 'Үүнд: аттрибут нь дараах байх ёстой: min ба: хамгийн их цифрүүд.', - 'dimensions' => 'Үүнд: атрибут буруу зургийн хэмжээстэй байна.', - 'distinct' => 'Үүнд: атрибутын талбар нь давхар утгатай.', - 'email' => 'Үүнд: атрибут нь зөв имэйл хаяг байх ёстой.', - 'exists' => 'Сонгосон: шинж чанар буруу байна.', - 'file' => 'Үүнд: атрибут нь файл байх ёстой.', - 'filled' => 'Үүнд: аттрибутын талбар нь утгатай байх ёстой.', - 'image' => 'Үүнд: атрибут нь зураг байх ёстой.', + 'boolean' => 'Үүнд: аттрибутын талбар нь үнэн эсвэл худал байна.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Үүнд: атрибутын талбар нь давхар утгатай.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Сонгосон: шинж чанар буруу байна.', + 'exists' => 'Сонгосон: шинж чанар буруу байна.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Үүнд: аттрибутын талбар нь утгатай байх ёстой.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Сонгосон: шинж чанар буруу байна.', - 'in_array' => 'Үүнд: атрибутын талбар байхгүй байна: бусад.', - 'integer' => 'Үүнд: атрибут нь бүхэл тоо байх ёстой.', - 'ip' => 'Үүнд: атрибут нь зөв IP хаяг байх ёстой.', - 'ipv4' => 'Үүнд: атрибут нь хүчин төгөлдөр IPv4 хаяг байх ёстой.', - 'ipv6' => 'Үүнд: аттрибут нь зөв IPv6 хаяг байх ёстой.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Үүнд: атрибут нь JSON тэмдэгт байх ёстой.', - 'max' => [ - 'numeric' => 'Үүнд: аттрибут нь: max.', - 'file' => 'Үүнд: аттрибут нь: килобайтаас ихгүй байж болно.', - 'string' => 'Үүнд: аттрибут нь хамгийн их тэмдэгтүүдээс их байж болохгүй.', - 'array' => 'Үүнд: аттрибут нь дараахи зүйлсээс ихгүй байна.', + 'in' => 'Сонгосон: шинж чанар буруу байна.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Үүнд: аттрибут нь төрөл:: утгуудтай файл байх ёстой.', - 'mimetypes' => 'Үүнд: аттрибут нь төрөл:: утгуудтай файл байх ёстой.', - 'min' => [ - 'numeric' => 'Үүнд: аттрибут дор хаяж байх ёстой.', - 'file' => 'Үүнд: атрибут дор хаяж нэг килобайт байх ёстой.', - 'string' => 'Үүнд: атрибут дор хаяж байх ёстой: min тэмдэгтүүд.', - 'array' => 'Үүнд: атрибут дор хаяж дараах зүйлсийг агуулсан байх ёстой.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Сонгосон: шинж чанар буруу байна.', - 'numeric' => 'Үүнд: атрибут нь тоо байх ёстой.', - 'present' => 'Үүнд: атрибутын талбар байх ёстой.', - 'valid_regex' => 'Энэ regex нь хүчин төгөлдөр биш. ', - 'regex' => 'Агуулга формат буруу байна.', - 'required' => 'Үүнд: атрибутын талбар шаардлагатай.', - 'required_if' => 'Үүнд: аттрибутын талбар шаардлагатай үед: бусад нь: утга.', - 'required_unless' => 'Үүнд: аттрибутын талбар шаардлагатай: бусад нь: утга байна.', - 'required_with' => 'Үүнд: аттрибутын талбар шаардлагатай бол: утга байгаа болно.', - 'required_with_all' => 'Үүнд: аттрибутын талбар шаардлагатай бол: утга байгаа болно.', - 'required_without' => 'Үүнд: аттрибутын талбар шаардлагатай үед: утга байхгүй байна.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Сонгосон: шинж чанар буруу байна.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Үүнд: атрибутын талбар байх ёстой.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Үүнд: атрибутын талбар шаардлагатай.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Үүнд: аттрибутын талбар шаардлагатай үед: бусад нь: утга.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Үүнд: аттрибутын талбар шаардлагатай: бусад нь: утга байна.', + 'required_with' => 'Үүнд: аттрибутын талбар шаардлагатай бол: утга байгаа болно.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Үүнд: аттрибутын талбар шаардлагатай үед: утга байхгүй байна.', 'required_without_all' => 'Үүнд: аттрибутын талбар нь: утга байх ёсгүй.', - 'same' => 'Үүнд: атрибут болон бусад нь таарах ёстой.', - 'size' => [ - 'numeric' => 'Үүнд: атрибут нь байх ёстой: хэмжээ.', - 'file' => 'Үүнд: атрибут нь: хэмжээ килобайт байх ёстой.', - 'string' => 'Үүнд: аттрибут нь: хэмжээст тэмдэгтүүд.', - 'array' => 'Үүнд: атрибут нь дараах хэмжээтэй байна: size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Үүнд: атрибут нь мөр байх ёстой.', - 'timezone' => 'Үүнд: атрибут нь хүчинтэй бүс байх ёстой.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Үүнд: атрибут аль хэдийн авсан байна.', - 'uploaded' => 'Үүнд: атрибут байршуулах боломжгүй байна.', - 'url' => 'Агуулга формат буруу байна.', 'unique_undeleted' => ':attribute дахин давтагдашгүй байх ёстой.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Үүнд: атрибут аль хэдийн авсан байна.', + 'uploaded' => 'Үүнд: атрибут байршуулах боломжгүй байна.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ms-MY/account/general.php b/resources/lang/ms-MY/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/ms-MY/account/general.php +++ b/resources/lang/ms-MY/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ms-MY/admin/accessories/message.php b/resources/lang/ms-MY/admin/accessories/message.php index fb39faa6af..e4c232611e 100644 --- a/resources/lang/ms-MY/admin/accessories/message.php +++ b/resources/lang/ms-MY/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Aksesori tidak diperiksa, sila cuba lagi', 'success' => 'Aksesori diperiksa dengan jayanya.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Pengguna itu tidak sah. Sila cuba lagi.' + 'user_does_not_exist' => 'Pengguna itu tidak sah. Sila cuba lagi.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ms-MY/admin/consumables/general.php b/resources/lang/ms-MY/admin/consumables/general.php index 103eafe4c7..e640ff0f5d 100644 --- a/resources/lang/ms-MY/admin/consumables/general.php +++ b/resources/lang/ms-MY/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Baki', 'total' => 'Jumlah', 'update' => 'Kemas kini boleh digunakan', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ms-MY/admin/consumables/message.php b/resources/lang/ms-MY/admin/consumables/message.php index 1a70fa1443..3ff456aea9 100644 --- a/resources/lang/ms-MY/admin/consumables/message.php +++ b/resources/lang/ms-MY/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Tidak boleh digunakan.', 'create' => array( diff --git a/resources/lang/ms-MY/admin/custom_fields/message.php b/resources/lang/ms-MY/admin/custom_fields/message.php index 1e6d79f7ea..93f5eb3067 100644 --- a/resources/lang/ms-MY/admin/custom_fields/message.php +++ b/resources/lang/ms-MY/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Bidang itu tidak wujud.', 'already_added' => 'Bidang sudah ditambahkan', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Bidang tidak dibuat, sila cuba lagi.', diff --git a/resources/lang/ms-MY/admin/hardware/message.php b/resources/lang/ms-MY/admin/hardware/message.php index a171f17a52..5b3f5ee41e 100644 --- a/resources/lang/ms-MY/admin/hardware/message.php +++ b/resources/lang/ms-MY/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Amaran: Aset ini telah ditandakan sebagai tidak boleh dikehendaki. Jika status ini telah berubah, sila kemas kini status aset.', + 'undeployable' => 'Amaran: Harta ini sekarang ditanda sebagai tidak boleh agih. Jika statusnya telah berubah, sila kemaskini staus harta.', 'does_not_exist' => 'Harta tidak wujud.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Sesetengah item tidak diimport dengan betul.', 'errorDetail' => 'Item berikut tidak diimport kerana kesilapan.', 'success' => 'Fail anda telah diimport', diff --git a/resources/lang/ms-MY/admin/licenses/general.php b/resources/lang/ms-MY/admin/licenses/general.php index 038cd70414..d3965e5257 100644 --- a/resources/lang/ms-MY/admin/licenses/general.php +++ b/resources/lang/ms-MY/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Maklumat Lesen', 'license_seats' => 'Lesen Kosong', 'seat' => 'Kekosongan', + 'seat_count' => 'Seat :count', 'seats' => 'Kekosongan', 'software_licenses' => 'Lesen Perisian', 'user' => 'Pengguna', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ms-MY/admin/licenses/message.php b/resources/lang/ms-MY/admin/licenses/message.php index 2541898dc5..c6a404e4fb 100644 --- a/resources/lang/ms-MY/admin/licenses/message.php +++ b/resources/lang/ms-MY/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Ada isu semasa agihan lesen. Sila cuba lagi.', 'success' => 'Lesen berjaya diagihkan', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ms-MY/admin/models/message.php b/resources/lang/ms-MY/admin/models/message.php index 61184150ac..f8d2776c31 100644 --- a/resources/lang/ms-MY/admin/models/message.php +++ b/resources/lang/ms-MY/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Model ini sekarang disekutukan dengan sekurang2nya satu atau lebih harta dan tidak boleh dihapuskan. Sila kemaskini harta, dan kemudian cuba lagi. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model gagal dicipta, sila cuba lagi.', diff --git a/resources/lang/ms-MY/admin/settings/general.php b/resources/lang/ms-MY/admin/settings/general.php index 143f514009..740a658d70 100644 --- a/resources/lang/ms-MY/admin/settings/general.php +++ b/resources/lang/ms-MY/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ini hanya ujian bahawa LDAP boleh diselaraskan dengan betul. Jika pertanyaan Pengesahan LDAP anda tidak betul, pengguna mungkin masih tidak boleh log masuk. ANDA MESTI SIMPAN KONFIGURASI LDAP TERKINI DAHULU.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'Pelayan LDAP', - 'ldap_server_help' => 'Ini harus bermula dengan ldap: // (untuk tidak disulitkan atau TLS) atau ldaps: // (untuk SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Pengesahan sijil LDAP SSL', 'ldap_server_cert_ignore' => 'Benarkan Sijil SSL yang tidak sah', 'ldap_server_cert_help' => 'Pilih kotak semak ini jika anda menggunakan sijil SSL yang ditandatangani sendiri dan ingin menerima sijil SSL yang tidak sah.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Lesen Perisian', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'pilihan', 'per_page' => 'Senarai Setiap Mukasurat', 'php' => 'Versi PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ms-MY/button.php b/resources/lang/ms-MY/button.php index ce639259ef..fb63e739b1 100644 --- a/resources/lang/ms-MY/button.php +++ b/resources/lang/ms-MY/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Hapuskan', 'edit' => 'Kemaskini', + 'clone' => 'Clone', 'restore' => 'Masukkan Semula', 'remove' => 'Remove', 'request' => 'Permintaan', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Baru', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ms-MY/general.php b/resources/lang/ms-MY/general.php index 90cf800915..4455c98fdc 100644 --- a/resources/lang/ms-MY/general.php +++ b/resources/lang/ms-MY/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Maklumat tambahan', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Tamat tempoh', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ms-MY/mail.php b/resources/lang/ms-MY/mail.php index d6c9697310..f02540ae16 100644 --- a/resources/lang/ms-MY/mail.php +++ b/resources/lang/ms-MY/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Saya telah membaca dan bersetuju dengan terma penggunaan, dan telah menerima item ini.', 'inventory_report' => 'Inventory Report', 'item' => 'Perkara:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Terdapat :count lesen yang akan tamat dalam tempoh :threshold hari.|Terdapat :count lesen yang akan tamat dalam tempoh :threshold hari.', 'link_to_update_password' => 'Sila klik pada pautan berikut untuk mengemas kini kata laluan web anda:', 'login' => 'Log masuk:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Pengguna', 'username' => 'Nama Pengguna', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Selamat datang: nama', 'welcome_to' => 'Selamat datang ke: web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Kredensial Snipe-IT anda', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ms-MY/validation.php b/resources/lang/ms-MY/validation.php index 85e8b13b95..28d2a7791e 100644 --- a/resources/lang/ms-MY/validation.php +++ b/resources/lang/ms-MY/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute mesti diterima.', - 'active_url' => ':attribute URL yang tidak sah.', - 'after' => ':attribute mesti tarik selepas must :date.', - 'after_or_equal' => 'The: atribut mestilah tarikh selepas atau sama dengan: tarikh.', - 'alpha' => ':attribute hanya boleh mengandungi huruf.', - 'alpha_dash' => ':attribute hanya boleh mengandungi huruf, nombor dan tanda tolak.', - 'alpha_num' => ':attribute hanya boleh mengadungi huruf dan nombor.', - 'array' => 'The: attribute must be array.', - 'before' => ':attribute mestilah tarikh sebelum :date.', - 'before_or_equal' => 'The: atribut mestilah tarikh sebelum atau sama dengan: tarikh.', - 'between' => [ - 'numeric' => ':attribute mesti berada diantara :min - :max.', - 'file' => ':attribute mesti diantara :min - :max kilobytes.', - 'string' => ':attribute mesti diantara :min - :max characters.', - 'array' => 'The: attribute must have between: min and: max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ': Bidang atribut mestilah benar atau palsu.', - 'confirmed' => ':attribute pengesahan tidak sama.', - 'date' => ':attribute tarikh yang tidak sah.', - 'date_format' => ':attribute tidak mengikut format :format.', - 'different' => ':attribute dan :other mesti berbeza.', - 'digits' => ':attribute mesti :digits digit.', - 'digits_between' => ':attribute mesti diantara :min and :max digit.', - 'dimensions' => 'The: attribute mempunyai dimensi imej tidak sah.', - 'distinct' => 'The: bidang atribut mempunyai nilai pendua.', - 'email' => ':attribute format tidak sah.', - 'exists' => 'Piliah :attribute tidak sah.', - 'file' => 'The: attribute must be a file.', - 'filled' => ': Bidang atribut mesti mempunyai nilai.', - 'image' => ':attribute mesti imej.', + 'boolean' => ': Bidang atribut mestilah benar atau palsu.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The: bidang atribut mempunyai nilai pendua.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Piliah :attribute tidak sah.', + 'exists' => 'Piliah :attribute tidak sah.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ': Bidang atribut mesti mempunyai nilai.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Piliah :attribute tidak sah.', - 'in_array' => 'The: bidang atribut tidak wujud di: lain.', - 'integer' => ':attribute mesti integer.', - 'ip' => ':attribute mesti alamat IP yang sah.', - 'ipv4' => 'The: attribute mestilah alamat IPv4 yang sah.', - 'ipv6' => 'The: atribut mestilah alamat IPv6 yang sah.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The: attribute mestilah rentetan JSON yang sah.', - 'max' => [ - 'numeric' => ':attribute tidak boleh lebih besar dari :max.', - 'file' => ':attribute tidak boleh lebih besar dari :max kilobytes.', - 'string' => ':attribute tidak boleh lebih besar dari :max characters.', - 'array' => 'The: attribute mungkin tidak mempunyai lebih daripada: item maks.', + 'in' => 'Piliah :attribute tidak sah.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute mesti fail jenis: :values.', - 'mimetypes' => 'The: attribute mestilah file jenis:: nilai.', - 'min' => [ - 'numeric' => ':attribute mesti sekurang2nya :min.', - 'file' => ':attribute mesti sekurang2nya :min kilobytes.', - 'string' => ':attribute mesti sekurang2nya :min characters.', - 'array' => 'The: atribut mesti mempunyai sekurang-kurangnya: item min.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Piliah :attribute tidak sah.', - 'numeric' => ':attribute mesti nombor.', - 'present' => 'Yang: bidang atribut mesti ada.', - 'valid_regex' => 'Itu bukan regex yang sah. ', - 'regex' => ':attribute format tidak sah.', - 'required' => ':attribute ruangan diperlukan.', - 'required_if' => ':attribute rungan diperlukan bila :other adalah :value.', - 'required_unless' => 'Bidang: atribut diperlukan kecuali: yang lain berada dalam: nilai.', - 'required_with' => ':attribute ruangan diperlukan bila :values wujud.', - 'required_with_all' => 'Bidang: sifat diperlukan apabila: nilai hadir.', - 'required_without' => ':attribute ruangan diperlukan bila :values tidak wujud.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Piliah :attribute tidak sah.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Yang: bidang atribut mesti ada.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute ruangan diperlukan.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute rungan diperlukan bila :other adalah :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Bidang: atribut diperlukan kecuali: yang lain berada dalam: nilai.', + 'required_with' => ':attribute ruangan diperlukan bila :values wujud.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute ruangan diperlukan bila :values tidak wujud.', 'required_without_all' => 'The: field attribute diperlukan apabila tidak ada: nilai hadir.', - 'same' => ':attribute dan :other mesti sama.', - 'size' => [ - 'numeric' => ':attribute mesti :size.', - 'file' => ':attribute mesti :size kilobytes.', - 'string' => ':attribute mesti :size aksara.', - 'array' => 'The: attribute mesti mengandungi: item saiz.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The: attribute must be string.', - 'timezone' => 'The: attribute mesti zon yang sah.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute telah diambil.', - 'uploaded' => 'The: attribute gagal untuk dimuat naik.', - 'url' => ':attribute format tidak sah.', 'unique_undeleted' => ':attribute mesti unik.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute telah diambil.', + 'uploaded' => 'The: attribute gagal untuk dimuat naik.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/nb-NO/account/general.php b/resources/lang/nb-NO/account/general.php new file mode 100644 index 0000000000..9a4242971b --- /dev/null +++ b/resources/lang/nb-NO/account/general.php @@ -0,0 +1,15 @@ + 'Personlige API-nøkler', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', + 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'api_base_url' => 'Din API base-url finnes på:', + 'api_base_url_endpoint' => '/<endpoint>', + 'api_token_expiration_time' => 'API-tokens er satt til å utløpe om:', + 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', +); diff --git a/resources/lang/nb-NO/admin/accessories/general.php b/resources/lang/nb-NO/admin/accessories/general.php new file mode 100644 index 0000000000..871c6c549c --- /dev/null +++ b/resources/lang/nb-NO/admin/accessories/general.php @@ -0,0 +1,22 @@ + 'Tilbehørskategori', + 'accessory_name' => 'Navn tilbehør', + 'checkout' => 'Sjekk ut tilbehør', + 'checkin' => 'Sjekk inn tilbehør', + 'create' => 'Legg til tilbehør', + 'edit' => 'Rediger tilbehør', + 'eula_text' => 'EULA-kategori', + 'eula_text_help' => 'Dette feltet lar deg tilpasse dine EULA for spesifikke typer eiendeler. Hvis du har kun en EULA for alle eiendeler kan du krysse av nedenfor for å bruke standard.', + 'require_acceptance' => 'Krev at brukere bekrefter aksept av eiendeler i denne kategorien.', + 'no_default_eula' => 'Ingen standard EULA funnet. Legg til en i Innstillinger.', + 'total' => 'Total', + 'remaining' => 'Tilgjengelig', + 'update' => 'Oppdater tilbehør', + 'use_default_eula' => 'Bruk standard EULA i stedet.', + 'use_default_eula_disabled' => 'Bruk standard EULA i stedet. Ingen standard EULA er satt. Legg til en i Innstillinger.', + 'clone' => 'Klon tilbehør', + 'delete_disabled' => 'Dette tilbehøret kan ikke slettes enda fordi noen elementer er fremdeles sjekket ut.', + +); diff --git a/resources/lang/nb-NO/admin/accessories/message.php b/resources/lang/nb-NO/admin/accessories/message.php new file mode 100644 index 0000000000..62916051ab --- /dev/null +++ b/resources/lang/nb-NO/admin/accessories/message.php @@ -0,0 +1,43 @@ + 'Leverandør finnes ikke.', + 'not_found' => 'Lisens ikke funnet', + 'assoc_users' => 'Denne modellen er tilknyttet en eller flere eiendeler og kan ikke slettes. Slett eiendelene, og prøv å slette modellen igjen. ', + + 'create' => array( + 'error' => 'Leverandør ble ikke opprettet. Prøv igjen.', + 'success' => 'Opprettelse av leverandør vellykket.' + ), + + 'update' => array( + 'error' => 'Leverandør ble ikke oppdatert. Prøv igjen', + 'success' => 'Oppdatering av leverandør vellykket.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne leverandøren?', + 'error' => 'Det oppstod et problem under sletting av leverandør. Prøv igjen.', + 'success' => 'Sletting av leverandør vellykket.' + ), + + 'checkout' => array( + 'error' => 'Det oppstod et problem under utsjekk av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket utsjekk av lisens', + 'unavailable' => 'This seat is not available for checkout.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + + ), + + 'checkin' => array( + 'error' => 'Det oppstod et problem under innsjekk av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket innsjekk av lisens', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.' + ) + + +); diff --git a/resources/lang/nb-NO/admin/accessories/table.php b/resources/lang/nb-NO/admin/accessories/table.php new file mode 100644 index 0000000000..73fe3dfd18 --- /dev/null +++ b/resources/lang/nb-NO/admin/accessories/table.php @@ -0,0 +1,11 @@ + 'Last ned CSV', + 'eula_text' => 'EULA', + 'id' => 'Id', + 'require_acceptance' => 'Godtatt', + 'title' => 'Tittel', + + +); diff --git a/resources/lang/nb-NO/admin/asset_maintenances/form.php b/resources/lang/nb-NO/admin/asset_maintenances/form.php new file mode 100644 index 0000000000..1c12fd5525 --- /dev/null +++ b/resources/lang/nb-NO/admin/asset_maintenances/form.php @@ -0,0 +1,14 @@ + 'Ressurs vedlikeholds type', + 'title' => 'Tittel', + 'start_date' => 'Startdato', + 'completion_date' => 'Fullført dato', + 'cost' => 'Innkjøpskostnad', + 'is_warranty' => 'Uthevet garanti', + 'asset_maintenance_time' => 'Tid brukt på ressursvedlikehold (i dager)', + 'notes' => 'Notater', + 'update' => 'Oppdater lisens', + 'create' => 'Opprett lisens' + ]; diff --git a/resources/lang/nb-NO/admin/asset_maintenances/general.php b/resources/lang/nb-NO/admin/asset_maintenances/general.php new file mode 100644 index 0000000000..4c36e8e6b9 --- /dev/null +++ b/resources/lang/nb-NO/admin/asset_maintenances/general.php @@ -0,0 +1,16 @@ + 'Vedlikehold av eiendeler', + 'edit' => 'Rediger Vedlikehold', + 'delete' => 'Slett Vedlikehold', + 'view' => 'Vedlikehold detaljer', + 'repair' => 'Reparerasjon', + 'maintenance' => 'Vedlikehold', + 'upgrade' => 'Oppgradering', + 'calibration' => 'Kalibrering', + 'software_support' => 'Programvarestøtte', + 'hardware_support' => 'Maskinvare støtte', + 'configuration_change' => 'Konfigurasjons endring', + 'pat_test' => 'PAT test', + ]; diff --git a/resources/lang/nb-NO/admin/asset_maintenances/message.php b/resources/lang/nb-NO/admin/asset_maintenances/message.php new file mode 100644 index 0000000000..7b387a2973 --- /dev/null +++ b/resources/lang/nb-NO/admin/asset_maintenances/message.php @@ -0,0 +1,21 @@ + 'Fant ikke vedlikeholdet du så etter!', + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette dette vedlikeholdet?', + 'error' => 'Kunne ikke slette vedlikholdet. Prøv igjen.', + 'success' => 'Vedlikeholdet ble slettet.', + ], + 'create' => [ + 'error' => 'Vedlikeholdet ble ikke opprettet, prøv igjen.', + 'success' => 'Vedlikeholdet ble opprettet.', + ], + 'edit' => [ + 'error' => 'Vedlikeholdet ble ikke opprettet, prøv igjen.', + 'success' => 'Vedlikehold endret vellykket.', + ], + 'asset_maintenance_incomplete' => 'Enda Ikke fullført', + 'warranty' => 'Garanti', + 'not_warranty' => 'Ikke garanti', + ]; diff --git a/resources/lang/nb-NO/admin/asset_maintenances/table.php b/resources/lang/nb-NO/admin/asset_maintenances/table.php new file mode 100644 index 0000000000..9a584665a5 --- /dev/null +++ b/resources/lang/nb-NO/admin/asset_maintenances/table.php @@ -0,0 +1,8 @@ + 'Vedlikehold av eiendel', + 'asset_name' => 'Navn', + 'is_warranty' => 'Garanti', + 'dl_csv' => 'Last ned CSV', + ]; diff --git a/resources/lang/nb-NO/admin/categories/general.php b/resources/lang/nb-NO/admin/categories/general.php new file mode 100644 index 0000000000..4c02d73ecb --- /dev/null +++ b/resources/lang/nb-NO/admin/categories/general.php @@ -0,0 +1,25 @@ + 'Kategorier', + 'category_name' => 'Navn', + 'checkin_email' => 'Send epost til bruker ved innsjekking/utsjekking.', + 'checkin_email_notification' => 'Det vil bli sendt en e-post til bruker ved innsjekking/utsjekking.', + 'clone' => 'Klon kategori', + 'create' => 'Opprett kategori', + 'edit' => 'Rediger kategori', + 'email_will_be_sent_due_to_global_eula' => 'En e-post sendes til brukeren fordi den globale EULA er i bruk.', + 'email_will_be_sent_due_to_category_eula' => 'En e-post blir sendt til brukeren fordi en EULA er angitt for denne kategorien.', + 'eula_text' => 'EULA-kategori', + 'eula_text_help' => 'Dette feltet lar deg tilpasse dine EULA for spesifikke typer eiendeler. Hvis du kun har en EULA for alle eiendeler kan du krysse av nedenfor for å bruke standard.', + 'name' => 'Kategorinavn', + 'require_acceptance' => 'Krev at brukere bekrefter aksept av eiendeler i denne kategorien.', + 'required_acceptance' => 'Denne brukeren vil få e-post med en lenke for å bekrefte aksept av enheten.', + 'required_eula' => 'Denne brukeren vil få en kopi av EULA på e-post', + 'no_default_eula' => 'Ingen standard EULA funnet. Legg til en i Innstillinger.', + 'update' => 'Oppdatere kategori', + 'use_default_eula' => 'Bruk standard EULA i stedet.', + 'use_default_eula_disabled' => 'Bruk standard EULA i stedet. Ingen standard EULA er satt. Legg til en i Innstillinger.', + 'use_default_eula_column' => 'Bruk standard EULA', + +); diff --git a/resources/lang/nb-NO/admin/categories/message.php b/resources/lang/nb-NO/admin/categories/message.php new file mode 100644 index 0000000000..2d93711bc6 --- /dev/null +++ b/resources/lang/nb-NO/admin/categories/message.php @@ -0,0 +1,27 @@ + 'Kategorien eksisterer ikke.', + 'assoc_models' => 'Denne kategorien er koblet til minst èn modell og kan ikke slettes. Vennligst oppdater dine modeller til å ikke referere til denne kategorien og prøv igjen. ', + 'assoc_items' => 'Denne kategorien er knyttet til minst én :asset_type og kan ikke slettes. Oppdater din :asset_type til å ikke lenger refererer til denne kategorien, og prøv på nytt. ', + + 'create' => array( + 'error' => 'Kategorien ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Kategorien ble opprettet.' + ), + + 'update' => array( + 'error' => 'Kategorien ble ikke opprettet, vennligst prøv igjen', + 'success' => 'Kategorien ble oppdatert.', + 'cannot_change_category_type' => 'Du kan ikke endre kategori typen når den har blitt opprettet', + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på du vil slette denne kategorien?', + 'error' => 'Det oppsto et problem ved sletting av kategorien. Vennligst prøv igjen. +', + 'success' => 'Kategorien ble slettet.' + ) + +); diff --git a/resources/lang/nb-NO/admin/categories/table.php b/resources/lang/nb-NO/admin/categories/table.php new file mode 100644 index 0000000000..6f07705218 --- /dev/null +++ b/resources/lang/nb-NO/admin/categories/table.php @@ -0,0 +1,10 @@ + 'EULA', + 'id' => 'ID', + 'parent' => 'Overordnet kategori', + 'require_acceptance' => 'Godtatt', + 'title' => 'Kategorinavn', + +); diff --git a/resources/lang/nb-NO/admin/companies/general.php b/resources/lang/nb-NO/admin/companies/general.php new file mode 100644 index 0000000000..dc4853775f --- /dev/null +++ b/resources/lang/nb-NO/admin/companies/general.php @@ -0,0 +1,7 @@ + 'Velg bedrift', + 'about_companies' => 'Om bedrifter', + 'about_companies_description' => ' Du kan bruke bedrifter som et enkelt informasjonsfelt, eller slå på Full Bedriftstøtte i Admin-innstillingene for å kunne begrense tilgangen til brukere fra forskjellige bedrifter.', +]; diff --git a/resources/lang/nb-NO/admin/companies/message.php b/resources/lang/nb-NO/admin/companies/message.php new file mode 100644 index 0000000000..284a2d4344 --- /dev/null +++ b/resources/lang/nb-NO/admin/companies/message.php @@ -0,0 +1,20 @@ + 'Bedriften eksisterer ikke.', + 'deleted' => 'Slett firma', + 'assoc_users' => 'Denne bedriften er tilknyttet minst en modell og kan ikke slettes. Oppdater modellene dine til å ikke refere til denne bedriften og prøv igjen. ', + 'create' => [ + 'error' => 'Bedriften ble ikke opprette. Prøv igjen.', + 'success' => 'Bedriften ble opprettet.', + ], + 'update' => [ + 'error' => 'Bedriften ble ikke oppdatert. Prøv igjen', + 'success' => 'Bedriften ble oppdatert.', + ], + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette denne bedriften?', + 'error' => 'Feil ved sletting av bedrift. Prøv igjen.', + 'success' => 'Bedriften ble slettet.', + ], +]; diff --git a/resources/lang/nb-NO/admin/companies/table.php b/resources/lang/nb-NO/admin/companies/table.php new file mode 100644 index 0000000000..f809bbe267 --- /dev/null +++ b/resources/lang/nb-NO/admin/companies/table.php @@ -0,0 +1,11 @@ + 'Bedrifter', + 'create' => 'Opprett bedrift', + 'email' => 'E-postadresse for firma', + 'title' => 'Bedrift', + 'phone' => 'Telefon for firma', + 'update' => 'Oppdater bedrift', + 'name' => 'Navn på bedrift', + 'id' => 'ID', +); diff --git a/resources/lang/nb-NO/admin/components/general.php b/resources/lang/nb-NO/admin/components/general.php new file mode 100644 index 0000000000..7f6209fad5 --- /dev/null +++ b/resources/lang/nb-NO/admin/components/general.php @@ -0,0 +1,16 @@ + 'Komponent navn', + 'checkin' => 'Sjekk inn komponent', + 'checkout' => 'Sjekk ut komponent', + 'cost' => 'Innkjøpskostnad', + 'create' => 'Opprett komponent', + 'edit' => 'Endre komponent', + 'date' => 'Kjøpsdato', + 'order' => 'Ordreummer', + 'remaining' => 'Gjenstår', + 'total' => 'Total', + 'update' => 'Oppdater komponent', + 'checkin_limit' => 'Antall sjekket inn må være lik eller mindre enn :assigned_qty' +); diff --git a/resources/lang/nb-NO/admin/components/message.php b/resources/lang/nb-NO/admin/components/message.php new file mode 100644 index 0000000000..af968e45f9 --- /dev/null +++ b/resources/lang/nb-NO/admin/components/message.php @@ -0,0 +1,37 @@ + 'Komponenten finnes ikke.', + + 'create' => array( + 'error' => 'Komponenten ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Komponent ble opprettet.' + ), + + 'update' => array( + 'error' => 'Komponenten ble ikke oppdatert. Vennligst prøv igjen', + 'success' => 'Komponent ble oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne komponenten?', + 'error' => 'Det oppstod et problem under sletting av komponenten. Vennligst prøv igjen.', + 'success' => 'Sletting av komponent vellykket.' + ), + + 'checkout' => array( + 'error' => 'Komponent ble ikke sjekket ut. Prøv igjen', + 'success' => 'Vellykket utsjekk av komponent.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.', + 'unavailable' => 'Ikke nok komponenter igjen: :remaining gjenværende, :requested ', + ), + + 'checkin' => array( + 'error' => 'Komponenten ble ikke sjekket inn, vennligst prøv igjen', + 'success' => 'Vellykket innsjekk av komponent.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.' + ) + + +); diff --git a/resources/lang/nb-NO/admin/components/table.php b/resources/lang/nb-NO/admin/components/table.php new file mode 100644 index 0000000000..f2692003d6 --- /dev/null +++ b/resources/lang/nb-NO/admin/components/table.php @@ -0,0 +1,5 @@ + 'Komponentnavn', +); diff --git a/resources/lang/nb-NO/admin/consumables/general.php b/resources/lang/nb-NO/admin/consumables/general.php new file mode 100644 index 0000000000..cf7e29fcd3 --- /dev/null +++ b/resources/lang/nb-NO/admin/consumables/general.php @@ -0,0 +1,12 @@ + 'Sjekk ut Forbruksvare til Bruker', + 'consumable_name' => 'Navn på forbruksvare', + 'create' => 'Legg til forbruksvare', + 'item_no' => 'Varenr.', + 'remaining' => 'Gjenstår', + 'total' => 'Total', + 'update' => 'Oppdater forbruksvare', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', +); diff --git a/resources/lang/nb-NO/admin/consumables/message.php b/resources/lang/nb-NO/admin/consumables/message.php new file mode 100644 index 0000000000..e652d40ef6 --- /dev/null +++ b/resources/lang/nb-NO/admin/consumables/message.php @@ -0,0 +1,38 @@ + 'The category must be a consumable category.', + 'does_not_exist' => 'Forbruksvaren finnes ikke.', + + 'create' => array( + 'error' => 'Forbruksvaren bli ikke opprettet, prøv igjen.', + 'success' => 'Forbruksvaren opprettet.' + ), + + 'update' => array( + 'error' => 'Forbruksvaren ble ikke opprettet, prøv igjen', + 'success' => 'Forbruksvare oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at forbruksmateriellet skal slettes?', + 'error' => 'Noe gikk feil under sletting av forbruksvaren. Prøv igjen.', + 'success' => 'Forbruksmateriell ble slettet.' + ), + + 'checkout' => array( + 'error' => 'Forbruksvaren ble ikke tatt ut, prøv igjen', + 'success' => 'Forbruksvaren ble tatt ut.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.', + 'unavailable' => 'Det er ikke nok forbruksvarer for denne utsjekken. Kontroller antallet igjen. ', + ), + + 'checkin' => array( + 'error' => 'Forbruksvaren ble ikke lagt inn, prøv igjen', + 'success' => 'Forbruksvaren ble tatt ut.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.' + ) + + +); diff --git a/resources/lang/nb-NO/admin/consumables/table.php b/resources/lang/nb-NO/admin/consumables/table.php new file mode 100644 index 0000000000..329fb1e136 --- /dev/null +++ b/resources/lang/nb-NO/admin/consumables/table.php @@ -0,0 +1,5 @@ + 'Navn på forbruksvare', +); diff --git a/resources/lang/nb-NO/admin/custom_fields/general.php b/resources/lang/nb-NO/admin/custom_fields/general.php new file mode 100644 index 0000000000..2f88f383a7 --- /dev/null +++ b/resources/lang/nb-NO/admin/custom_fields/general.php @@ -0,0 +1,61 @@ + 'Egendefinerte Felt', + 'manage' => 'Administrer', + 'field' => 'Felt', + 'about_fieldsets_title' => 'Om Feltsett', + 'about_fieldsets_text' => 'Feltsett lar deg opprette grupper av egendefinerte felt som kan gjenbrukes til bestemte modelltyper.', + 'custom_format' => 'Tilpasset Regex-format...', + 'encrypt_field' => 'Kryptere verdien av dette feltet i databasen', + 'encrypt_field_help' => 'ADVARSEL: Ved å kryptere et felt gjør du at det ikke kan søkes på.', + 'encrypted' => 'Kryptert', + 'fieldset' => 'Feltsett', + 'qty_fields' => 'Antall Felt', + 'fieldsets' => 'Feltsett', + 'fieldset_name' => 'Feltsett Navn', + 'field_name' => 'Felt Navn', + 'field_values' => 'Felt verdier', + 'field_values_help' => 'Legge til alternativer, ett per linje. Tomme linjer utenom den første vil bli ignorerert.', + 'field_element' => 'Skjema Element', + 'field_element_short' => 'Element', + 'field_format' => 'Format', + 'field_custom_format' => 'Egendefinert Format', + 'field_custom_format_help' => 'Dette feltet lar deg bruke et regex-uttrykk for validering. Det skal begynne med "regex:" - for eksempel å validere at en egendefinert feltverdi inneholder en gyldig IMEI (15 numeriske siffer), vil du bruke regex:/^[0-9]{15}$/.', + 'required' => 'Obligatorisk', + 'req' => 'Obl.', + 'used_by_models' => 'Brukes av modeller', + 'order' => 'Bestill', + 'create_fieldset' => 'Nytt Feltsett', + 'update_fieldset' => 'Oppdater Feltsett', + 'fieldset_does_not_exist' => 'Feltsett :id eksisterer ikke', + 'fieldset_updated' => 'Feltsett oppdatert', + 'create_fieldset_title' => 'Opprett et nytt feltsett', + 'create_field' => 'Nytt Egendefinert Felt', + 'create_field_title' => 'Opprett nytt egendefinert felt', + 'value_encrypted' => 'Verdien i dette feltet er kryptert i databasen. Bare administratorer kan se hva som står i dette feltet', + 'show_in_email' => 'Inkluder verdien i dette feltet i utsjekkseposter sendt til brukeren? Krypterte felter kan ikke inkluderes i eposter', + 'show_in_email_short' => 'Inkludere i epost.', + 'help_text' => 'Hjelpetekst', + 'help_text_description' => 'Dette er en valgfri tekst som vises under feltet når man redigerer et element, ment for å gi kontekst til feltets innhold.', + 'about_custom_fields_title' => 'Om egendefinerte felt', + 'about_custom_fields_text' => 'Egendefinerte felt lar deg legge til vilkårlige attributter til eiendeler.', + 'add_field_to_fieldset' => 'Legg feltet inn i feltsett', + 'make_optional' => 'Påkrevd - klikk for å gjøre valgfritt', + 'make_required' => 'Valgfritt - klikk for å gjøre påkrevd', + 'reorder' => 'Endre rekkefølge', + 'db_field' => 'DB-felt', + 'db_convert_warning' => 'ADVARSEL: Dette feltet er i tabellen for egendefinerte felt som :db_column, men burde være :expected.', + 'is_unique' => 'Denne verdien må være unik for alle ressurser', + 'unique' => 'Unik', + 'display_in_user_view' => 'Tillat den utsjekkede brukeren å se disse verdiene i deres Vis tildelte ressurs-side', + 'display_in_user_view_table' => 'Synlig for bruker', + 'auto_add_to_fieldsets' => 'Legg denne til automatisk i hvert nye feltsett', + 'add_to_preexisting_fieldsets' => 'Legg til i alle eksisterende gruppene', + 'show_in_listview' => 'Vis i listevisninger som standard. Autoriserte brukere kan fortsatt vise/skjule via kolonnevelgeren', + 'show_in_listview_short' => 'Vis i lister', + 'show_in_requestable_list_short' => 'Vis i liste over ressurser som kan være tilgjengelig på forespørsel', + 'show_in_requestable_list' => 'Vis verdi i listen over ressurser som kan være tilgjengelig på forspørsel. Krypterte felter vises ikke', + 'encrypted_options' => 'Feltet er kryptert, så noen visningsalternativer er ikke tilgjengelig.', + +]; diff --git a/resources/lang/nb-NO/admin/custom_fields/message.php b/resources/lang/nb-NO/admin/custom_fields/message.php new file mode 100644 index 0000000000..976984aae1 --- /dev/null +++ b/resources/lang/nb-NO/admin/custom_fields/message.php @@ -0,0 +1,64 @@ + array( + 'invalid' => 'Feltet finnes ikke.', + 'already_added' => 'Feltet er allerede lagt til', + 'none_selected' => 'No field selected', + + 'create' => array( + 'error' => 'Feltet ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Felt opprettet.', + 'assoc_success' => 'Feltet ble lagt til.' + ), + + 'update' => array( + 'error' => 'Feltet ble ikke oppdatert, vennligst prøv igjen', + 'success' => 'Felt oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette dette feltet?', + 'error' => 'Det oppstod et problem ved sletting av feltet. Vennligst prøv igjen senere.', + 'success' => 'Feltet ble slettet.', + 'in_use' => 'Feltet er fremdeles i bruk.', + ) + + ), + + 'fieldset' => array( + + 'does_not_exist' => 'Fieldset eksisterer ikke', + + 'create' => array( + 'error' => 'Feltsettet ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Feltsettet ble opprettet.' + ), + + 'update' => array( + 'error' => 'Feltsettet ble ikke oppdatert, vennligst prøv igjen', + 'success' => 'Feltsettet ble oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette feltsettet?', + 'error' => 'Det oppstod et problem ved sletting av feltsettet. Vennligst prøv igjen.', + 'success' => 'Feltsettet ble slettet.', + 'in_use' => 'Feltsettet er fortsatt i bruk.', + ) + + ), + + 'fieldset_default_value' => array( + + 'error' => 'Feil ved validering av standardverdier for feltsett.', + + ), + + + + + + +); diff --git a/resources/lang/nb-NO/admin/departments/message.php b/resources/lang/nb-NO/admin/departments/message.php new file mode 100644 index 0000000000..5aad3f223c --- /dev/null +++ b/resources/lang/nb-NO/admin/departments/message.php @@ -0,0 +1,22 @@ + 'Avdeling finnes ikke.', + 'department_already_exists' => 'En avdeling finnes allerede med det navnet i denne bedriftsplassen. Eller velg et mer spesifikt navn for denne avdelingen. ', + 'assoc_users' => 'Denne avdelingen er knyttet til minst én bruker og kan ikke slettes. Oppdater brukerne ikke lenger refererer til denne avdelingen og prøv igjen. ', + 'create' => array( + 'error' => 'Avdelingen ble ikke opprettet, prøv igjen.', + 'success' => 'Avdeling opprettet.' + ), + 'update' => array( + 'error' => 'Avdelingen ble ikke oppdatert, prøv igjen', + 'success' => 'Avdeling oppdatert.' + ), + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne avdelingen?', + 'error' => 'Det var et problem med å slette avdelingen. Prøv på nytt.', + 'success' => 'Avdelingen ble slettet.' + ) + +); diff --git a/resources/lang/nb-NO/admin/departments/table.php b/resources/lang/nb-NO/admin/departments/table.php new file mode 100644 index 0000000000..3373541407 --- /dev/null +++ b/resources/lang/nb-NO/admin/departments/table.php @@ -0,0 +1,11 @@ + 'ID', + 'name' => 'Avdelingsnavn', + 'manager' => 'Leder', + 'location' => 'Plassering', + 'create' => 'Opprett avdeling', + 'update' => 'Oppdater avdeling', + ); diff --git a/resources/lang/nb-NO/admin/depreciations/general.php b/resources/lang/nb-NO/admin/depreciations/general.php new file mode 100644 index 0000000000..be4f6d862c --- /dev/null +++ b/resources/lang/nb-NO/admin/depreciations/general.php @@ -0,0 +1,16 @@ + 'Om avskrivninger', + 'about_depreciations' => 'Du kan sette opp avskrivninger for å kostnadsføre eiendeler basert på en lineær avskrivning i perioden.', + 'asset_depreciations' => 'Avskrivninger', + 'create' => 'Opprett avskrivning', + 'depreciation_name' => 'Avskrivningsnavn', + 'depreciation_min' => 'Nedre verdi for avskrivning', + 'number_of_months' => 'Antall måneder', + 'update' => 'Oppdater avskrivninger', + 'depreciation_min' => 'Minimumsverdi etter avskrivning', + 'no_depreciations_warning' => 'Advarsel: + Du har for øyeblikket ingen avskrivninger satt opp. + Vennligst sett opp minst én avskrivning for å se avskrivningsrapporten.', +]; diff --git a/resources/lang/nb-NO/admin/depreciations/message.php b/resources/lang/nb-NO/admin/depreciations/message.php new file mode 100644 index 0000000000..4c56baa473 --- /dev/null +++ b/resources/lang/nb-NO/admin/depreciations/message.php @@ -0,0 +1,25 @@ + 'Avskrivningen eksisterer ikke.', + 'assoc_users' => 'Denne avskrivningen er tilknyttet én eller flere modeller og kan ikke slettes. Vennligst slett modellene og prøv å slette på nytt. ', + + + 'create' => array( + 'error' => 'Avskrivningen ble ikke opprettet, vennligst prøv igjen. :(', + 'success' => 'Avskrivningen ble opprettet. :)' + ), + + 'update' => array( + 'error' => 'Avskrivningen ble ikke oppdatert, vennligst prøv igjen', + 'success' => 'Avskrivningen ble oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne avskrivningen ?', + 'error' => 'Det oppsto et problem med sletting av avskrivningen. Vennligst prøv igjen.', + 'success' => 'Avskrivningen ble slettet.' + ) + +); diff --git a/resources/lang/nb-NO/admin/depreciations/table.php b/resources/lang/nb-NO/admin/depreciations/table.php new file mode 100644 index 0000000000..4e986a38be --- /dev/null +++ b/resources/lang/nb-NO/admin/depreciations/table.php @@ -0,0 +1,11 @@ + 'ID', + 'months' => 'Måneder', + 'term' => 'Avskrivningsperiode', + 'title' => 'Navn ', + 'depreciation_min' => 'Nedre verdi', + +]; diff --git a/resources/lang/nb-NO/admin/groups/message.php b/resources/lang/nb-NO/admin/groups/message.php new file mode 100644 index 0000000000..1053f2c438 --- /dev/null +++ b/resources/lang/nb-NO/admin/groups/message.php @@ -0,0 +1,22 @@ + 'Gruppen eksisterer allerede!', + 'group_not_found' => 'Gruppe-ID :id finnes ikke.', + 'group_name_required' => 'Navnefeltet er påkrevd', + + 'success' => array( + 'create' => 'Gruppen ble opprettet.', + 'update' => 'Gruppen ble oppdatert.', + 'delete' => 'Gruppen ble slettet.', + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne gruppen?', + 'create' => 'Det oppsto et problem med oppretting av gruppen. Vennligst prøv igjen.', + 'update' => 'Det oppsto et problem med oppdatering av gruppen. Vennligst prøv igjen.', + 'delete' => 'Det oppsto et problem med sletting av gruppen. Vennligst prøv igjen.', + ), + +); diff --git a/resources/lang/nb-NO/admin/groups/table.php b/resources/lang/nb-NO/admin/groups/table.php new file mode 100644 index 0000000000..e8f777138c --- /dev/null +++ b/resources/lang/nb-NO/admin/groups/table.php @@ -0,0 +1,9 @@ + 'Id', + 'name' => 'Navn', + 'users' => 'Antall brukere', + +); diff --git a/resources/lang/nb-NO/admin/groups/titles.php b/resources/lang/nb-NO/admin/groups/titles.php new file mode 100644 index 0000000000..bce3673e6f --- /dev/null +++ b/resources/lang/nb-NO/admin/groups/titles.php @@ -0,0 +1,16 @@ + 'Om grupper', + 'about_groups' => 'Grupper brukes til å generalisere brukertillatelser.', + 'group_management' => 'Gruppeadministrasjon', + 'create' => 'Opprett ny gruppe', + 'update' => 'Rediger gruppe', + 'group_name' => 'Gruppenavn', + 'group_admin' => 'Gruppeadministrator', + 'allow' => 'Tillat', + 'deny' => 'Avslå', + 'permission' => 'Rettigheter', + 'grant' => 'Gi tilgang', + 'no_permissions' => 'Denne gruppen har ingen rettigheter.' +]; diff --git a/resources/lang/nb-NO/admin/hardware/form.php b/resources/lang/nb-NO/admin/hardware/form.php new file mode 100644 index 0000000000..f58d7b8cb9 --- /dev/null +++ b/resources/lang/nb-NO/admin/hardware/form.php @@ -0,0 +1,62 @@ + 'Bekreft sletting av flere enheter', + 'bulk_restore' => 'Bekreft sletting av flere enheter', + 'bulk_delete_help' => 'Se gjennom listen over enheter som er valgt for sletting. Etter sletting er det mulig å gjenopprette enheter, men nåværende koblinger til brukere vil ikke lenger finnes.', + 'bulk_restore_help' => 'Se gjennom ressursene for massegjennoppretning nedenfor. Når de er gjenopprettet vil ikke disse eiendelene være knyttet til brukere de ble gitt til tidligere.', + 'bulk_delete_warn' => 'Du er i ferd med å slette :asset_count enheter.', + 'bulk_restore_warn' => 'Du er i ferd med å gjennopprette :asset_count enheter.', + 'bulk_update' => 'Masseoppdater eiendeler', + 'bulk_update_help' => 'Dette skjemaet lar deg oppdatere flere eiendeler på en gang. Fyll kun ut feltene du ønsker å endre. Tomme felter forblir uendret. ', + 'bulk_update_warn' => 'Du er i ferd med å endre egenskapene til en ressurs. Du er i ferd med å endre egenskapene til :asset_count enheter.', + 'bulk_update_with_custom_field' => 'Merk at ressursene er av :asset_model_count ulike modeller.', + 'bulk_update_model_prefix' => 'På modeller', + 'bulk_update_custom_field_unique' => 'Dette er et unikt felt og kan ikke masseredigeres.', + 'checkedout_to' => 'Utsjekket til', + 'checkout_date' => 'Utsjekkdato', + 'checkin_date' => 'Innsjekkdato', + 'checkout_to' => 'Sjekk ut til', + 'cost' => 'Innkjøpskostnad', + 'create' => 'Opprett eiendel', + 'date' => 'Innkjøpsdato', + 'depreciation' => 'avskrivninger', + 'depreciates_on' => 'Avskrivningstype', + 'default_location' => 'Standard plassering', + 'default_location_phone' => 'Standard plasseringstelefon', + 'eol_date' => 'EOL dato', + 'eol_rate' => 'EOL-rate', + 'expected_checkin' => 'Forventet dato for innsjekk', + 'expires' => 'Utløper', + 'fully_depreciated' => 'Ferdig nedskrevet', + 'help_checkout' => 'Hvis du ønsker å tildele denne eiendelen umiddelbart, velger du "klar til å distribuere" fra status listen ovenfor. ', + 'mac_address' => 'MAC-adresse', + 'manufacturer' => 'Produsent', + 'model' => 'Modell', + 'months' => 'måneder', + 'name' => 'Navn', + 'notes' => 'Notater', + 'order' => 'Ordrenummer', + 'qr' => 'QR-kode', + 'requestable' => 'Brukere kan be om eiendel', + 'redirect_to_all' => 'Return to all :type', + 'redirect_to_type' => 'Go to :type', + 'redirect_to_checked_out_to' => 'Go to Checked Out to', + 'select_statustype' => 'Velg statustype', + 'serial' => 'Serienummer', + 'status' => 'Status', + 'tag' => 'Eiendelsmerke', + 'update' => 'Oppdater eiendel', + 'warranty' => 'Garanti', + 'warranty_expires' => 'Garantien utløper', + 'years' => 'år', + 'asset_location' => 'Oppdater lokasjon for eiendelen', + 'asset_location_update_default_current' => 'Oppdater standardlokasjon OG faktisk lokasjon', + 'asset_location_update_default' => 'Oppdater bare standardlokasjon', + 'asset_location_update_actual' => 'Oppdater bare faktisk plassering', + 'asset_not_deployable' => 'Den eiendelstatusen gjør at denne eiendelen ikke kan sjekkes ut.', + 'asset_deployable' => 'Den statusen gjør det mulig å sjekke ut denne eiendelen.', + 'processing_spinner' => 'Behandler... (Dette kan ta litt tid for store filer)', + 'optional_infos' => 'Valgfri informasjon', + 'order_details' => 'Ordrerelatert informasjon' +]; diff --git a/resources/lang/nb-NO/admin/hardware/general.php b/resources/lang/nb-NO/admin/hardware/general.php new file mode 100644 index 0000000000..9b19b6b2a0 --- /dev/null +++ b/resources/lang/nb-NO/admin/hardware/general.php @@ -0,0 +1,43 @@ + 'Om assets', + 'about_assets_text' => 'Eiendeler er sporet av serienummer eller assetsmerke. De pleier å være høyere verdi f. eks for å identifisere spesielle ting.', + 'archived' => 'Arkivert', + 'asset' => 'Eiendel', + 'bulk_checkout' => 'Sjekk ut Eiendeler', + 'bulk_checkin' => 'Sjekk inn ressurser', + 'checkin' => 'Sjekk inn eiendel', + 'checkout' => 'Sjekk ut asset', + 'clone' => 'Klon eiendel', + 'deployable' => 'Utleverbar', + 'deleted' => 'Denne eiendelen har blitt slettet.', + 'delete_confirm' => 'Er du sikker på at du vil slette denne ressursen?', + 'edit' => 'Rediger eiendel', + 'model_deleted' => 'Denne eiendelsmodellen er slettet. Du må gjenopprette modellen før du kan gjenopprette eiendelen.', + 'model_invalid' => 'This model for this asset is invalid.', + 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', + 'requestable' => 'Forespørrbar', + 'requested' => 'Forespurt', + 'not_requestable' => 'Ikke mulig å spørre etter', + 'requestable_status_warning' => 'Ikke endre forespørselsstatus', + 'restore' => 'Gjenopprett eiendel', + 'pending' => 'Under arbeid', + 'undeployable' => 'Ikke utleverbar', + 'undeployable_tooltip' => 'Denne ressursen har en statusetikett som ikke er distribuerbar og kan ikke sjekkes ut på dette tidspunktet.', + 'view' => 'Vis eiendel', + 'csv_error' => 'Du har en feil i din CSV-fil:', + 'import_text' => '

Last opp en CSV som inneholder eiendeler. Eiendelene og brukerne MÅ allerede finnes i systemet, ellers vil de bli hoppet over. Samsvarende ressurser for tidligere import skjer mot eiendeler. Vi vil prøve å finne en matchende bruker basert på navnet du oppgiver, og kriteriene du velger nedenfor. Hvis du ikke velger noen av kriteriene nedenfor, det vil bare prøve å matche på brukernavnet formatet du konfigurert i Admin > Generelle innstillinger.

Felter som er inkludert i CSV, må samsvare med overskriftene: Asset Tag, Navn, Kasse Dato, Innsjekkingsdato. Eventuelle ekstra felt vil bli ignorert.

Innsjekkingsdato: tomme eller fremtidige sjekkingsdatoer vil kassere elementer til tilhørende bruker. Ekskluder kolonnen Sjekkinn dato vil opprette en avmerkingsdato med dagens dato.

+ ', + 'csv_import_match_f-l' => 'Prøv å matche brukere av firstname.lastname (jane.smith) format', + 'csv_import_match_initial_last' => 'Prøv å matche brukere med første første etternavn (jsmith) format', + 'csv_import_match_first' => 'Prøv å matche brukere med fornavn (jane) format', + 'csv_import_match_email' => 'Prøv å matche brukere med email som brukernavn', + 'csv_import_match_username' => 'Prøv å matche brukere av brukernavn', + 'error_messages' => 'Feilmeldinger:', + 'success_messages' => 'Suksessmeldinger:', + 'alert_details' => 'Vennligst se nedenfor for detaljer.', + 'custom_export' => 'Egendefinert eksport', + 'mfg_warranty_lookup' => ':manufacturer Garanti statusoppslag', + 'user_department' => 'Bruker avdeling', +]; diff --git a/resources/lang/nb-NO/admin/hardware/message.php b/resources/lang/nb-NO/admin/hardware/message.php new file mode 100644 index 0000000000..90cc926a32 --- /dev/null +++ b/resources/lang/nb-NO/admin/hardware/message.php @@ -0,0 +1,95 @@ + 'Advarsel: Denne eiendelen er merket som ikke utplasserbar. Vennligst endre status for eiendel dette har endret seg.', + 'does_not_exist' => 'Eiendel eksisterer ikke.', + 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', + 'no_tag' => 'No asset tag provided.', + 'does_not_exist_or_not_requestable' => 'Eiendelen eksisterer ikke eller kan ikke forespørres.', + 'assoc_users' => 'Denne eiendelen er merket som utsjekket til en bruker og kan ikke slettes. Vennligst sjekk inn eiendelen først, og forsøk sletting på nytt. ', + 'warning_audit_date_mismatch' => 'This asset\'s next audit date (:next_audit_date) is before the last audit date (:last_audit_date). Please update the next audit date.', + + 'create' => [ + 'error' => 'Eiendelen ble ikke opprettet, prøv igjen :(', + 'success' => 'Eiendelen ble opprettet :)', + 'success_linked' => 'Eiendelen med taggen :tag ble opprettet. Klikk her for å vise.', + ], + + 'update' => [ + 'error' => 'Eiendelen ble ikke oppdatert, prøv igjen', + 'success' => 'Oppdatering av eiendel vellykket.', + 'encrypted_warning' => 'Eiendel er oppdatert, men kryptert tilpassede felter var ikke grunnet tillatelser', + 'nothing_updated' => 'Ingen felter er valgt, så ingenting ble endret.', + 'no_assets_selected' => 'Ingen felter er valgt, så ingenting ble endret.', + 'assets_do_not_exist_or_are_invalid' => 'Valgte eiendeler kan ikke oppdateres.', + ], + + 'restore' => [ + 'error' => 'Eiendel ble ikke gjenopprettet. Prøv igjen', + 'success' => 'Vellykket gjenoppretting av eiendel.', + 'bulk_success' => 'Ressursen ble gjenopprettet.', + 'nothing_updated' => 'Inger ressurser ble valgt, så ingenting ble gjenoprettet.', + ], + + 'audit' => [ + 'error' => 'Asset audit unsuccessful: :error ', + 'success' => 'Asset audit ble logget.', + ], + + + 'deletefile' => [ + 'error' => 'Fil ble ikke slettet. Prøv igjen.', + 'success' => 'Vellykket sletting av fil.', + ], + + 'upload' => [ + 'error' => 'Fil(er) ble ikke lastet opp. Prøv igjen.', + 'success' => 'Vellykket opplasting av fil(er).', + 'nofiles' => 'Ingen fil er valgt til opplasting, eller filen er for stor', + 'invalidfiles' => 'En eller flere av filene dine er for store eller av en ikke tillatt filtype. Tillatte filtyper er png, gif, jpg, doc, docx, pdf og txt.', + ], + + 'import' => [ + 'import_button' => 'Process Import', + 'error' => 'Noen elementer ble ikke importert riktig.', + 'errorDetail' => 'Følgende elementer ble ikke importert på grunn av feil.', + 'success' => 'Filen har blitt importert', + 'file_delete_success' => 'Filen har blitt slettet', + 'file_delete_error' => 'Filen kunne ikke bli slettet', + 'file_missing' => 'Valgt fil mangler (fant ikke filen)', + 'header_row_has_malformed_characters' => 'En eller flere attributter i overskriftsraden inneholder feilformede UTF-8 tegn', + 'content_row_has_malformed_characters' => 'En eller flere attributter i første rad i inneholdet inneholder feilformet UTF-8 tegn', + ], + + + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette eiendelen?', + 'error' => 'Det oppstod et problem under sletting av eiendel. Vennligst prøv igjen.', + 'nothing_updated' => 'Ingen assets ble valgt, så ingenting ble slettet.', + 'success' => 'Vellykket sletting av eiendel.', + ], + + 'checkout' => [ + 'error' => 'Eiendel ble ikke sjekket ut. Prøv igjen', + 'success' => 'Vellykket utsjekk av eiendel.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.', + 'not_available' => 'Den eiendelen er ikke tilgjengelig til å sjekkes ut!', + 'no_assets_selected' => 'Du må velge minst én enhet fra listen', + ], + + 'checkin' => [ + 'error' => 'Eiendel ble ikke sjekket inn. Prøv igjen', + 'success' => 'Vellykket innsjekk av eiendel.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.', + 'already_checked_in' => 'Den eiendelen er allerede sjekket inn.', + + ], + + 'requests' => [ + 'error' => 'Eiendelen ble ikke forespurt, prøv igjen', + 'success' => 'Eiendel ble forespurt.', + 'canceled' => 'Utsjekkingsforespørselen ble kansellert', + ], + +]; diff --git a/resources/lang/nb-NO/admin/hardware/table.php b/resources/lang/nb-NO/admin/hardware/table.php new file mode 100644 index 0000000000..5f39219f8a --- /dev/null +++ b/resources/lang/nb-NO/admin/hardware/table.php @@ -0,0 +1,33 @@ + 'Eiendelsmerke', + 'asset_model' => 'Modell', + 'assigned_to' => 'Tilordnet til', + 'book_value' => 'Gjeldende verdi', + 'change' => 'Inne/ute', + 'checkout_date' => 'Utsjekkdato', + 'checkoutto' => 'Utsjekket', + 'components_cost' => 'Total komponentkostnad', + 'current_value' => 'Gjeldende verdi', + 'diff' => 'Forskjell', + 'dl_csv' => 'Last ned CSV', + 'eol' => 'EOL', + 'id' => 'ID', + 'last_checkin_date' => 'Siste innsjeksdato', + 'location' => 'Plassering', + 'purchase_cost' => 'Kostnad', + 'purchase_date' => 'Kjøpt', + 'serial' => 'Serienummer', + 'status' => 'Status', + 'title' => 'Eiendel ', + 'image' => 'Enhet bilde', + 'days_without_acceptance' => 'Dager uten aksept', + 'monthly_depreciation' => 'Månedlig avskrivning', + 'assigned_to' => 'Tilordnet til', + 'requesting_user' => 'Forespurt av', + 'requested_date' => 'Dato forespurt', + 'changed' => 'Endret', + 'icon' => 'Symbol', +]; diff --git a/resources/lang/nb-NO/admin/kits/general.php b/resources/lang/nb-NO/admin/kits/general.php new file mode 100644 index 0000000000..d877aefa1f --- /dev/null +++ b/resources/lang/nb-NO/admin/kits/general.php @@ -0,0 +1,50 @@ + 'Om forhåndsdefinerte sett', + 'about_kits_text' => 'Forhåndsdefinerte sett lar deg raskt sjekke ut en samling av utstyr (eiendeler, lisenser, etc) til en bruker. Dette kan være nyttig når onboarding-prosessen er konsistent på tvers av mange brukere, slik at alle brukere skal ha det samme utstyret.', + 'checkout' => 'Sjekk ut sett ', + 'create_success' => 'Settet har blitt opprettet.', + 'create' => 'Opprett forhåndsdefinert sett', + 'update' => 'Oppdater forhåndsdefinert sett', + 'delete_success' => 'Settet har blitt slettet.', + 'update_success' => 'Settet har blitt oppdatert.', + 'none_models' => 'Det er ikke nok tilgjengelige ressurser for å sjekke ut :model. Vi trenger :qty stk. ', + 'none_licenses' => 'Det er ikke nok seter for :license til å sjekke ut. Det trengs :qty ekstra. ', + 'none_consumables' => 'Det er ikke nok tilgjengelige :consumable til å sjekke ut. Det trengs :qty. ', + 'none_accessory' => 'Det er ikke nok tilgjengelige :accessory til å sjekke ut. Det trengs :qty. ', + 'append_accessory' => 'Legg til tilbehør', + 'update_appended_accessory' => 'Oppdater tilbehør som er lagt til', + 'append_consumable' => 'Legg til forbruksvare', + 'update_appended_consumable' => 'Oppdater forbruksvare som er lagt til', + 'append_license' => 'Legg til lisens', + 'update_appended_license' => 'Oppdater lisens som er lagt til', + 'append_model' => 'Legg til modell', + 'update_appended_model' => 'Oppdater modell', + 'license_error' => 'Lisensen er allerede i settet', + 'license_added_success' => 'Lisensen ble lagt til', + 'license_updated' => 'Lisensen ble oppdatert', + 'license_none' => 'Lisens eksisterer ikke', + 'license_detached' => 'Lisensen ble koblet fra', + 'consumable_added_success' => 'Forbruksvare lagt til', + 'consumable_updated' => 'Forbruksvaren ble oppdatert', + 'consumable_error' => 'Forbruksvaren er allerede i settet', + 'consumable_deleted' => 'Slettingen var vellykket', + 'consumable_none' => 'Forbruksvaren finnes ikke', + 'consumable_detached' => 'Forbruksvaren ble fjernet', + 'accessory_added_success' => 'Tilbehør lagt til', + 'accessory_updated' => 'Tilbehøret ble oppdatert', + 'accessory_detached' => 'Tilbehør ble koblet fra', + 'accessory_error' => 'Tilbehøret er allerede i settet', + 'accessory_deleted' => 'Slettingen var vellykket', + 'accessory_none' => 'Tilbehøret finnes ikke', + 'checkout_success' => 'Utsjekk vellykket', + 'checkout_error' => 'Feil ved utsjekk', + 'kit_none' => 'Settet eksisterer ikke', + 'kit_created' => 'Settet ble opprettet', + 'kit_updated' => 'Settet har blitt oppdatert', + 'kit_not_found' => 'Settet ble ikke funnet', + 'kit_deleted' => 'Settet har blitt slettet', + 'kit_model_updated' => 'Modellen ble oppdatert', + 'kit_model_detached' => 'Modellen har blitt frakoblet', +]; diff --git a/resources/lang/nb-NO/admin/labels/message.php b/resources/lang/nb-NO/admin/labels/message.php new file mode 100644 index 0000000000..4e32365cfe --- /dev/null +++ b/resources/lang/nb-NO/admin/labels/message.php @@ -0,0 +1,11 @@ + 'Ugyldig antall returnert fra :name. Forventet :expected, fikk :actual.', + 'invalid_return_type' => 'Ugyldig type returnert fra :name. Forventet :expected, fikk :actual.', + 'invalid_return_value' => 'Ugyldig verdi returnert fra :name. Forventet :expected, fikk :actual.', + + 'does_not_exist' => 'Etiketten finnes ikke', + +]; diff --git a/resources/lang/nb-NO/admin/labels/table.php b/resources/lang/nb-NO/admin/labels/table.php new file mode 100644 index 0000000000..5bc5429c6e --- /dev/null +++ b/resources/lang/nb-NO/admin/labels/table.php @@ -0,0 +1,19 @@ + 'Test bedrift begrenset', + 'example_defaultloc' => 'Bygning 1', + 'example_category' => 'Test kategori', + 'example_location' => 'Bygning 2', + 'example_manufacturer' => 'Test Manufacturing Inc.', + 'example_model' => 'Test modell', + 'example_supplier' => 'Test bedrift begrenset', + 'labels_per_page' => 'Etiketter', + 'support_fields' => 'Felt', + 'support_asset_tag' => 'Etikett', + 'support_1d_barcode' => '1D', + 'support_2d_barcode' => '2D', + 'support_logo' => 'Logo', + 'support_title' => 'Tittel', + +]; \ No newline at end of file diff --git a/resources/lang/nb-NO/admin/licenses/form.php b/resources/lang/nb-NO/admin/licenses/form.php new file mode 100644 index 0000000000..47a1ffcc07 --- /dev/null +++ b/resources/lang/nb-NO/admin/licenses/form.php @@ -0,0 +1,22 @@ + 'Eiendel', + 'checkin' => 'Sjekk inn', + 'create' => 'Opprett lisens', + 'expiration' => 'Utløpsdato', + 'license_key' => 'Produktnøkkel', + 'maintained' => 'Vedlikeholdt', + 'name' => 'Navn programvare', + 'no_depreciation' => 'Ingen avskrivning', + 'purchase_order' => 'Innkjøpsordrenummer', + 'reassignable' => 'Kan tildeles på ny', + 'remaining_seats' => 'Gjenværende setelisenser', + 'seats' => 'Setelisenser', + 'termination_date' => 'Sluttdato', + 'to_email' => 'Lisensiert til e-post', + 'to_name' => 'Lisensiert til navn', + 'update' => 'Oppdater lisens', + 'checkout_help' => 'Du må sjekke ut en lisens til en maskinvare- eller person-eiendel. Du kan velge begge, men eier av eiendel må være lik den du sjekker eiendel ut til.' +); diff --git a/resources/lang/nb-NO/admin/licenses/general.php b/resources/lang/nb-NO/admin/licenses/general.php new file mode 100644 index 0000000000..21df57a62a --- /dev/null +++ b/resources/lang/nb-NO/admin/licenses/general.php @@ -0,0 +1,52 @@ + 'Om lisenser', + 'about_licenses' => 'Lisenser er brukt til å spore bruk av programvare. De har et angitt antall seter som kan sjekkes ut til enkeltpersoner', + 'checkin' => 'Sjekk inn setelisens', + 'checkout_history' => 'Utsjekkhistorikk', + 'checkout' => 'Sjekk ut setelisens', + 'edit' => 'Rediger lisens', + 'filetype_info' => 'Gyldige filtyper er png, gif, jpg, jpeg, doc docx, pdf, txt, zip og rar.', + 'clone' => 'Klon lisens', + 'history_for' => 'Historikk for ', + 'in_out' => 'Inne/ute', + 'info' => 'Lisensinformasjon', + 'license_seats' => 'Setelisenser', + 'seat' => 'Setelisens', + 'seat_count' => 'Seat :count', + 'seats' => 'Setelisenser', + 'software_licenses' => 'Programvarelisenser', + 'user' => 'Bruker', + 'view' => 'Vis lisens', + 'delete_disabled' => 'Denne lisensen kan ikke slettes ennå fordi det fremdeles er noen seter i den som er sjekket ut.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Sjekk inn alle seter', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Sjekk inn ALLE seter for denne lisensen fra både brukere og ressurser', + 'disabled_tooltip' => 'Dette er deaktivert fordi det ikke er seter som er sjekket ut', + 'disabled_tooltip_reassignable' => 'Dette er deaktivert fordi lisensen ikke kan refordeles', + 'success' => 'Lisensen ble sjekket inn! | Alle lisensene ble vellykket sjekket inn!', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Sjekk ut alle seter', + 'modal' => 'Denne handlingen vil utsjekke ett sete til den første tilgjengelige brukeren. | Denne handlingen vil kassere alle :available_seats_count seter til de første tilgjengelige brukerne. En bruker anses som tilgjengelig for dette setet hvis de ikke allerede har sjekket ut denne lisensen til dem, og Auto-Assign License egenskapen er aktivert på deres brukerkonto.', + 'enabled_tooltip' => 'Sjekk ut ALLE seter (eller så mange som er tilgjengelige) til ALLE brukere', + 'disabled_tooltip' => 'Dette er deaktivert fordi det ikke er tilgjengelige seter for øyeblikket', + 'success' => 'Lisensen ble sjekket ut! | :count lisenser ble vellykket sjekket ut!', + 'error_no_seats' => 'Det er ingen gjenværende seter igjen for denne lisensen.', + 'warn_not_enough_seats' => ':count brukere ble tildelt denne lisensen, men vi gikk tom for tilgjengelige lisensseter.', + 'warn_no_avail_users' => 'Ingenting å gjøre. Det er ingen brukere som ikke allerede har denne lisensen tildelt dem.', + 'log_msg' => 'Sjekket ut via masselisensutsjekking i lisens GUI', + + + ], + ], + + 'below_threshold' => 'Det er bare :remaining_count seter igjen for denne lisensen med et minimum av :min_amt. Du kan vurdere å kjøpe flere seter.', + 'below_threshold_short' => 'Denne varen er under det minstekravene kreves.', +); diff --git a/resources/lang/nb-NO/admin/licenses/message.php b/resources/lang/nb-NO/admin/licenses/message.php new file mode 100644 index 0000000000..eeecd25d1f --- /dev/null +++ b/resources/lang/nb-NO/admin/licenses/message.php @@ -0,0 +1,56 @@ + 'Lisensen finnes ikke, eller du har ikke tillatelse til å se den.', + 'user_does_not_exist' => 'Brukeren finnes ikke, eller du har ikke tillatelse til å se dem.', + 'asset_does_not_exist' => 'Eiendelen du prøver å koble til denne lisensen eksisterer ikke.', + 'owner_doesnt_match_asset' => 'Eiendelen du prøver å koble til denne lisensen er eid av noen andre enn personen du har valgt i tildelt til-nedtrekkslista.', + 'assoc_users' => 'Denne lisensen er sjekket ut til en bruker og kan ikke slettes. Vennligst sjekk inn lisensen først, og forsøk sletting på nytt. ', + 'select_asset_or_person' => 'Du må velge en ressurs eller en bruker, men ikke begge.', + 'not_found' => 'Lisens ikke funnet', + 'seats_available' => ':seat_count seter tilgjengelige', + + + 'create' => array( + 'error' => 'Lisens ble ikke opprettet, prøv igjen.', + 'success' => 'Vellykket opprettelse av lisens.' + ), + + 'deletefile' => array( + 'error' => 'Fil ble ikke slettet. Prøv igjen.', + 'success' => 'Fil ble slettet.', + ), + + 'upload' => array( + 'error' => 'Fil(er) ble ikke lastet opp. Prøv igjen.', + 'success' => 'Fil(er) ble slettet.', + 'nofiles' => 'Ingen fil er valgt til opplasting, eller filen er for stor', + 'invalidfiles' => 'En eller flere av filene er for stor, eller er en filtype som ikke er tillatt. Tillatte filtyper er png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, rar, rtf, xml, og lic.', + ), + + 'update' => array( + 'error' => 'Lisens ble ikke oppdatert, prøv igjen', + 'success' => 'Vellykket oppdatering av lisens.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne lisensen?', + 'error' => 'Det oppstod et problem under sletting av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket sletting av lisens.' + ), + + 'checkout' => array( + 'error' => 'Det oppstod et problem under utsjekk av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket utsjekk av lisens', + 'not_enough_seats' => 'Ikke nok lisensseter tilgjengelige for utsjekking', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', + ), + + 'checkin' => array( + 'error' => 'Det oppstod et problem under innsjekk av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket innsjekk av lisens' + ), + +); diff --git a/resources/lang/nb-NO/admin/licenses/table.php b/resources/lang/nb-NO/admin/licenses/table.php new file mode 100644 index 0000000000..dc6b160311 --- /dev/null +++ b/resources/lang/nb-NO/admin/licenses/table.php @@ -0,0 +1,18 @@ + 'Tildelt til', + 'checkout' => 'Inne/ute', + 'deleted_at' => 'Slettet ved', + 'id' => 'ID', + 'license_email' => 'Lisens e-post', + 'license_name' => 'Lisensiert til', + 'purchase_date' => 'Kjøpedato', + 'purchased' => 'Kjøpt', + 'seats' => 'Setelisenser', + 'hardware' => 'Maskinvare', + 'serial' => 'Serienummer', + 'title' => 'Lisens', + +); diff --git a/resources/lang/nb-NO/admin/locations/message.php b/resources/lang/nb-NO/admin/locations/message.php new file mode 100644 index 0000000000..1f5840ba43 --- /dev/null +++ b/resources/lang/nb-NO/admin/locations/message.php @@ -0,0 +1,29 @@ + 'Lokasjon eksisterer ikke.', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_assets' => 'Lokasjonen er tilknyttet minst en eiendel og kan ikke slettes. Oppdater dine eiendeler slik at de ikke refererer til denne lokasjonen, og prøv igjen. ', + 'assoc_child_loc' => 'Lokasjonen er overordnet til minst en underlokasjon og kan ikke slettes. Oppdater din lokasjoner til å ikke referere til denne lokasjonen, og prøv igjen. ', + 'assigned_assets' => 'Tildelte ressurser', + 'current_location' => 'Gjeldende plassering', + + + 'create' => array( + 'error' => 'Lokasjon ble ikke opprettet, prøv igjen.', + 'success' => 'Vellykket opprettelse av lokasjon.' + ), + + 'update' => array( + 'error' => 'Lokasjon ble ikke oppdatert, prøv igjen', + 'success' => 'Vellykket oppdatering av plassering.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne plasseringen?', + 'error' => 'Det oppstod et problem under sletting av plassering. Vennligst prøv igjen.', + 'success' => 'Vellykket sletting av plassering.' + ) + +); diff --git a/resources/lang/nb-NO/admin/locations/table.php b/resources/lang/nb-NO/admin/locations/table.php new file mode 100644 index 0000000000..e27419c4b4 --- /dev/null +++ b/resources/lang/nb-NO/admin/locations/table.php @@ -0,0 +1,42 @@ + 'Om Lokasjoner', + 'about_locations' => 'Plassering brukes til å spore stedsinformasjon for brukere, eiendeler og andre elementer', + 'assets_rtd' => 'Eiendeler', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. + 'assets_checkedout' => 'Eiendeler tildelt', + 'id' => 'ID', + 'city' => 'By', + 'state' => 'Stat', + 'country' => 'Land', + 'create' => 'Opprett plassering', + 'update' => 'Oppdater plassering', + 'print_assigned' => 'Skriv ut tilordnede', + 'print_all_assigned' => 'Skriv ut alle tilordnede', + 'name' => 'Plasseringsnavn', + 'address' => 'Adresse', + 'address2' => 'Adresselinje 2', + 'zip' => 'Postnummer', + 'locations' => 'Plasseringer', + 'parent' => 'Overordnet', + 'currency' => 'Valuta i lokasjon', + 'ldap_ou' => 'LDAP-søk OU', + 'user_name' => 'Brukernavn', + 'department' => 'Avdeling', + 'location' => 'Lokasjon', + 'asset_tag' => 'Eiendelsmerke', + 'asset_name' => 'Navn', + 'asset_category' => 'Kategori', + 'asset_manufacturer' => 'Produsent', + 'asset_model' => 'Modell', + 'asset_serial' => 'Serienummer', + 'asset_location' => 'Lokasjon', + 'asset_checked_out' => 'Utsjekket', + 'asset_expected_checkin' => 'Forventet innsjekk', + 'date' => 'Dato:', + 'phone' => 'Sted telefon', + 'signed_by_asset_auditor' => 'Signert av (Eiendelskontrollør):', + 'signed_by_finance_auditor' => 'Undertegnet av (finansrevisor):', + 'signed_by_location_manager' => 'Signert av (Stedsansvarlig):', + 'signed_by' => 'Signert av:', +]; diff --git a/resources/lang/nb-NO/admin/manufacturers/message.php b/resources/lang/nb-NO/admin/manufacturers/message.php new file mode 100644 index 0000000000..83aab0c4f3 --- /dev/null +++ b/resources/lang/nb-NO/admin/manufacturers/message.php @@ -0,0 +1,30 @@ + 'Variabler {LOCALE}, {SERIAL}, {MODEL_NUMBER}og {MODEL_NAME} kan brukes i din URL for å få disse verdiene auto-populere når du ser ressurser - for eksempel https://checkcoverage.apple.com/{LOCALE}/{SERIAL}.', + 'does_not_exist' => 'Produsent eksisterer ikke.', + 'assoc_users' => 'Denne produsenten er tilknyttet minst en modell og kan ikke slettes. Oppdatèr modellen(e) til ikke å bruke denne produsenten, og prøv igjen. ', + + 'create' => array( + 'error' => 'Produsent ble ikke opprettet. Prøv igjen.', + 'success' => 'Opprettelse av produsent vellykket.' + ), + + 'update' => array( + 'error' => 'Produsent ble ikke oppdatert. Prøv igjen', + 'success' => 'Oppdatering av produsent vellykket.' + ), + + 'restore' => array( + 'error' => 'Produsent ble ikke gjenopprettet. Prøv igjen', + 'success' => 'Gjenopprettelse av produsent vellykket.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne produsenten?', + 'error' => 'Det oppstod et problem under sletting av produsenten. Prøv igjen.', + 'success' => 'Sletting av produsenten var vellykket.' + ) + +); diff --git a/resources/lang/nb-NO/admin/manufacturers/table.php b/resources/lang/nb-NO/admin/manufacturers/table.php new file mode 100644 index 0000000000..084bb0392d --- /dev/null +++ b/resources/lang/nb-NO/admin/manufacturers/table.php @@ -0,0 +1,16 @@ + 'Om produsenter', + 'about_manufacturers_text' => 'Produsenter er firmaer som lager dine eiendeler. Du kan lagre viktig kundestøtte kontaktinformasjon om dem her, som vises på sidene om asset-detaljer.', + 'asset_manufacturers' => 'Eiendelsprodusenter', + 'create' => 'Opprett produsent', + 'id' => 'ID', + 'name' => 'Navn', + 'support_email' => 'Støtte epost', + 'support_phone' => 'Støttetelefon', + 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Garanti oppslag URL', + 'update' => 'Endre produsent', + +); diff --git a/resources/lang/nb-NO/admin/models/general.php b/resources/lang/nb-NO/admin/models/general.php new file mode 100644 index 0000000000..2b10c316da --- /dev/null +++ b/resources/lang/nb-NO/admin/models/general.php @@ -0,0 +1,18 @@ + 'Om asset modeller', + 'about_models_text' => 'Asset modeller er en måte å gruppere identiske eiendeler. "MBP 2013", "IPhone 6s", etc.', + 'deleted' => 'Denne modellen har blitt slettet.', + 'bulk_delete' => 'Bulk slett modeller', + 'bulk_delete_help' => 'Bruk merkeboksene nedenfor til å bekrefte sletting av de merkede modellene. Modeller som har eiendeler tilknyttet kan ikke slettes før eiendelene har blitt tilknyttet en annen modell.', + 'bulk_delete_warn' => 'Du er i ferd med å slette en ressursmodell. | Du er i ferd med å slette :model_count modeller.', + 'restore' => 'Gjenopprett modell', + 'requestable' => 'Brukere kan be om denne modellen', + 'show_mac_address' => 'Vis felt for MAC-adresse for denne modellen', + 'view_deleted' => 'Vis slettede', + 'view_models' => 'Vis modeller', + 'fieldset' => 'Felt', + 'no_custom_field' => 'Ingen egendefinerte felt', + 'add_default_values' => 'Legg til standardverdier', +); diff --git a/resources/lang/nb-NO/admin/models/message.php b/resources/lang/nb-NO/admin/models/message.php new file mode 100644 index 0000000000..642bc1050e --- /dev/null +++ b/resources/lang/nb-NO/admin/models/message.php @@ -0,0 +1,47 @@ + 'Slettet ressursmodell', + 'does_not_exist' => 'Modell eksisterer ikke.', + 'no_association' => 'ADVARSEL! Ressursmodellen for dette elementet er ugyldig eller mangler!', + 'no_association_fix' => 'Dette vil ødelegge ting på merkelige og forferdelige måte. Rediger denne ressursen nå for å tildele den en modell.', + 'assoc_users' => 'Denne modellen er tilknyttet en eller flere eiendeler og kan ikke slettes. Slett eiendelene, og prøv å slette modellen igjen. ', + 'invalid_category_type' => 'The category must be an asset category.', + + 'create' => array( + 'error' => 'Modellen ble ikke opprettet. Prøv igjen.', + 'success' => 'Opprettelse av modell var vellykket.', + 'duplicate_set' => 'En eiendel med dette navnet, produsenten og modelnummeret eksisterer allerede.', + ), + + 'update' => array( + 'error' => 'Modell ble ikke oppdatert. Prøv igjen', + 'success' => 'Oppdatering av modell vellykket.', + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne modellen?', + 'error' => 'Det oppstod et problem under sletting av modellen. Prøv igjen.', + 'success' => 'Sletting av modell vellykket.' + ), + + 'restore' => array( + 'error' => 'Modell ble ikke gjenopprettet. Prøv igjen', + 'success' => 'Vellykket gjenoppretting av modell.' + ), + + 'bulkedit' => array( + 'error' => 'Ingen felt ble endret, så ingenting ble oppdatert.', + 'success' => 'Modelloppdatering vellyket.| :model_count modeller oppdatert.', + 'warn' => 'Du er i ferd med å oppdatere egenskapene til følgende modell: Du er i ferd med å redigere egenskapene for følgende modeller: model_count modeller:', + + ), + + 'bulkdelete' => array( + 'error' => 'Ingen modeller ble valgt, så ingenting ble slettet.', + 'success' => 'Modellen ble slettet!g_:success_count modeller slettet!', + 'success_partial' => ':Success_count-modell(ene) ble slettet, men fail_count kunne ikke slettes fordi de fortsatt har eiendeler knyttet til dem.' + ), + +); diff --git a/resources/lang/nb-NO/admin/models/table.php b/resources/lang/nb-NO/admin/models/table.php new file mode 100644 index 0000000000..b8c7daa389 --- /dev/null +++ b/resources/lang/nb-NO/admin/models/table.php @@ -0,0 +1,17 @@ + 'Opprett modell', + 'created_at' => 'Opprettet', + 'eol' => 'Levetid', + 'modelnumber' => 'Modellnummer', + 'name' => 'Modellnavn', + 'numassets' => 'Eiendeler', + 'title' => 'Modeller', + 'update' => 'Endre modell', + 'view' => 'Vis modell', + 'update' => 'Endre modell', + 'clone' => 'Klon modell', + 'edit' => 'Endre modell', +); diff --git a/resources/lang/nb-NO/admin/reports/general.php b/resources/lang/nb-NO/admin/reports/general.php new file mode 100644 index 0000000000..74ab74aacb --- /dev/null +++ b/resources/lang/nb-NO/admin/reports/general.php @@ -0,0 +1,17 @@ + 'Velg de alternativene du ønsker skal inngå i rapporten.', + 'deleted_user' => 'Slettet bruker', + 'send_reminder' => 'Send påminnelse', + 'reminder_sent' => 'Påminnelse sendt', + 'acceptance_deleted' => 'Aksepteringsforespørsel slettet', + 'acceptance_request' => 'Akseptanseforespørsel', + 'custom_export' => [ + 'user_address' => 'Brukerens adresse', + 'user_city' => 'Bruker by', + 'user_state' => 'Bruker tilstand', + 'user_country' => 'Bruker Land', + 'user_zip' => 'Brukers postnummer' + ] +]; \ No newline at end of file diff --git a/resources/lang/nb-NO/admin/reports/message.php b/resources/lang/nb-NO/admin/reports/message.php new file mode 100644 index 0000000000..be9181f1ef --- /dev/null +++ b/resources/lang/nb-NO/admin/reports/message.php @@ -0,0 +1,5 @@ + 'Du må velge minst ETT alternativ.' +); diff --git a/resources/lang/nb-NO/admin/settings/general.php b/resources/lang/nb-NO/admin/settings/general.php new file mode 100644 index 0000000000..d635f260fb --- /dev/null +++ b/resources/lang/nb-NO/admin/settings/general.php @@ -0,0 +1,384 @@ + 'Active Directory', + 'ad_domain' => 'Active Directory domene', + 'ad_domain_help' => 'Dette er noen ganger det samme som e-post domene, men ikke alltid.', + 'ad_append_domain_label' => 'Legg til domenenavn', + 'ad_append_domain' => 'Legg til domenenavn i feltet for brukernavn', + 'ad_append_domain_help' => 'Bruker kreves ikke å skrive "brukernavn@domene.local", de kan bare skrive "brukernavn".', + 'admin_cc_email' => 'CC e-post', + 'admin_cc_email_help' => 'Hvis du vil sende en kopi av innsjekk-/utsjekkeposter som sendes til brukere til en ekstra epostadresse, skriv den inn her. La ellers feltet stå tomt.', + 'admin_settings' => 'Admin innstillinger', + 'is_ad' => 'Dette er en Active Directory server', + 'alerts' => 'Varsler', + 'alert_title' => 'Oppdater varslingsinnstillinger', + 'alert_email' => 'Send varslinger til', + 'alert_email_help' => 'E-postadresser eller distribusjonslister som du ønsker varsler skal sendes til, kommaseparert', + 'alerts_enabled' => 'Varslinger aktivert', + 'alert_interval' => 'Terskel for utløpende varslinger (dager)', + 'alert_inv_threshold' => 'Terskel for eiendelsvarslinger', + 'allow_user_skin' => 'Tillat tilpasset utseende for bruker', + 'allow_user_skin_help_text' => 'Kryss av denne boksen for å la brukere overstyre standardutseendet med et annet.', + 'asset_ids' => 'Eiendels-IDer', + 'audit_interval' => 'Audit intervall', + 'audit_interval_help' => 'Hvis du er påkrevd å regelmessig sjekke ressursene dine, angi intervallet i måneder som du bruker. Hvis du oppdaterer denne verdien, vil hele "neste revisjonsdatoer" for ressurser med en kommende revisjonsdato bli oppdatert.', + 'audit_warning_days' => 'Audit terskelverdi for advarsel', + 'audit_warning_days_help' => 'Hvor mange dager i forveien bør vi advare deg når eiendeler forfaller for overvåking?', + 'auto_increment_assets' => 'Generer automatisk økende eiendelsmerker', + 'auto_increment_prefix' => 'Prefiks (valgfritt)', + 'auto_incrementing_help' => 'Slå på automatisk økende eiendelsmerker for å velge dette', + 'backups' => 'Sikkerhetskopier', + 'backups_help' => 'Opprette, laste ned og gjenopprette sikkerhetskopier ', + 'backups_restoring' => 'Gjenoppretting fra sikkerhetskopi', + 'backups_upload' => 'Last opp sikkerhetskopi', + 'backups_path' => 'Sikkerhetskopier på tjeneren lagres i :path', + 'backups_restore_warning' => 'Bruk gjenopprettingsknappen for å gjenopprette fra en tidligere sikkerhetskopi. (Dette fungerer ikke med S3-fillagring eller Docker.)

Din hele :app_name databasen og eventuelle opplastede filer vil bli fullstendig erstattet av det som er i sikkerhetskopifilen. ', + 'backups_logged_out' => 'Alle eksisterende brukere, inkludert deg, vil bli logget ut når din gjenoppretting er fullført.', + 'backups_large' => 'Veldig store sikkerhetskopier kan få tidsavbrudd under gjenopprettingsforsøket og må fortsatt kjøres via kommandolinjen. ', + 'barcode_settings' => 'Strekkodeinnstillinger', + 'confirm_purge' => 'Bekreft rensking', + 'confirm_purge_help' => 'Skriv "DELETE" i boksen under for å fjerne dine slettende data. Denne handlingen kan ikke angres og vil PERMANENT slette alle slettede elementer og brukere. (Du bør først gjøre en sikkerhetskopi, bare for å være trygg.)', + 'custom_css' => 'Egendefinert CSS', + 'custom_css_help' => 'Legg til egendefinert CSS. Ikke ta med taggene <style></style>.', + 'custom_forgot_pass_url' => 'Egendefinert passord tilbakestillings-URL', + 'custom_forgot_pass_url_help' => 'Erstatter den innebygde glemt passord-URLen i innloggingsbildet. Nyttig for å sende brukere til intern eller leid LDAP passordgjenopprettingsfunksjonalitet. Vil deaktivere den lokale glemt passord-funksjonaliteten.', + 'dashboard_message' => 'Dashboardmelding', + 'dashboard_message_help' => 'Denne teksten vises på dashbordet for alle som har tillatelse til å vise oversikten.', + 'default_currency' => 'Standardvaluta', + 'default_eula_text' => 'Standard EULA', + 'default_language' => 'Standardspråk', + 'default_eula_help_text' => 'Du kan også knytte tilpassede EULAer til bestemte eiendelskategorier.', + 'acceptance_note' => 'Add a note for your decision (Optional)', + 'display_asset_name' => 'Vis eiendelsnavn', + 'display_checkout_date' => 'Vis utsjekksdato', + 'display_eol' => 'Vis levetid i tabellvisning', + 'display_qr' => 'Vis Qr-kode', + 'display_alt_barcode' => 'Vis 1D strekkode', + 'email_logo' => 'E-postlogo', + 'barcode_type' => '2D strekkodetype', + 'alt_barcode_type' => '1D strekkodetype', + 'email_logo_size' => 'Kvadratiske logoer ser best ut i e-post. ', + 'enabled' => 'Slått på', + 'eula_settings' => 'EULA-innstillinger', + 'eula_markdown' => 'Denne EULAen tillater Github Flavored markdown.', + 'favicon' => 'Favicon', + 'favicon_format' => 'Aksepterte filtyper er ico, png og gif. Andre bildeformater vil muligens ikke fungere i alle nettlesere.', + 'favicon_size' => 'Favoritt-symboler bør være kvadratiske, 16x16 punkter.', + 'footer_text' => 'Ekstra bunnteksttekst ', + 'footer_text_help' => 'Denne teksten vil fremstå i høyre del av bunnteksten. Lenker er tillatt ved å bruke Github flavored markdown. +Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', + 'general_settings' => 'Generelle innstillinger', + 'general_settings_keywords' => 'bedriftens støtte, signatur, e-postformat, brukerformat, bilder, per side, miniatyrbilde, eula, graviter, forelder, dashbord, personvern', + 'general_settings_help' => 'Standard EULA og mer', + 'generate_backup' => 'Generer Sikkerhetskopi', + 'google_workspaces' => 'Google arbeidsområder', + 'header_color' => 'Overskriftsfarge', + 'info' => 'Disse innstillingene lar deg tilpasse enkelte aspekter av installasjonen din.', + 'label_logo' => 'Etikett-logo', + 'label_logo_size' => 'Kvadratisk logo vil se best ut. Den vil vises øverst til høyre på hver merkelapp. ', + 'laravel' => 'Laravel-versjon', + 'ldap' => 'LDAP', + 'ldap_default_group' => 'Standard tillatelsesgruppe', + 'ldap_default_group_info' => 'Velg en gruppe for nylig synkroniserte brukere. Husk at brukeren får rettigheter til gruppen den tildeles.', + 'no_default_group' => 'Ingen standard gruppe', + 'ldap_help' => 'LDAP/Active Directory', + 'ldap_client_tls_key' => 'LDAP-klient TLS-nøkkel', + 'ldap_client_tls_cert' => 'LDAP TLS klient-sertifikat', + 'ldap_enabled' => 'LDAP aktivert', + 'ldap_integration' => 'LDAP Integrering', + 'ldap_settings' => 'LDAP Instillinger', + 'ldap_client_tls_cert_help' => 'Klientside TLS-sertifikat og nøkkel for LDAP tilkoblinger er vanligvis bare nyttig i Google Workspace-konfigurasjoner med "Secure LDAP." Begge er påkrevd.', + 'ldap_location' => 'LDAP-plassering', +'ldap_location_help' => 'LDAP plasserings feltet burde brukes hvis en OU ikke blir brukt i "Base Bind DN"- La denne stå tom hvis et OU søk brukes.', + 'ldap_login_test_help' => 'Skriv inn et gyldig LDAP brukernavn og passord fra samme base DN som du anga ovenfor for å teste at LDAP-innlogging er riktig konfigurert. DU MÅ LAGRE DINE OPPDATERTE LDAP-INNSTILLINGER FØRST.', + 'ldap_login_sync_help' => 'Tester at LDAP kan synkronisere. Feil i LDAP autentiseringsspørringen din kan før til at brukere ikke kan logge inn. DU MÅ LAGRE DINE OPPDATERTE LDAP-INNSTILLINGER FØRST.', + 'ldap_manager' => 'LDAP Administrator', + 'ldap_server' => 'LDAP Server', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', + 'ldap_server_cert' => 'Validering av LDAP SSL sertifikat', + 'ldap_server_cert_ignore' => 'Godta ugyldig SSL sertifikat', + 'ldap_server_cert_help' => 'Kryss av denne boksen hvis du bruker et selv-signert SSL sertifikat og vil akkseptere et ugyldig sertifikat.', + 'ldap_tls' => 'Bruk TLS', + 'ldap_tls_help' => 'Kryss av denne hvis du kjører STARTTLS på LDAP-serveren. ', + 'ldap_uname' => 'LDAP Bundet brukernavn', + 'ldap_dept' => 'LDAP avdeling', + 'ldap_phone' => 'LDAP telefonnummer', + 'ldap_jobtitle' => 'LDAP Jobbtittel', + 'ldap_country' => 'LDAP Land', + 'ldap_pword' => 'LDAP Bind passord', + 'ldap_basedn' => 'Base Bind DN', + 'ldap_filter' => 'LDAP Filter', + 'ldap_pw_sync' => 'LDAP-passord Sync', + 'ldap_pw_sync_help' => 'Ta bort kryss på denne boksen hvis du ikke vil at LDAP passord skal holdes synkronisert med lokale passord. Ved å skru av dette er det mulig at brukerne ikke vil klare å logge på om de ikke får tak i LDAP serveren.', + 'ldap_username_field' => 'Brukernavn Felt', + 'ldap_lname_field' => 'Etternavn', + 'ldap_fname_field' => 'LDAP Fornavn', + 'ldap_auth_filter_query' => 'LDAP autentisering spørring', + 'ldap_version' => 'LDAP Versjon', + 'ldap_active_flag' => 'LDAP aktive flag', + 'ldap_activated_flag_help' => 'Denne verdien brukes til å bestemme om en synkronisert bruker kan logge inn på Snipe-IT. Det påvirker ikke muligheten til å sjekke elementer inn eller ut til dem, og bør være egenskapsnavn i din AD/LDAP, ikke verdien.

Hvis dette feltet er satt til et feltnavn som ikke eksisterer i AD/LDAP, eller verdien i AD/LDAP feltet er satt til 0 eller usann, vil bruker pålogging bli deaktivert. Hvis verdien i AD/LDAP feltet er satt til 1 eller sann eller annen tekst betyr at brukeren kan logge inn. Når feltet er tomt i din AD, respekterer vi -brukerAccountControl attributt, som vanligvis tillater ikke-suspenderte brukere å logge inn.', + 'ldap_emp_num' => 'LDAP ansattnummer', + 'ldap_email' => 'LDAP E-post', + 'ldap_test' => 'Test LDAP', + 'ldap_test_sync' => 'Test LDAP-synkronisering', + 'license' => 'Programvarelisens', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', + 'login' => 'Innloggingsforsøk', + 'login_attempt' => 'Innloggingsforsøk', + 'login_ip' => 'IP-addresse', + 'login_success' => 'Suksess?', + 'login_user_agent' => 'Brukeragent', + 'login_help' => 'Liste over forsøkte pålogginger', + 'login_note' => 'Logg inn melding', + 'login_note_help' => 'Eventuelt inkludere et par setninger på logg inn skjermen, for eksempel for å hjelpe mennesker som har funnet en mistet eller stjålet enhet. Dette feltet godtar Github flavored markdown', + 'login_remote_user_text' => 'Fjernbruker pålogging valg', + 'login_remote_user_enabled_text' => 'Aktiver innlogging med Remote User Header', + 'login_remote_user_enabled_help' => 'Aktiverer autentisering via REMOTE_USER headeren som beskrevet i "Common Gateway Interface (rfc3875)"', + 'login_common_disabled_text' => 'Deaktiver andre godkjenningsmekanismer', + 'login_common_disabled_help' => 'Deaktiverer andre autentiseringsmekanismer. Aktiver dette valget kun hvis du er sikker på at din REMOTE_USER innlogging allerede fungerer', + 'login_remote_user_custom_logout_url_text' => 'Tilpasset utloggingsadresse', + 'login_remote_user_custom_logout_url_help' => 'Hvis en URL angis her blir brukerne videresendt til denne URLen etter utlogging fra Snipe-IT. Dette er nyttig for korrekt lukking av autentiseringssesjoner hos din autentiseringsleverandør.', + 'login_remote_user_header_name_text' => 'Egendefinert brukernavn-header', + 'login_remote_user_header_name_help' => 'Bruk angitt header-felt i stedet for REMOTE_USER', + 'logo' => 'Logo', + 'logo_print_assets' => 'Bruk i Print', + 'logo_print_assets_help' => 'Bruk branding på utskrivbare eiendelslister ', + 'full_multiple_companies_support_help_text' => 'Vis kun eiendeler til bedriften brukere (inkl administratorer) er knyttet til.', + 'full_multiple_companies_support_text' => 'Full støtte for flere bedrifter', + 'show_in_model_list' => 'Vis i Model nedtrekksmeny', + 'optional' => 'valgfri', + 'per_page' => 'Resultater pr side', + 'php' => 'PHP-versjon', + 'php_info' => 'PHP info', + 'php_overview' => 'PHP', + 'php_overview_keywords' => 'phpinfo, system, info', + 'php_overview_help' => 'PHP systeminfo', + 'php_gd_info' => 'Du må installere php-gd for å vise QR-koder. Se installasjonsinstruksjoner.', + 'php_gd_warning' => 'PHP bildebehandling og GD-plugin er IKKE installert.', + 'pwd_secure_complexity' => 'Passordkompleksitet', + 'pwd_secure_complexity_help' => 'Velg hvilken passord kompleksitet du ønsker å håndheve.', + 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Passord kan ikke være det samme som fornavn, etternavn, e-post eller brukernavn', + 'pwd_secure_complexity_letters' => 'Krev minst én bokstav', + 'pwd_secure_complexity_numbers' => 'Krev minst ett tall', + 'pwd_secure_complexity_symbols' => 'Krev minst ett symbol', + 'pwd_secure_complexity_case_diff' => 'Krev minst én stor bokstav og én liten bokstav', + 'pwd_secure_min' => 'Passord minimum antall tegn', + 'pwd_secure_min_help' => 'Minimum tillatt verdi er 8', + 'pwd_secure_uncommon' => 'Forhindre vanlige passord', + 'pwd_secure_uncommon_help' => 'Dette vil forhindre brukere fra å bruke vanlige passord fra de vanligste 10 000 passord som er rapportert.', + 'qr_help' => 'Aktiver QR-koder først for å velge denne', + 'qr_text' => 'Tekst QR-kode', + 'saml' => 'SAML', + 'saml_title' => 'Oppdater SAML-innstillinger', + 'saml_help' => 'SAML-innstillinger', + 'saml_enabled' => 'SAML aktivert', + 'saml_integration' => 'SAML-integrasjon', + 'saml_sp_entityid' => 'Entity ID', + 'saml_sp_acs_url' => 'Assertion Consumer Service (ACS) URL', + 'saml_sp_sls_url' => 'Single Logout Service (SLS) URL', + 'saml_sp_x509cert' => 'Offentlig sertifikat', + 'saml_sp_metadata_url' => 'Metadata URL', + 'saml_idp_metadata' => 'SAML IdP Metadata', + 'saml_idp_metadata_help' => 'Du kan spesifisere IdP-metadata ved hjelp av URL eller XML-fil.', + 'saml_attr_mapping_username' => 'Attributt for brukernavn', + 'saml_attr_mapping_username_help' => 'NameID vil bli brukt hvis tilordning av attributtet er uspesifisert eller ugyldig.', + 'saml_forcelogin_label' => 'SAML Tving Innlogging', + 'saml_forcelogin' => 'Gjør SAML til standard innlogging', + 'saml_forcelogin_help' => 'Du kan bruke \'/login?nosaml\' for å komme til den normale innloggingssiden.', + 'saml_slo_label' => 'SAML utlogging', + 'saml_slo' => 'Send en Logoutforespørsel til IdP på Logg ut', + 'saml_slo_help' => 'Dette vil føre til at brukeren først blir omdirigert til idP når hen logger ut. Ikke kryss av om idP ikke støtter \'SP-initiated SAML SLO\'.', + 'saml_custom_settings' => 'SAML Egendefinerte innstillinger', + 'saml_custom_settings_help' => 'Du kan angi flere innstillinger til onelogin/php-saml biblioteket. Bruk på eget ansvar.', + 'saml_download' => 'Last ned Metadata', + 'setting' => 'Innstilling', + 'settings' => 'Innstillinger', + 'show_alerts_in_menu' => 'Vis varsler i toppmenyen', + 'show_archived_in_list' => 'Arkiverte eiendeler', + 'show_archived_in_list_text' => 'Vis arkiverte eiendeler i "alle eiendeler" utlisting', + 'show_assigned_assets' => 'Vis eiendeler tildelt til eiendeler', + 'show_assigned_assets_help' => 'Vis ressurser som ble tildelt andre eiendeler i Vis bruker -> Eiendeler, Vis bruker -> Info -> Skriv ut alle tildelte og i Konto -> Vis tildelte eiendeler.', + 'show_images_in_email' => 'Vis bilder i e-post', + 'show_images_in_email_help' => 'Fjern merkingen i denne boksen hvis Snipe-IT-installasjonen er bak en VPN eller et lukket nettverk og brukere utenfor nettverket ikke vil kunne laste bilder servert fra denne installasjonen i e-posten.', + 'site_name' => 'Nettstedsnavn', + 'integrations' => 'Integrasjoner', + 'slack' => 'Slack', + 'general_webhook' => 'Generell Webhook', + 'ms_teams' => 'Microsoft Lag', + 'webhook' => ':app', + 'webhook_presave' => 'Test til lagring', + 'webhook_title' => 'Oppdater Webhook innstillinger', + 'webhook_help' => 'Integrasjons instillinger', + 'webhook_botname' => ':app botnavn', + 'webhook_channel' => ':app kanal', + 'webhook_endpoint' => ':app endepunkt', + 'webhook_integration' => ':app Innstillinger', + 'webhook_test' =>'Test :app integrasjon', + 'webhook_integration_help' => ':app-integrasjon er valgfritt, men endepunktet og kanalen er påkrevd hvis du ønsker å bruke den. For å konfigurere :app integrering, må du først lage en innkommende webhook på din :app konto. Klikk på knappen Test :app Integrasjon for å bekrefte at innstillingene er korrekte før du lagrer. ', + 'webhook_integration_help_button' => 'Du vil se en testknapp etter at du har lagret din :app informasjon.', + 'webhook_test_help' => 'Test om din :app integrasjon er riktig konfigurert. DU MÅ LAGRE DINE OPPDATERTE :app INNSTILLINGER FØRST.', + 'snipe_version' => 'Snipe-IT-versjon', + 'support_footer' => 'Støtte Footer Lenker ', + 'support_footer_help' => 'Angi hvem som kan se lenker til Snipe-IT supportinformasjon og brukermanual', + 'version_footer' => 'Versjon i Footer ', + 'version_footer_help' => 'Angi hvem som kan se Snipe-IT versjon og build-nummer.', + 'system' => 'Systeminformasjon', + 'update' => 'Oppdater innstillinger', + 'value' => 'Verdi', + 'brand' => 'Merkevare', + 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', + 'brand_help' => 'Logo, nettstedsnavn', + 'web_brand' => 'Velg branding-type', + 'about_settings_title' => 'Om Innstillinger', + 'about_settings_text' => 'Disse innstillingene lar deg tilpasse enkelte aspekter av installasjonen din.', + 'labels_per_page' => 'Etiketter per side', + 'label_dimensions' => 'Etikettstørrelsen (inches)', + 'next_auto_tag_base' => 'Neste automatiske økning', + 'page_padding' => 'Side marger (inches)', + 'privacy_policy_link' => 'Link til personvernregler', + 'privacy_policy' => 'Personvernerklæring', + 'privacy_policy_link_help' => 'Angi en URL i dette feltet for å inkludere en lenke til personvern-policy i applikasjonsbunntekst og i alle eposter som dette systemet sender ut. Støtter GDPR. ', + 'purge' => 'Tømme slettede poster', + 'purge_deleted' => 'Fjern slettede ', + 'labels_display_bgutter' => 'Etikett bunnmarg', + 'labels_display_sgutter' => 'Etikett sidemarg', + 'labels_fontsize' => 'Label skriftstørrelse', + 'labels_pagewidth' => 'Etikett arkbredde', + 'labels_pageheight' => 'Etikett arkhøyde', + 'label_gutters' => 'Etikett tegnavstand (tommer)', + 'page_dimensions' => 'Sidedimensjon (tommer)', + 'label_fields' => 'Etikett synlige felter', + 'inches' => 'tommer', + 'width_w' => 'b', + 'height_h' => 'h', + 'show_url_in_emails' => 'Link til Snipe-IT i e-post', + 'show_url_in_emails_help_text' => 'Fjern markeringen i denne boksen hvis du ikke vil koble tilbake til Snipe-IT-installasjonen i e-postboksene dine. Nyttig hvis de fleste av brukerne aldri logger inn.', + 'text_pt' => 'pt', + 'thumbnail_max_h' => 'Maks miniatyrbilde høyde', + 'thumbnail_max_h_help' => 'Maksimal høyde i piksler som miniatyrbilder kan vise i visningen liste. Min 25, maks 500.', + 'two_factor' => 'To-faktor autentisering', + 'two_factor_secret' => 'To-faktor kode', + 'two_factor_enrollment' => 'To-faktor registrering', + 'two_factor_enabled_text' => 'Aktiver to-faktor autentisering', + 'two_factor_reset' => 'Tilbakestill to-faktor hemmelighet', + 'two_factor_reset_help' => 'Dette vil tvinge brukeren til å legge inn enheten på nytt med autentiseringsappen. Dette kan være nyttig hvis enheten deres er mistet eller stjålet. ', + 'two_factor_reset_success' => 'To-faktor enhet resatt', + 'two_factor_reset_error' => 'Reset av to-faktor enhet feilet', + 'two_factor_enabled_warning' => 'Aktivering av to-faktor autentisering hvis ikke allerede aktivert vil øyeblikkelig tvinge deg til å autentisere med enhet som er aktivert i Google Authenticator. Du vil ha mulighet til å aktivere enheten din hvis ingen er aktivert fra før.', + 'two_factor_enabled_help' => 'Dette vil slå på to-faktor autentisering med Google Authenticator.', + 'two_factor_optional' => 'Selektiv (brukere kan aktivere eller deaktivere hvis tillatt)', + 'two_factor_required' => 'Påkrevd for alle brukere', + 'two_factor_disabled' => 'Deaktivert', + 'two_factor_enter_code' => 'Skriv inn to-faktor kode', + 'two_factor_config_complete' => 'Send kode', + 'two_factor_enabled_edit_not_allowed' => 'Systemansvarlig tillater ikke at du redigerer denne innstillingen.', + 'two_factor_enrollment_text' => "To-faktor autentisering er påkrevd, men enheten din har ikke blitt aktivert for dette enda. Åpne Google Authenticator-appen og scan inn QR-koden nedenfor for å aktivere. Når du har aktivert enheten din, skriv inn koden nedenfor", + 'require_accept_signature' => 'Kreve signatur', + 'require_accept_signature_help_text' => 'Aktivering av denne funksjonen ville forlange brukernes å fysisk logge ut for å akseptere en eiendel.', + 'left' => 'venstre', + 'right' => 'høyre', + 'top' => 'topp', + 'bottom' => 'bunn', + 'vertical' => 'vertikal', + 'horizontal' => 'horisontal', + 'unique_serial' => 'Unike serienumre', + 'unique_serial_help_text' => 'Håndhever at eiendelsserienumre er unike', + 'zerofill_count' => 'Lengden på ID-merker, inkludert zerofill', + 'username_format_help' => 'Denne innstillingen vil bare bli brukt av importprosessen dersom et brukernavn ikke er oppgitt, og vi må generere et brukernavn for deg.', + 'oauth_title' => 'OAuth API-innstillinger', + 'oauth_clients' => 'OAuth Clients', + 'oauth' => 'OAuth', + 'oauth_help' => 'Oauth Endepunktinnstillinger', + 'oauth_no_clients' => 'You have not created any OAuth clients yet.', + 'oauth_secret' => 'Secret', + 'oauth_authorized_apps' => 'Authorized Applications', + 'oauth_redirect_url' => 'Redirect URL', + 'oauth_name_help' => ' Something your users will recognize and trust.', + 'oauth_scopes' => 'Scopes', + 'oauth_callback_url' => 'Your application authorization callback URL.', + 'create_client' => 'Create Client', + 'no_scopes' => 'No scopes', + 'asset_tag_title' => 'Oppdater Innstillinger for Eiendelsmerker', + 'barcode_title' => 'Oppdater strekkodeinnstillinger', + 'barcodes' => 'Strekkoder', + 'barcodes_help_overview' => 'Strekkode- & QR-innstillinger', + 'barcodes_help' => 'Dette forsøker å slette hurtigbufrede strekkoder. Dette vil vanligvis bare bli brukt hvis strekkodeinnstillingene dine er endret, eller hvis Snipe-IT adressen er endret. Strekkoder genereres på nytt når de blir åpnet neste gang.', + 'barcodes_spinner' => 'Forsøker å slette filer...', + 'barcode_delete_cache' => 'Slett strekkode-buffer', + 'branding_title' => 'Oppdater Branding-innstillinger', + 'general_title' => 'Oppdater generelle innstillinger', + 'mail_test' => 'Send test', + 'mail_test_help' => 'Dette vil forsøke å sende en e-post til :replyto.', + 'filter_by_keyword' => 'Filtrer ved å sette nøkkelord', + 'security' => 'Sikkerhet', + 'security_title' => 'Oppdater sikkerhetsinnstillinger', + 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', + 'security_help' => 'Tofaktor, passordbegrensinger', + 'groups_keywords' => 'permissions, permission groups, authorization', + 'groups_help' => 'Tillatelsesgrupper', + 'localization' => 'Oversettelser', + 'localization_title' => 'Oppdater språkinnstillinger', + 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', + 'localization_help' => 'Språk, datoformat', + 'notifications' => 'Varslinger', + 'notifications_help' => 'E-post varsler og revisjonsinnstillinger', + 'asset_tags_help' => 'Økninger og prefikser', + 'labels' => 'Etiketter', + 'labels_title' => 'Oppdater etikettinnstillinger', + 'labels_help' => 'Etikettstørrelse & innstillinger', + 'purge_keywords' => 'slett permanent', + 'purge_help' => 'Tømme slettede poster', + 'ldap_extension_warning' => 'Det ser ikke ut som LDAP-utvidelsen er installert eller aktivert på denne serveren. Du kan fortsatt lagre innstillingene, men du må installere og aktivere LDAP-tillegget til PHP før LDAP-synkronisering eller innlogging virker.', + 'ldap_ad' => 'LDAP/AD', + 'employee_number' => 'Ansattnummer', + 'create_admin_user' => 'Opprett en bruker ::', + 'create_admin_success' => 'Suksess! Din adminbruker har blitt lagt til!', + 'create_admin_redirect' => 'Klikk her for å gå til innlogging!', + 'setup_migrations' => 'Database-migreringer ::', + 'setup_no_migrations' => 'Det var ingenting å migrere. Databasetabellene var allerede oppdaterte!', + 'setup_successful_migrations' => 'Databasetabellene er opprettet', + 'setup_migration_output' => 'Migrasjonsmeldinger:', + 'setup_migration_create_user' => 'Neste: Opprett bruker', + 'ldap_settings_link' => 'Side for LDAP-innstillinger', + 'slack_test' => 'Test Integrasjon', + 'label2_enable' => 'Ny etikett generator', + 'label2_enable_help' => 'Bytt til den nye etikette generatoren. Merk: Du må lagre denne innstillingen før du setter andre.', + 'label2_template' => 'Mal', + 'label2_template_help' => 'Velg mal som skal brukes til etikettgenerering', + 'label2_title' => 'Tittel', + 'label2_title_help' => 'Tittelen som skal vises på etiketter som støtter den', + 'label2_title_help_phold' => 'Plassholderen {COMPANY} vil bli erstattet med navnet til ressursen's firma navn', + 'label2_asset_logo' => 'Bruk ressurs logo', + 'label2_asset_logo_help' => 'Bruk logoen til ressursen's tildelte selskap, i stedet for verdien fra :setting_name', + 'label2_1d_type' => '1D strekkodetype', + 'label2_1d_type_help' => 'Format for 1D strekkoder', + 'label2_2d_type' => '2D strekkodetype', + 'label2_2d_type_help' => 'Format for 2D strekkoder', + 'label2_2d_target' => '2D strekkodemål', + 'label2_2d_target_help' => 'URL-en 2D strekkoden peker til til når den blir skannet', + 'label2_fields' => 'Feltdefinisjoner', + 'label2_fields_help' => 'Feltene kan legges til, fjernes, og sorteres i venstre kolonne. For hvert felt kan flere alternativer for etikett og datakilde legges til, fjernes, og sorteres på nytt i høyre kolonne.', + 'help_asterisk_bold' => 'Teksten som skrives inn som **text** vil vises som fet', + 'help_blank_to_use' => 'La stå tom for å bruke verdien fra :setting_name', + 'help_default_will_use' => ':default vil bruke verdien fra :setting_name.
Vær oppmerksom på at verdien for strekkodene må oppfylle den respektive strekkodespesifikasjonen for å bli generert med hell. Vennligst se dokumentasjonen for mer informasjon. ', + 'default' => 'Standard', + 'none' => 'Ingen', + 'google_callback_help' => 'Dette bør angis som callback-URL-en i Google OAuth app innstillingene i organisasjonen din's Google utvikler konsoll .', + 'google_login' => 'Google Workspace innloggingsinnstillinger', + 'enable_google_login' => 'Aktiver innlogging med Google Workspace', + 'enable_google_login_help' => 'Brukerne vil ikke automatisk bli betjent. De må ha en eksisterende konto her OG i Google Workspace, og deres brukernavn her må matche sin Google Workspace e-post adresse. ', + 'mail_reply_to' => 'E-post svar-til adresse', + 'mail_from' => 'E-post fra adressen', + 'database_driver' => 'Databasedriver', + 'bs_table_storage' => 'Tabell Lagring', + 'timezone' => 'Tidssone', + 'profile_edit' => 'Edit Profile', + 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', + +]; diff --git a/resources/lang/nb-NO/admin/settings/message.php b/resources/lang/nb-NO/admin/settings/message.php new file mode 100644 index 0000000000..42d29371f2 --- /dev/null +++ b/resources/lang/nb-NO/admin/settings/message.php @@ -0,0 +1,46 @@ + [ + 'error' => 'En feil oppstod under oppdatering. ', + 'success' => 'Oppdatering av innstillinger vellykket.', + ], + 'backup' => [ + 'delete_confirm' => 'Er du sikker på at du vil slette denne sikkerhetskopien? Denne handlingen kan ikke angres. ', + 'file_deleted' => 'Den Sikkerhetskopierte filen ble slettet. ', + 'generated' => 'En ny sikkerhetskopi fil ble opprettet.', + 'file_not_found' => 'Den backup-filen ble ikke funnet på serveren.', + 'restore_warning' => 'Ja, kjør gjenoppretting. Jeg forstår at dette vil overskive alle eksisterende data som er i databasen. Dette vil også logge ut alle eksisterende brukere (inkludert meg selv).', + 'restore_confirm' => 'Er du sikker på at du vil gjenopprette databasen fra :filename?' + ], + 'purge' => [ + 'error' => 'Det oppstod en feil under fjerning. ', + 'validation_failed' => 'Din fjerningsbekreftelse er feil. Vennligst skriv inn ordet "DELETE" i bekreftelsesboksen.', + 'success' => 'Slettede rader ble fjernet.', + ], + 'mail' => [ + 'sending' => 'Sender e-post...', + 'success' => 'E-post er sendt!', + 'error' => 'E-post kunne ikke sendes.', + 'additional' => 'Ingen ytterligere feilmelding oppgitt. Sjekk e-postinnstillingene og loggen.' + ], + 'ldap' => [ + 'testing' => 'Tester LDAP-tilkobling, binding og spørring ...', + '500' => '500 serverfeil. Sjekk tjenerens logger for mer informasjon.', + 'error' => 'Noe gikk galt :(', + 'sync_success' => 'Et utvalg på 10 brukere som returneres fra LDAP-serveren basert på innstillingene:', + 'testing_authentication' => 'Tester LDAP-autentisering...', + 'authentication_success' => 'Brukeren ble autentisert mot LDAP!' + ], + 'webhook' => [ + 'sending' => 'Sender :app test melding...', + 'success' => 'Ditt :webhook_name integrasjon fungerer!', + 'success_pt1' => 'Suksess! Sjekk ', + 'success_pt2' => ' kanalen din for testmelding, og sørg for å klikke på SAVE nedenfor for å lagre innstillingene.', + '500' => '500 Tjenerfeil.', + 'error' => 'Noe gikk galt. :app svarte med: :error_message', + 'error_redirect' => 'FEIL: 301/302 :endpoint returnerer en omaddressering. Av sikkerhetsgrunner følger vi ikke omadressering. Vennligst bruk det faktiske endepunktet.', + 'error_misc' => 'Noe gikk galt. :( ', + ] +]; diff --git a/resources/lang/nb-NO/admin/settings/table.php b/resources/lang/nb-NO/admin/settings/table.php new file mode 100644 index 0000000000..0dbe87ea15 --- /dev/null +++ b/resources/lang/nb-NO/admin/settings/table.php @@ -0,0 +1,6 @@ + 'Opprettet', + 'size' => 'Størrelse', +); diff --git a/resources/lang/nb-NO/admin/statuslabels/message.php b/resources/lang/nb-NO/admin/statuslabels/message.php new file mode 100644 index 0000000000..03e2bd6e9b --- /dev/null +++ b/resources/lang/nb-NO/admin/statuslabels/message.php @@ -0,0 +1,32 @@ + 'Status-etiketten finnes ikke.', + 'deleted_label' => 'Slettet statusmerke', + 'assoc_assets' => 'Denne status-etiketten er for øyeblikket i bruk på minst en eiendel, og kan ikke slettes. Vennligst endre dine eiendeler til å ikke bruke denne statusen, og prøv igjen. ', + + 'create' => [ + 'error' => 'Statusmerket ble ikke opprettet. Prøv igjen.', + 'success' => 'Statusmerket ble opprettet.', + ], + + 'update' => [ + 'error' => 'Statusmerket ble ikke oppdatert. Prøv igjen', + 'success' => 'Vellykket oppdatering av statusmerke.', + ], + + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette dette statusmerket?', + 'error' => 'Det oppstod et problem under sletting av statusmerket. Prøv igjen.', + 'success' => 'Vellykket sletting av statusmerke.', + ], + + 'help' => [ + 'undeployable' => 'Disse eiendelene kan ikke tilordnes noen.', + 'deployable' => 'Disse eiendelene kan sjekkes ut. Når de er tildelt, antar de en metastatus på Utlevert.', + 'archived' => 'Disse eiendelene kan ikke sjekkes ut, og vises bare i arkivert visning. Dette er nyttig for å beholde informasjon om eiendeler for budsjettering / historiske formål, men å holde dem ut av den daglige aktivitetslisten.', + 'pending' => 'Disse eiendelene kan ikke tildeles til noen, ofte brukt til gjenstander som er ute for reparasjon, men forventes å komme tilbake til omløp.', + ], + +]; diff --git a/resources/lang/nb-NO/admin/statuslabels/table.php b/resources/lang/nb-NO/admin/statuslabels/table.php new file mode 100644 index 0000000000..d84409f884 --- /dev/null +++ b/resources/lang/nb-NO/admin/statuslabels/table.php @@ -0,0 +1,19 @@ + 'Om statusmerker', + 'archived' => 'Arkivert', + 'create' => 'Opprett statusmerke', + 'color' => 'Graf-farge', + 'default_label' => 'Standard Etikett', + 'default_label_help' => 'Dette brukes til å sikre at de mest brukte statusetikettene dine vises øverst i valgboksen når du oppretter/redigerer eiendeler.', + 'deployable' => 'Utleverbar', + 'info' => 'Statusmerker brukes for å beskrive de forskjellige statusene dine eiendeler kan ha. De kan være under reparasjon, tapt/stjålet, osv. Du kan opprette nye statusmerker for utleverbare, under arbeid eller arkiverte eiendeler.', + 'name' => 'Statusnavn', + 'pending' => 'Under arbeid', + 'status_type' => 'Statustype', + 'show_in_nav' => 'Vis i sidenavigasjon', + 'title' => 'Statusmerke', + 'undeployable' => 'Ikke utleverbar', + 'update' => 'Oppdater statusmerke', +); diff --git a/resources/lang/nb-NO/admin/suppliers/message.php b/resources/lang/nb-NO/admin/suppliers/message.php new file mode 100644 index 0000000000..fc12ac80bb --- /dev/null +++ b/resources/lang/nb-NO/admin/suppliers/message.php @@ -0,0 +1,28 @@ + 'Slettet leverandør', + 'does_not_exist' => 'Leverandør finnes ikke.', + + + 'create' => array( + 'error' => 'Leverandør ble ikke opprettet. Prøv igjen.', + 'success' => 'Opprettelse av leverandør vellykket.' + ), + + 'update' => array( + 'error' => 'Leverandør ble ikke oppdatert. Prøv igjen', + 'success' => 'Oppdatering av leverandør vellykket.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne leverandøren?', + 'error' => 'Det oppstod et problem under sletting av leverandør. Prøv igjen.', + 'success' => 'Sletting av leverandør vellykket.', + 'assoc_assets' => 'Denne leverandøren er tilknyttet med :asset_count eiendel(er), og kan ikke slettes. Oppdater eiendelene dine til ikke å bruke denne leverandøren og prøv igjen. ', + 'assoc_licenses' => 'Denne leverandøren er tilknyttet med :licenses_count lisens(er), og kan ikke slettes. Oppdater lisensene dine til ikke å bruke denne leverandøren og prøv igjen. ', + 'assoc_maintenances' => 'Denne leverandøren er tilknyttet med :asset_maintenances_count eiendelsvedlikehold, og kan ikke slettes. Oppdater dine eiendelsvedlikehold til ikke å bruke denne leverandøren og prøv igjen. ', + ) + +); diff --git a/resources/lang/nb-NO/admin/suppliers/table.php b/resources/lang/nb-NO/admin/suppliers/table.php new file mode 100644 index 0000000000..39a66faff6 --- /dev/null +++ b/resources/lang/nb-NO/admin/suppliers/table.php @@ -0,0 +1,26 @@ + 'Om leverandører', + 'about_suppliers_text' => 'Leverandører brukes til å spore kilden til varer', + 'address' => 'Leverandøradresse', + 'assets' => 'Eiendeler', + 'city' => 'By', + 'contact' => 'Kontaktnavn', + 'country' => 'Land', + 'create' => 'Opprett leverandør', + 'email' => 'E-post', + 'fax' => 'Faks', + 'id' => 'ID', + 'licenses' => 'Lisenser', + 'name' => 'Leverandørnavn', + 'notes' => 'Notater', + 'phone' => 'Telefon', + 'state' => 'Stat', + 'suppliers' => 'Leverandører', + 'update' => 'Oppdater leverandør', + 'view' => 'Vis leverandør', + 'view_assets_for' => 'Vis eiendeler for', + 'zip' => 'Postnummer', + +); diff --git a/resources/lang/nb-NO/admin/users/general.php b/resources/lang/nb-NO/admin/users/general.php new file mode 100644 index 0000000000..ffe4751d62 --- /dev/null +++ b/resources/lang/nb-NO/admin/users/general.php @@ -0,0 +1,54 @@ + 'Denne brukeren kan logge inn', + 'activated_disabled_help_text' => 'Du kan ikke redigere aktiveringsstatus for din egen konto.', + 'assets_user' => 'Eiendeler tildelt :name', + 'bulk_update_warn' => 'Du prøver å redigere egenskapene for: user_count brukere. Merk at du kan ikke endre dine egne brukerens attributter ved hjelp av dette skjemaet, og må gjøre endringer i din egen bruker individuelt.', + 'bulk_update_help' => 'I dette skjemaet kan du oppdatere flere brukere samtidig. Bare fyll ut feltene du vil endre. Eventuelle tomme felt vil forbli uendret.', + 'current_assets' => 'Eiendeler som er sjekket ut til denne brukeren', + 'clone' => 'Klon bruker', + 'contact_user' => 'Kontakt :navn', + 'edit' => 'Rediger bruker', + 'filetype_info' => 'Gyldige filtyper er png, gif, jpg, jpeg, doc docx, pdf, txt, zip og rar.', + 'history_user' => 'Historikk for :name', + 'info' => 'Info', + 'restore_user' => 'Klikk her for å gjenopprette dem.', + 'last_login' => 'Siste innlogging', + 'ldap_config_text' => 'LDAP-konfigurasjonsinnstillingene kan finnes på Admin > innstillinger. Den (Valgfrie) valgte plasseringen angis for alle importerte brukere.', + 'print_assigned' => 'Skriv ut alt tilordnet', + 'email_assigned' => 'Epostliste for alle tilknyttede', + 'user_notified' => 'Brukeren har blitt sendt en liste over elementer som er tildelt brukeren.', + 'auto_assign_label' => 'Inkluder denne brukeren ved automatisk tildeling av kvalifiserte lisenser', + 'auto_assign_help' => 'Hopp over brukeren i autotildeling av lisenser', + 'software_user' => 'Programvare utsjekket til :name', + 'send_email_help' => 'Du må legge inn brukerens e-postadresse for å kunne sende dem innloggingsinformasjon. Sending av innloggingsinformasjon kan kun gjøres når brukeren blir opprettet. Passordet lagres på en sikker måte, slik at det ikke kan hentes opp når det er lagret.', + 'view_user' => 'Vis bruker :name', + 'usercsv' => 'CSV-fil', + 'two_factor_admin_optin_help' => 'Gjeldende administrasjonsinnstillinger tillater selektiv håndhevelse av to-faktor autentisering. ', + 'two_factor_enrolled' => '2FA enhet registrert ', + 'two_factor_active' => '2FA Aktiv ', + 'user_deactivated' => 'Bruker kan ikke logge inn', + 'user_activated' => 'Bruker kan logge inn', + 'activation_status_warning' => 'Ikke endre aktiveringsstatus', + 'group_memberships_helpblock' => 'Bare superbrukere kan redigere gruppemedlemskap.', + 'superadmin_permission_warning' => 'Kun superbrukere kan gjøre en annen bruker til superbruker.', + 'admin_permission_warning' => 'Kun brukere med adminrettigheter eller høyere kan gi en annen bruker admintilgang.', + 'remove_group_memberships' => 'Fjern gruppemedlemskap', + 'warning_deletion_information' => 'Du er i ferd med å sjekke inn ALLE elementene fra :count bruker(e) nedenfor. Super admin navn er uthevet med rødt.', + 'update_user_assets_status' => 'Oppdater alle ressursene til disse brukerne til denne statusen', + 'checkin_user_properties' => 'Sjekk inn alt tilbehør koblet til disse brukerne', + 'remote_label' => 'Dette er en ekstern bruker', + 'remote' => 'Ekstern', + 'remote_help' => 'Dette kan være nyttig hvis du trenger å filtrere ut eksterne brukere som aldri eller sjelden kommer inn i dine fysiske steder.', + 'not_remote_label' => 'Dette er ikke en ekstern bruker', + 'vip_label' => 'VIP bruker', + 'vip_help' => 'Dette kan være nyttig for å markere viktige mennesker i org hvis du vil håndtere dem på spesielle måter.', + 'create_user' => 'Opprett en bruker', + 'create_user_page_explanation' => 'Dette er kontoinformasjon du vil bruke for å få tilgang til nettstedet for første gang.', + 'email_credentials' => 'E-post påloggingsinformasjon', + 'email_credentials_text' => 'Send opplysningene mine til e-postadressen ovenfor', + 'next_save_user' => 'Neste: Lagre bruker', + 'all_assigned_list_generation' => 'Generert på:', + 'email_user_creds_on_create' => 'Send denne brukeren sin påloggingsinformasjon via e-post?', +]; diff --git a/resources/lang/nb-NO/admin/users/message.php b/resources/lang/nb-NO/admin/users/message.php new file mode 100644 index 0000000000..ece6cbec5e --- /dev/null +++ b/resources/lang/nb-NO/admin/users/message.php @@ -0,0 +1,74 @@ + 'Du har akseptert eiendelen.', + 'declined' => 'Du har avvist eiendelen.', + 'bulk_manager_warn' => 'Brukerne er oppdatert, men lederen ble ikke lagret fordi lederen du valgte også i brukerlisten for redigering og brukere kan ikke være sin egen leder. Velg brukerne igjen, unntatt lederen.', + 'user_exists' => 'Bruker finnes allerede!', + 'user_not_found' => 'Brukeren finnes ikke.', + 'user_login_required' => 'Login-feltet er påkrevd', + 'user_has_no_assets_assigned' => 'Ingen eiendeler er tilordnet brukeren for øyeblikket.', + 'user_password_required' => 'Passord er påkrevd.', + 'insufficient_permissions' => 'Utilstrekkelige rettigheter.', + 'user_deleted_warning' => 'Denne brukeren er slettet. Du vil må gjenopprette denne brukeren for å redigere, eller tildele nye eiendeler.', + 'ldap_not_configured' => 'LDAP integrasjonen er ikke konfigurert i denne installasjonen.', + 'password_resets_sent' => 'De valgte brukerne som er aktivert og har en gyldig e-postadresse har blitt sendt en tilbakestillingslenke.', + 'password_reset_sent' => 'En lenke for tilbakestilling av passord har blitt sendt til :email!', + 'user_has_no_email' => 'Denne brukeren har ingen e-postadresse i sin profil.', + 'log_record_not_found' => 'Finner ikke et samsvarende loggelement for denne brukeren.', + + + 'success' => array( + 'create' => 'Opprettelse av bruker vellykket.', + 'update' => 'Oppdatering av bruker vellykket.', + 'update_bulk' => 'Oppdatering av brukere vellykket!', + 'delete' => 'Sletting av bruker vellykket.', + 'ban' => 'Vellykket forbud av bruker.', + 'unban' => 'Forbud av bruker ble opphevet.', + 'suspend' => 'Vellykket deaktivering av bruker.', + 'unsuspend' => 'Vellykket aktivering av bruker.', + 'restored' => 'Vellykket gjenopprettelse av bruker.', + 'import' => 'Vellykket import av brukere.', + ), + + 'error' => array( + 'create' => 'Det oppstod et problem under opprettelse av bruker. Prøv igjen.', + 'update' => 'Det oppstod et problem under oppdatering av bruker. Prøv igjen.', + 'delete' => 'Det oppstod et problem under sletting av bruker. Prøv igjen.', + 'delete_has_assets' => 'Denne brukeren har utstyr tildelt og kan ikke slettes.', + 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', + 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', + 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', + 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', + 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', + 'unsuspend' => 'Det oppstod et problem under aktivering av bruker. Prøv igjen.', + 'import' => 'Det oppstod et problem under import av brukere. Prøv igjen.', + 'asset_already_accepted' => 'Denne eiendelen er allerede akseptert.', + 'accept_or_decline' => 'Du må enten akseptere eller avvise denne eiendelen.', + 'cannot_delete_yourself' => 'We would feel really bad if you deleted yourself, please reconsider.', + 'incorrect_user_accepted' => 'Eiendelen du prøvde å akseptere ble ikke sjekket ut til deg.', + 'ldap_could_not_connect' => 'Kunne ikke kople til LDAP-serveren. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server:', + 'ldap_could_not_bind' => 'Kunne ikke opprette tilkopling til LDAP-server. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server: ', + 'ldap_could_not_search' => 'Kunne ikke utføre søk på LDAP-serveren. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server:', + 'ldap_could_not_get_entries' => 'Fikk ingen oppføringer fra LDAP-serveren. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server:', + 'password_ldap' => 'Passordet for denne kontoen administreres av LDAP/Active Directory. Kontakt IT-avdelingen for å endre passordet. ', + ), + + 'deletefile' => array( + 'error' => 'Fil ble ikke slettet. Prøv igjen.', + 'success' => 'Fil ble slettet.', + ), + + 'upload' => array( + 'error' => 'Fil(er) ble ikke lastet opp. Prøv igjen.', + 'success' => 'Vellykket opplasting av fil(er).', + 'nofiles' => 'Du valgte ingen filer for opplasting', + 'invalidfiles' => 'En eller flere av filene dine er for store eller av en filtype som ikke er tillatt. Tillatte filtyper er png, gif, jpg, doc, docx, pdf og txt.', + ), + + 'inventorynotification' => array( + 'error' => 'Denne brukeren har ingen e-post.', + 'success' => 'Brukeren har blitt varslet om det gjeldende inventaret.' + ) +); \ No newline at end of file diff --git a/resources/lang/nb-NO/admin/users/table.php b/resources/lang/nb-NO/admin/users/table.php new file mode 100644 index 0000000000..993196129e --- /dev/null +++ b/resources/lang/nb-NO/admin/users/table.php @@ -0,0 +1,41 @@ + 'Aktiv', + 'allow' => 'Tillatt', + 'checkedout' => 'Eiendeler', + 'created_at' => 'Opprettet', + 'createuser' => 'Opprett bruker', + 'deny' => 'Nekt', + 'email' => 'E-post', + 'employee_num' => 'Ansattnummer', + 'first_name' => 'Fornavn', + 'groupnotes' => 'Velg en gruppe for brukeren. Husk at brukeren får samme rettigheter som gruppen han tildeles. Bruk ctrl+museklikk (eller cmd+museklikk på MacOS) for å velge bort grupper.', + 'id' => 'Id', + 'inherit' => 'Arv', + 'job' => 'Jobbtittel', + 'last_login' => 'Siste innlogging', + 'last_name' => 'Etternavn', + 'location' => 'Lokasjon', + 'lock_passwords' => 'Innloggingsdetaljer kan ikke endres i denne installasjonen.', + 'manager' => 'Overordnet', + 'managed_locations' => 'Administrere plasseringer', + 'managed_users' => 'Administrerte brukere', + 'name' => 'Navn', + 'nogroup' => 'Ingen grupper er opprettet ennå. For å legge til en, besøk: ', + 'notes' => 'Notater', + 'password_confirm' => 'Bekreft passord', + 'password' => 'Passord', + 'phone' => 'Telefon', + 'show_current' => 'Vis nåværende brukere', + 'show_deleted' => 'Vis slettede brukere', + 'title' => 'Tittel', + 'to_restore_them' => 'for å gjenopprette de.', + 'total_assets_cost' => "Totale ressurskostnader", + 'updateuser' => 'Oppdater bruker', + 'username' => 'Brukernavn', + 'user_deleted_text' => 'Denne brukeren er merket som slettet.', + 'username_note' => '(Dette brukes til binding i Active Directory, ikke for innlogging)', + 'cloneuser' => 'Klon bruker', + 'viewusers' => 'Vis brukere', +); diff --git a/resources/lang/nb-NO/auth.php b/resources/lang/nb-NO/auth.php new file mode 100644 index 0000000000..bfc2a2bd04 --- /dev/null +++ b/resources/lang/nb-NO/auth.php @@ -0,0 +1,20 @@ + 'Disse opplysningene samsvarer ikke med våre oppføringer.', + 'password' => 'Angitt passord er feil.', + 'throttle' => 'For mange innloggingsforsøk. Prøv igjen om :seconds sekunder.', + +); diff --git a/resources/lang/nb-NO/auth/general.php b/resources/lang/nb-NO/auth/general.php new file mode 100644 index 0000000000..47fb9d7f35 --- /dev/null +++ b/resources/lang/nb-NO/auth/general.php @@ -0,0 +1,18 @@ + 'Send Passord Tilbakestillingslink', + 'email_reset_password' => 'E-post Passord Tilbakestill', + 'reset_password' => 'Tilbakestill Passord', + 'saml_login' => 'Logg inn med SSO', + 'login' => 'Logg inn', + 'login_prompt' => 'Vennligst logg inn', + 'forgot_password' => 'Jeg har glemt passordet mitt', + 'ldap_reset_password' => 'Klikk her for å nullstille ditt LDAP-passord', + 'remember_me' => 'Husk meg', + 'username_help_top' => 'Skriv inn ditt brukernavn for å få tilsendt en lenke for tilbakestilling av passord.', + 'username_help_bottom' => 'Ditt brukernavn og e-postadresse kan være det samme, men kan være, avhengig av din konfigurasjon. Dersom du ikke husker brukernavnet ditt, ta kontakt med systemansvarlig.

Brukernavn uten en tilknyttet e-postadresse vil ikke bli sendt en lenke for tilbakestilling av passordet. ', + 'google_login' => 'Logg inn med Google Workspace', + 'google_login_failed' => 'Google innlogging feilet, vennligst prøv igjen.', +]; + diff --git a/resources/lang/nb-NO/auth/message.php b/resources/lang/nb-NO/auth/message.php new file mode 100644 index 0000000000..ba1ae4ec94 --- /dev/null +++ b/resources/lang/nb-NO/auth/message.php @@ -0,0 +1,47 @@ + 'En konto med denne e-postadressen finnes allerede.', + 'account_not_found' => 'Brukernavnet eller passordet er feil.', + 'account_not_activated' => 'Denne brukerkontoen er ikke aktiv.', + 'account_suspended' => 'Denne brukerkontoen er deaktivert.', + 'account_banned' => 'Denne brukerkontoen er forbudt.', + 'throttle' => 'For mange mislykkede påloggingsforsøk. Prøv igjen om :minutes minutter.', + + 'two_factor' => array( + 'already_enrolled' => 'Enheten din er allerede registrert.', + 'success' => 'Du har logget inn.', + 'code_required' => 'To-faktor-kode er påkrevd.', + 'invalid_code' => 'To-faktor-koden er ugyldig.', + 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', + 'please_enroll' => 'Please enroll a device in two-factor authentication.', + ), + + 'signin' => array( + 'error' => 'Det oppstod et problem under innlogging. Prøv igjen.', + 'success' => 'Vellykket innlogging.', + ), + + 'logout' => array( + 'error' => 'Det oppstod et problem med utlogging, prøv igjen.', + 'success' => 'Du har logget ut.', + ), + + 'signup' => array( + 'error' => 'Det oppstod et problem under opprettelse av konto. Prøv igjen.', + 'success' => 'Opprettelse av konto vellykket.', + ), + + 'forgot-password' => array( + 'error' => 'Det oppstod et problem under henting av kode for resetting av passord. Prøv igjen.', + 'success' => 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med gjenopprettelse av passord.', + ), + + 'forgot-password-confirm' => array( + 'error' => 'Det oppstod et problem under gjenopprettelse av passordet ditt. Prøv igjen.', + 'success' => 'Ditt passord er resatt.', + ), + + +); diff --git a/resources/lang/nb-NO/button.php b/resources/lang/nb-NO/button.php new file mode 100644 index 0000000000..d68f89a77a --- /dev/null +++ b/resources/lang/nb-NO/button.php @@ -0,0 +1,34 @@ + 'Handlinger', + 'add' => 'Opprett ny', + 'cancel' => 'Avbryt', + 'checkin_and_delete' => 'Sjekk inn alle / slett bruker', + 'delete' => 'Slett', + 'edit' => 'Rediger', + 'clone' => 'Clone', + 'restore' => 'Gjenopprett', + 'remove' => 'Fjern', + 'request' => 'Forespørsel', + 'submit' => 'Send', + 'upload' => 'Last opp', + 'select_file' => 'Velg fil...', + 'select_files' => 'Velg filer...', + 'generate_labels' => '{1} Lag etikett [2,*] Lag etiketter', + 'send_password_link' => 'Send lenke for å nullstille passordet', + 'go' => 'Gå', + 'bulk_actions' => 'Massehandlinger', + 'add_maintenance' => 'Legg til vedlikehold', + 'append' => 'Legg til', + 'new' => 'Ny', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] +]; diff --git a/resources/lang/nb-NO/general.php b/resources/lang/nb-NO/general.php new file mode 100644 index 0000000000..9c70d97a12 --- /dev/null +++ b/resources/lang/nb-NO/general.php @@ -0,0 +1,562 @@ + '2FA reset', + 'accessories' => 'Tilbehør', + 'activated' => 'Aktivert', + 'accepted_date' => 'Akseptdato', + 'accessory' => 'Tilbehør', + 'accessory_report' => 'Rapport over tilbehør', + 'action' => 'Handlinger', + 'activity_report' => 'Aktivitetsrapport', + 'address' => 'Adresse', + 'admin' => 'Admin', + 'admin_tooltip' => 'This user has admin privileges', + 'superuser' => 'Superuser', + 'superuser_tooltip' => 'This user has superuser privileges', + 'administrator' => 'Administrator', + 'add_seats' => 'Setelisenser lagt til', + 'age' => "Alder", + 'all_assets' => 'Alle eiendeler', + 'all' => 'Alle', + 'archived' => 'Arkivert', + 'asset_models' => 'Eiendelsmodeller', + 'asset_model' => 'Modell', + 'asset' => 'Eiendel', + 'asset_report' => 'Eiendelsrapport', + 'asset_tag' => 'Eiendelsmerke', + 'asset_tags' => 'Eiendelsmerker', + 'assets_available' => 'Tilgjengelige eiendeler', + 'accept_assets' => 'Godta Eiendelen :name', + 'accept_assets_menu' => 'Godta eiendeler', + 'audit' => 'Revisjon', + 'audit_report' => 'Overvåkingslogg', + 'assets' => 'Eiendeler', + 'assets_audited' => 'reviderte ressurser', + 'assets_checked_in_count' => 'innsjekkede ressurser', + 'assets_checked_out_count' => 'utsjekkede ressurser', + 'asset_deleted_warning' => 'Denne ressursen er slettet. Du må gjenopprette den før du kan tilordne den til noen.', + 'assigned_date' => 'Dato tildelt', + 'assigned_to' => 'Tilordnet :name', + 'assignee' => 'Tilordnet til', + 'avatar_delete' => 'Slett Avatar', + 'avatar_upload' => 'Last opp Avatar', + 'back' => 'Tilbake', + 'bad_data' => 'Fant ingenting. Kanskje feil i data?', + 'bulkaudit' => 'Bulk revisjon', + 'bulkaudit_status' => 'Revisjon Status', + 'bulk_checkout' => 'Masseutsjekk', + 'bulk_edit' => 'Masseredigering', + 'bulk_delete' => 'Massesletting', + 'bulk_actions' => 'Massehandlinger', + 'bulk_checkin_delete' => 'Masseinnsjekk/Slett brukere', + 'byod' => 'BYOD', + 'byod_help' => 'Denne enheten er eid av brukeren', + 'bystatus' => 'etter Status', + 'cancel' => 'Avbryt', + 'categories' => 'Kategorier', + 'category' => 'Kategori', + 'change' => 'Inn/ut', + 'changeemail' => 'Endre e-postadresse', + 'changepassword' => 'Endre passord', + 'checkin' => 'Sjekk inn', + 'checkin_from' => 'Innsjekk fra', + 'checkout' => 'Sjekk ut', + 'checkouts_count' => 'Sjekk ut', + 'checkins_count' => 'Sjekk inn', + 'user_requests_count' => 'Forespørsler', + 'city' => 'By', + 'click_here' => 'Klikk her', + 'clear_selection' => 'Tøm valg', + 'companies' => 'Selskaper', + 'company' => 'Firmanavn', + 'component' => 'Komponent', + 'components' => 'Komponenter', + 'complete' => 'Fullført', + 'consumable' => 'Forbruksvare', + 'consumables' => 'Forbruksvarer', + 'country' => 'Land', + 'could_not_restore' => 'Feil ved gjenoppretting av :item_type: :error', + 'not_deleted' => ':item_type er ikke slettet og kan ikke gjenopprettes', + 'create' => 'Opprett ny', + 'created' => 'Enhet opprettet', + 'created_asset' => 'eiendel opprettet', + 'created_at' => 'Opprettet', + 'created_by' => 'Opprettet av', + 'record_created' => 'Post opprettet', + 'updated_at' => 'Oppdatert', + 'currency' => '$', // this is deprecated + 'current' => 'Nåværende', + 'current_password' => 'Gjeldende passord', + 'customize_report' => 'Tilpass rapport', + 'custom_report' => 'Tilpasset eiendelsrapport', + 'dashboard' => 'Kontrollpanel', + 'days' => 'dager', + 'days_to_next_audit' => 'Dager til neste revisjon', + 'date' => 'Dato', + 'debug_warning' => 'Advarsel!', + 'debug_warning_text' => 'Dette programmet kjører i produksjonsmodus med feilsøking aktiverert. Dette kan utsette følsomme data hvis programmet er tilgjengelig for omverdenen. Deaktiver debug modus ved å sette APP_DEBUG-verdien i filen .env til false.', + 'delete' => 'Slett', + 'delete_confirm' => 'Er du sikker på at du vil slette :item?', + 'delete_confirm_no_undo' => 'Er du sikker på at du vil slette :item? Dette kan ikke angres.', + 'deleted' => 'Slettet', + 'delete_seats' => 'Slettede setelisenser', + 'deletion_failed' => 'Sletting mislyktes', + 'departments' => 'Avdelinger', + 'department' => 'Avdeling', + 'deployed' => 'Utlevert', + 'depreciation' => 'Avskrivning', + 'depreciations' => 'Avskrivninger', + 'depreciation_report' => 'Avskrivningsrapport', + 'details' => 'Detaljer', + 'download' => 'Last ned', + 'download_all' => 'Last ned alle', + 'editprofile' => 'Rediger din profil', + 'eol' => 'Livstid', + 'email_domain' => 'E-postdomene', + 'email_format' => 'E-postformat', + 'employee_number' => 'Ansattnummer', + 'email_domain_help' => 'Brukes til å generere e-postadresser ved import', + 'error' => 'Feil', + 'exclude_archived' => 'Ekskluder arkiverte ressurser', + 'exclude_deleted' => 'Ekskluder slettede ressurser', + 'example' => 'Eksempel: ', + 'filastname_format' => 'Fornavn (kun initial) Etternavn (oladunk@example.com)', + 'firstname_lastname_format' => 'Fornavn Etternavn (oladunk@example.com)', + 'firstname_lastname_underscore_format' => 'Fornavn Etternavn (oladunk@example.com)', + 'lastnamefirstinitial_format' => 'Etternavn Initialer (oladunk@example.com)', + 'firstintial_dot_lastname_format' => 'Fornavn Initialer. Etternavn (j.smith@example.com)', + 'firstname_lastname_display' => 'Fornavn Etternavn (Kari Torildsdottir)', + 'lastname_firstname_display' => 'Etternavn Fornavn (Torildsdottir, Kari)', + 'name_display_format' => 'Navneformat', + 'first' => 'Første', + 'firstnamelastname' => 'Fornavn Etternavn (oladunk@example.com)', + 'lastname_firstinitial' => 'Etternavn Fornavn Initialer (smith_j@example.com)', + 'firstinitial.lastname' => 'Fornavn Initialer Etternavn (j.smith@example.com)', + 'firstnamelastinitial' => 'Fornavn Etternavn Initialer (janes@example.com)', + 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'first_name' => 'Fornavn', + 'first_name_format' => 'Fornavn (oladunk@example.com)', + 'files' => 'Filer', + 'file_name' => 'Fil', + 'file_type' => 'Filtype', + 'filesize' => 'Filstørrelse', + 'file_uploads' => 'Filopplastinger', + 'file_upload' => 'Filopplastning', + 'generate' => 'Generer', + 'generate_labels' => 'Opprett etiketter', + 'github_markdown' => 'Dette feltet tillater Github flavored markdown.', + 'groups' => 'Grupper', + 'gravatar_email' => 'Gravatar e-postadresse', + 'gravatar_url' => 'Endre din avatar på Gravatar.com.', + 'history' => 'Historie', + 'history_for' => 'Historikk for', + 'id' => 'ID', + 'image' => 'Bilde', + 'image_delete' => 'Slett bilde', + 'include_deleted' => 'Inkluder slettede ressurser', + 'image_upload' => 'Last opp bilde', + 'filetypes_accepted_help' => 'Godkjent filtype er :types. Maks opplastingsstørrelse er :size.|Aksepterte filtyper er :types. Maks opplastingsstørrelse er :size.', + 'filetypes_size_help' => 'Maks opplastingsstørrelse er :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'unaccepted_image_type' => 'Denne bildefilen var ikke lesbar. Aksepterte filtyper er jpg, webp, png, gif og svg. Mime-typen til denne filen er :mimetype.', + 'import' => 'Importer', + 'import_this_file' => 'Kartfelter og behandle denne filen', + 'importing' => 'Importerer', + 'importing_help' => 'Du kan importere eiendeler, tilbehør, lisenser, komponenter, forbruksvarer og brukere via CSV-fil.

CSV-en må være kommaseparert og formatert med overskrifter som stemmer overens med de i eksempel-CSV i dokumentasjonen.', + 'import-history' => 'Importhistorikk', + 'asset_maintenance' => 'Vedlikehold av eiendeler', + 'asset_maintenance_report' => 'Rapport Vedlikehold av eiendeler', + 'asset_maintenances' => 'Vedlikehold av eiendeler', + 'item' => 'Enhet', + 'item_name' => 'Navn', + 'import_file' => 'importer CSV-fil', + 'import_type' => 'Type CSV-import', + 'insufficient_permissions' => 'Utilstrekkelige rettigheter!', + 'kits' => 'Forhåndsdefinerte sett', + 'language' => 'Språk', + 'last' => 'Siste', + 'last_login' => 'Siste pålogging', + 'last_name' => 'Etternavn', + 'license' => 'Lisens', + 'license_report' => 'Lisensrapport', + 'licenses_available' => 'Tilgjengelige lisenser', + 'licenses' => 'Lisenser', + 'list_all' => 'List alle', + 'loading' => 'Laster... vennligst vent....', + 'lock_passwords' => 'Denne feltverdien vil ikke bli lagret i en demo-installasjon.', + 'feature_disabled' => 'Denne funksjonen er deaktivert i demo-installasjonen.', + 'location' => 'Lokasjon', + 'location_plural' => 'Stedslokasjoner', + 'locations' => 'Lokasjoner', + 'logo_size' => 'Kvadratisk logo vises best med Logo + Text. Logo maximum display size is 50px high x 500px wide. ', + 'logout' => 'Logg ut', + 'lookup_by_tag' => 'Søk på ID-merke', + 'maintenances' => 'Vedlikehold', + 'manage_api_keys' => 'Administrer API-nøkler', + 'manufacturer' => 'Produsent', + 'manufacturers' => 'Produsenter', + 'markdown' => 'Dette feltet tillater Github flavored markdown.', + 'min_amt' => 'Min. antall', + 'min_amt_help' => 'Minimum antall varer som skal være tilgjengelig før et varsel blir utløst. La stå tomt hvis du ikke vil motta varsler for lavt inventar.', + 'model_no' => 'Modellnummer', + 'months' => 'måneder', + 'moreinfo' => 'Mer info', + 'name' => 'Navn', + 'new_password' => 'Nytt passord', + 'next' => 'Neste', + 'next_audit_date' => 'Neste revisjon dato', + 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', + 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', + 'no_email' => 'Ingen e-postadresse tilknyttet denne brukeren', + 'last_audit' => 'Siste revisjon', + 'new' => 'ny!', + 'no_depreciation' => 'Ingen avskrivning', + 'no_results' => 'Ingen treff.', + 'no' => 'Nei', + 'notes' => 'Notater', + 'order_number' => 'Ordreummer', + 'only_deleted' => 'Kun slettede ressurser', + 'page_menu' => 'Viser _MENU_ enheter', + 'pagination_info' => 'Viser _START_ til _END_ av _TOTAL_ enheter', + 'pending' => 'Under arbeid', + 'people' => 'Folk', + 'per_page' => 'Resultater pr side', + 'previous' => 'Forrige', + 'processing' => 'Behandler', + 'profile' => 'Din profil', + 'purchase_cost' => 'Innkjøpskostnad', + 'purchase_date' => 'Innkjøpsdato', + 'qty' => 'Antall', + 'quantity' => 'Antall', + 'quantity_minimum' => 'Du har :count enheter under eller nesten under minimum antall', + 'quickscan_checkin' => 'Hurtiginnsjekk ved skanning', + 'quickscan_checkin_status' => 'Innsjekkingsstatus', + 'ready_to_deploy' => 'Klar for utlevering', + 'recent_activity' => 'Nylig aktivitet', + 'remaining' => 'Gjenstår', + 'remove_company' => 'Fjern tilknytning til bedrift', + 'reports' => 'Rapporter', + 'restored' => 'gjenopprettet', + 'restore' => 'Gjenopprett', + 'requestable_models' => 'Forespørrbare modeller', + 'requestable_items' => 'Requestable Items', + 'requested' => 'Forespurt', + 'requested_date' => 'Forespurt dato', + 'requested_assets' => 'Forespurte eiendeler', + 'requested_assets_menu' => 'Forespurte eiendeler', + 'request_canceled' => 'Forespørsel avbrutt', + 'request_item' => 'Request this item', + 'external_link_tooltip' => 'External link to', + 'save' => 'Lagre', + 'select_var' => 'Velg :thing... ', // this will eventually replace all of our other selects + 'select' => 'Velg', + 'select_all' => 'Velg alle', + 'search' => 'Søk', + 'select_category' => 'Velg en kategori', + 'select_datasource' => 'Velg en datakilde', + 'select_department' => 'Velg en avdeling', + 'select_depreciation' => 'Velg en avskrivningstype', + 'select_location' => 'Velg en lokasjon', + 'select_manufacturer' => 'Velg en produsent', + 'select_model' => 'Velg en modell', + 'select_supplier' => 'Velg en leverandør', + 'select_user' => 'Velg en bruker', + 'select_date' => 'Velg dato (ÅÅÅÅ-MM-DD)', + 'select_statuslabel' => 'Velg status', + 'select_company' => 'Velg bedrift', + 'select_asset' => 'Velg eiendel', + 'settings' => 'Innstillinger', + 'show_deleted' => 'Vis slettede', + 'show_current' => 'Vis gjeldende', + 'sign_in' => 'Logg inn', + 'signature' => 'Signatur', + 'signed_off_by' => 'Godkjent av', + 'skin' => 'Tema', + 'webhook_msg_note' => 'En varsling vil bli sendt via webhook', + 'webhook_test_msg' => 'Hei-hå! Ser som din Slack-integrasjon med Snipe-IT fungerer!', + 'some_features_disabled' => 'DEMO MODUS: Noe funksjonalitet er skrudd av i denne installasjonen.', + 'site_name' => 'Nettstedsnavn', + 'state' => 'Stat', + 'status_labels' => 'Statusmerker', + 'status' => 'Status', + 'accept_eula' => 'Akseptavtale', + 'supplier' => 'Leverandør', + 'suppliers' => 'Leverandører', + 'sure_to_delete' => 'Er du sikker på at du vil slette', + 'sure_to_delete_var' => 'Er du sikker på at du vil slette :item?', + 'delete_what' => 'Slett :item', + 'submit' => 'Send', + 'target' => 'Mål', + 'time_and_date_display' => 'Tid og Datovisning', + 'total_assets' => 'eiendeler totalt', + 'total_licenses' => 'lisener totalt', + 'total_accessories' => 'antall tilbehør', + 'total_consumables' => 'antall forbruksvarer', + 'type' => 'Type', + 'undeployable' => 'Ikke utleverbar', + 'unknown_admin' => 'Ukjent admin', + 'username_format' => 'Format brukernavn', + 'username' => 'Brukernavn', + 'update' => 'Oppdater', + 'upload_filetypes_help' => 'Tillatte filtyper er png, gif, jpg, jpeg, doc, docx, pdf, xls, xlsx, txt, lic, xml, zip, rtf og rar. Maks. filstørrelse er :size.', + 'uploaded' => 'Lastet opp', + 'user' => 'Bruker', + 'accepted' => 'akseptert', + 'declined' => 'avslått', + 'declined_note' => 'Declined Notes', + 'unassigned' => 'Ikke tildelt', + 'unaccepted_asset_report' => 'Ikke aksepterte eiendeler', + 'users' => 'Brukere', + 'viewall' => 'Vis alle', + 'viewassets' => 'Vis tildelte eiendeler', + 'viewassetsfor' => 'Vis eiendelene til :name', + 'website' => 'Nettsted', + 'welcome' => 'Velkommen, :name', + 'years' => 'år', + 'yes' => 'Ja', + 'zip' => 'Postnummer', + 'noimage' => 'Bilde er ikke lastet opp eller finner ikke bilde.', + 'file_does_not_exist' => 'Den forespurte filen finnes ikke på serveren.', + 'file_upload_success' => 'Filopplasting vellykket!', + 'no_files_uploaded' => 'Filopplasting vellykket!', + 'token_expired' => 'Din sesjon har utløpt. Prøv igjen.', + 'login_enabled' => 'Innlogging aktiv', + 'audit_due' => 'Revisjonsfrist nær', + 'audit_due_days' => 'Aktiva Frist for revisjon innen :days days|Due for Audit Om dager', + 'checkin_due' => 'Forfalt for innsjekk', + 'checkin_overdue' => 'Forfalt for innsjekk', + 'checkin_due_days' => 'Eiendeler Tidsfrist for innsjekk innen :days Day|Asset Due for Checkin Innen :days', + 'audit_overdue' => 'Revisjonsfrist forfalt', + 'accept' => 'Akseptér :asset', + 'i_accept' => 'Jeg aksepterer', + 'i_decline' => 'Jeg avslår', + 'accept_decline' => 'Godta/Avslå', + 'sign_tos' => 'Signér under for å akseptere vilkårene for tjenesten:', + 'clear_signature' => 'Fjern signatur', + 'show_help' => 'Vis hjelp', + 'hide_help' => 'Skjul hjelp', + 'view_all' => 'se alle', + 'hide_deleted' => 'Skjul slettede', + 'email' => 'E-post', + 'do_not_change' => 'Ikke endre', + 'bug_report' => 'Rapporter feil', + 'user_manual' => 'Brukerhåndbok', + 'setup_step_1' => 'Trinn 1', + 'setup_step_2' => 'Trinn 2', + 'setup_step_3' => 'Trinn 3', + 'setup_step_4' => 'Trinn 4', + 'setup_config_check' => 'Sjekk konfigurasjon', + 'setup_create_database' => 'Opprett databasetabeller', + 'setup_create_admin' => 'Opprett adminbruker', + 'setup_done' => 'Ferdig!', + 'bulk_edit_about_to' => 'Du er i ferd med å redigere følgende: ', + 'checked_out' => 'Sjekket ut', + 'checked_out_to' => 'Sjekket ut til', + 'fields' => 'Felter', + 'last_checkout' => 'Siste utsjekk', + 'due_to_checkin' => 'Følgende :count elementer skal snart sjekkes inn:', + 'expected_checkin' => 'Forventet innsjekk', + 'reminder_checked_out_items' => 'Dette er en påminnelse om utstyr som er sjekket ut til deg. Hvis du mener at denne listen er unøyaktig (noe mangler, eller at noe vises her du tror du aldri har fått), vennligst send e-post til :reply_to_name på :reply_to_address.', + 'changed' => 'Endret', + 'to' => 'Til', + 'report_fields_info' => '

Velg feltene du vil inkludere i din egendefinerte rapport, og klikk Generer. Filen (custom-asset-report-YYYY-mm-dd.csv) vil bli lastet ned automatisk, og du kan åpne den i Excel.

+

Hvis du ønsker å eksportere bare enkelte eiendeler, bruk alternativene nedenfor til å finjustere resultatene dine.

', + 'range' => 'Område', + 'bom_remark' => 'Legg til et BOM (byte-order merke) i CSV-fila', + 'improvements' => 'Forbedringer', + 'information' => 'Informasjon', + 'permissions' => 'Tillatelser', + 'managed_ldap' => '(Administrert via LDAP)', + 'export' => 'Eksport', + 'ldap_sync' => 'LDAP-synk', + 'ldap_user_sync' => 'Synk av LDAP-brukere', + 'synchronize' => 'Synkroniser', + 'sync_results' => 'Synkroniseringsresultat', + 'license_serial' => 'Serienr/produktnøkkel', + 'invalid_category' => 'Ugyldig eller manglende kategori', + 'invalid_item_category_single' => 'Ugyldig eller mangler :type kategori. Oppdater kategorien til denne :type for å inkludere en gyldig kategori før du går til kassen.', + 'dashboard_info' => 'Dette er dashbordet ditt. Det er mange som det, men dette er ditt.', + '60_percent_warning' => '60% fullført (advarsel)', + 'dashboard_empty' => 'Det ser ut som du ikke har lagt til noe enda, så vi har ikke noe fantastisk å vise. Kom i gang ved å legge til noen eiendeler, tilbehør, forbruksartikler eller lisenser nå!', + 'new_asset' => 'Ny eiendel', + 'new_license' => 'Ny lisens', + 'new_accessory' => 'Nytt tilbehør', + 'new_consumable' => 'Ny forbruksvare', + 'collapse' => 'Kollaps', + 'assigned' => 'Tilordnet', + 'asset_count' => 'Antall eiendeler', + 'accessories_count' => 'Antall tilbehør', + 'consumables_count' => 'Antall forbruksvarer', + 'components_count' => 'Antall komponenter', + 'licenses_count' => 'Antall lisenser', + 'notification_error' => 'Feil', + 'notification_error_hint' => 'Vennligst sjekk skjemaet nedenfor for feil', + 'notification_bulk_error_hint' => 'Følgende felt har valideringsfeil og ble ikke endret:', + 'notification_success' => 'Suksess', + 'notification_warning' => 'Advarsel', + 'notification_info' => 'Informasjon', + 'asset_information' => 'Eiendelsinfo', + 'model_name' => 'Modell navn', + 'asset_name' => 'Eiendelens navn', + 'consumable_information' => 'Info om forbruksvare:', + 'consumable_name' => 'Navn på forbruksvare:', + 'accessory_information' => 'Info om tilbehør:', + 'accessory_name' => 'Tilbehørets navn:', + 'clone_item' => 'Klon element', + 'checkout_tooltip' => 'Sjekk ut denne gjenstanden', + 'checkin_tooltip' => 'Check this item in so that it is available for re-issue, re-imaging, etc', + 'checkout_user_tooltip' => 'Sjekk dette elementet ut til en bruker', + 'checkin_to_diff_location' => 'You can choose to check this asset in to a location other than this asset\'s default location of :default_location if one is set', + 'maintenance_mode' => 'Tjenesten er midlertidig utilgjengelig for systemoppdateringer. Vennligst prøv igjen senere.', + 'maintenance_mode_title' => 'System midlertidig ikke tilgjengelig', + 'ldap_import' => 'Brukerpassord bør ikke administreres av LDAP. (Dette lar deg sende glemte passord forespørsler.)', + 'purge_not_allowed' => 'Sletting av slettede data er deaktivert i .env-filen. Kontakt kundestøtte eller systemadministrator.', + 'backup_delete_not_allowed' => 'Sletting av sikkerhetskopier er deaktivert i .env filen. Kontakt kundestøtte eller systemadministrator.', + 'additional_files' => 'Flere filer', + 'shitty_browser' => 'Ingen signatur oppdaget. Hvis du bruker en eldre nettleser, vennligst bruk en mer moderne nettleser for å akseptere mottak av eiendel.', + 'bulk_soft_delete' =>'Fjern også disse brukerne ved å fjerne deres eiendelshistorikk intakt/til du fjerner slettede poster i Admin-innstillingene.', + 'bulk_checkin_delete_success' => 'Dine valgte brukere er slettet og deres elementer har blitt sjekket inn.', + 'bulk_checkin_success' => 'Elementene for de valgte brukerne har blitt sjekket inn.', + 'set_to_null' => 'Slette verdier for denne eiendelen Slett verdier for alle :asset_count eiendeler ', + 'set_users_field_to_null' => 'Slett :field verdier for denne brukeren. Slett :field verdier for alle :user_count brukere ', + 'na_no_purchase_date' => 'N/A - Ingen kjøpsdato oppgitt', + 'assets_by_status' => 'Eiendeler etter status', + 'assets_by_status_type' => 'Eiendeler etter status', + 'pie_chart_type' => 'Dashbord Kakediagram type', + 'hello_name' => 'Velkommen, :name!', + 'unaccepted_profile_warning' => 'Du har :count elementer som trenger godkjenning. Klikk her for å akseptere eller avslå dem', + 'start_date' => 'Startdato', + 'end_date' => 'Sluttdato', + 'alt_uploaded_image_thumbnail' => 'Opplastet miniatyrbilde', + 'placeholder_kit' => 'Velg ett sett', + 'file_not_found' => 'Finner ikke filen', + 'preview_not_available' => '(ingen forhåndsvisning)', + 'setup' => 'Innstillinger', + 'pre_flight' => 'Test', + 'skip_to_main_content' => 'Gå til hovedinnhold', + 'toggle_navigation' => 'Vis/skjul navigasjon', + 'alerts' => 'Varsler', + 'tasks_view_all' => 'Vis alle oppgaver', + 'true' => 'Sant', + 'false' => 'Usant', + 'integration_option' => 'Innstillinger for integrering', + 'log_does_not_exist' => 'Det finnes ingen samsvarende loggoppføring.', + 'merge_users' => 'Slå sammen brukere', + 'merge_information' => 'Dette vil slå sammen :count brukere til en enkelt bruker. Velg brukeren du ønsker å slå de andre sammen med, og de tilknyttede eiendelene, lisenser, etc vil bli flyttet til valgt bruker, og de andre vil bli merket som slettet.', + 'warning_merge_information' => 'Denne handlingen kan ikke angres og skal BARE brukes når du må slå sammen brukere på grunn av dårlig import eller synkronisering. Sørg for å kjøre en sikkerhetskopi først.', + 'no_users_selected' => 'Ingen brukere er valgt', + 'not_enough_users_selected' => 'Minst :count brukere må være valgt', + 'merge_success' => ':count brukere er slått sammen med :into_username!', + 'merged' => 'sammenslått', + 'merged_log_this_user_into' => 'Flettet denne brukeren (ID :to_id - :to_username) til bruker ID :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Flettet bruker-ID :from_id (:from_username) inn i denne brukeren (ID :to_id - :to_username)', + 'clear_and_save' => 'Tøm og lagre', + 'update_existing_values' => 'Oppdatere eksisterende verdier?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Automatisk generering av inkrementerende ressurskoder er skrudd av, så alle rader må ha "ressurskode"-kollonnen utfylt.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Merk: Automatisk generering av inkrementerende ressurskoder er er skrudd på, så for alle rader som ikke har fult ut "ressurskoden, så vil den bli generert autmatisk. Rader som har ressurskoden utfylt vil bli oppdatert med den gitte informasjonen.', + 'send_welcome_email_to_users' => ' Send velkomstepost til nye brukere?', + 'send_email' => 'Send e-post', + 'call' => 'Ring nummer', + 'back_before_importing' => 'Sikkerhetskopier før importering?', + 'csv_header_field' => 'CSV-toppfelt', + 'import_field' => 'Importer felt', + 'sample_value' => 'Eksempelverdi', + 'no_headers' => 'Ingen kolonner funnet', + 'error_in_import_file' => 'Det oppstod en feil under lesing av CSV-filen: :error', + 'errors_importing' => 'Det oppstod noen feil under importeringen: ', + 'warning' => 'ADVARSEL: :advarsel', + 'success_redirecting' => '"Vellykket... omadressering.', + 'cancel_request' => 'Avbryt forespørsel om element', + 'setup_successful_migrations' => 'Databasetabellene er opprettet', + 'setup_migration_output' => 'Migrasjonsmeldinger:', + 'setup_migration_create_user' => 'Neste: Opprett bruker', + 'importer_generic_error' => 'Importen av filen er fullført, men vi fikk en feil. Dette skyldes vanligvis tredjeparts "API throttling" fra en meldings webhook (som Slack) og ville ikke ha forstyrret selve importen; men du bør bekrefte dette selv.', + 'confirm' => 'Bekreft', + 'autoassign_licenses' => 'Tildel lisenser automatisk', + 'autoassign_licenses_help' => 'Tillat denne brukeren å ha lisenser tildelt via bulk-tildeling UI eller cli verktøy.', + 'autoassign_licenses_help_long' => 'Dette tillater at en bruker får tildelt lisenser via massetildeling av lisenser via UI eller cli verktøyet. (Du vil for eksempel ikke nødvendigvis at en konsulent automatisk skal tildeles en lisens, men bare ansatte vil du oppgi den. Du kan fremdeles tilordne lisens til disse brukerne, men de vil ikke bli inkludert i "Checkout License" til "Alle brukere" funksjonene.)', + 'no_autoassign_licenses_help' => 'Ikke inkluder bruker for massetilordning gjennom lisensbrukergrensesnittet eller cli verktøy.', + 'modal_confirm_generic' => 'Er du sikker?', + 'cannot_be_deleted' => 'Dette objektet kan ikke slettes', + 'cannot_be_edited' => 'Dette elementet kan ikke redigeres.', + 'undeployable_tooltip' => 'Dette elementet kan ikke sjekkes ut. Sjekk hvor mange som gjenstår.', + 'serial_number' => 'Serienummer', + 'item_notes' => ':item notater', + 'item_name_var' => ':item navn', + 'error_user_company' => 'Utsjekk firma og firmaet til ressursen stemmer ikke', + 'error_user_company_accept_view' => 'En ressurs tildelt til deg tilhører en annen bedrift, slik at du ikke kan akseptere eller avslå den, vennligst sjekk med din leder', + 'importer' => [ + 'checked_out_to_fullname' => 'Sjekket ut til: Fullt navn', + 'checked_out_to_first_name' => 'Sjekket ut til: Fornavn', + 'checked_out_to_last_name' => 'Sjekket ut til: Etternavn', + 'checked_out_to_username' => 'Sjekket ut til: Brukernavn', + 'checked_out_to_email' => 'Sjekket ut til: e-post', + 'checked_out_to_tag' => 'Sjekket ut til: ressursmerke', + 'manager_first_name' => 'Leders fornavn', + 'manager_last_name' => 'Leders etternavn', + 'manager_full_name' => 'Leders fulle navn', + 'manager_username' => 'Leders brukernavn', + 'checkout_type' => 'Utsjekk type', + 'checkout_location' => 'Sjekket ut til lokasjon', + 'image_filename' => 'Filnavn bilde', + 'do_not_import' => 'Ikke importer', + 'vip' => 'VIP', + 'avatar' => 'Profilbilde', + 'gravatar' => 'Gravatar e-post', + 'currency' => 'Valuta', + 'address2' => 'Adresselinje 2', + 'import_note' => 'Importert med csv-importør', + ], + 'remove_customfield_association' => 'Remove this field from the fieldset. This will not delete the custom field, only this field\'s association with this fieldset.', + 'checked_out_to_fields' => 'Checked Out To Fields', + 'percent_complete' => '% fullført', + 'uploading' => 'Laster opp... ', + 'upload_error' => 'Feil ved opplasting av fil. Vennligst sjekk at det ikke er noen tomme rader og at ingen kolonnenavn er duplisert.', + 'copy_to_clipboard' => 'Kopier til utklippstavlen', + 'copied' => 'Kopiert!', + 'status_compatibility' => 'Hvis eiendelene allerede er tilordnet, kan de ikke endres til en ikke-distribuerbar statustype og denne verdien vil bli hoppet over.', + 'rtd_location_help' => 'Dette er stedet til eiendel når den ikke er sjekket ut', + 'item_not_found' => ':item_type ID :id eksisterer ikke eller har blitt slettet', + 'action_permission_denied' => 'Du har ikke tillatelse til :action :item_type ID :id', + 'action_permission_generic' => 'Du har ikke tillatelse til :action denne :item_type', + 'edit' => 'rediger', + 'action_source' => 'Kilde for handling', + 'or' => 'eller', + 'url' => 'URL', + 'edit_fieldset' => 'Redigere feltene og opsjonene', + 'permission_denied_superuser_demo' => 'Tillatelse nektet. Du kan ikke oppdatere brukerinformasjon for superadmins på demo.', + 'pwd_reset_not_sent' => 'Brukeren er ikke aktivert, er LDAP synkronisert eller har ikke en e-postadresse', + 'error_sending_email' => 'Feil ved sending av e-post', + 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'bulk' => [ + 'delete' => + [ + 'header' => 'Bulk sletting :object_type', + 'warn' => 'Du er i ferd med å slette ett :object_type″Du er i ferd med å slette :count :object_type', + 'success' => ':object_type ble vellykket slettet :count :object_type', + 'error' => 'Kunne ikke slette :object_type', + 'nothing_selected' => 'Nei :object_type er valgt - ingenting å gjøre', + 'partial' => 'Slettet :success_count :object_type, men :error_count :object_type kunne ikke slettes', + ], + ], + 'no_requestable' => 'Det finnes ingen forespørselbare eiendeler eller modeller.', + + 'countable' => [ + 'accessories' => ':count Tilbehør|:count tilbehør', + 'assets' => ':count Eiendeler|:count', + 'licenses' => ':count Lisens|:count lisenser', + 'license_seats' => ':count lisenssete|:count Lisensseter', + 'consumables' => ':count Forbruksvare|:count Forbruksvarer', + 'components' => ':count Komponenter|:count komponenter', + ], + 'more_info' => 'Mer info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Utløper', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', + +]; diff --git a/resources/lang/nb-NO/help.php b/resources/lang/nb-NO/help.php new file mode 100644 index 0000000000..e091505712 --- /dev/null +++ b/resources/lang/nb-NO/help.php @@ -0,0 +1,35 @@ + 'Mer info', + + 'audit_help' => 'Kryss av for å endre eiendelen til å bruke denne nye lokasjonen. Hvis du ikke krysser av vil lokasjonen kun bli notert i revisjonsloggen.

Merk at hvis denne eiendelen er sjekket ut vil det ikke endre lokasjon for brukeren, ressursen eller lokasjonen den er sjekket ut til.', + + 'assets' => 'Eiendeler er enheter som spores på serienummer eller annen merking. Typisk er dette kostbare enheter der det gir mening å spore enkeltenheter.', + + 'categories' => 'Kategorier hjelper deg med å organisere ting. Eksempeler på kategorier kan være "Skrivebord", "Bærbare", "Mobiltelefon", "Nettbrett" og så videre, men du kan bruke kategorier som gir mening for deg.', + + 'accessories' => 'Tilbehør er ting du leverer ut som ikke har serienummer (eller som du ikke sporer enkeltvis), for eksempel datamus og tastaturer.', + + 'companies' => 'Firma kan brukes som et enkelt identifikatorfelt, eller det kan brukes til å begrense eksponeringen av eiendeler, brukere, etc hvis full firmastøtte er aktivert i innstillingene.', + + 'components' => 'Komponenter er ting som er del av en eiendel, f. eks. internminne, disk o. l.', + + 'consumables' => 'Forbruksvarer er alle varer som blir brukt opp over tid. For eksempel skrivertoner eller kopipapir.', + + 'depreciations' => 'Du kan sette opp avskrivninger for å kostnadsføre eiendeler basert på en lineær avskrivning i perioden.', + + 'empty_file' => 'Importbehandleren registrerer at filen er tom.' +]; diff --git a/resources/lang/nb-NO/localizations.php b/resources/lang/nb-NO/localizations.php new file mode 100644 index 0000000000..cacfe70964 --- /dev/null +++ b/resources/lang/nb-NO/localizations.php @@ -0,0 +1,321 @@ + 'Velg et språk', + 'languages' => [ + 'en-US'=> 'Engelsk, USA', + 'en-GB'=> 'Engelsk, Storbritannia', + 'am-ET' => 'Amharic', + 'af-ZA'=> 'Afrikansk', + 'ar-SA'=> 'Arabisk', + 'bg-BG'=> 'Bulgarsk', + 'zh-CN'=> 'Forenklet kinesisk', + 'zh-TW'=> 'Tradisjonell kinesisk', + 'ca-ES' => 'Katalansk', + 'hr-HR'=> 'Kroatisk', + 'cs-CZ'=> 'Tsjekkisk', + 'da-DK'=> 'Dansk', + 'nl-NL'=> 'Nederlandsk', + 'en-ID'=> 'Engelsk, Indonesia', + 'et-EE'=> 'Estisk', + 'fil-PH'=> 'Filippinsk', + 'fi-FI'=> 'Finsk', + 'fr-FR'=> 'Fransk', + 'de-DE'=> 'Tysk', + 'de-if'=> 'Tysk (uformel)', + 'el-GR'=> 'Gresk', + 'he-IL'=> 'Hebraisk', + 'hu-HU'=> 'Ungarsk', + 'is-IS' => 'Islandsk', + 'id-ID'=> 'Indonesisk', + 'ga-IE'=> 'Irsk', + 'it-IT'=> 'Italiensk', + 'ja-JP'=> 'Japansk', + 'km-KH'=>'Khmer', + 'ko-KR'=> 'Koreansk', + 'lt-LT'=>'Litauisk', + 'lv-LV'=> 'Latvisk', + 'mk-MK'=> 'Makedonsk', + 'ms-MY'=> 'Malayisk', + 'mi-NZ'=> 'Maori', + 'mn-MN'=> 'Mongolsk', + 'no-NO'=> 'Norsk', + 'fa-IR'=> 'Persisk', + 'pl-PL'=> 'Polsk', + 'pt-PT'=> 'Portugisisk', + 'pt-BR'=> 'Portugisisk, Brasiliansk', + 'ro-RO'=> 'Rumensk', + 'ru-RU'=> 'Russisk', + 'sr-CS' => 'Serbisk (Latin)', + 'sk-SK'=> 'Slovakisk', + 'sl-SI'=> 'Slovensk', + 'so-SO'=> 'Somali', + 'es-ES'=> 'Spansk', + 'es-CO'=> 'Spansk, Colombia', + 'es-MX'=> 'Spansk, Mexico', + 'es-VE'=> 'Spansk, Venezuela', + 'sv-SE'=> 'Svensk', + 'tl-PH'=> 'Tagalog', + 'ta-IN'=> 'Tamilsk', + 'th-TH'=> 'Thai', + 'tr-TR'=> 'Tyrkisk', + 'uk-UA'=> 'Ukrainsk', + 'vi-VN'=> 'Vietnamesisk', + 'cy-GB'=> 'Walisisk', + 'zu-ZA'=> 'Zulu', + ], + + 'select_country' => 'Velg et land', + + 'countries' => [ + 'AC'=>'Ascension Island', + 'AD'=>'Andorra', + 'AE'=>'De forente arabiske emirater', + 'AF'=>'Afghanistan', + 'AG'=>'Antigua og Barbuda', + 'AI'=>'Anguilla', + 'AL'=>'Albania', + 'AM'=>'Armenia', + 'AN'=>'De nederlandske Antillene', + 'AO'=>'Angola', + 'AQ'=>'Antarktis', + 'AR'=>'Argentina', + 'AS'=>'Amerikansk Samoa', + 'AT'=>'Østerrike', + 'AU'=>'Australia', + 'AW'=>'Aruba', + 'AX'=>'Åland', + 'AZ'=>'Aserbajdsjan', + 'BA'=>'Bosnia-Hercegovina', + 'BB'=>'Barbados', + 'BE'=>'Belgia', + 'BD'=>'Bangladesh', + 'BF'=>'Burkina Faso', + 'BG'=>'Bulgaria', + 'BH'=>'Bahrain', + 'BI'=>'Burundi', + 'BJ'=>'Benin', + 'BM'=>'Bermuda', + 'BN'=>'Brunei Darussalam', + 'BO'=>'Bolivia', + 'BR'=>'Brasil', + 'BS'=>'Bahamas', + 'BT'=>'Bhutan', + 'BV'=>'Bouvet-øya', + 'BW'=>'Botswana', + 'BY'=>'Republikken Belarus', + 'BZ'=>'Belize', + 'CA'=>'Canada', + 'CC'=>'Kokosøyene (Keelingøyene)', + 'CD'=>'Den demokratiske republikken Kongo', + 'CF'=>'Den sentralafrikanske republikk', + 'CG'=>'Republikken Kongo', + 'CH'=>'Sveits', + 'CI'=>'Elfenbenskysten', + 'CK'=>'Cook-øyene', + 'CL'=>'Chile', + 'CM'=>'Kamerun', + 'CN'=>'Folkerepublikken Kina', + 'CO'=>'Colombia', + 'CR'=>'Costa Rica', + 'CU'=>'Cuba', + 'CV'=>'Kapp Verde', + 'CX'=>'Christmasøya', + 'CY'=>'Kypros', + 'CZ'=>'Tsjekkia', + 'DE'=>'Tyskland', + 'DJ'=>'Djibouti', + 'DK'=>'Danmark', + 'DM'=>'Dominica', + 'DO'=>'Den dominikanske republikk', + 'DZ'=>'Algerie', + 'EC'=>'Ecuador', + 'EE'=>'Estland', + 'EG'=>'Egypt', + 'ER'=>'Eritrea', + 'ES'=>'Spania', + 'ET'=>'Etiopia', + 'EU'=>'EU', + 'FI'=>'Finland', + 'FJ'=>'Fiji', + 'FK'=>'Falklandsøyene (Malvinas)', + 'FM'=>'Mikronesia, De forente stater', + 'FO'=>'Færøyene', + 'FR'=>'Frankrike', + 'GA'=>'Gabon', + 'GD'=>'Grenada', + 'GE'=>'Georgia', + 'GF'=>'Fransk Guyana', + 'GG'=>'Guernsey', + 'GH'=>'Ghana', + 'GI'=>'Gibraltar', + 'GL'=>'Grønland', + 'GM'=>'Gambia', + 'GN'=>'Guinea', + 'GP'=>'Guadeloupe', + 'GQ'=>'Ekvatorial-Guinea', + 'GR'=>'Hellas', + 'GS'=>'Sør-Georgia og Sør-Sandwichøyene', + 'GT'=>'Guatemala', + 'GU'=>'Guam', + 'GW'=>'Guinea-Bissau', + 'GY'=>'Guyana', + 'HK'=>'Hong Kong', + 'HM'=>'Heard og Mc Donald Øyene', + 'HN'=>'Honduras', + 'HR'=>'Kroatia (lokalt navn: Hrvatska)', + 'HT'=>'Haiti', + 'HU'=>'Ungarn', + 'ID'=>'Indonesia', + 'IE'=>'Irland', + 'IL'=>'Israel', + 'IM'=>'Isle of Man', + 'IN'=>'India', + 'IO'=>'Det britiske territoriet i Indiahavet', + 'IQ'=>'Irak', + 'IR'=>'Iran', + 'IS'=>'Island', + 'IT'=>'Italia', + 'JE'=>'Jersey', + 'JM'=>'Jamaica', + 'JO'=>'Jordan', + 'JP'=>'Japan', + 'KE'=>'Kenya', + 'KG'=>'Kirgisistan', + 'KH'=>'Kambodsja', + 'KI'=>'Kiribati', + 'KM'=>'Komorene', + 'KN'=>'Saint Kitts og Nevis', + 'KR'=>'Republikken Korea', + 'KW'=>'Kuwait', + 'KY'=>'Caymanøyene', + 'KZ'=>'Kasakhstan', + 'LA'=>'Laos', + 'LB'=>'Libanon', + 'LC'=>'Saint Lucia', + 'LI'=>'Liechtenstein', + 'LK'=>'Sri Lanka', + 'LR'=>'Liberia', + 'LS'=>'Lesotho', + 'LT'=>'Litauen', + 'LU'=>'Luxemburg', + 'LV'=>'Latvia', + 'LY'=>'Libyan Arab Jamahiriya', + 'MA'=>'Marokko', + 'MC'=>'Monaco', + 'MD'=>'Moldova', + 'ME'=>'Montenegro', + 'MG'=>'Madagaskar', + 'MH'=>'Marshalløyene', + 'MK'=>'Makedonia, den tidligere jugoslaviske republikken', + 'ML'=>'Mali', + 'MM'=>'Myanmar', + 'MN'=>'Mongolia', + 'MO'=>'Macao', + 'MP'=>'Nord-Marianene', + 'MQ'=>'Martinique', + 'MR'=>'Mauritania', + 'MS'=>'Montserrat', + 'MT'=>'Malta', + 'MU'=>'Mauritius', + 'MV'=>'Maldivene', + 'MW'=>'Malawi', + 'MX'=>'Mexico', + 'MY'=>'Malaysia', + 'MZ'=>'Mosambik', + 'NA'=>'Namibia', + 'NC'=>'Ny Caledonia', + 'NE'=>'Niger', + 'NF'=>'Norfolkøyene', + 'NG'=>'Nigeria', + 'NI'=>'Nicaragua', + 'NL'=>'Nederland', + 'NO'=>'Norge', + 'NP'=>'Nepal', + 'NR'=>'Nauru', + 'NU'=>'Niue', + 'NZ'=>'New Zealand', + 'OM'=>'Oman', + 'PA'=>'Panama', + 'PE'=>'Peru', + 'PF'=>'Fransk Polynesia', + 'PG'=>'Papua Ny-Guinea', + 'PH'=>'Filippinene', + 'PK'=>'Pakistan', + 'PL'=>'Polen', + 'PM'=>'St. Pierre og Miquelon', + 'PN'=>'Pitcairnøyene', + 'PR'=>'Puerto Rico', + 'PS'=>'Palestina', + 'PT'=>'Portugal', + 'PW'=>'Palau', + 'PY'=>'Paraguay', + 'QA'=>'Qatar', + 'RE'=>'Réunion', + 'RO'=>'Romania', + 'RS'=>'Serbia', + 'RU'=>'Russland', + 'RW'=>'Rwanda', + 'SA'=>'Saudi-Arabia', + 'UK'=>'Storbritannia', + 'SB'=>'Salomonøyene', + 'SC'=>'Seychellene', + 'SS'=>'Sør-Sudan', + 'SD'=>'Sudan', + 'SE'=>'Sverige', + 'SG'=>'Singapor', + 'SH'=>'St. Helena', + 'SI'=>'Slovenia', + 'SJ'=>'Svalbard og Jan Mayen', + 'SK'=>'Slovakia', + 'SL'=>'Sierra Leone', + 'SM'=>'San Marino', + 'SN'=>'Senegal', + 'SO'=>'Somalia', + 'SR'=>'Surinam', + 'ST'=>'Sao Tome og Principe', + 'SU'=>'Sovjet', + 'SV'=>'El Salvador', + 'SY'=>'Syria', + 'SZ'=>'Swaziland', + 'TC'=>'Turks- og Caicosøyene', + 'TD'=>'Tsjad', + 'TF'=>'De franske sørterritorier', + 'TG'=>'Togo', + 'TH'=>'Thailand', + 'TJ'=>'Tadsjikistan', + 'TK'=>'Tokelau', + 'TI'=>'Øst-Timor', + 'TM'=>'Turkmenistan', + 'TN'=>'Tunisia', + 'TO'=>'Tonga', + 'TP'=>'Øst Timor', + 'TR'=>'Tyrkia', + 'TT'=>'Trinidad og Tobago', + 'TV'=>'Tuvalu', + 'TW'=>'Taiwan', + 'TZ'=>'Tanzania', + 'UA'=>'Ukraina', + 'UG'=>'Uganda', + 'UK'=>'Storbritannia', + 'US'=>'USA', + 'UM'=>'USAs ytre småøyer', + 'UY'=>'Uruguay', + 'UZ'=>'Usbekistan', + 'VA'=>'Vatikanstaten', + 'VC'=>'Saint Vincent og Grenadinene', + 'VE'=>'Venezuela', + 'VG'=>'Jomfru øyene (Storbritannia)', + 'VI'=>'Jomfruøyene, (USA)', + 'VN'=>'Vietnam', + 'VU'=>'Vanuatu', + 'WF'=>'Wallis- og Futunaøyene', + 'WS'=>'Samoa', + 'YE'=>'Jemen', + 'YT'=>'Mayotte', + 'ZA'=>'South Africa', + 'ZM'=>'Zambia', + 'ZW'=>'Zimbabwe', + ], +]; \ No newline at end of file diff --git a/resources/lang/nb-NO/mail.php b/resources/lang/nb-NO/mail.php new file mode 100644 index 0000000000..f9688539bf --- /dev/null +++ b/resources/lang/nb-NO/mail.php @@ -0,0 +1,96 @@ + 'Tilbehør sjekket inn', + 'Accessory_Checkout_Notification' => 'Tilbehør sjekket ut', + 'Asset_Checkin_Notification' => 'Eiendel sjekket inn', + 'Asset_Checkout_Notification' => 'Ressurs sjekket ut', + 'Confirm_Accessory_Checkin' => 'Bekreft innsjekk av tilbehør', + 'Confirm_Asset_Checkin' => 'Bekreft innsjekk av eiendel', + 'Confirm_accessory_delivery' => 'Bekreft levering av tilbehør', + 'Confirm_asset_delivery' => 'Bekreft levering av eiendel', + 'Confirm_consumable_delivery' => 'Bekreft levering av forbruksvare', + 'Confirm_license_delivery' => 'Bekreft levering av lisens', + 'Consumable_checkout_notification' => 'Forbruksvaren tatt ut', + 'Days' => 'Dager', + 'Expected_Checkin_Date' => 'En enhet som er sjekket ut til deg skal leveres tilbake den :date', + 'Expected_Checkin_Notification' => 'Påminnelse: Innsjekkingsfrist for :name nærmer seg', + 'Expected_Checkin_Report' => 'Rapport over forventet innsjekking av eiendeler', + 'Expiring_Assets_Report' => 'Rapport utløpende eiendeler.', + 'Expiring_Licenses_Report' => 'Rapport utløpende lisenser.', + 'Item_Request_Canceled' => 'Forespørsel av enhet avbrutt', + 'Item_Requested' => 'Forespurt enhet', + 'License_Checkin_Notification' => 'Lisens sjekket inn', + 'License_Checkout_Notification' => 'Lisens sjekket ut', + 'Low_Inventory_Report' => 'Rapport lav lagerbeholdning', + 'a_user_canceled' => 'Brukeren har avbrutt en element-forespørsel på webområdet', + 'a_user_requested' => 'En bruker har bedt om et element på webområdet', + 'acceptance_asset_accepted' => 'En bruker har godtatt et element', + 'acceptance_asset_declined' => 'En bruker har avvist et element', + 'accessory_name' => 'Navn tilbehør:', + 'additional_notes' => 'Flere notater:', + 'admin_has_created' => 'En administrator har opprettet en konto for deg på :web nettsted.', + 'asset' => 'Eiendel:', + 'asset_name' => 'Navn:', + 'asset_requested' => 'Eiendel forespurt', + 'asset_tag' => 'Eiendelsmerke', + 'assets_warrantee_alert' => 'En eiendel har garanti som utløper innenfor de neste :treshold dagene.|:count eiendeler har garanti som utløper innenfor de neste :tershold dagene.', + 'assigned_to' => 'Tilordnet til', + 'best_regards' => 'Med vennlig hilsen,', + 'canceled' => 'Avbrutt:', + 'checkin_date' => 'Innsjekkdato:', + 'checkout_date' => 'Utsjekkdato:', + 'checkedout_from' => 'Sjekket ut fra', + 'checkedin_from' => 'Sjekket inn fra', + 'checked_into' => 'Sjekket inn', + 'click_on_the_link_accessory' => 'Vennligst klikk på lenken nedenfor for å bekreft at du har mottatt tilbehøret.', + 'click_on_the_link_asset' => 'Vennligst klikk på lenken nedenfor for å bekreft at du har mottatt eiendelen.', + 'click_to_confirm' => 'Klikk på følgende link for å bekrefte din :web konto:', + 'current_QTY' => 'Nåværende antall', + 'days' => 'Dager', + 'expecting_checkin_date' => 'Forventet innsjekkdato:', + 'expires' => 'Utløper', + 'hello' => 'Hallo', + 'hi' => 'Hei', + 'i_have_read' => 'Jeg har lest og godtar vilkårene for bruk, og har mottatt denne enheten.', + 'inventory_report' => 'Lagerbeholdnings rapport', + 'item' => 'Enhet:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', + 'license_expiring_alert' => ':count lisens utløper de neste :threshold dagene.|:count lisenser utløper de neste :threshold dagene.', + 'link_to_update_password' => 'Klikk på følgende link for å bekrefte din :web passord:', + 'login' => 'Logg inn:', + 'login_first_admin' => 'Logg inn på din nye Snipe-IT-installasjon ved å bruke kontoen nedenfor:', + 'low_inventory_alert' => ':count enhet er under minimumnivå for beholdning, eller vil snart nå dette nivået.|:count enheter er under minimumnivå for beholdning, eller vil snart nå dette nivået.', + 'min_QTY' => 'Min. antall', + 'name' => 'Navn', + 'new_item_checked' => 'En ny enhet har blitt sjekket ut under ditt navn, detaljer nedenfor.', + 'notes' => 'Notater', + 'password' => 'Passord:', + 'password_reset' => 'Tilbakestill passord', + 'read_the_terms' => 'Vennligst les bruksbetingelsene nedenfor.', + 'read_the_terms_and_click' => 'Vennligst les vilkårene for bruk nedenfor. og klikk på lenken nederst for å bekrefte at du leser og godtar vilkårene for bruk, og har mottatt eiendelen.', + 'requested' => 'Forespurt:', + 'reset_link' => 'Lenke for tilbakestilling av passord', + 'reset_password' => 'Klikk her for å tilbakestille passordet:', + 'rights_reserved' => 'Alle rettigheter forbeholdt.', + 'serial' => 'Serienummer', + 'snipe_webhook_test' => 'Snipe-IT integrasjonstest', + 'snipe_webhook_summary' => 'Snipe-IT integrasjon test sammendrag', + 'supplier' => 'Leverandør', + 'tag' => 'Merke', + 'test_email' => 'Test-epost fra Snipe-IT', + 'test_mail_text' => 'Dette er en test fra Snipe-IT eiendelsadministrasjonssystem. Hvis du mottok denne meldingen fungerer e-post.', + 'the_following_item' => 'Følgende enheter har blitt sjekket inn: ', + 'to_reset' => 'Fullfør dette skjemaet for å tilbakestille ditt :web passord:', + 'type' => 'Type', + 'upcoming-audits' => ':count eiendel har revisjonsfrist innen :treshold dager.|:count eiendeler har revisjonsfrist innen :threshold dager.', + 'user' => 'Bruker', + 'username' => 'Brukernavn', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', + 'welcome' => 'Velkommen :name', + 'welcome_to' => 'Velkommen til :web!', + 'your_assets' => 'Vis dine eiendeler', + 'your_credentials' => 'Din Snipe-IT konto', + 'mail_sent' => 'Mail sent successfully!', +]; diff --git a/resources/lang/nb-NO/pagination.php b/resources/lang/nb-NO/pagination.php new file mode 100644 index 0000000000..26ea2fb2ad --- /dev/null +++ b/resources/lang/nb-NO/pagination.php @@ -0,0 +1,20 @@ + '« Forrige', + + 'next' => 'Neste »', + +); diff --git a/resources/lang/nb-NO/passwords.php b/resources/lang/nb-NO/passwords.php new file mode 100644 index 0000000000..3e82b8a1a5 --- /dev/null +++ b/resources/lang/nb-NO/passwords.php @@ -0,0 +1,9 @@ + 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med informasjon for gjenopprettelse av passord.', + 'user' => 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med gjenopprettelse av passord.', + 'token' => 'Token for tilbakestilling av passord er ugyldig eller utløpt, eller så stemmer den ikke overens med det angitte brukernavnet.', + 'reset' => 'Ditt passord har blitt tilbakestilt!', + 'password_change' => 'Ditt passord har blitt oppdatert!', +]; diff --git a/resources/lang/nb-NO/reminders.php b/resources/lang/nb-NO/reminders.php new file mode 100644 index 0000000000..a3d1e54447 --- /dev/null +++ b/resources/lang/nb-NO/reminders.php @@ -0,0 +1,21 @@ + "Passord må bestå av minst 6 tegn og stemme med bekreftelse.", + "user" => "Brukernavn eller epostadresse er ugyldig", + "token" => 'Token for tilbakestilling av passord er ugyldig eller utløpt, eller så stemmer den ikke overens med det angitte brukernavnet.', + 'sent' => 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med informasjon for gjenopprettelse av passord.', + +); diff --git a/resources/lang/nb-NO/table.php b/resources/lang/nb-NO/table.php new file mode 100644 index 0000000000..f32ec7ca4b --- /dev/null +++ b/resources/lang/nb-NO/table.php @@ -0,0 +1,11 @@ + 'Handlinger', + 'action' => 'Handling', + 'by' => 'Av', + 'item' => 'Enhet', + 'no_matching_records' => 'No matching records found', + +); diff --git a/resources/lang/nb-NO/validation.php b/resources/lang/nb-NO/validation.php new file mode 100644 index 0000000000..6f0c985764 --- /dev/null +++ b/resources/lang/nb-NO/validation.php @@ -0,0 +1,233 @@ + 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', + ], + 'boolean' => 'Attributtfeltet må være sant eller falskt.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Attributtfeltet har en duplikatverdi.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Attributtet :attribute er ugyldig.', + 'exists' => 'Valgt attributt :attribute er ugyldig.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Den :attribute må ha en verdi.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', + 'import_field_empty' => 'Verdien for :fieldname kan ikke være null.', + 'in' => 'Det valgte attributtet :attribute er ugyldig.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Attributtet :attribute er ugyldig.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Atributtfeltet :attribute må ha en verdi.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Attributt-feltet :attribute er påkrevd.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Attributt-feltet :attribute er påkrevd når :oher er :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Attributtfeltet kreves med mindre: annet er i: verdier.', + 'required_with' => 'Attributt-feltet :attribute er påkrevd når :values er tilstede.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Attributt-feltet :attribute er påkrevd når :values ikke er tilstede.', + 'required_without_all' => 'Attributtfeltet kreves når ingen av: verdiene er til stede.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', + ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', + 'string' => 'Attributtet :attribute må være en tekst.', + 'two_column_unique_undeleted' => ':attribute må være unik i forhold til :table1 og :table2. ', + 'unique_undeleted' => ':attribute må være unikt.', + 'non_circular' => 'Attributtet :attribute kan ikke opprette en sirkulær referanse.', + 'not_array' => ':attribute kan ikke være en matrise.', + 'disallow_same_pwd_as_user_fields' => 'Passordet kan ikke være det samme som brukernavnet.', + 'letters' => 'Passordet må inneholde minst en bokstav.', + 'numbers' => 'Passordet må inneholde minst ett tall.', + 'case_diff' => 'Passordet må innehode store og små bokstaver.', + 'symbols' => 'Passordet må inneholde symboler.', + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Attributtet :attribute er allerede tatt.', + 'uploaded' => 'Atribbutet :attribute kunne ikke lastes opp.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'alpha_space' => 'Attributtfeltet inneholder et tegn som ikke er tillatt.', + 'email_array' => 'En eller flere e-postadresser er ugyldige.', + 'hashed_pass' => 'Gjeldende passord er feil', + 'dumbpwd' => 'Passordet er for vanlig.', + 'statuslabel_type' => 'Du må velge en gyldig statusetikett-type', + + // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( + // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP + // people won't know how to format. + 'purchase_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'last_audit_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD hh:mm:ss format', + 'expiration_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'termination_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'expected_checkin.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'start_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'end_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'checkboxes' => ':attribute inneholder ugyldige valg.', + 'radio_buttons' => ':attribute er ugyldig.', + 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', + ], + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute + |-------------------------------------------------------------------------- + */ + + 'generic' => [ + 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + +]; diff --git a/resources/lang/nl-NL/account/general.php b/resources/lang/nl-NL/account/general.php index c5fedd4815..e2e0212973 100644 --- a/resources/lang/nl-NL/account/general.php +++ b/resources/lang/nl-NL/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Persoonlijke API-sleutels', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Je API-basis-url bevindt zich op:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens zijn ingesteld om te verlopen in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/nl-NL/admin/accessories/message.php b/resources/lang/nl-NL/admin/accessories/message.php index fddd09b6de..419ea67431 100644 --- a/resources/lang/nl-NL/admin/accessories/message.php +++ b/resources/lang/nl-NL/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Het accessoire is niet uitgecheckt. Probeer het opnieuw.', 'success' => 'Het accessoire is uitgecheckt.', 'unavailable' => 'Accessoire kan niet worden uitgegeven. Controleer de beschikbare hoeveelheid', - 'user_does_not_exist' => 'Deze gebruiker is ongeldig. Probeer het opnieuw.' + 'user_does_not_exist' => 'Deze gebruiker is ongeldig. Probeer het opnieuw.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/nl-NL/admin/consumables/general.php b/resources/lang/nl-NL/admin/consumables/general.php index 08610134ff..d3cc6e7488 100644 --- a/resources/lang/nl-NL/admin/consumables/general.php +++ b/resources/lang/nl-NL/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Resterende', 'total' => 'Totaal', 'update' => 'Wijzig verbruiksartikel', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/nl-NL/admin/consumables/message.php b/resources/lang/nl-NL/admin/consumables/message.php index ab30b212d7..295d2a8bc4 100644 --- a/resources/lang/nl-NL/admin/consumables/message.php +++ b/resources/lang/nl-NL/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Verbruiksartikel bestaat niet.', 'create' => array( diff --git a/resources/lang/nl-NL/admin/custom_fields/message.php b/resources/lang/nl-NL/admin/custom_fields/message.php index 64945a6124..e52efb7bed 100644 --- a/resources/lang/nl-NL/admin/custom_fields/message.php +++ b/resources/lang/nl-NL/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Dat veld bestaat niet.', 'already_added' => 'Veld is al toegevoegd', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Veld is niet aangemaakt, probeer het opnieuw.', diff --git a/resources/lang/nl-NL/admin/hardware/message.php b/resources/lang/nl-NL/admin/hardware/message.php index aa54f9c7f9..8db52dfbf9 100644 --- a/resources/lang/nl-NL/admin/hardware/message.php +++ b/resources/lang/nl-NL/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Waarschuwing: Dit bestand is gemarkeerd als niet-uitgeefbaar. - Als deze status is veranderd, update dan de asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Dit asset bestaat niet.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Sommige items zijn niet goed geïmporteerd.', 'errorDetail' => 'De volgende items zijn niet geïmporteerd vanwege fouten.', 'success' => 'Je bestand is geïmporteerd', diff --git a/resources/lang/nl-NL/admin/licenses/general.php b/resources/lang/nl-NL/admin/licenses/general.php index 7e19e47aa6..1e6266a9ec 100644 --- a/resources/lang/nl-NL/admin/licenses/general.php +++ b/resources/lang/nl-NL/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Licentiegegevens', 'license_seats' => 'Licentie werkplekken', 'seat' => 'Werkplek', + 'seat_count' => 'Seat :count', 'seats' => 'Werkplekken', 'software_licenses' => 'Applicatie Licenties', 'user' => 'Gebruiker', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Alle licenties inchecken', - 'modal' => 'Hiermee wordt één werkplek ingecheckt. | Hiermee worden alle :checkedout_seats_count werkplekken voor deze licentie ingecheckt.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Check ALLE werkplekken in voor deze licentie van zowel gebruikers als assets', 'disabled_tooltip' => 'Dit is uitgeschakeld omdat er nog niets is uitgecheckt', 'disabled_tooltip_reassignable' => 'Dit is uitgeschakeld omdat de licentie niet opnieuw toegewezen kan worden', 'success' => 'Licentie met succes ingecheckt! | Alle licenties zijn met succes ingecheckt!', - 'log_msg' => 'Ingecheckt via bulklicentie-checkin in licentie GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/nl-NL/admin/licenses/message.php b/resources/lang/nl-NL/admin/licenses/message.php index 385def0ec8..5830355d79 100644 --- a/resources/lang/nl-NL/admin/licenses/message.php +++ b/resources/lang/nl-NL/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Er was een probleem met het uitchecken van deze licentie. Probeer het opnieuw.', 'success' => 'De licentie is met succes uitgecheckt', 'not_enough_seats' => 'Niet genoeg licentieplaatsen beschikbaar voor de kassa', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/nl-NL/admin/models/message.php b/resources/lang/nl-NL/admin/models/message.php index 44bfefe9be..4a791c0d64 100644 --- a/resources/lang/nl-NL/admin/models/message.php +++ b/resources/lang/nl-NL/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WAARSCHUWING! Het asset model voor dit item is ongeldig of ontbreekt!', 'no_association_fix' => 'Dit maakt dingen kapot op rare en gruwelijke manieren. Bewerk dit product nu om het een model toe te wijzen.', 'assoc_users' => 'Dit model is momenteel gekoppeld met één of meer assets en kan niet worden verwijderd. Verwijder de assets en probeer het opnieuw. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model is niet aangemaakt, probeer het opnieuw.', diff --git a/resources/lang/nl-NL/admin/settings/general.php b/resources/lang/nl-NL/admin/settings/general.php index f314bd3ef6..9f3ce16f6a 100644 --- a/resources/lang/nl-NL/admin/settings/general.php +++ b/resources/lang/nl-NL/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Dit test enkel of LDAP correct kan synchroniseren. Als uw LDAP authenticatie vraag niet correct is, dan is het mogelijk dat gebruikers niet kunnen inloggen. U MOET EERST UW BIJGEWERKTE LDAP INSTELLINGEN OPSLAAN.', 'ldap_manager' => 'LDAP manager', 'ldap_server' => 'LDAP server', - 'ldap_server_help' => 'Dit moet beginnen met ldap:// (voor onversleuteld of TLS) of ldaps:// (voor SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificaat validatie', 'ldap_server_cert_ignore' => 'Staat ongeldige SSL certificaat toe', 'ldap_server_cert_help' => 'Selecteer deze box als je een eigen ondergetekende SSL certificaat gebruik en deze wilt accepteren.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'LDAP testen', 'ldap_test_sync' => 'LDAP-synchronisatie testen', 'license' => 'Softwarelicentie', - 'load_remote' => 'Gravatar gebruiken', - 'load_remote_help_text' => 'Schakel dit selectievakje uit als uw installatie geen scripts van buiten internet kan laden. Dit voorkomt dat Snipe-IT afbeeldingen van Gravatar probeert te laden.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Inlog pogingen', 'login_attempt' => 'Inlog poging', 'login_ip' => 'IP adres', @@ -150,7 +150,7 @@ return [ 'optional' => 'optioneel', 'per_page' => 'Resultaten per pagina', 'php' => 'PHP versie', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, systeem, info', 'php_overview_help' => 'PHP Systeem info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Tijdzone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/nl-NL/button.php b/resources/lang/nl-NL/button.php index 2756069bcc..918f9db217 100644 --- a/resources/lang/nl-NL/button.php +++ b/resources/lang/nl-NL/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Check Alles In / Verwijder Gebruiker', 'delete' => 'Verwijder', 'edit' => 'Bewerk', + 'clone' => 'Clone', 'restore' => 'Herstel', 'remove' => 'Verwijder', 'request' => 'Aanvraag', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Onderhoud toevoegen', 'append' => 'Aanvullen', 'new' => 'Nieuw', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/nl-NL/general.php b/resources/lang/nl-NL/general.php index 24908b9fa6..08eabcac5a 100644 --- a/resources/lang/nl-NL/general.php +++ b/resources/lang/nl-NL/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Licentie Zater|:count Licentie zitplaatsen', 'consumables' => ':count Verbruiksverbruiker|:count Verbruiksartikelen', 'components' => ':count Component|:count componenten', - ] + ], + 'more_info' => 'Meer Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Verloopt', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/nl-NL/mail.php b/resources/lang/nl-NL/mail.php index 41ed546cdf..46275730b7 100644 --- a/resources/lang/nl-NL/mail.php +++ b/resources/lang/nl-NL/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ik heb de gebruiksvoorwaarden gelezen en geaccepteerd en heb dit item ontvangen.', 'inventory_report' => 'Inventarisrapport', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Er is :count licentie die afloopt in de volgende :threshold dagen.|Er zijn :count licenties die vervallen in de volgende :threshold dagen.', 'link_to_update_password' => 'Klik op de volgende link om je :web wachtwoord te vernieuwen:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Er is :count asset die binnen :threshold dagen gecontroleerd moet worden.|Er zijn :count assets die binnen :threshold dagen gecontroleerd moeten worden.', 'user' => 'Gebruiker', 'username' => 'Gebruikersnaam', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welkom :name', 'welcome_to' => 'Welkom bij :web!', 'your_assets' => 'Bekijk je activa', 'your_credentials' => 'Je Snipe-IT inloggegevens', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/nl-NL/validation.php b/resources/lang/nl-NL/validation.php index 315895bdad..dfd703ebaa 100644 --- a/resources/lang/nl-NL/validation.php +++ b/resources/lang/nl-NL/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute moet geaccepteerd worden.', - 'active_url' => ':attribute is geen geldige URL.', - 'after' => ':attribute moet een datum zijn later dan :date.', - 'after_or_equal' => ':attribute moet een datum zijn later dan of gelijk aan :date.', - 'alpha' => ':attribute mag enkel letters bevatten.', - 'alpha_dash' => ':attribute mag enkel letters, cijfers of koppeltekens bevatten.', - 'alpha_num' => ':attribute mag enkel letters en cijfers bevatten.', - 'array' => ':attribute moet een array zijn.', - 'before' => ':attribute moet een datum zijn voor :date.', - 'before_or_equal' => ':attribute moet een datum zijn voor of gelijk aan :date.', - 'between' => [ - 'numeric' => ':attribute moet een waarde hebben tussen :min en :max.', - 'file' => ':attribute moet een waarde hebben tussen :min en :max kilobytes.', - 'string' => ':attribute moet tussen de :min en :max aantal karakters lang zijn.', - 'array' => ':attribute moet tussen de :min en :max items bevatten.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute moet waar of onwaar zijn.', - 'confirmed' => ':attribute bevestiging komt niet overeen.', - 'date' => ':attribute is geen geldige datum.', - 'date_format' => ':attribute komt niet overeen met het volgende formaat :format.', - 'different' => ':attribute en :other moeten verschillend zijn.', - 'digits' => ':attribute moet :digits cijfers lang zijn.', - 'digits_between' => ':attribute moet tussen de :min en :max cijfers bevatten.', - 'dimensions' => ':attribute heeft ongeldige afbeelding afmetingen.', - 'distinct' => ':attribute veld heeft een duplicaat waarde.', - 'email' => 'Het formaat van :attribute is ongeldig.', - 'exists' => 'Het geselecteerde kenmerk :attribute is ongeldig.', - 'file' => ':attribute moet een bestand zijn.', - 'filled' => ':attribute veld moet een waarde hebben.', - 'image' => ':attribute moet een afbeelding zijn.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ':attribute veld heeft een duplicaat waarde.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Het geselecteerde kenmerk :attribute is ongeldig.', + 'exists' => 'Het geselecteerde kenmerk :attribute is ongeldig.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ':attribute veld moet een waarde hebben.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'De waarde voor :fieldname kan niet leeg zijn.', - 'in' => 'Het geselecteerde kenmerk :attribute is ongeldig.', - 'in_array' => ':attribute veld bestaat niet in :other.', - 'integer' => ':attribute moet van het type integer zijn.', - 'ip' => ':attribute moet een geldig IP-adres zijn.', - 'ipv4' => ':attribute moet een geldig IP-adres zijn.', - 'ipv6' => ':attribute moet een geldig IPv6-adres zijn.', - 'is_unique_department' => ':attribute moet uniek zijn voor deze bedrijfslocatie', - 'json' => ':attribute moet valide JSON code zijn.', - 'max' => [ - 'numeric' => ':attribute moet groter zijn dan :max.', - 'file' => ':attribute mag niet groter zijn dan :max kilobytes.', - 'string' => ':attribute mag niet langer zijn dan :max karakters.', - 'array' => ':attribute mag niet meer dan :max items bevatten.', + 'in' => 'Het geselecteerde kenmerk :attribute is ongeldig.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute moet een bestand zijn van het type: :values.', - 'mimetypes' => ':attribute moet een bestand zijn van het type: :values.', - 'min' => [ - 'numeric' => ':attribute moet minimum :min zijn.', - 'file' => ':attribute moet minstens :min kilobytes groot zijn.', - 'string' => ':attribute moet tenminste :min karakters bevatten.', - 'array' => ':attribute moet minimaal :min items bevatten.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute moet met één van de volgende waarden eindigen: :values.', - 'ends_with' => ':attribute moet met één van de volgende waarden eindigen: :values.', - - 'not_in' => 'Het geselecteerde kenmerk :attribute is ongeldig.', - 'numeric' => ':attribute moet een getal zijn.', - 'present' => ':attribute veld moet aanwezig zijn.', - 'valid_regex' => 'Dit is geen geldige regex. ', - 'regex' => 'Het formaat van :attribute is ongeldig.', - 'required' => 'Het veld :attribute is verplicht.', - 'required_if' => 'het veld :attribute is verplicht als :other gelijk is aan :value.', - 'required_unless' => ':attribute veld is vereist tenzij :other is in :values.', - 'required_with' => 'Het veld :attribute is verplicht als :values ingesteld staan.', - 'required_with_all' => ':attribute veld is vereist wanneer :values aanwezig is.', - 'required_without' => 'Het veld :attribute is verplicht als :values niet ingesteld staan.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Het geselecteerde kenmerk :attribute is ongeldig.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ':attribute veld moet aanwezig zijn.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Het veld :attribute is verplicht.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'het veld :attribute is verplicht als :other gelijk is aan :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => ':attribute veld is vereist tenzij :other is in :values.', + 'required_with' => 'Het veld :attribute is verplicht als :values ingesteld staan.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Het veld :attribute is verplicht als :values niet ingesteld staan.', 'required_without_all' => ':attribute veld is vereist wanneer geen van :values aanwezig zijn.', - 'same' => ':attribute en :other moeten gelijk zijn.', - 'size' => [ - 'numeric' => ':attribute moet :size zijn.', - 'file' => ':attribute moet :size kilobytes groot zijn.', - 'string' => ':attribute moet :size karakters zijn.', - 'array' => ':attribute moet :size items bevatten.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute moet een string zijn.', - 'timezone' => ':attribute moet een geldige zone zijn.', 'two_column_unique_undeleted' => ':attribute moet uniek zijn in :table1 en :table2. ', - 'unique' => 'Het veld :attribute is reeds in gebruik.', - 'uploaded' => 'Uploaden van :attribute is mislukt.', - 'url' => 'Het formaat van :attribute is ongeldig.', 'unique_undeleted' => 'De :attribute moet uniek zijn. ', 'non_circular' => ':attribute mag geen circulaire referentie aanmaken.', 'not_array' => ':attribute kan geen array zijn.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Wachtwoord moet ten minste één cijfer bevatten.', 'case_diff' => 'Wachtwoord moet kleine letters en hoofdletters bevatten.', 'symbols' => 'Wachtwoord moet symbolen bevatten.', - 'gte' => [ - 'numeric' => 'Waarde mag niet negatief zijn' - ], - 'checkboxes' => ':attribute bevat ongeldige opties.', - 'radio_buttons' => ':attribute is ongeldig.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Het veld :attribute is reeds in gebruik.', + 'uploaded' => 'Uploaden van :attribute is mislukt.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute moet een geldige datum zijn in JJJJ-MM-DD formaat', 'last_audit_date.date_format' => ':attribute moet een geldige datum zijn in JJJJ-MM-DD uu:mm:ss formaat', 'expiration_date.date_format' => ':attribute moet een geldige datum zijn in JJJJ-MM-DD formaat', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute moet een geldige datum zijn in JJJJ-MM-DD formaat', 'start_date.date_format' => ':attribute moet een geldige datum zijn in JJJJ-MM-DD formaat', 'end_date.date_format' => ':attribute moet een geldige datum zijn in JJJJ-MM-DD formaat', - - ], - + 'checkboxes' => ':attribute bevat ongeldige opties.', + 'radio_buttons' => ':attribute is ongeldig.', + 'invalid_value_in_field' => 'Ongeldige waarde ingevoerd in dit veld', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Ongeldige waarde ingevoerd in dit veld', + + 'generic' => [ + 'invalid_value_in_field' => 'Ongeldige waarde ingevoerd in dit veld', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/nn-NO/account/general.php b/resources/lang/nn-NO/account/general.php new file mode 100644 index 0000000000..9a4242971b --- /dev/null +++ b/resources/lang/nn-NO/account/general.php @@ -0,0 +1,15 @@ + 'Personlige API-nøkler', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', + 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'api_base_url' => 'Din API base-url finnes på:', + 'api_base_url_endpoint' => '/<endpoint>', + 'api_token_expiration_time' => 'API-tokens er satt til å utløpe om:', + 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', + 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', +); diff --git a/resources/lang/nn-NO/admin/accessories/general.php b/resources/lang/nn-NO/admin/accessories/general.php new file mode 100644 index 0000000000..871c6c549c --- /dev/null +++ b/resources/lang/nn-NO/admin/accessories/general.php @@ -0,0 +1,22 @@ + 'Tilbehørskategori', + 'accessory_name' => 'Navn tilbehør', + 'checkout' => 'Sjekk ut tilbehør', + 'checkin' => 'Sjekk inn tilbehør', + 'create' => 'Legg til tilbehør', + 'edit' => 'Rediger tilbehør', + 'eula_text' => 'EULA-kategori', + 'eula_text_help' => 'Dette feltet lar deg tilpasse dine EULA for spesifikke typer eiendeler. Hvis du har kun en EULA for alle eiendeler kan du krysse av nedenfor for å bruke standard.', + 'require_acceptance' => 'Krev at brukere bekrefter aksept av eiendeler i denne kategorien.', + 'no_default_eula' => 'Ingen standard EULA funnet. Legg til en i Innstillinger.', + 'total' => 'Total', + 'remaining' => 'Tilgjengelig', + 'update' => 'Oppdater tilbehør', + 'use_default_eula' => 'Bruk standard EULA i stedet.', + 'use_default_eula_disabled' => 'Bruk standard EULA i stedet. Ingen standard EULA er satt. Legg til en i Innstillinger.', + 'clone' => 'Klon tilbehør', + 'delete_disabled' => 'Dette tilbehøret kan ikke slettes enda fordi noen elementer er fremdeles sjekket ut.', + +); diff --git a/resources/lang/nn-NO/admin/accessories/message.php b/resources/lang/nn-NO/admin/accessories/message.php new file mode 100644 index 0000000000..c6e641c692 --- /dev/null +++ b/resources/lang/nn-NO/admin/accessories/message.php @@ -0,0 +1,43 @@ + 'Tilbehøret [:id] finnes ikke.', + 'not_found' => 'Finner ikke dette tilbehøret.', + 'assoc_users' => 'Dette tilbehøret har for øyeblikket :count enheter utsjekket til brukere. Sjekk inn tilbehøret og prøv igjen. ', + + 'create' => array( + 'error' => 'Tilbehør ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Tilbehør optrettet.' + ), + + 'update' => array( + 'error' => 'Tilbehør ble ikke oppdatert, vennligst prøv igjen', + 'success' => 'Tilbehør oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette dette tilbehøret?', + 'error' => 'Det oppstod et problem under sletting av tilbehøret. Prøv igjen.', + 'success' => 'Tilbehøret ble slettet.' + ), + + 'checkout' => array( + 'error' => 'Tilbehør ble ikke sjekket ut. Prøv igjen', + 'success' => 'Vellykket utsjekking av tilbehør.', + 'unavailable' => 'Tilbehør er ikke tilgjengelig for utsjekk. Sjekk antall tilgjengelig', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + + ), + + 'checkin' => array( + 'error' => 'Tilbehør ble ikke sjekket inn. Prøv igjen', + 'success' => 'Vellykket innsjekk av tilbehør.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.' + ) + + +); diff --git a/resources/lang/nn-NO/admin/accessories/table.php b/resources/lang/nn-NO/admin/accessories/table.php new file mode 100644 index 0000000000..f154d8fe91 --- /dev/null +++ b/resources/lang/nn-NO/admin/accessories/table.php @@ -0,0 +1,11 @@ + 'Last ned CSV', + 'eula_text' => 'EULA', + 'id' => 'ID', + 'require_acceptance' => 'Godtatt', + 'title' => 'Navn tilbehør', + + +); diff --git a/resources/lang/nn-NO/admin/asset_maintenances/form.php b/resources/lang/nn-NO/admin/asset_maintenances/form.php new file mode 100644 index 0000000000..cb77da7bbe --- /dev/null +++ b/resources/lang/nn-NO/admin/asset_maintenances/form.php @@ -0,0 +1,14 @@ + 'Ressurs vedlikeholds type', + 'title' => 'Tittel', + 'start_date' => 'Startdato', + 'completion_date' => 'Fullført dato', + 'cost' => 'Kostnad', + 'is_warranty' => 'Uthevet garanti', + 'asset_maintenance_time' => 'Tid brukt på ressursvedlikehold (i dager)', + 'notes' => 'Notater', + 'update' => 'Oppdater ressurs vedlikehold', + 'create' => 'Opprett ressurs vedlikehold' + ]; diff --git a/resources/lang/nn-NO/admin/asset_maintenances/general.php b/resources/lang/nn-NO/admin/asset_maintenances/general.php new file mode 100644 index 0000000000..4c36e8e6b9 --- /dev/null +++ b/resources/lang/nn-NO/admin/asset_maintenances/general.php @@ -0,0 +1,16 @@ + 'Vedlikehold av eiendeler', + 'edit' => 'Rediger Vedlikehold', + 'delete' => 'Slett Vedlikehold', + 'view' => 'Vedlikehold detaljer', + 'repair' => 'Reparerasjon', + 'maintenance' => 'Vedlikehold', + 'upgrade' => 'Oppgradering', + 'calibration' => 'Kalibrering', + 'software_support' => 'Programvarestøtte', + 'hardware_support' => 'Maskinvare støtte', + 'configuration_change' => 'Konfigurasjons endring', + 'pat_test' => 'PAT test', + ]; diff --git a/resources/lang/nn-NO/admin/asset_maintenances/message.php b/resources/lang/nn-NO/admin/asset_maintenances/message.php new file mode 100644 index 0000000000..7b387a2973 --- /dev/null +++ b/resources/lang/nn-NO/admin/asset_maintenances/message.php @@ -0,0 +1,21 @@ + 'Fant ikke vedlikeholdet du så etter!', + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette dette vedlikeholdet?', + 'error' => 'Kunne ikke slette vedlikholdet. Prøv igjen.', + 'success' => 'Vedlikeholdet ble slettet.', + ], + 'create' => [ + 'error' => 'Vedlikeholdet ble ikke opprettet, prøv igjen.', + 'success' => 'Vedlikeholdet ble opprettet.', + ], + 'edit' => [ + 'error' => 'Vedlikeholdet ble ikke opprettet, prøv igjen.', + 'success' => 'Vedlikehold endret vellykket.', + ], + 'asset_maintenance_incomplete' => 'Enda Ikke fullført', + 'warranty' => 'Garanti', + 'not_warranty' => 'Ikke garanti', + ]; diff --git a/resources/lang/nn-NO/admin/asset_maintenances/table.php b/resources/lang/nn-NO/admin/asset_maintenances/table.php new file mode 100644 index 0000000000..9a584665a5 --- /dev/null +++ b/resources/lang/nn-NO/admin/asset_maintenances/table.php @@ -0,0 +1,8 @@ + 'Vedlikehold av eiendel', + 'asset_name' => 'Navn', + 'is_warranty' => 'Garanti', + 'dl_csv' => 'Last ned CSV', + ]; diff --git a/resources/lang/nn-NO/admin/categories/general.php b/resources/lang/nn-NO/admin/categories/general.php new file mode 100644 index 0000000000..4c02d73ecb --- /dev/null +++ b/resources/lang/nn-NO/admin/categories/general.php @@ -0,0 +1,25 @@ + 'Kategorier', + 'category_name' => 'Navn', + 'checkin_email' => 'Send epost til bruker ved innsjekking/utsjekking.', + 'checkin_email_notification' => 'Det vil bli sendt en e-post til bruker ved innsjekking/utsjekking.', + 'clone' => 'Klon kategori', + 'create' => 'Opprett kategori', + 'edit' => 'Rediger kategori', + 'email_will_be_sent_due_to_global_eula' => 'En e-post sendes til brukeren fordi den globale EULA er i bruk.', + 'email_will_be_sent_due_to_category_eula' => 'En e-post blir sendt til brukeren fordi en EULA er angitt for denne kategorien.', + 'eula_text' => 'EULA-kategori', + 'eula_text_help' => 'Dette feltet lar deg tilpasse dine EULA for spesifikke typer eiendeler. Hvis du kun har en EULA for alle eiendeler kan du krysse av nedenfor for å bruke standard.', + 'name' => 'Kategorinavn', + 'require_acceptance' => 'Krev at brukere bekrefter aksept av eiendeler i denne kategorien.', + 'required_acceptance' => 'Denne brukeren vil få e-post med en lenke for å bekrefte aksept av enheten.', + 'required_eula' => 'Denne brukeren vil få en kopi av EULA på e-post', + 'no_default_eula' => 'Ingen standard EULA funnet. Legg til en i Innstillinger.', + 'update' => 'Oppdatere kategori', + 'use_default_eula' => 'Bruk standard EULA i stedet.', + 'use_default_eula_disabled' => 'Bruk standard EULA i stedet. Ingen standard EULA er satt. Legg til en i Innstillinger.', + 'use_default_eula_column' => 'Bruk standard EULA', + +); diff --git a/resources/lang/nn-NO/admin/categories/message.php b/resources/lang/nn-NO/admin/categories/message.php new file mode 100644 index 0000000000..2d93711bc6 --- /dev/null +++ b/resources/lang/nn-NO/admin/categories/message.php @@ -0,0 +1,27 @@ + 'Kategorien eksisterer ikke.', + 'assoc_models' => 'Denne kategorien er koblet til minst èn modell og kan ikke slettes. Vennligst oppdater dine modeller til å ikke referere til denne kategorien og prøv igjen. ', + 'assoc_items' => 'Denne kategorien er knyttet til minst én :asset_type og kan ikke slettes. Oppdater din :asset_type til å ikke lenger refererer til denne kategorien, og prøv på nytt. ', + + 'create' => array( + 'error' => 'Kategorien ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Kategorien ble opprettet.' + ), + + 'update' => array( + 'error' => 'Kategorien ble ikke opprettet, vennligst prøv igjen', + 'success' => 'Kategorien ble oppdatert.', + 'cannot_change_category_type' => 'Du kan ikke endre kategori typen når den har blitt opprettet', + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på du vil slette denne kategorien?', + 'error' => 'Det oppsto et problem ved sletting av kategorien. Vennligst prøv igjen. +', + 'success' => 'Kategorien ble slettet.' + ) + +); diff --git a/resources/lang/nn-NO/admin/categories/table.php b/resources/lang/nn-NO/admin/categories/table.php new file mode 100644 index 0000000000..6f07705218 --- /dev/null +++ b/resources/lang/nn-NO/admin/categories/table.php @@ -0,0 +1,10 @@ + 'EULA', + 'id' => 'ID', + 'parent' => 'Overordnet kategori', + 'require_acceptance' => 'Godtatt', + 'title' => 'Kategorinavn', + +); diff --git a/resources/lang/nn-NO/admin/companies/general.php b/resources/lang/nn-NO/admin/companies/general.php new file mode 100644 index 0000000000..dc4853775f --- /dev/null +++ b/resources/lang/nn-NO/admin/companies/general.php @@ -0,0 +1,7 @@ + 'Velg bedrift', + 'about_companies' => 'Om bedrifter', + 'about_companies_description' => ' Du kan bruke bedrifter som et enkelt informasjonsfelt, eller slå på Full Bedriftstøtte i Admin-innstillingene for å kunne begrense tilgangen til brukere fra forskjellige bedrifter.', +]; diff --git a/resources/lang/nn-NO/admin/companies/message.php b/resources/lang/nn-NO/admin/companies/message.php new file mode 100644 index 0000000000..284a2d4344 --- /dev/null +++ b/resources/lang/nn-NO/admin/companies/message.php @@ -0,0 +1,20 @@ + 'Bedriften eksisterer ikke.', + 'deleted' => 'Slett firma', + 'assoc_users' => 'Denne bedriften er tilknyttet minst en modell og kan ikke slettes. Oppdater modellene dine til å ikke refere til denne bedriften og prøv igjen. ', + 'create' => [ + 'error' => 'Bedriften ble ikke opprette. Prøv igjen.', + 'success' => 'Bedriften ble opprettet.', + ], + 'update' => [ + 'error' => 'Bedriften ble ikke oppdatert. Prøv igjen', + 'success' => 'Bedriften ble oppdatert.', + ], + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette denne bedriften?', + 'error' => 'Feil ved sletting av bedrift. Prøv igjen.', + 'success' => 'Bedriften ble slettet.', + ], +]; diff --git a/resources/lang/nn-NO/admin/companies/table.php b/resources/lang/nn-NO/admin/companies/table.php new file mode 100644 index 0000000000..f809bbe267 --- /dev/null +++ b/resources/lang/nn-NO/admin/companies/table.php @@ -0,0 +1,11 @@ + 'Bedrifter', + 'create' => 'Opprett bedrift', + 'email' => 'E-postadresse for firma', + 'title' => 'Bedrift', + 'phone' => 'Telefon for firma', + 'update' => 'Oppdater bedrift', + 'name' => 'Navn på bedrift', + 'id' => 'ID', +); diff --git a/resources/lang/nn-NO/admin/components/general.php b/resources/lang/nn-NO/admin/components/general.php new file mode 100644 index 0000000000..7f6209fad5 --- /dev/null +++ b/resources/lang/nn-NO/admin/components/general.php @@ -0,0 +1,16 @@ + 'Komponent navn', + 'checkin' => 'Sjekk inn komponent', + 'checkout' => 'Sjekk ut komponent', + 'cost' => 'Innkjøpskostnad', + 'create' => 'Opprett komponent', + 'edit' => 'Endre komponent', + 'date' => 'Kjøpsdato', + 'order' => 'Ordreummer', + 'remaining' => 'Gjenstår', + 'total' => 'Total', + 'update' => 'Oppdater komponent', + 'checkin_limit' => 'Antall sjekket inn må være lik eller mindre enn :assigned_qty' +); diff --git a/resources/lang/nn-NO/admin/components/message.php b/resources/lang/nn-NO/admin/components/message.php new file mode 100644 index 0000000000..af968e45f9 --- /dev/null +++ b/resources/lang/nn-NO/admin/components/message.php @@ -0,0 +1,37 @@ + 'Komponenten finnes ikke.', + + 'create' => array( + 'error' => 'Komponenten ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Komponent ble opprettet.' + ), + + 'update' => array( + 'error' => 'Komponenten ble ikke oppdatert. Vennligst prøv igjen', + 'success' => 'Komponent ble oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne komponenten?', + 'error' => 'Det oppstod et problem under sletting av komponenten. Vennligst prøv igjen.', + 'success' => 'Sletting av komponent vellykket.' + ), + + 'checkout' => array( + 'error' => 'Komponent ble ikke sjekket ut. Prøv igjen', + 'success' => 'Vellykket utsjekk av komponent.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.', + 'unavailable' => 'Ikke nok komponenter igjen: :remaining gjenværende, :requested ', + ), + + 'checkin' => array( + 'error' => 'Komponenten ble ikke sjekket inn, vennligst prøv igjen', + 'success' => 'Vellykket innsjekk av komponent.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.' + ) + + +); diff --git a/resources/lang/nn-NO/admin/components/table.php b/resources/lang/nn-NO/admin/components/table.php new file mode 100644 index 0000000000..f2692003d6 --- /dev/null +++ b/resources/lang/nn-NO/admin/components/table.php @@ -0,0 +1,5 @@ + 'Komponentnavn', +); diff --git a/resources/lang/nn-NO/admin/consumables/general.php b/resources/lang/nn-NO/admin/consumables/general.php new file mode 100644 index 0000000000..cf7e29fcd3 --- /dev/null +++ b/resources/lang/nn-NO/admin/consumables/general.php @@ -0,0 +1,12 @@ + 'Sjekk ut Forbruksvare til Bruker', + 'consumable_name' => 'Navn på forbruksvare', + 'create' => 'Legg til forbruksvare', + 'item_no' => 'Varenr.', + 'remaining' => 'Gjenstår', + 'total' => 'Total', + 'update' => 'Oppdater forbruksvare', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', +); diff --git a/resources/lang/nn-NO/admin/consumables/message.php b/resources/lang/nn-NO/admin/consumables/message.php new file mode 100644 index 0000000000..e652d40ef6 --- /dev/null +++ b/resources/lang/nn-NO/admin/consumables/message.php @@ -0,0 +1,38 @@ + 'The category must be a consumable category.', + 'does_not_exist' => 'Forbruksvaren finnes ikke.', + + 'create' => array( + 'error' => 'Forbruksvaren bli ikke opprettet, prøv igjen.', + 'success' => 'Forbruksvaren opprettet.' + ), + + 'update' => array( + 'error' => 'Forbruksvaren ble ikke opprettet, prøv igjen', + 'success' => 'Forbruksvare oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at forbruksmateriellet skal slettes?', + 'error' => 'Noe gikk feil under sletting av forbruksvaren. Prøv igjen.', + 'success' => 'Forbruksmateriell ble slettet.' + ), + + 'checkout' => array( + 'error' => 'Forbruksvaren ble ikke tatt ut, prøv igjen', + 'success' => 'Forbruksvaren ble tatt ut.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.', + 'unavailable' => 'Det er ikke nok forbruksvarer for denne utsjekken. Kontroller antallet igjen. ', + ), + + 'checkin' => array( + 'error' => 'Forbruksvaren ble ikke lagt inn, prøv igjen', + 'success' => 'Forbruksvaren ble tatt ut.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.' + ) + + +); diff --git a/resources/lang/nn-NO/admin/consumables/table.php b/resources/lang/nn-NO/admin/consumables/table.php new file mode 100644 index 0000000000..329fb1e136 --- /dev/null +++ b/resources/lang/nn-NO/admin/consumables/table.php @@ -0,0 +1,5 @@ + 'Navn på forbruksvare', +); diff --git a/resources/lang/nn-NO/admin/custom_fields/general.php b/resources/lang/nn-NO/admin/custom_fields/general.php new file mode 100644 index 0000000000..2f88f383a7 --- /dev/null +++ b/resources/lang/nn-NO/admin/custom_fields/general.php @@ -0,0 +1,61 @@ + 'Egendefinerte Felt', + 'manage' => 'Administrer', + 'field' => 'Felt', + 'about_fieldsets_title' => 'Om Feltsett', + 'about_fieldsets_text' => 'Feltsett lar deg opprette grupper av egendefinerte felt som kan gjenbrukes til bestemte modelltyper.', + 'custom_format' => 'Tilpasset Regex-format...', + 'encrypt_field' => 'Kryptere verdien av dette feltet i databasen', + 'encrypt_field_help' => 'ADVARSEL: Ved å kryptere et felt gjør du at det ikke kan søkes på.', + 'encrypted' => 'Kryptert', + 'fieldset' => 'Feltsett', + 'qty_fields' => 'Antall Felt', + 'fieldsets' => 'Feltsett', + 'fieldset_name' => 'Feltsett Navn', + 'field_name' => 'Felt Navn', + 'field_values' => 'Felt verdier', + 'field_values_help' => 'Legge til alternativer, ett per linje. Tomme linjer utenom den første vil bli ignorerert.', + 'field_element' => 'Skjema Element', + 'field_element_short' => 'Element', + 'field_format' => 'Format', + 'field_custom_format' => 'Egendefinert Format', + 'field_custom_format_help' => 'Dette feltet lar deg bruke et regex-uttrykk for validering. Det skal begynne med "regex:" - for eksempel å validere at en egendefinert feltverdi inneholder en gyldig IMEI (15 numeriske siffer), vil du bruke regex:/^[0-9]{15}$/.', + 'required' => 'Obligatorisk', + 'req' => 'Obl.', + 'used_by_models' => 'Brukes av modeller', + 'order' => 'Bestill', + 'create_fieldset' => 'Nytt Feltsett', + 'update_fieldset' => 'Oppdater Feltsett', + 'fieldset_does_not_exist' => 'Feltsett :id eksisterer ikke', + 'fieldset_updated' => 'Feltsett oppdatert', + 'create_fieldset_title' => 'Opprett et nytt feltsett', + 'create_field' => 'Nytt Egendefinert Felt', + 'create_field_title' => 'Opprett nytt egendefinert felt', + 'value_encrypted' => 'Verdien i dette feltet er kryptert i databasen. Bare administratorer kan se hva som står i dette feltet', + 'show_in_email' => 'Inkluder verdien i dette feltet i utsjekkseposter sendt til brukeren? Krypterte felter kan ikke inkluderes i eposter', + 'show_in_email_short' => 'Inkludere i epost.', + 'help_text' => 'Hjelpetekst', + 'help_text_description' => 'Dette er en valgfri tekst som vises under feltet når man redigerer et element, ment for å gi kontekst til feltets innhold.', + 'about_custom_fields_title' => 'Om egendefinerte felt', + 'about_custom_fields_text' => 'Egendefinerte felt lar deg legge til vilkårlige attributter til eiendeler.', + 'add_field_to_fieldset' => 'Legg feltet inn i feltsett', + 'make_optional' => 'Påkrevd - klikk for å gjøre valgfritt', + 'make_required' => 'Valgfritt - klikk for å gjøre påkrevd', + 'reorder' => 'Endre rekkefølge', + 'db_field' => 'DB-felt', + 'db_convert_warning' => 'ADVARSEL: Dette feltet er i tabellen for egendefinerte felt som :db_column, men burde være :expected.', + 'is_unique' => 'Denne verdien må være unik for alle ressurser', + 'unique' => 'Unik', + 'display_in_user_view' => 'Tillat den utsjekkede brukeren å se disse verdiene i deres Vis tildelte ressurs-side', + 'display_in_user_view_table' => 'Synlig for bruker', + 'auto_add_to_fieldsets' => 'Legg denne til automatisk i hvert nye feltsett', + 'add_to_preexisting_fieldsets' => 'Legg til i alle eksisterende gruppene', + 'show_in_listview' => 'Vis i listevisninger som standard. Autoriserte brukere kan fortsatt vise/skjule via kolonnevelgeren', + 'show_in_listview_short' => 'Vis i lister', + 'show_in_requestable_list_short' => 'Vis i liste over ressurser som kan være tilgjengelig på forespørsel', + 'show_in_requestable_list' => 'Vis verdi i listen over ressurser som kan være tilgjengelig på forspørsel. Krypterte felter vises ikke', + 'encrypted_options' => 'Feltet er kryptert, så noen visningsalternativer er ikke tilgjengelig.', + +]; diff --git a/resources/lang/nn-NO/admin/custom_fields/message.php b/resources/lang/nn-NO/admin/custom_fields/message.php new file mode 100644 index 0000000000..976984aae1 --- /dev/null +++ b/resources/lang/nn-NO/admin/custom_fields/message.php @@ -0,0 +1,64 @@ + array( + 'invalid' => 'Feltet finnes ikke.', + 'already_added' => 'Feltet er allerede lagt til', + 'none_selected' => 'No field selected', + + 'create' => array( + 'error' => 'Feltet ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Felt opprettet.', + 'assoc_success' => 'Feltet ble lagt til.' + ), + + 'update' => array( + 'error' => 'Feltet ble ikke oppdatert, vennligst prøv igjen', + 'success' => 'Felt oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette dette feltet?', + 'error' => 'Det oppstod et problem ved sletting av feltet. Vennligst prøv igjen senere.', + 'success' => 'Feltet ble slettet.', + 'in_use' => 'Feltet er fremdeles i bruk.', + ) + + ), + + 'fieldset' => array( + + 'does_not_exist' => 'Fieldset eksisterer ikke', + + 'create' => array( + 'error' => 'Feltsettet ble ikke opprettet, vennligst prøv igjen.', + 'success' => 'Feltsettet ble opprettet.' + ), + + 'update' => array( + 'error' => 'Feltsettet ble ikke oppdatert, vennligst prøv igjen', + 'success' => 'Feltsettet ble oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette feltsettet?', + 'error' => 'Det oppstod et problem ved sletting av feltsettet. Vennligst prøv igjen.', + 'success' => 'Feltsettet ble slettet.', + 'in_use' => 'Feltsettet er fortsatt i bruk.', + ) + + ), + + 'fieldset_default_value' => array( + + 'error' => 'Feil ved validering av standardverdier for feltsett.', + + ), + + + + + + +); diff --git a/resources/lang/nn-NO/admin/departments/message.php b/resources/lang/nn-NO/admin/departments/message.php new file mode 100644 index 0000000000..5aad3f223c --- /dev/null +++ b/resources/lang/nn-NO/admin/departments/message.php @@ -0,0 +1,22 @@ + 'Avdeling finnes ikke.', + 'department_already_exists' => 'En avdeling finnes allerede med det navnet i denne bedriftsplassen. Eller velg et mer spesifikt navn for denne avdelingen. ', + 'assoc_users' => 'Denne avdelingen er knyttet til minst én bruker og kan ikke slettes. Oppdater brukerne ikke lenger refererer til denne avdelingen og prøv igjen. ', + 'create' => array( + 'error' => 'Avdelingen ble ikke opprettet, prøv igjen.', + 'success' => 'Avdeling opprettet.' + ), + 'update' => array( + 'error' => 'Avdelingen ble ikke oppdatert, prøv igjen', + 'success' => 'Avdeling oppdatert.' + ), + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne avdelingen?', + 'error' => 'Det var et problem med å slette avdelingen. Prøv på nytt.', + 'success' => 'Avdelingen ble slettet.' + ) + +); diff --git a/resources/lang/nn-NO/admin/departments/table.php b/resources/lang/nn-NO/admin/departments/table.php new file mode 100644 index 0000000000..3373541407 --- /dev/null +++ b/resources/lang/nn-NO/admin/departments/table.php @@ -0,0 +1,11 @@ + 'ID', + 'name' => 'Avdelingsnavn', + 'manager' => 'Leder', + 'location' => 'Plassering', + 'create' => 'Opprett avdeling', + 'update' => 'Oppdater avdeling', + ); diff --git a/resources/lang/nn-NO/admin/depreciations/general.php b/resources/lang/nn-NO/admin/depreciations/general.php new file mode 100644 index 0000000000..be4f6d862c --- /dev/null +++ b/resources/lang/nn-NO/admin/depreciations/general.php @@ -0,0 +1,16 @@ + 'Om avskrivninger', + 'about_depreciations' => 'Du kan sette opp avskrivninger for å kostnadsføre eiendeler basert på en lineær avskrivning i perioden.', + 'asset_depreciations' => 'Avskrivninger', + 'create' => 'Opprett avskrivning', + 'depreciation_name' => 'Avskrivningsnavn', + 'depreciation_min' => 'Nedre verdi for avskrivning', + 'number_of_months' => 'Antall måneder', + 'update' => 'Oppdater avskrivninger', + 'depreciation_min' => 'Minimumsverdi etter avskrivning', + 'no_depreciations_warning' => 'Advarsel: + Du har for øyeblikket ingen avskrivninger satt opp. + Vennligst sett opp minst én avskrivning for å se avskrivningsrapporten.', +]; diff --git a/resources/lang/nn-NO/admin/depreciations/message.php b/resources/lang/nn-NO/admin/depreciations/message.php new file mode 100644 index 0000000000..4c56baa473 --- /dev/null +++ b/resources/lang/nn-NO/admin/depreciations/message.php @@ -0,0 +1,25 @@ + 'Avskrivningen eksisterer ikke.', + 'assoc_users' => 'Denne avskrivningen er tilknyttet én eller flere modeller og kan ikke slettes. Vennligst slett modellene og prøv å slette på nytt. ', + + + 'create' => array( + 'error' => 'Avskrivningen ble ikke opprettet, vennligst prøv igjen. :(', + 'success' => 'Avskrivningen ble opprettet. :)' + ), + + 'update' => array( + 'error' => 'Avskrivningen ble ikke oppdatert, vennligst prøv igjen', + 'success' => 'Avskrivningen ble oppdatert.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne avskrivningen ?', + 'error' => 'Det oppsto et problem med sletting av avskrivningen. Vennligst prøv igjen.', + 'success' => 'Avskrivningen ble slettet.' + ) + +); diff --git a/resources/lang/nn-NO/admin/depreciations/table.php b/resources/lang/nn-NO/admin/depreciations/table.php new file mode 100644 index 0000000000..4e986a38be --- /dev/null +++ b/resources/lang/nn-NO/admin/depreciations/table.php @@ -0,0 +1,11 @@ + 'ID', + 'months' => 'Måneder', + 'term' => 'Avskrivningsperiode', + 'title' => 'Navn ', + 'depreciation_min' => 'Nedre verdi', + +]; diff --git a/resources/lang/nn-NO/admin/groups/message.php b/resources/lang/nn-NO/admin/groups/message.php new file mode 100644 index 0000000000..1053f2c438 --- /dev/null +++ b/resources/lang/nn-NO/admin/groups/message.php @@ -0,0 +1,22 @@ + 'Gruppen eksisterer allerede!', + 'group_not_found' => 'Gruppe-ID :id finnes ikke.', + 'group_name_required' => 'Navnefeltet er påkrevd', + + 'success' => array( + 'create' => 'Gruppen ble opprettet.', + 'update' => 'Gruppen ble oppdatert.', + 'delete' => 'Gruppen ble slettet.', + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne gruppen?', + 'create' => 'Det oppsto et problem med oppretting av gruppen. Vennligst prøv igjen.', + 'update' => 'Det oppsto et problem med oppdatering av gruppen. Vennligst prøv igjen.', + 'delete' => 'Det oppsto et problem med sletting av gruppen. Vennligst prøv igjen.', + ), + +); diff --git a/resources/lang/nn-NO/admin/groups/table.php b/resources/lang/nn-NO/admin/groups/table.php new file mode 100644 index 0000000000..e8f777138c --- /dev/null +++ b/resources/lang/nn-NO/admin/groups/table.php @@ -0,0 +1,9 @@ + 'Id', + 'name' => 'Navn', + 'users' => 'Antall brukere', + +); diff --git a/resources/lang/nn-NO/admin/groups/titles.php b/resources/lang/nn-NO/admin/groups/titles.php new file mode 100644 index 0000000000..bce3673e6f --- /dev/null +++ b/resources/lang/nn-NO/admin/groups/titles.php @@ -0,0 +1,16 @@ + 'Om grupper', + 'about_groups' => 'Grupper brukes til å generalisere brukertillatelser.', + 'group_management' => 'Gruppeadministrasjon', + 'create' => 'Opprett ny gruppe', + 'update' => 'Rediger gruppe', + 'group_name' => 'Gruppenavn', + 'group_admin' => 'Gruppeadministrator', + 'allow' => 'Tillat', + 'deny' => 'Avslå', + 'permission' => 'Rettigheter', + 'grant' => 'Gi tilgang', + 'no_permissions' => 'Denne gruppen har ingen rettigheter.' +]; diff --git a/resources/lang/nn-NO/admin/hardware/form.php b/resources/lang/nn-NO/admin/hardware/form.php new file mode 100644 index 0000000000..f58d7b8cb9 --- /dev/null +++ b/resources/lang/nn-NO/admin/hardware/form.php @@ -0,0 +1,62 @@ + 'Bekreft sletting av flere enheter', + 'bulk_restore' => 'Bekreft sletting av flere enheter', + 'bulk_delete_help' => 'Se gjennom listen over enheter som er valgt for sletting. Etter sletting er det mulig å gjenopprette enheter, men nåværende koblinger til brukere vil ikke lenger finnes.', + 'bulk_restore_help' => 'Se gjennom ressursene for massegjennoppretning nedenfor. Når de er gjenopprettet vil ikke disse eiendelene være knyttet til brukere de ble gitt til tidligere.', + 'bulk_delete_warn' => 'Du er i ferd med å slette :asset_count enheter.', + 'bulk_restore_warn' => 'Du er i ferd med å gjennopprette :asset_count enheter.', + 'bulk_update' => 'Masseoppdater eiendeler', + 'bulk_update_help' => 'Dette skjemaet lar deg oppdatere flere eiendeler på en gang. Fyll kun ut feltene du ønsker å endre. Tomme felter forblir uendret. ', + 'bulk_update_warn' => 'Du er i ferd med å endre egenskapene til en ressurs. Du er i ferd med å endre egenskapene til :asset_count enheter.', + 'bulk_update_with_custom_field' => 'Merk at ressursene er av :asset_model_count ulike modeller.', + 'bulk_update_model_prefix' => 'På modeller', + 'bulk_update_custom_field_unique' => 'Dette er et unikt felt og kan ikke masseredigeres.', + 'checkedout_to' => 'Utsjekket til', + 'checkout_date' => 'Utsjekkdato', + 'checkin_date' => 'Innsjekkdato', + 'checkout_to' => 'Sjekk ut til', + 'cost' => 'Innkjøpskostnad', + 'create' => 'Opprett eiendel', + 'date' => 'Innkjøpsdato', + 'depreciation' => 'avskrivninger', + 'depreciates_on' => 'Avskrivningstype', + 'default_location' => 'Standard plassering', + 'default_location_phone' => 'Standard plasseringstelefon', + 'eol_date' => 'EOL dato', + 'eol_rate' => 'EOL-rate', + 'expected_checkin' => 'Forventet dato for innsjekk', + 'expires' => 'Utløper', + 'fully_depreciated' => 'Ferdig nedskrevet', + 'help_checkout' => 'Hvis du ønsker å tildele denne eiendelen umiddelbart, velger du "klar til å distribuere" fra status listen ovenfor. ', + 'mac_address' => 'MAC-adresse', + 'manufacturer' => 'Produsent', + 'model' => 'Modell', + 'months' => 'måneder', + 'name' => 'Navn', + 'notes' => 'Notater', + 'order' => 'Ordrenummer', + 'qr' => 'QR-kode', + 'requestable' => 'Brukere kan be om eiendel', + 'redirect_to_all' => 'Return to all :type', + 'redirect_to_type' => 'Go to :type', + 'redirect_to_checked_out_to' => 'Go to Checked Out to', + 'select_statustype' => 'Velg statustype', + 'serial' => 'Serienummer', + 'status' => 'Status', + 'tag' => 'Eiendelsmerke', + 'update' => 'Oppdater eiendel', + 'warranty' => 'Garanti', + 'warranty_expires' => 'Garantien utløper', + 'years' => 'år', + 'asset_location' => 'Oppdater lokasjon for eiendelen', + 'asset_location_update_default_current' => 'Oppdater standardlokasjon OG faktisk lokasjon', + 'asset_location_update_default' => 'Oppdater bare standardlokasjon', + 'asset_location_update_actual' => 'Oppdater bare faktisk plassering', + 'asset_not_deployable' => 'Den eiendelstatusen gjør at denne eiendelen ikke kan sjekkes ut.', + 'asset_deployable' => 'Den statusen gjør det mulig å sjekke ut denne eiendelen.', + 'processing_spinner' => 'Behandler... (Dette kan ta litt tid for store filer)', + 'optional_infos' => 'Valgfri informasjon', + 'order_details' => 'Ordrerelatert informasjon' +]; diff --git a/resources/lang/nn-NO/admin/hardware/general.php b/resources/lang/nn-NO/admin/hardware/general.php new file mode 100644 index 0000000000..9b19b6b2a0 --- /dev/null +++ b/resources/lang/nn-NO/admin/hardware/general.php @@ -0,0 +1,43 @@ + 'Om assets', + 'about_assets_text' => 'Eiendeler er sporet av serienummer eller assetsmerke. De pleier å være høyere verdi f. eks for å identifisere spesielle ting.', + 'archived' => 'Arkivert', + 'asset' => 'Eiendel', + 'bulk_checkout' => 'Sjekk ut Eiendeler', + 'bulk_checkin' => 'Sjekk inn ressurser', + 'checkin' => 'Sjekk inn eiendel', + 'checkout' => 'Sjekk ut asset', + 'clone' => 'Klon eiendel', + 'deployable' => 'Utleverbar', + 'deleted' => 'Denne eiendelen har blitt slettet.', + 'delete_confirm' => 'Er du sikker på at du vil slette denne ressursen?', + 'edit' => 'Rediger eiendel', + 'model_deleted' => 'Denne eiendelsmodellen er slettet. Du må gjenopprette modellen før du kan gjenopprette eiendelen.', + 'model_invalid' => 'This model for this asset is invalid.', + 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', + 'requestable' => 'Forespørrbar', + 'requested' => 'Forespurt', + 'not_requestable' => 'Ikke mulig å spørre etter', + 'requestable_status_warning' => 'Ikke endre forespørselsstatus', + 'restore' => 'Gjenopprett eiendel', + 'pending' => 'Under arbeid', + 'undeployable' => 'Ikke utleverbar', + 'undeployable_tooltip' => 'Denne ressursen har en statusetikett som ikke er distribuerbar og kan ikke sjekkes ut på dette tidspunktet.', + 'view' => 'Vis eiendel', + 'csv_error' => 'Du har en feil i din CSV-fil:', + 'import_text' => '

Last opp en CSV som inneholder eiendeler. Eiendelene og brukerne MÅ allerede finnes i systemet, ellers vil de bli hoppet over. Samsvarende ressurser for tidligere import skjer mot eiendeler. Vi vil prøve å finne en matchende bruker basert på navnet du oppgiver, og kriteriene du velger nedenfor. Hvis du ikke velger noen av kriteriene nedenfor, det vil bare prøve å matche på brukernavnet formatet du konfigurert i Admin > Generelle innstillinger.

Felter som er inkludert i CSV, må samsvare med overskriftene: Asset Tag, Navn, Kasse Dato, Innsjekkingsdato. Eventuelle ekstra felt vil bli ignorert.

Innsjekkingsdato: tomme eller fremtidige sjekkingsdatoer vil kassere elementer til tilhørende bruker. Ekskluder kolonnen Sjekkinn dato vil opprette en avmerkingsdato med dagens dato.

+ ', + 'csv_import_match_f-l' => 'Prøv å matche brukere av firstname.lastname (jane.smith) format', + 'csv_import_match_initial_last' => 'Prøv å matche brukere med første første etternavn (jsmith) format', + 'csv_import_match_first' => 'Prøv å matche brukere med fornavn (jane) format', + 'csv_import_match_email' => 'Prøv å matche brukere med email som brukernavn', + 'csv_import_match_username' => 'Prøv å matche brukere av brukernavn', + 'error_messages' => 'Feilmeldinger:', + 'success_messages' => 'Suksessmeldinger:', + 'alert_details' => 'Vennligst se nedenfor for detaljer.', + 'custom_export' => 'Egendefinert eksport', + 'mfg_warranty_lookup' => ':manufacturer Garanti statusoppslag', + 'user_department' => 'Bruker avdeling', +]; diff --git a/resources/lang/nn-NO/admin/hardware/message.php b/resources/lang/nn-NO/admin/hardware/message.php new file mode 100644 index 0000000000..90cc926a32 --- /dev/null +++ b/resources/lang/nn-NO/admin/hardware/message.php @@ -0,0 +1,95 @@ + 'Advarsel: Denne eiendelen er merket som ikke utplasserbar. Vennligst endre status for eiendel dette har endret seg.', + 'does_not_exist' => 'Eiendel eksisterer ikke.', + 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', + 'no_tag' => 'No asset tag provided.', + 'does_not_exist_or_not_requestable' => 'Eiendelen eksisterer ikke eller kan ikke forespørres.', + 'assoc_users' => 'Denne eiendelen er merket som utsjekket til en bruker og kan ikke slettes. Vennligst sjekk inn eiendelen først, og forsøk sletting på nytt. ', + 'warning_audit_date_mismatch' => 'This asset\'s next audit date (:next_audit_date) is before the last audit date (:last_audit_date). Please update the next audit date.', + + 'create' => [ + 'error' => 'Eiendelen ble ikke opprettet, prøv igjen :(', + 'success' => 'Eiendelen ble opprettet :)', + 'success_linked' => 'Eiendelen med taggen :tag ble opprettet. Klikk her for å vise.', + ], + + 'update' => [ + 'error' => 'Eiendelen ble ikke oppdatert, prøv igjen', + 'success' => 'Oppdatering av eiendel vellykket.', + 'encrypted_warning' => 'Eiendel er oppdatert, men kryptert tilpassede felter var ikke grunnet tillatelser', + 'nothing_updated' => 'Ingen felter er valgt, så ingenting ble endret.', + 'no_assets_selected' => 'Ingen felter er valgt, så ingenting ble endret.', + 'assets_do_not_exist_or_are_invalid' => 'Valgte eiendeler kan ikke oppdateres.', + ], + + 'restore' => [ + 'error' => 'Eiendel ble ikke gjenopprettet. Prøv igjen', + 'success' => 'Vellykket gjenoppretting av eiendel.', + 'bulk_success' => 'Ressursen ble gjenopprettet.', + 'nothing_updated' => 'Inger ressurser ble valgt, så ingenting ble gjenoprettet.', + ], + + 'audit' => [ + 'error' => 'Asset audit unsuccessful: :error ', + 'success' => 'Asset audit ble logget.', + ], + + + 'deletefile' => [ + 'error' => 'Fil ble ikke slettet. Prøv igjen.', + 'success' => 'Vellykket sletting av fil.', + ], + + 'upload' => [ + 'error' => 'Fil(er) ble ikke lastet opp. Prøv igjen.', + 'success' => 'Vellykket opplasting av fil(er).', + 'nofiles' => 'Ingen fil er valgt til opplasting, eller filen er for stor', + 'invalidfiles' => 'En eller flere av filene dine er for store eller av en ikke tillatt filtype. Tillatte filtyper er png, gif, jpg, doc, docx, pdf og txt.', + ], + + 'import' => [ + 'import_button' => 'Process Import', + 'error' => 'Noen elementer ble ikke importert riktig.', + 'errorDetail' => 'Følgende elementer ble ikke importert på grunn av feil.', + 'success' => 'Filen har blitt importert', + 'file_delete_success' => 'Filen har blitt slettet', + 'file_delete_error' => 'Filen kunne ikke bli slettet', + 'file_missing' => 'Valgt fil mangler (fant ikke filen)', + 'header_row_has_malformed_characters' => 'En eller flere attributter i overskriftsraden inneholder feilformede UTF-8 tegn', + 'content_row_has_malformed_characters' => 'En eller flere attributter i første rad i inneholdet inneholder feilformet UTF-8 tegn', + ], + + + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette eiendelen?', + 'error' => 'Det oppstod et problem under sletting av eiendel. Vennligst prøv igjen.', + 'nothing_updated' => 'Ingen assets ble valgt, så ingenting ble slettet.', + 'success' => 'Vellykket sletting av eiendel.', + ], + + 'checkout' => [ + 'error' => 'Eiendel ble ikke sjekket ut. Prøv igjen', + 'success' => 'Vellykket utsjekk av eiendel.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.', + 'not_available' => 'Den eiendelen er ikke tilgjengelig til å sjekkes ut!', + 'no_assets_selected' => 'Du må velge minst én enhet fra listen', + ], + + 'checkin' => [ + 'error' => 'Eiendel ble ikke sjekket inn. Prøv igjen', + 'success' => 'Vellykket innsjekk av eiendel.', + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Vennligst prøv igjen.', + 'already_checked_in' => 'Den eiendelen er allerede sjekket inn.', + + ], + + 'requests' => [ + 'error' => 'Eiendelen ble ikke forespurt, prøv igjen', + 'success' => 'Eiendel ble forespurt.', + 'canceled' => 'Utsjekkingsforespørselen ble kansellert', + ], + +]; diff --git a/resources/lang/nn-NO/admin/hardware/table.php b/resources/lang/nn-NO/admin/hardware/table.php new file mode 100644 index 0000000000..5f39219f8a --- /dev/null +++ b/resources/lang/nn-NO/admin/hardware/table.php @@ -0,0 +1,33 @@ + 'Eiendelsmerke', + 'asset_model' => 'Modell', + 'assigned_to' => 'Tilordnet til', + 'book_value' => 'Gjeldende verdi', + 'change' => 'Inne/ute', + 'checkout_date' => 'Utsjekkdato', + 'checkoutto' => 'Utsjekket', + 'components_cost' => 'Total komponentkostnad', + 'current_value' => 'Gjeldende verdi', + 'diff' => 'Forskjell', + 'dl_csv' => 'Last ned CSV', + 'eol' => 'EOL', + 'id' => 'ID', + 'last_checkin_date' => 'Siste innsjeksdato', + 'location' => 'Plassering', + 'purchase_cost' => 'Kostnad', + 'purchase_date' => 'Kjøpt', + 'serial' => 'Serienummer', + 'status' => 'Status', + 'title' => 'Eiendel ', + 'image' => 'Enhet bilde', + 'days_without_acceptance' => 'Dager uten aksept', + 'monthly_depreciation' => 'Månedlig avskrivning', + 'assigned_to' => 'Tilordnet til', + 'requesting_user' => 'Forespurt av', + 'requested_date' => 'Dato forespurt', + 'changed' => 'Endret', + 'icon' => 'Symbol', +]; diff --git a/resources/lang/nn-NO/admin/kits/general.php b/resources/lang/nn-NO/admin/kits/general.php new file mode 100644 index 0000000000..d877aefa1f --- /dev/null +++ b/resources/lang/nn-NO/admin/kits/general.php @@ -0,0 +1,50 @@ + 'Om forhåndsdefinerte sett', + 'about_kits_text' => 'Forhåndsdefinerte sett lar deg raskt sjekke ut en samling av utstyr (eiendeler, lisenser, etc) til en bruker. Dette kan være nyttig når onboarding-prosessen er konsistent på tvers av mange brukere, slik at alle brukere skal ha det samme utstyret.', + 'checkout' => 'Sjekk ut sett ', + 'create_success' => 'Settet har blitt opprettet.', + 'create' => 'Opprett forhåndsdefinert sett', + 'update' => 'Oppdater forhåndsdefinert sett', + 'delete_success' => 'Settet har blitt slettet.', + 'update_success' => 'Settet har blitt oppdatert.', + 'none_models' => 'Det er ikke nok tilgjengelige ressurser for å sjekke ut :model. Vi trenger :qty stk. ', + 'none_licenses' => 'Det er ikke nok seter for :license til å sjekke ut. Det trengs :qty ekstra. ', + 'none_consumables' => 'Det er ikke nok tilgjengelige :consumable til å sjekke ut. Det trengs :qty. ', + 'none_accessory' => 'Det er ikke nok tilgjengelige :accessory til å sjekke ut. Det trengs :qty. ', + 'append_accessory' => 'Legg til tilbehør', + 'update_appended_accessory' => 'Oppdater tilbehør som er lagt til', + 'append_consumable' => 'Legg til forbruksvare', + 'update_appended_consumable' => 'Oppdater forbruksvare som er lagt til', + 'append_license' => 'Legg til lisens', + 'update_appended_license' => 'Oppdater lisens som er lagt til', + 'append_model' => 'Legg til modell', + 'update_appended_model' => 'Oppdater modell', + 'license_error' => 'Lisensen er allerede i settet', + 'license_added_success' => 'Lisensen ble lagt til', + 'license_updated' => 'Lisensen ble oppdatert', + 'license_none' => 'Lisens eksisterer ikke', + 'license_detached' => 'Lisensen ble koblet fra', + 'consumable_added_success' => 'Forbruksvare lagt til', + 'consumable_updated' => 'Forbruksvaren ble oppdatert', + 'consumable_error' => 'Forbruksvaren er allerede i settet', + 'consumable_deleted' => 'Slettingen var vellykket', + 'consumable_none' => 'Forbruksvaren finnes ikke', + 'consumable_detached' => 'Forbruksvaren ble fjernet', + 'accessory_added_success' => 'Tilbehør lagt til', + 'accessory_updated' => 'Tilbehøret ble oppdatert', + 'accessory_detached' => 'Tilbehør ble koblet fra', + 'accessory_error' => 'Tilbehøret er allerede i settet', + 'accessory_deleted' => 'Slettingen var vellykket', + 'accessory_none' => 'Tilbehøret finnes ikke', + 'checkout_success' => 'Utsjekk vellykket', + 'checkout_error' => 'Feil ved utsjekk', + 'kit_none' => 'Settet eksisterer ikke', + 'kit_created' => 'Settet ble opprettet', + 'kit_updated' => 'Settet har blitt oppdatert', + 'kit_not_found' => 'Settet ble ikke funnet', + 'kit_deleted' => 'Settet har blitt slettet', + 'kit_model_updated' => 'Modellen ble oppdatert', + 'kit_model_detached' => 'Modellen har blitt frakoblet', +]; diff --git a/resources/lang/nn-NO/admin/labels/message.php b/resources/lang/nn-NO/admin/labels/message.php new file mode 100644 index 0000000000..4e32365cfe --- /dev/null +++ b/resources/lang/nn-NO/admin/labels/message.php @@ -0,0 +1,11 @@ + 'Ugyldig antall returnert fra :name. Forventet :expected, fikk :actual.', + 'invalid_return_type' => 'Ugyldig type returnert fra :name. Forventet :expected, fikk :actual.', + 'invalid_return_value' => 'Ugyldig verdi returnert fra :name. Forventet :expected, fikk :actual.', + + 'does_not_exist' => 'Etiketten finnes ikke', + +]; diff --git a/resources/lang/nn-NO/admin/labels/table.php b/resources/lang/nn-NO/admin/labels/table.php new file mode 100644 index 0000000000..5bc5429c6e --- /dev/null +++ b/resources/lang/nn-NO/admin/labels/table.php @@ -0,0 +1,19 @@ + 'Test bedrift begrenset', + 'example_defaultloc' => 'Bygning 1', + 'example_category' => 'Test kategori', + 'example_location' => 'Bygning 2', + 'example_manufacturer' => 'Test Manufacturing Inc.', + 'example_model' => 'Test modell', + 'example_supplier' => 'Test bedrift begrenset', + 'labels_per_page' => 'Etiketter', + 'support_fields' => 'Felt', + 'support_asset_tag' => 'Etikett', + 'support_1d_barcode' => '1D', + 'support_2d_barcode' => '2D', + 'support_logo' => 'Logo', + 'support_title' => 'Tittel', + +]; \ No newline at end of file diff --git a/resources/lang/nn-NO/admin/licenses/form.php b/resources/lang/nn-NO/admin/licenses/form.php new file mode 100644 index 0000000000..47a1ffcc07 --- /dev/null +++ b/resources/lang/nn-NO/admin/licenses/form.php @@ -0,0 +1,22 @@ + 'Eiendel', + 'checkin' => 'Sjekk inn', + 'create' => 'Opprett lisens', + 'expiration' => 'Utløpsdato', + 'license_key' => 'Produktnøkkel', + 'maintained' => 'Vedlikeholdt', + 'name' => 'Navn programvare', + 'no_depreciation' => 'Ingen avskrivning', + 'purchase_order' => 'Innkjøpsordrenummer', + 'reassignable' => 'Kan tildeles på ny', + 'remaining_seats' => 'Gjenværende setelisenser', + 'seats' => 'Setelisenser', + 'termination_date' => 'Sluttdato', + 'to_email' => 'Lisensiert til e-post', + 'to_name' => 'Lisensiert til navn', + 'update' => 'Oppdater lisens', + 'checkout_help' => 'Du må sjekke ut en lisens til en maskinvare- eller person-eiendel. Du kan velge begge, men eier av eiendel må være lik den du sjekker eiendel ut til.' +); diff --git a/resources/lang/nn-NO/admin/licenses/general.php b/resources/lang/nn-NO/admin/licenses/general.php new file mode 100644 index 0000000000..21df57a62a --- /dev/null +++ b/resources/lang/nn-NO/admin/licenses/general.php @@ -0,0 +1,52 @@ + 'Om lisenser', + 'about_licenses' => 'Lisenser er brukt til å spore bruk av programvare. De har et angitt antall seter som kan sjekkes ut til enkeltpersoner', + 'checkin' => 'Sjekk inn setelisens', + 'checkout_history' => 'Utsjekkhistorikk', + 'checkout' => 'Sjekk ut setelisens', + 'edit' => 'Rediger lisens', + 'filetype_info' => 'Gyldige filtyper er png, gif, jpg, jpeg, doc docx, pdf, txt, zip og rar.', + 'clone' => 'Klon lisens', + 'history_for' => 'Historikk for ', + 'in_out' => 'Inne/ute', + 'info' => 'Lisensinformasjon', + 'license_seats' => 'Setelisenser', + 'seat' => 'Setelisens', + 'seat_count' => 'Seat :count', + 'seats' => 'Setelisenser', + 'software_licenses' => 'Programvarelisenser', + 'user' => 'Bruker', + 'view' => 'Vis lisens', + 'delete_disabled' => 'Denne lisensen kan ikke slettes ennå fordi det fremdeles er noen seter i den som er sjekket ut.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Sjekk inn alle seter', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Sjekk inn ALLE seter for denne lisensen fra både brukere og ressurser', + 'disabled_tooltip' => 'Dette er deaktivert fordi det ikke er seter som er sjekket ut', + 'disabled_tooltip_reassignable' => 'Dette er deaktivert fordi lisensen ikke kan refordeles', + 'success' => 'Lisensen ble sjekket inn! | Alle lisensene ble vellykket sjekket inn!', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Sjekk ut alle seter', + 'modal' => 'Denne handlingen vil utsjekke ett sete til den første tilgjengelige brukeren. | Denne handlingen vil kassere alle :available_seats_count seter til de første tilgjengelige brukerne. En bruker anses som tilgjengelig for dette setet hvis de ikke allerede har sjekket ut denne lisensen til dem, og Auto-Assign License egenskapen er aktivert på deres brukerkonto.', + 'enabled_tooltip' => 'Sjekk ut ALLE seter (eller så mange som er tilgjengelige) til ALLE brukere', + 'disabled_tooltip' => 'Dette er deaktivert fordi det ikke er tilgjengelige seter for øyeblikket', + 'success' => 'Lisensen ble sjekket ut! | :count lisenser ble vellykket sjekket ut!', + 'error_no_seats' => 'Det er ingen gjenværende seter igjen for denne lisensen.', + 'warn_not_enough_seats' => ':count brukere ble tildelt denne lisensen, men vi gikk tom for tilgjengelige lisensseter.', + 'warn_no_avail_users' => 'Ingenting å gjøre. Det er ingen brukere som ikke allerede har denne lisensen tildelt dem.', + 'log_msg' => 'Sjekket ut via masselisensutsjekking i lisens GUI', + + + ], + ], + + 'below_threshold' => 'Det er bare :remaining_count seter igjen for denne lisensen med et minimum av :min_amt. Du kan vurdere å kjøpe flere seter.', + 'below_threshold_short' => 'Denne varen er under det minstekravene kreves.', +); diff --git a/resources/lang/nn-NO/admin/licenses/message.php b/resources/lang/nn-NO/admin/licenses/message.php new file mode 100644 index 0000000000..eeecd25d1f --- /dev/null +++ b/resources/lang/nn-NO/admin/licenses/message.php @@ -0,0 +1,56 @@ + 'Lisensen finnes ikke, eller du har ikke tillatelse til å se den.', + 'user_does_not_exist' => 'Brukeren finnes ikke, eller du har ikke tillatelse til å se dem.', + 'asset_does_not_exist' => 'Eiendelen du prøver å koble til denne lisensen eksisterer ikke.', + 'owner_doesnt_match_asset' => 'Eiendelen du prøver å koble til denne lisensen er eid av noen andre enn personen du har valgt i tildelt til-nedtrekkslista.', + 'assoc_users' => 'Denne lisensen er sjekket ut til en bruker og kan ikke slettes. Vennligst sjekk inn lisensen først, og forsøk sletting på nytt. ', + 'select_asset_or_person' => 'Du må velge en ressurs eller en bruker, men ikke begge.', + 'not_found' => 'Lisens ikke funnet', + 'seats_available' => ':seat_count seter tilgjengelige', + + + 'create' => array( + 'error' => 'Lisens ble ikke opprettet, prøv igjen.', + 'success' => 'Vellykket opprettelse av lisens.' + ), + + 'deletefile' => array( + 'error' => 'Fil ble ikke slettet. Prøv igjen.', + 'success' => 'Fil ble slettet.', + ), + + 'upload' => array( + 'error' => 'Fil(er) ble ikke lastet opp. Prøv igjen.', + 'success' => 'Fil(er) ble slettet.', + 'nofiles' => 'Ingen fil er valgt til opplasting, eller filen er for stor', + 'invalidfiles' => 'En eller flere av filene er for stor, eller er en filtype som ikke er tillatt. Tillatte filtyper er png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, rar, rtf, xml, og lic.', + ), + + 'update' => array( + 'error' => 'Lisens ble ikke oppdatert, prøv igjen', + 'success' => 'Vellykket oppdatering av lisens.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne lisensen?', + 'error' => 'Det oppstod et problem under sletting av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket sletting av lisens.' + ), + + 'checkout' => array( + 'error' => 'Det oppstod et problem under utsjekk av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket utsjekk av lisens', + 'not_enough_seats' => 'Ikke nok lisensseter tilgjengelige for utsjekking', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', + ), + + 'checkin' => array( + 'error' => 'Det oppstod et problem under innsjekk av lisens. Vennligst prøv igjen.', + 'success' => 'Vellykket innsjekk av lisens' + ), + +); diff --git a/resources/lang/nn-NO/admin/licenses/table.php b/resources/lang/nn-NO/admin/licenses/table.php new file mode 100644 index 0000000000..dc6b160311 --- /dev/null +++ b/resources/lang/nn-NO/admin/licenses/table.php @@ -0,0 +1,18 @@ + 'Tildelt til', + 'checkout' => 'Inne/ute', + 'deleted_at' => 'Slettet ved', + 'id' => 'ID', + 'license_email' => 'Lisens e-post', + 'license_name' => 'Lisensiert til', + 'purchase_date' => 'Kjøpedato', + 'purchased' => 'Kjøpt', + 'seats' => 'Setelisenser', + 'hardware' => 'Maskinvare', + 'serial' => 'Serienummer', + 'title' => 'Lisens', + +); diff --git a/resources/lang/nn-NO/admin/locations/message.php b/resources/lang/nn-NO/admin/locations/message.php new file mode 100644 index 0000000000..1f5840ba43 --- /dev/null +++ b/resources/lang/nn-NO/admin/locations/message.php @@ -0,0 +1,29 @@ + 'Lokasjon eksisterer ikke.', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_assets' => 'Lokasjonen er tilknyttet minst en eiendel og kan ikke slettes. Oppdater dine eiendeler slik at de ikke refererer til denne lokasjonen, og prøv igjen. ', + 'assoc_child_loc' => 'Lokasjonen er overordnet til minst en underlokasjon og kan ikke slettes. Oppdater din lokasjoner til å ikke referere til denne lokasjonen, og prøv igjen. ', + 'assigned_assets' => 'Tildelte ressurser', + 'current_location' => 'Gjeldende plassering', + + + 'create' => array( + 'error' => 'Lokasjon ble ikke opprettet, prøv igjen.', + 'success' => 'Vellykket opprettelse av lokasjon.' + ), + + 'update' => array( + 'error' => 'Lokasjon ble ikke oppdatert, prøv igjen', + 'success' => 'Vellykket oppdatering av plassering.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne plasseringen?', + 'error' => 'Det oppstod et problem under sletting av plassering. Vennligst prøv igjen.', + 'success' => 'Vellykket sletting av plassering.' + ) + +); diff --git a/resources/lang/nn-NO/admin/locations/table.php b/resources/lang/nn-NO/admin/locations/table.php new file mode 100644 index 0000000000..e27419c4b4 --- /dev/null +++ b/resources/lang/nn-NO/admin/locations/table.php @@ -0,0 +1,42 @@ + 'Om Lokasjoner', + 'about_locations' => 'Plassering brukes til å spore stedsinformasjon for brukere, eiendeler og andre elementer', + 'assets_rtd' => 'Eiendeler', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. + 'assets_checkedout' => 'Eiendeler tildelt', + 'id' => 'ID', + 'city' => 'By', + 'state' => 'Stat', + 'country' => 'Land', + 'create' => 'Opprett plassering', + 'update' => 'Oppdater plassering', + 'print_assigned' => 'Skriv ut tilordnede', + 'print_all_assigned' => 'Skriv ut alle tilordnede', + 'name' => 'Plasseringsnavn', + 'address' => 'Adresse', + 'address2' => 'Adresselinje 2', + 'zip' => 'Postnummer', + 'locations' => 'Plasseringer', + 'parent' => 'Overordnet', + 'currency' => 'Valuta i lokasjon', + 'ldap_ou' => 'LDAP-søk OU', + 'user_name' => 'Brukernavn', + 'department' => 'Avdeling', + 'location' => 'Lokasjon', + 'asset_tag' => 'Eiendelsmerke', + 'asset_name' => 'Navn', + 'asset_category' => 'Kategori', + 'asset_manufacturer' => 'Produsent', + 'asset_model' => 'Modell', + 'asset_serial' => 'Serienummer', + 'asset_location' => 'Lokasjon', + 'asset_checked_out' => 'Utsjekket', + 'asset_expected_checkin' => 'Forventet innsjekk', + 'date' => 'Dato:', + 'phone' => 'Sted telefon', + 'signed_by_asset_auditor' => 'Signert av (Eiendelskontrollør):', + 'signed_by_finance_auditor' => 'Undertegnet av (finansrevisor):', + 'signed_by_location_manager' => 'Signert av (Stedsansvarlig):', + 'signed_by' => 'Signert av:', +]; diff --git a/resources/lang/nn-NO/admin/manufacturers/message.php b/resources/lang/nn-NO/admin/manufacturers/message.php new file mode 100644 index 0000000000..83aab0c4f3 --- /dev/null +++ b/resources/lang/nn-NO/admin/manufacturers/message.php @@ -0,0 +1,30 @@ + 'Variabler {LOCALE}, {SERIAL}, {MODEL_NUMBER}og {MODEL_NAME} kan brukes i din URL for å få disse verdiene auto-populere når du ser ressurser - for eksempel https://checkcoverage.apple.com/{LOCALE}/{SERIAL}.', + 'does_not_exist' => 'Produsent eksisterer ikke.', + 'assoc_users' => 'Denne produsenten er tilknyttet minst en modell og kan ikke slettes. Oppdatèr modellen(e) til ikke å bruke denne produsenten, og prøv igjen. ', + + 'create' => array( + 'error' => 'Produsent ble ikke opprettet. Prøv igjen.', + 'success' => 'Opprettelse av produsent vellykket.' + ), + + 'update' => array( + 'error' => 'Produsent ble ikke oppdatert. Prøv igjen', + 'success' => 'Oppdatering av produsent vellykket.' + ), + + 'restore' => array( + 'error' => 'Produsent ble ikke gjenopprettet. Prøv igjen', + 'success' => 'Gjenopprettelse av produsent vellykket.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne produsenten?', + 'error' => 'Det oppstod et problem under sletting av produsenten. Prøv igjen.', + 'success' => 'Sletting av produsenten var vellykket.' + ) + +); diff --git a/resources/lang/nn-NO/admin/manufacturers/table.php b/resources/lang/nn-NO/admin/manufacturers/table.php new file mode 100644 index 0000000000..084bb0392d --- /dev/null +++ b/resources/lang/nn-NO/admin/manufacturers/table.php @@ -0,0 +1,16 @@ + 'Om produsenter', + 'about_manufacturers_text' => 'Produsenter er firmaer som lager dine eiendeler. Du kan lagre viktig kundestøtte kontaktinformasjon om dem her, som vises på sidene om asset-detaljer.', + 'asset_manufacturers' => 'Eiendelsprodusenter', + 'create' => 'Opprett produsent', + 'id' => 'ID', + 'name' => 'Navn', + 'support_email' => 'Støtte epost', + 'support_phone' => 'Støttetelefon', + 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Garanti oppslag URL', + 'update' => 'Endre produsent', + +); diff --git a/resources/lang/nn-NO/admin/models/general.php b/resources/lang/nn-NO/admin/models/general.php new file mode 100644 index 0000000000..2b10c316da --- /dev/null +++ b/resources/lang/nn-NO/admin/models/general.php @@ -0,0 +1,18 @@ + 'Om asset modeller', + 'about_models_text' => 'Asset modeller er en måte å gruppere identiske eiendeler. "MBP 2013", "IPhone 6s", etc.', + 'deleted' => 'Denne modellen har blitt slettet.', + 'bulk_delete' => 'Bulk slett modeller', + 'bulk_delete_help' => 'Bruk merkeboksene nedenfor til å bekrefte sletting av de merkede modellene. Modeller som har eiendeler tilknyttet kan ikke slettes før eiendelene har blitt tilknyttet en annen modell.', + 'bulk_delete_warn' => 'Du er i ferd med å slette en ressursmodell. | Du er i ferd med å slette :model_count modeller.', + 'restore' => 'Gjenopprett modell', + 'requestable' => 'Brukere kan be om denne modellen', + 'show_mac_address' => 'Vis felt for MAC-adresse for denne modellen', + 'view_deleted' => 'Vis slettede', + 'view_models' => 'Vis modeller', + 'fieldset' => 'Felt', + 'no_custom_field' => 'Ingen egendefinerte felt', + 'add_default_values' => 'Legg til standardverdier', +); diff --git a/resources/lang/nn-NO/admin/models/message.php b/resources/lang/nn-NO/admin/models/message.php new file mode 100644 index 0000000000..642bc1050e --- /dev/null +++ b/resources/lang/nn-NO/admin/models/message.php @@ -0,0 +1,47 @@ + 'Slettet ressursmodell', + 'does_not_exist' => 'Modell eksisterer ikke.', + 'no_association' => 'ADVARSEL! Ressursmodellen for dette elementet er ugyldig eller mangler!', + 'no_association_fix' => 'Dette vil ødelegge ting på merkelige og forferdelige måte. Rediger denne ressursen nå for å tildele den en modell.', + 'assoc_users' => 'Denne modellen er tilknyttet en eller flere eiendeler og kan ikke slettes. Slett eiendelene, og prøv å slette modellen igjen. ', + 'invalid_category_type' => 'The category must be an asset category.', + + 'create' => array( + 'error' => 'Modellen ble ikke opprettet. Prøv igjen.', + 'success' => 'Opprettelse av modell var vellykket.', + 'duplicate_set' => 'En eiendel med dette navnet, produsenten og modelnummeret eksisterer allerede.', + ), + + 'update' => array( + 'error' => 'Modell ble ikke oppdatert. Prøv igjen', + 'success' => 'Oppdatering av modell vellykket.', + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne modellen?', + 'error' => 'Det oppstod et problem under sletting av modellen. Prøv igjen.', + 'success' => 'Sletting av modell vellykket.' + ), + + 'restore' => array( + 'error' => 'Modell ble ikke gjenopprettet. Prøv igjen', + 'success' => 'Vellykket gjenoppretting av modell.' + ), + + 'bulkedit' => array( + 'error' => 'Ingen felt ble endret, så ingenting ble oppdatert.', + 'success' => 'Modelloppdatering vellyket.| :model_count modeller oppdatert.', + 'warn' => 'Du er i ferd med å oppdatere egenskapene til følgende modell: Du er i ferd med å redigere egenskapene for følgende modeller: model_count modeller:', + + ), + + 'bulkdelete' => array( + 'error' => 'Ingen modeller ble valgt, så ingenting ble slettet.', + 'success' => 'Modellen ble slettet!g_:success_count modeller slettet!', + 'success_partial' => ':Success_count-modell(ene) ble slettet, men fail_count kunne ikke slettes fordi de fortsatt har eiendeler knyttet til dem.' + ), + +); diff --git a/resources/lang/nn-NO/admin/models/table.php b/resources/lang/nn-NO/admin/models/table.php new file mode 100644 index 0000000000..b8c7daa389 --- /dev/null +++ b/resources/lang/nn-NO/admin/models/table.php @@ -0,0 +1,17 @@ + 'Opprett modell', + 'created_at' => 'Opprettet', + 'eol' => 'Levetid', + 'modelnumber' => 'Modellnummer', + 'name' => 'Modellnavn', + 'numassets' => 'Eiendeler', + 'title' => 'Modeller', + 'update' => 'Endre modell', + 'view' => 'Vis modell', + 'update' => 'Endre modell', + 'clone' => 'Klon modell', + 'edit' => 'Endre modell', +); diff --git a/resources/lang/nn-NO/admin/reports/general.php b/resources/lang/nn-NO/admin/reports/general.php new file mode 100644 index 0000000000..74ab74aacb --- /dev/null +++ b/resources/lang/nn-NO/admin/reports/general.php @@ -0,0 +1,17 @@ + 'Velg de alternativene du ønsker skal inngå i rapporten.', + 'deleted_user' => 'Slettet bruker', + 'send_reminder' => 'Send påminnelse', + 'reminder_sent' => 'Påminnelse sendt', + 'acceptance_deleted' => 'Aksepteringsforespørsel slettet', + 'acceptance_request' => 'Akseptanseforespørsel', + 'custom_export' => [ + 'user_address' => 'Brukerens adresse', + 'user_city' => 'Bruker by', + 'user_state' => 'Bruker tilstand', + 'user_country' => 'Bruker Land', + 'user_zip' => 'Brukers postnummer' + ] +]; \ No newline at end of file diff --git a/resources/lang/nn-NO/admin/reports/message.php b/resources/lang/nn-NO/admin/reports/message.php new file mode 100644 index 0000000000..be9181f1ef --- /dev/null +++ b/resources/lang/nn-NO/admin/reports/message.php @@ -0,0 +1,5 @@ + 'Du må velge minst ETT alternativ.' +); diff --git a/resources/lang/nn-NO/admin/settings/general.php b/resources/lang/nn-NO/admin/settings/general.php new file mode 100644 index 0000000000..d635f260fb --- /dev/null +++ b/resources/lang/nn-NO/admin/settings/general.php @@ -0,0 +1,384 @@ + 'Active Directory', + 'ad_domain' => 'Active Directory domene', + 'ad_domain_help' => 'Dette er noen ganger det samme som e-post domene, men ikke alltid.', + 'ad_append_domain_label' => 'Legg til domenenavn', + 'ad_append_domain' => 'Legg til domenenavn i feltet for brukernavn', + 'ad_append_domain_help' => 'Bruker kreves ikke å skrive "brukernavn@domene.local", de kan bare skrive "brukernavn".', + 'admin_cc_email' => 'CC e-post', + 'admin_cc_email_help' => 'Hvis du vil sende en kopi av innsjekk-/utsjekkeposter som sendes til brukere til en ekstra epostadresse, skriv den inn her. La ellers feltet stå tomt.', + 'admin_settings' => 'Admin innstillinger', + 'is_ad' => 'Dette er en Active Directory server', + 'alerts' => 'Varsler', + 'alert_title' => 'Oppdater varslingsinnstillinger', + 'alert_email' => 'Send varslinger til', + 'alert_email_help' => 'E-postadresser eller distribusjonslister som du ønsker varsler skal sendes til, kommaseparert', + 'alerts_enabled' => 'Varslinger aktivert', + 'alert_interval' => 'Terskel for utløpende varslinger (dager)', + 'alert_inv_threshold' => 'Terskel for eiendelsvarslinger', + 'allow_user_skin' => 'Tillat tilpasset utseende for bruker', + 'allow_user_skin_help_text' => 'Kryss av denne boksen for å la brukere overstyre standardutseendet med et annet.', + 'asset_ids' => 'Eiendels-IDer', + 'audit_interval' => 'Audit intervall', + 'audit_interval_help' => 'Hvis du er påkrevd å regelmessig sjekke ressursene dine, angi intervallet i måneder som du bruker. Hvis du oppdaterer denne verdien, vil hele "neste revisjonsdatoer" for ressurser med en kommende revisjonsdato bli oppdatert.', + 'audit_warning_days' => 'Audit terskelverdi for advarsel', + 'audit_warning_days_help' => 'Hvor mange dager i forveien bør vi advare deg når eiendeler forfaller for overvåking?', + 'auto_increment_assets' => 'Generer automatisk økende eiendelsmerker', + 'auto_increment_prefix' => 'Prefiks (valgfritt)', + 'auto_incrementing_help' => 'Slå på automatisk økende eiendelsmerker for å velge dette', + 'backups' => 'Sikkerhetskopier', + 'backups_help' => 'Opprette, laste ned og gjenopprette sikkerhetskopier ', + 'backups_restoring' => 'Gjenoppretting fra sikkerhetskopi', + 'backups_upload' => 'Last opp sikkerhetskopi', + 'backups_path' => 'Sikkerhetskopier på tjeneren lagres i :path', + 'backups_restore_warning' => 'Bruk gjenopprettingsknappen for å gjenopprette fra en tidligere sikkerhetskopi. (Dette fungerer ikke med S3-fillagring eller Docker.)

Din hele :app_name databasen og eventuelle opplastede filer vil bli fullstendig erstattet av det som er i sikkerhetskopifilen. ', + 'backups_logged_out' => 'Alle eksisterende brukere, inkludert deg, vil bli logget ut når din gjenoppretting er fullført.', + 'backups_large' => 'Veldig store sikkerhetskopier kan få tidsavbrudd under gjenopprettingsforsøket og må fortsatt kjøres via kommandolinjen. ', + 'barcode_settings' => 'Strekkodeinnstillinger', + 'confirm_purge' => 'Bekreft rensking', + 'confirm_purge_help' => 'Skriv "DELETE" i boksen under for å fjerne dine slettende data. Denne handlingen kan ikke angres og vil PERMANENT slette alle slettede elementer og brukere. (Du bør først gjøre en sikkerhetskopi, bare for å være trygg.)', + 'custom_css' => 'Egendefinert CSS', + 'custom_css_help' => 'Legg til egendefinert CSS. Ikke ta med taggene <style></style>.', + 'custom_forgot_pass_url' => 'Egendefinert passord tilbakestillings-URL', + 'custom_forgot_pass_url_help' => 'Erstatter den innebygde glemt passord-URLen i innloggingsbildet. Nyttig for å sende brukere til intern eller leid LDAP passordgjenopprettingsfunksjonalitet. Vil deaktivere den lokale glemt passord-funksjonaliteten.', + 'dashboard_message' => 'Dashboardmelding', + 'dashboard_message_help' => 'Denne teksten vises på dashbordet for alle som har tillatelse til å vise oversikten.', + 'default_currency' => 'Standardvaluta', + 'default_eula_text' => 'Standard EULA', + 'default_language' => 'Standardspråk', + 'default_eula_help_text' => 'Du kan også knytte tilpassede EULAer til bestemte eiendelskategorier.', + 'acceptance_note' => 'Add a note for your decision (Optional)', + 'display_asset_name' => 'Vis eiendelsnavn', + 'display_checkout_date' => 'Vis utsjekksdato', + 'display_eol' => 'Vis levetid i tabellvisning', + 'display_qr' => 'Vis Qr-kode', + 'display_alt_barcode' => 'Vis 1D strekkode', + 'email_logo' => 'E-postlogo', + 'barcode_type' => '2D strekkodetype', + 'alt_barcode_type' => '1D strekkodetype', + 'email_logo_size' => 'Kvadratiske logoer ser best ut i e-post. ', + 'enabled' => 'Slått på', + 'eula_settings' => 'EULA-innstillinger', + 'eula_markdown' => 'Denne EULAen tillater Github Flavored markdown.', + 'favicon' => 'Favicon', + 'favicon_format' => 'Aksepterte filtyper er ico, png og gif. Andre bildeformater vil muligens ikke fungere i alle nettlesere.', + 'favicon_size' => 'Favoritt-symboler bør være kvadratiske, 16x16 punkter.', + 'footer_text' => 'Ekstra bunnteksttekst ', + 'footer_text_help' => 'Denne teksten vil fremstå i høyre del av bunnteksten. Lenker er tillatt ved å bruke Github flavored markdown. +Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', + 'general_settings' => 'Generelle innstillinger', + 'general_settings_keywords' => 'bedriftens støtte, signatur, e-postformat, brukerformat, bilder, per side, miniatyrbilde, eula, graviter, forelder, dashbord, personvern', + 'general_settings_help' => 'Standard EULA og mer', + 'generate_backup' => 'Generer Sikkerhetskopi', + 'google_workspaces' => 'Google arbeidsområder', + 'header_color' => 'Overskriftsfarge', + 'info' => 'Disse innstillingene lar deg tilpasse enkelte aspekter av installasjonen din.', + 'label_logo' => 'Etikett-logo', + 'label_logo_size' => 'Kvadratisk logo vil se best ut. Den vil vises øverst til høyre på hver merkelapp. ', + 'laravel' => 'Laravel-versjon', + 'ldap' => 'LDAP', + 'ldap_default_group' => 'Standard tillatelsesgruppe', + 'ldap_default_group_info' => 'Velg en gruppe for nylig synkroniserte brukere. Husk at brukeren får rettigheter til gruppen den tildeles.', + 'no_default_group' => 'Ingen standard gruppe', + 'ldap_help' => 'LDAP/Active Directory', + 'ldap_client_tls_key' => 'LDAP-klient TLS-nøkkel', + 'ldap_client_tls_cert' => 'LDAP TLS klient-sertifikat', + 'ldap_enabled' => 'LDAP aktivert', + 'ldap_integration' => 'LDAP Integrering', + 'ldap_settings' => 'LDAP Instillinger', + 'ldap_client_tls_cert_help' => 'Klientside TLS-sertifikat og nøkkel for LDAP tilkoblinger er vanligvis bare nyttig i Google Workspace-konfigurasjoner med "Secure LDAP." Begge er påkrevd.', + 'ldap_location' => 'LDAP-plassering', +'ldap_location_help' => 'LDAP plasserings feltet burde brukes hvis en OU ikke blir brukt i "Base Bind DN"- La denne stå tom hvis et OU søk brukes.', + 'ldap_login_test_help' => 'Skriv inn et gyldig LDAP brukernavn og passord fra samme base DN som du anga ovenfor for å teste at LDAP-innlogging er riktig konfigurert. DU MÅ LAGRE DINE OPPDATERTE LDAP-INNSTILLINGER FØRST.', + 'ldap_login_sync_help' => 'Tester at LDAP kan synkronisere. Feil i LDAP autentiseringsspørringen din kan før til at brukere ikke kan logge inn. DU MÅ LAGRE DINE OPPDATERTE LDAP-INNSTILLINGER FØRST.', + 'ldap_manager' => 'LDAP Administrator', + 'ldap_server' => 'LDAP Server', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', + 'ldap_server_cert' => 'Validering av LDAP SSL sertifikat', + 'ldap_server_cert_ignore' => 'Godta ugyldig SSL sertifikat', + 'ldap_server_cert_help' => 'Kryss av denne boksen hvis du bruker et selv-signert SSL sertifikat og vil akkseptere et ugyldig sertifikat.', + 'ldap_tls' => 'Bruk TLS', + 'ldap_tls_help' => 'Kryss av denne hvis du kjører STARTTLS på LDAP-serveren. ', + 'ldap_uname' => 'LDAP Bundet brukernavn', + 'ldap_dept' => 'LDAP avdeling', + 'ldap_phone' => 'LDAP telefonnummer', + 'ldap_jobtitle' => 'LDAP Jobbtittel', + 'ldap_country' => 'LDAP Land', + 'ldap_pword' => 'LDAP Bind passord', + 'ldap_basedn' => 'Base Bind DN', + 'ldap_filter' => 'LDAP Filter', + 'ldap_pw_sync' => 'LDAP-passord Sync', + 'ldap_pw_sync_help' => 'Ta bort kryss på denne boksen hvis du ikke vil at LDAP passord skal holdes synkronisert med lokale passord. Ved å skru av dette er det mulig at brukerne ikke vil klare å logge på om de ikke får tak i LDAP serveren.', + 'ldap_username_field' => 'Brukernavn Felt', + 'ldap_lname_field' => 'Etternavn', + 'ldap_fname_field' => 'LDAP Fornavn', + 'ldap_auth_filter_query' => 'LDAP autentisering spørring', + 'ldap_version' => 'LDAP Versjon', + 'ldap_active_flag' => 'LDAP aktive flag', + 'ldap_activated_flag_help' => 'Denne verdien brukes til å bestemme om en synkronisert bruker kan logge inn på Snipe-IT. Det påvirker ikke muligheten til å sjekke elementer inn eller ut til dem, og bør være egenskapsnavn i din AD/LDAP, ikke verdien.

Hvis dette feltet er satt til et feltnavn som ikke eksisterer i AD/LDAP, eller verdien i AD/LDAP feltet er satt til 0 eller usann, vil bruker pålogging bli deaktivert. Hvis verdien i AD/LDAP feltet er satt til 1 eller sann eller annen tekst betyr at brukeren kan logge inn. Når feltet er tomt i din AD, respekterer vi -brukerAccountControl attributt, som vanligvis tillater ikke-suspenderte brukere å logge inn.', + 'ldap_emp_num' => 'LDAP ansattnummer', + 'ldap_email' => 'LDAP E-post', + 'ldap_test' => 'Test LDAP', + 'ldap_test_sync' => 'Test LDAP-synkronisering', + 'license' => 'Programvarelisens', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', + 'login' => 'Innloggingsforsøk', + 'login_attempt' => 'Innloggingsforsøk', + 'login_ip' => 'IP-addresse', + 'login_success' => 'Suksess?', + 'login_user_agent' => 'Brukeragent', + 'login_help' => 'Liste over forsøkte pålogginger', + 'login_note' => 'Logg inn melding', + 'login_note_help' => 'Eventuelt inkludere et par setninger på logg inn skjermen, for eksempel for å hjelpe mennesker som har funnet en mistet eller stjålet enhet. Dette feltet godtar Github flavored markdown', + 'login_remote_user_text' => 'Fjernbruker pålogging valg', + 'login_remote_user_enabled_text' => 'Aktiver innlogging med Remote User Header', + 'login_remote_user_enabled_help' => 'Aktiverer autentisering via REMOTE_USER headeren som beskrevet i "Common Gateway Interface (rfc3875)"', + 'login_common_disabled_text' => 'Deaktiver andre godkjenningsmekanismer', + 'login_common_disabled_help' => 'Deaktiverer andre autentiseringsmekanismer. Aktiver dette valget kun hvis du er sikker på at din REMOTE_USER innlogging allerede fungerer', + 'login_remote_user_custom_logout_url_text' => 'Tilpasset utloggingsadresse', + 'login_remote_user_custom_logout_url_help' => 'Hvis en URL angis her blir brukerne videresendt til denne URLen etter utlogging fra Snipe-IT. Dette er nyttig for korrekt lukking av autentiseringssesjoner hos din autentiseringsleverandør.', + 'login_remote_user_header_name_text' => 'Egendefinert brukernavn-header', + 'login_remote_user_header_name_help' => 'Bruk angitt header-felt i stedet for REMOTE_USER', + 'logo' => 'Logo', + 'logo_print_assets' => 'Bruk i Print', + 'logo_print_assets_help' => 'Bruk branding på utskrivbare eiendelslister ', + 'full_multiple_companies_support_help_text' => 'Vis kun eiendeler til bedriften brukere (inkl administratorer) er knyttet til.', + 'full_multiple_companies_support_text' => 'Full støtte for flere bedrifter', + 'show_in_model_list' => 'Vis i Model nedtrekksmeny', + 'optional' => 'valgfri', + 'per_page' => 'Resultater pr side', + 'php' => 'PHP-versjon', + 'php_info' => 'PHP info', + 'php_overview' => 'PHP', + 'php_overview_keywords' => 'phpinfo, system, info', + 'php_overview_help' => 'PHP systeminfo', + 'php_gd_info' => 'Du må installere php-gd for å vise QR-koder. Se installasjonsinstruksjoner.', + 'php_gd_warning' => 'PHP bildebehandling og GD-plugin er IKKE installert.', + 'pwd_secure_complexity' => 'Passordkompleksitet', + 'pwd_secure_complexity_help' => 'Velg hvilken passord kompleksitet du ønsker å håndheve.', + 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Passord kan ikke være det samme som fornavn, etternavn, e-post eller brukernavn', + 'pwd_secure_complexity_letters' => 'Krev minst én bokstav', + 'pwd_secure_complexity_numbers' => 'Krev minst ett tall', + 'pwd_secure_complexity_symbols' => 'Krev minst ett symbol', + 'pwd_secure_complexity_case_diff' => 'Krev minst én stor bokstav og én liten bokstav', + 'pwd_secure_min' => 'Passord minimum antall tegn', + 'pwd_secure_min_help' => 'Minimum tillatt verdi er 8', + 'pwd_secure_uncommon' => 'Forhindre vanlige passord', + 'pwd_secure_uncommon_help' => 'Dette vil forhindre brukere fra å bruke vanlige passord fra de vanligste 10 000 passord som er rapportert.', + 'qr_help' => 'Aktiver QR-koder først for å velge denne', + 'qr_text' => 'Tekst QR-kode', + 'saml' => 'SAML', + 'saml_title' => 'Oppdater SAML-innstillinger', + 'saml_help' => 'SAML-innstillinger', + 'saml_enabled' => 'SAML aktivert', + 'saml_integration' => 'SAML-integrasjon', + 'saml_sp_entityid' => 'Entity ID', + 'saml_sp_acs_url' => 'Assertion Consumer Service (ACS) URL', + 'saml_sp_sls_url' => 'Single Logout Service (SLS) URL', + 'saml_sp_x509cert' => 'Offentlig sertifikat', + 'saml_sp_metadata_url' => 'Metadata URL', + 'saml_idp_metadata' => 'SAML IdP Metadata', + 'saml_idp_metadata_help' => 'Du kan spesifisere IdP-metadata ved hjelp av URL eller XML-fil.', + 'saml_attr_mapping_username' => 'Attributt for brukernavn', + 'saml_attr_mapping_username_help' => 'NameID vil bli brukt hvis tilordning av attributtet er uspesifisert eller ugyldig.', + 'saml_forcelogin_label' => 'SAML Tving Innlogging', + 'saml_forcelogin' => 'Gjør SAML til standard innlogging', + 'saml_forcelogin_help' => 'Du kan bruke \'/login?nosaml\' for å komme til den normale innloggingssiden.', + 'saml_slo_label' => 'SAML utlogging', + 'saml_slo' => 'Send en Logoutforespørsel til IdP på Logg ut', + 'saml_slo_help' => 'Dette vil føre til at brukeren først blir omdirigert til idP når hen logger ut. Ikke kryss av om idP ikke støtter \'SP-initiated SAML SLO\'.', + 'saml_custom_settings' => 'SAML Egendefinerte innstillinger', + 'saml_custom_settings_help' => 'Du kan angi flere innstillinger til onelogin/php-saml biblioteket. Bruk på eget ansvar.', + 'saml_download' => 'Last ned Metadata', + 'setting' => 'Innstilling', + 'settings' => 'Innstillinger', + 'show_alerts_in_menu' => 'Vis varsler i toppmenyen', + 'show_archived_in_list' => 'Arkiverte eiendeler', + 'show_archived_in_list_text' => 'Vis arkiverte eiendeler i "alle eiendeler" utlisting', + 'show_assigned_assets' => 'Vis eiendeler tildelt til eiendeler', + 'show_assigned_assets_help' => 'Vis ressurser som ble tildelt andre eiendeler i Vis bruker -> Eiendeler, Vis bruker -> Info -> Skriv ut alle tildelte og i Konto -> Vis tildelte eiendeler.', + 'show_images_in_email' => 'Vis bilder i e-post', + 'show_images_in_email_help' => 'Fjern merkingen i denne boksen hvis Snipe-IT-installasjonen er bak en VPN eller et lukket nettverk og brukere utenfor nettverket ikke vil kunne laste bilder servert fra denne installasjonen i e-posten.', + 'site_name' => 'Nettstedsnavn', + 'integrations' => 'Integrasjoner', + 'slack' => 'Slack', + 'general_webhook' => 'Generell Webhook', + 'ms_teams' => 'Microsoft Lag', + 'webhook' => ':app', + 'webhook_presave' => 'Test til lagring', + 'webhook_title' => 'Oppdater Webhook innstillinger', + 'webhook_help' => 'Integrasjons instillinger', + 'webhook_botname' => ':app botnavn', + 'webhook_channel' => ':app kanal', + 'webhook_endpoint' => ':app endepunkt', + 'webhook_integration' => ':app Innstillinger', + 'webhook_test' =>'Test :app integrasjon', + 'webhook_integration_help' => ':app-integrasjon er valgfritt, men endepunktet og kanalen er påkrevd hvis du ønsker å bruke den. For å konfigurere :app integrering, må du først lage en innkommende webhook på din :app konto. Klikk på knappen Test :app Integrasjon for å bekrefte at innstillingene er korrekte før du lagrer. ', + 'webhook_integration_help_button' => 'Du vil se en testknapp etter at du har lagret din :app informasjon.', + 'webhook_test_help' => 'Test om din :app integrasjon er riktig konfigurert. DU MÅ LAGRE DINE OPPDATERTE :app INNSTILLINGER FØRST.', + 'snipe_version' => 'Snipe-IT-versjon', + 'support_footer' => 'Støtte Footer Lenker ', + 'support_footer_help' => 'Angi hvem som kan se lenker til Snipe-IT supportinformasjon og brukermanual', + 'version_footer' => 'Versjon i Footer ', + 'version_footer_help' => 'Angi hvem som kan se Snipe-IT versjon og build-nummer.', + 'system' => 'Systeminformasjon', + 'update' => 'Oppdater innstillinger', + 'value' => 'Verdi', + 'brand' => 'Merkevare', + 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', + 'brand_help' => 'Logo, nettstedsnavn', + 'web_brand' => 'Velg branding-type', + 'about_settings_title' => 'Om Innstillinger', + 'about_settings_text' => 'Disse innstillingene lar deg tilpasse enkelte aspekter av installasjonen din.', + 'labels_per_page' => 'Etiketter per side', + 'label_dimensions' => 'Etikettstørrelsen (inches)', + 'next_auto_tag_base' => 'Neste automatiske økning', + 'page_padding' => 'Side marger (inches)', + 'privacy_policy_link' => 'Link til personvernregler', + 'privacy_policy' => 'Personvernerklæring', + 'privacy_policy_link_help' => 'Angi en URL i dette feltet for å inkludere en lenke til personvern-policy i applikasjonsbunntekst og i alle eposter som dette systemet sender ut. Støtter GDPR. ', + 'purge' => 'Tømme slettede poster', + 'purge_deleted' => 'Fjern slettede ', + 'labels_display_bgutter' => 'Etikett bunnmarg', + 'labels_display_sgutter' => 'Etikett sidemarg', + 'labels_fontsize' => 'Label skriftstørrelse', + 'labels_pagewidth' => 'Etikett arkbredde', + 'labels_pageheight' => 'Etikett arkhøyde', + 'label_gutters' => 'Etikett tegnavstand (tommer)', + 'page_dimensions' => 'Sidedimensjon (tommer)', + 'label_fields' => 'Etikett synlige felter', + 'inches' => 'tommer', + 'width_w' => 'b', + 'height_h' => 'h', + 'show_url_in_emails' => 'Link til Snipe-IT i e-post', + 'show_url_in_emails_help_text' => 'Fjern markeringen i denne boksen hvis du ikke vil koble tilbake til Snipe-IT-installasjonen i e-postboksene dine. Nyttig hvis de fleste av brukerne aldri logger inn.', + 'text_pt' => 'pt', + 'thumbnail_max_h' => 'Maks miniatyrbilde høyde', + 'thumbnail_max_h_help' => 'Maksimal høyde i piksler som miniatyrbilder kan vise i visningen liste. Min 25, maks 500.', + 'two_factor' => 'To-faktor autentisering', + 'two_factor_secret' => 'To-faktor kode', + 'two_factor_enrollment' => 'To-faktor registrering', + 'two_factor_enabled_text' => 'Aktiver to-faktor autentisering', + 'two_factor_reset' => 'Tilbakestill to-faktor hemmelighet', + 'two_factor_reset_help' => 'Dette vil tvinge brukeren til å legge inn enheten på nytt med autentiseringsappen. Dette kan være nyttig hvis enheten deres er mistet eller stjålet. ', + 'two_factor_reset_success' => 'To-faktor enhet resatt', + 'two_factor_reset_error' => 'Reset av to-faktor enhet feilet', + 'two_factor_enabled_warning' => 'Aktivering av to-faktor autentisering hvis ikke allerede aktivert vil øyeblikkelig tvinge deg til å autentisere med enhet som er aktivert i Google Authenticator. Du vil ha mulighet til å aktivere enheten din hvis ingen er aktivert fra før.', + 'two_factor_enabled_help' => 'Dette vil slå på to-faktor autentisering med Google Authenticator.', + 'two_factor_optional' => 'Selektiv (brukere kan aktivere eller deaktivere hvis tillatt)', + 'two_factor_required' => 'Påkrevd for alle brukere', + 'two_factor_disabled' => 'Deaktivert', + 'two_factor_enter_code' => 'Skriv inn to-faktor kode', + 'two_factor_config_complete' => 'Send kode', + 'two_factor_enabled_edit_not_allowed' => 'Systemansvarlig tillater ikke at du redigerer denne innstillingen.', + 'two_factor_enrollment_text' => "To-faktor autentisering er påkrevd, men enheten din har ikke blitt aktivert for dette enda. Åpne Google Authenticator-appen og scan inn QR-koden nedenfor for å aktivere. Når du har aktivert enheten din, skriv inn koden nedenfor", + 'require_accept_signature' => 'Kreve signatur', + 'require_accept_signature_help_text' => 'Aktivering av denne funksjonen ville forlange brukernes å fysisk logge ut for å akseptere en eiendel.', + 'left' => 'venstre', + 'right' => 'høyre', + 'top' => 'topp', + 'bottom' => 'bunn', + 'vertical' => 'vertikal', + 'horizontal' => 'horisontal', + 'unique_serial' => 'Unike serienumre', + 'unique_serial_help_text' => 'Håndhever at eiendelsserienumre er unike', + 'zerofill_count' => 'Lengden på ID-merker, inkludert zerofill', + 'username_format_help' => 'Denne innstillingen vil bare bli brukt av importprosessen dersom et brukernavn ikke er oppgitt, og vi må generere et brukernavn for deg.', + 'oauth_title' => 'OAuth API-innstillinger', + 'oauth_clients' => 'OAuth Clients', + 'oauth' => 'OAuth', + 'oauth_help' => 'Oauth Endepunktinnstillinger', + 'oauth_no_clients' => 'You have not created any OAuth clients yet.', + 'oauth_secret' => 'Secret', + 'oauth_authorized_apps' => 'Authorized Applications', + 'oauth_redirect_url' => 'Redirect URL', + 'oauth_name_help' => ' Something your users will recognize and trust.', + 'oauth_scopes' => 'Scopes', + 'oauth_callback_url' => 'Your application authorization callback URL.', + 'create_client' => 'Create Client', + 'no_scopes' => 'No scopes', + 'asset_tag_title' => 'Oppdater Innstillinger for Eiendelsmerker', + 'barcode_title' => 'Oppdater strekkodeinnstillinger', + 'barcodes' => 'Strekkoder', + 'barcodes_help_overview' => 'Strekkode- & QR-innstillinger', + 'barcodes_help' => 'Dette forsøker å slette hurtigbufrede strekkoder. Dette vil vanligvis bare bli brukt hvis strekkodeinnstillingene dine er endret, eller hvis Snipe-IT adressen er endret. Strekkoder genereres på nytt når de blir åpnet neste gang.', + 'barcodes_spinner' => 'Forsøker å slette filer...', + 'barcode_delete_cache' => 'Slett strekkode-buffer', + 'branding_title' => 'Oppdater Branding-innstillinger', + 'general_title' => 'Oppdater generelle innstillinger', + 'mail_test' => 'Send test', + 'mail_test_help' => 'Dette vil forsøke å sende en e-post til :replyto.', + 'filter_by_keyword' => 'Filtrer ved å sette nøkkelord', + 'security' => 'Sikkerhet', + 'security_title' => 'Oppdater sikkerhetsinnstillinger', + 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', + 'security_help' => 'Tofaktor, passordbegrensinger', + 'groups_keywords' => 'permissions, permission groups, authorization', + 'groups_help' => 'Tillatelsesgrupper', + 'localization' => 'Oversettelser', + 'localization_title' => 'Oppdater språkinnstillinger', + 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', + 'localization_help' => 'Språk, datoformat', + 'notifications' => 'Varslinger', + 'notifications_help' => 'E-post varsler og revisjonsinnstillinger', + 'asset_tags_help' => 'Økninger og prefikser', + 'labels' => 'Etiketter', + 'labels_title' => 'Oppdater etikettinnstillinger', + 'labels_help' => 'Etikettstørrelse & innstillinger', + 'purge_keywords' => 'slett permanent', + 'purge_help' => 'Tømme slettede poster', + 'ldap_extension_warning' => 'Det ser ikke ut som LDAP-utvidelsen er installert eller aktivert på denne serveren. Du kan fortsatt lagre innstillingene, men du må installere og aktivere LDAP-tillegget til PHP før LDAP-synkronisering eller innlogging virker.', + 'ldap_ad' => 'LDAP/AD', + 'employee_number' => 'Ansattnummer', + 'create_admin_user' => 'Opprett en bruker ::', + 'create_admin_success' => 'Suksess! Din adminbruker har blitt lagt til!', + 'create_admin_redirect' => 'Klikk her for å gå til innlogging!', + 'setup_migrations' => 'Database-migreringer ::', + 'setup_no_migrations' => 'Det var ingenting å migrere. Databasetabellene var allerede oppdaterte!', + 'setup_successful_migrations' => 'Databasetabellene er opprettet', + 'setup_migration_output' => 'Migrasjonsmeldinger:', + 'setup_migration_create_user' => 'Neste: Opprett bruker', + 'ldap_settings_link' => 'Side for LDAP-innstillinger', + 'slack_test' => 'Test Integrasjon', + 'label2_enable' => 'Ny etikett generator', + 'label2_enable_help' => 'Bytt til den nye etikette generatoren. Merk: Du må lagre denne innstillingen før du setter andre.', + 'label2_template' => 'Mal', + 'label2_template_help' => 'Velg mal som skal brukes til etikettgenerering', + 'label2_title' => 'Tittel', + 'label2_title_help' => 'Tittelen som skal vises på etiketter som støtter den', + 'label2_title_help_phold' => 'Plassholderen {COMPANY} vil bli erstattet med navnet til ressursen's firma navn', + 'label2_asset_logo' => 'Bruk ressurs logo', + 'label2_asset_logo_help' => 'Bruk logoen til ressursen's tildelte selskap, i stedet for verdien fra :setting_name', + 'label2_1d_type' => '1D strekkodetype', + 'label2_1d_type_help' => 'Format for 1D strekkoder', + 'label2_2d_type' => '2D strekkodetype', + 'label2_2d_type_help' => 'Format for 2D strekkoder', + 'label2_2d_target' => '2D strekkodemål', + 'label2_2d_target_help' => 'URL-en 2D strekkoden peker til til når den blir skannet', + 'label2_fields' => 'Feltdefinisjoner', + 'label2_fields_help' => 'Feltene kan legges til, fjernes, og sorteres i venstre kolonne. For hvert felt kan flere alternativer for etikett og datakilde legges til, fjernes, og sorteres på nytt i høyre kolonne.', + 'help_asterisk_bold' => 'Teksten som skrives inn som **text** vil vises som fet', + 'help_blank_to_use' => 'La stå tom for å bruke verdien fra :setting_name', + 'help_default_will_use' => ':default vil bruke verdien fra :setting_name.
Vær oppmerksom på at verdien for strekkodene må oppfylle den respektive strekkodespesifikasjonen for å bli generert med hell. Vennligst se dokumentasjonen for mer informasjon. ', + 'default' => 'Standard', + 'none' => 'Ingen', + 'google_callback_help' => 'Dette bør angis som callback-URL-en i Google OAuth app innstillingene i organisasjonen din's Google utvikler konsoll .', + 'google_login' => 'Google Workspace innloggingsinnstillinger', + 'enable_google_login' => 'Aktiver innlogging med Google Workspace', + 'enable_google_login_help' => 'Brukerne vil ikke automatisk bli betjent. De må ha en eksisterende konto her OG i Google Workspace, og deres brukernavn her må matche sin Google Workspace e-post adresse. ', + 'mail_reply_to' => 'E-post svar-til adresse', + 'mail_from' => 'E-post fra adressen', + 'database_driver' => 'Databasedriver', + 'bs_table_storage' => 'Tabell Lagring', + 'timezone' => 'Tidssone', + 'profile_edit' => 'Edit Profile', + 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', + +]; diff --git a/resources/lang/nn-NO/admin/settings/message.php b/resources/lang/nn-NO/admin/settings/message.php new file mode 100644 index 0000000000..42d29371f2 --- /dev/null +++ b/resources/lang/nn-NO/admin/settings/message.php @@ -0,0 +1,46 @@ + [ + 'error' => 'En feil oppstod under oppdatering. ', + 'success' => 'Oppdatering av innstillinger vellykket.', + ], + 'backup' => [ + 'delete_confirm' => 'Er du sikker på at du vil slette denne sikkerhetskopien? Denne handlingen kan ikke angres. ', + 'file_deleted' => 'Den Sikkerhetskopierte filen ble slettet. ', + 'generated' => 'En ny sikkerhetskopi fil ble opprettet.', + 'file_not_found' => 'Den backup-filen ble ikke funnet på serveren.', + 'restore_warning' => 'Ja, kjør gjenoppretting. Jeg forstår at dette vil overskive alle eksisterende data som er i databasen. Dette vil også logge ut alle eksisterende brukere (inkludert meg selv).', + 'restore_confirm' => 'Er du sikker på at du vil gjenopprette databasen fra :filename?' + ], + 'purge' => [ + 'error' => 'Det oppstod en feil under fjerning. ', + 'validation_failed' => 'Din fjerningsbekreftelse er feil. Vennligst skriv inn ordet "DELETE" i bekreftelsesboksen.', + 'success' => 'Slettede rader ble fjernet.', + ], + 'mail' => [ + 'sending' => 'Sender e-post...', + 'success' => 'E-post er sendt!', + 'error' => 'E-post kunne ikke sendes.', + 'additional' => 'Ingen ytterligere feilmelding oppgitt. Sjekk e-postinnstillingene og loggen.' + ], + 'ldap' => [ + 'testing' => 'Tester LDAP-tilkobling, binding og spørring ...', + '500' => '500 serverfeil. Sjekk tjenerens logger for mer informasjon.', + 'error' => 'Noe gikk galt :(', + 'sync_success' => 'Et utvalg på 10 brukere som returneres fra LDAP-serveren basert på innstillingene:', + 'testing_authentication' => 'Tester LDAP-autentisering...', + 'authentication_success' => 'Brukeren ble autentisert mot LDAP!' + ], + 'webhook' => [ + 'sending' => 'Sender :app test melding...', + 'success' => 'Ditt :webhook_name integrasjon fungerer!', + 'success_pt1' => 'Suksess! Sjekk ', + 'success_pt2' => ' kanalen din for testmelding, og sørg for å klikke på SAVE nedenfor for å lagre innstillingene.', + '500' => '500 Tjenerfeil.', + 'error' => 'Noe gikk galt. :app svarte med: :error_message', + 'error_redirect' => 'FEIL: 301/302 :endpoint returnerer en omaddressering. Av sikkerhetsgrunner følger vi ikke omadressering. Vennligst bruk det faktiske endepunktet.', + 'error_misc' => 'Noe gikk galt. :( ', + ] +]; diff --git a/resources/lang/nn-NO/admin/settings/table.php b/resources/lang/nn-NO/admin/settings/table.php new file mode 100644 index 0000000000..0dbe87ea15 --- /dev/null +++ b/resources/lang/nn-NO/admin/settings/table.php @@ -0,0 +1,6 @@ + 'Opprettet', + 'size' => 'Størrelse', +); diff --git a/resources/lang/nn-NO/admin/statuslabels/message.php b/resources/lang/nn-NO/admin/statuslabels/message.php new file mode 100644 index 0000000000..03e2bd6e9b --- /dev/null +++ b/resources/lang/nn-NO/admin/statuslabels/message.php @@ -0,0 +1,32 @@ + 'Status-etiketten finnes ikke.', + 'deleted_label' => 'Slettet statusmerke', + 'assoc_assets' => 'Denne status-etiketten er for øyeblikket i bruk på minst en eiendel, og kan ikke slettes. Vennligst endre dine eiendeler til å ikke bruke denne statusen, og prøv igjen. ', + + 'create' => [ + 'error' => 'Statusmerket ble ikke opprettet. Prøv igjen.', + 'success' => 'Statusmerket ble opprettet.', + ], + + 'update' => [ + 'error' => 'Statusmerket ble ikke oppdatert. Prøv igjen', + 'success' => 'Vellykket oppdatering av statusmerke.', + ], + + 'delete' => [ + 'confirm' => 'Er du sikker på at du vil slette dette statusmerket?', + 'error' => 'Det oppstod et problem under sletting av statusmerket. Prøv igjen.', + 'success' => 'Vellykket sletting av statusmerke.', + ], + + 'help' => [ + 'undeployable' => 'Disse eiendelene kan ikke tilordnes noen.', + 'deployable' => 'Disse eiendelene kan sjekkes ut. Når de er tildelt, antar de en metastatus på Utlevert.', + 'archived' => 'Disse eiendelene kan ikke sjekkes ut, og vises bare i arkivert visning. Dette er nyttig for å beholde informasjon om eiendeler for budsjettering / historiske formål, men å holde dem ut av den daglige aktivitetslisten.', + 'pending' => 'Disse eiendelene kan ikke tildeles til noen, ofte brukt til gjenstander som er ute for reparasjon, men forventes å komme tilbake til omløp.', + ], + +]; diff --git a/resources/lang/nn-NO/admin/statuslabels/table.php b/resources/lang/nn-NO/admin/statuslabels/table.php new file mode 100644 index 0000000000..d84409f884 --- /dev/null +++ b/resources/lang/nn-NO/admin/statuslabels/table.php @@ -0,0 +1,19 @@ + 'Om statusmerker', + 'archived' => 'Arkivert', + 'create' => 'Opprett statusmerke', + 'color' => 'Graf-farge', + 'default_label' => 'Standard Etikett', + 'default_label_help' => 'Dette brukes til å sikre at de mest brukte statusetikettene dine vises øverst i valgboksen når du oppretter/redigerer eiendeler.', + 'deployable' => 'Utleverbar', + 'info' => 'Statusmerker brukes for å beskrive de forskjellige statusene dine eiendeler kan ha. De kan være under reparasjon, tapt/stjålet, osv. Du kan opprette nye statusmerker for utleverbare, under arbeid eller arkiverte eiendeler.', + 'name' => 'Statusnavn', + 'pending' => 'Under arbeid', + 'status_type' => 'Statustype', + 'show_in_nav' => 'Vis i sidenavigasjon', + 'title' => 'Statusmerke', + 'undeployable' => 'Ikke utleverbar', + 'update' => 'Oppdater statusmerke', +); diff --git a/resources/lang/nn-NO/admin/suppliers/message.php b/resources/lang/nn-NO/admin/suppliers/message.php new file mode 100644 index 0000000000..fc12ac80bb --- /dev/null +++ b/resources/lang/nn-NO/admin/suppliers/message.php @@ -0,0 +1,28 @@ + 'Slettet leverandør', + 'does_not_exist' => 'Leverandør finnes ikke.', + + + 'create' => array( + 'error' => 'Leverandør ble ikke opprettet. Prøv igjen.', + 'success' => 'Opprettelse av leverandør vellykket.' + ), + + 'update' => array( + 'error' => 'Leverandør ble ikke oppdatert. Prøv igjen', + 'success' => 'Oppdatering av leverandør vellykket.' + ), + + 'delete' => array( + 'confirm' => 'Er du sikker på at du vil slette denne leverandøren?', + 'error' => 'Det oppstod et problem under sletting av leverandør. Prøv igjen.', + 'success' => 'Sletting av leverandør vellykket.', + 'assoc_assets' => 'Denne leverandøren er tilknyttet med :asset_count eiendel(er), og kan ikke slettes. Oppdater eiendelene dine til ikke å bruke denne leverandøren og prøv igjen. ', + 'assoc_licenses' => 'Denne leverandøren er tilknyttet med :licenses_count lisens(er), og kan ikke slettes. Oppdater lisensene dine til ikke å bruke denne leverandøren og prøv igjen. ', + 'assoc_maintenances' => 'Denne leverandøren er tilknyttet med :asset_maintenances_count eiendelsvedlikehold, og kan ikke slettes. Oppdater dine eiendelsvedlikehold til ikke å bruke denne leverandøren og prøv igjen. ', + ) + +); diff --git a/resources/lang/nn-NO/admin/suppliers/table.php b/resources/lang/nn-NO/admin/suppliers/table.php new file mode 100644 index 0000000000..39a66faff6 --- /dev/null +++ b/resources/lang/nn-NO/admin/suppliers/table.php @@ -0,0 +1,26 @@ + 'Om leverandører', + 'about_suppliers_text' => 'Leverandører brukes til å spore kilden til varer', + 'address' => 'Leverandøradresse', + 'assets' => 'Eiendeler', + 'city' => 'By', + 'contact' => 'Kontaktnavn', + 'country' => 'Land', + 'create' => 'Opprett leverandør', + 'email' => 'E-post', + 'fax' => 'Faks', + 'id' => 'ID', + 'licenses' => 'Lisenser', + 'name' => 'Leverandørnavn', + 'notes' => 'Notater', + 'phone' => 'Telefon', + 'state' => 'Stat', + 'suppliers' => 'Leverandører', + 'update' => 'Oppdater leverandør', + 'view' => 'Vis leverandør', + 'view_assets_for' => 'Vis eiendeler for', + 'zip' => 'Postnummer', + +); diff --git a/resources/lang/nn-NO/admin/users/general.php b/resources/lang/nn-NO/admin/users/general.php new file mode 100644 index 0000000000..ffe4751d62 --- /dev/null +++ b/resources/lang/nn-NO/admin/users/general.php @@ -0,0 +1,54 @@ + 'Denne brukeren kan logge inn', + 'activated_disabled_help_text' => 'Du kan ikke redigere aktiveringsstatus for din egen konto.', + 'assets_user' => 'Eiendeler tildelt :name', + 'bulk_update_warn' => 'Du prøver å redigere egenskapene for: user_count brukere. Merk at du kan ikke endre dine egne brukerens attributter ved hjelp av dette skjemaet, og må gjøre endringer i din egen bruker individuelt.', + 'bulk_update_help' => 'I dette skjemaet kan du oppdatere flere brukere samtidig. Bare fyll ut feltene du vil endre. Eventuelle tomme felt vil forbli uendret.', + 'current_assets' => 'Eiendeler som er sjekket ut til denne brukeren', + 'clone' => 'Klon bruker', + 'contact_user' => 'Kontakt :navn', + 'edit' => 'Rediger bruker', + 'filetype_info' => 'Gyldige filtyper er png, gif, jpg, jpeg, doc docx, pdf, txt, zip og rar.', + 'history_user' => 'Historikk for :name', + 'info' => 'Info', + 'restore_user' => 'Klikk her for å gjenopprette dem.', + 'last_login' => 'Siste innlogging', + 'ldap_config_text' => 'LDAP-konfigurasjonsinnstillingene kan finnes på Admin > innstillinger. Den (Valgfrie) valgte plasseringen angis for alle importerte brukere.', + 'print_assigned' => 'Skriv ut alt tilordnet', + 'email_assigned' => 'Epostliste for alle tilknyttede', + 'user_notified' => 'Brukeren har blitt sendt en liste over elementer som er tildelt brukeren.', + 'auto_assign_label' => 'Inkluder denne brukeren ved automatisk tildeling av kvalifiserte lisenser', + 'auto_assign_help' => 'Hopp over brukeren i autotildeling av lisenser', + 'software_user' => 'Programvare utsjekket til :name', + 'send_email_help' => 'Du må legge inn brukerens e-postadresse for å kunne sende dem innloggingsinformasjon. Sending av innloggingsinformasjon kan kun gjøres når brukeren blir opprettet. Passordet lagres på en sikker måte, slik at det ikke kan hentes opp når det er lagret.', + 'view_user' => 'Vis bruker :name', + 'usercsv' => 'CSV-fil', + 'two_factor_admin_optin_help' => 'Gjeldende administrasjonsinnstillinger tillater selektiv håndhevelse av to-faktor autentisering. ', + 'two_factor_enrolled' => '2FA enhet registrert ', + 'two_factor_active' => '2FA Aktiv ', + 'user_deactivated' => 'Bruker kan ikke logge inn', + 'user_activated' => 'Bruker kan logge inn', + 'activation_status_warning' => 'Ikke endre aktiveringsstatus', + 'group_memberships_helpblock' => 'Bare superbrukere kan redigere gruppemedlemskap.', + 'superadmin_permission_warning' => 'Kun superbrukere kan gjøre en annen bruker til superbruker.', + 'admin_permission_warning' => 'Kun brukere med adminrettigheter eller høyere kan gi en annen bruker admintilgang.', + 'remove_group_memberships' => 'Fjern gruppemedlemskap', + 'warning_deletion_information' => 'Du er i ferd med å sjekke inn ALLE elementene fra :count bruker(e) nedenfor. Super admin navn er uthevet med rødt.', + 'update_user_assets_status' => 'Oppdater alle ressursene til disse brukerne til denne statusen', + 'checkin_user_properties' => 'Sjekk inn alt tilbehør koblet til disse brukerne', + 'remote_label' => 'Dette er en ekstern bruker', + 'remote' => 'Ekstern', + 'remote_help' => 'Dette kan være nyttig hvis du trenger å filtrere ut eksterne brukere som aldri eller sjelden kommer inn i dine fysiske steder.', + 'not_remote_label' => 'Dette er ikke en ekstern bruker', + 'vip_label' => 'VIP bruker', + 'vip_help' => 'Dette kan være nyttig for å markere viktige mennesker i org hvis du vil håndtere dem på spesielle måter.', + 'create_user' => 'Opprett en bruker', + 'create_user_page_explanation' => 'Dette er kontoinformasjon du vil bruke for å få tilgang til nettstedet for første gang.', + 'email_credentials' => 'E-post påloggingsinformasjon', + 'email_credentials_text' => 'Send opplysningene mine til e-postadressen ovenfor', + 'next_save_user' => 'Neste: Lagre bruker', + 'all_assigned_list_generation' => 'Generert på:', + 'email_user_creds_on_create' => 'Send denne brukeren sin påloggingsinformasjon via e-post?', +]; diff --git a/resources/lang/nn-NO/admin/users/message.php b/resources/lang/nn-NO/admin/users/message.php new file mode 100644 index 0000000000..ece6cbec5e --- /dev/null +++ b/resources/lang/nn-NO/admin/users/message.php @@ -0,0 +1,74 @@ + 'Du har akseptert eiendelen.', + 'declined' => 'Du har avvist eiendelen.', + 'bulk_manager_warn' => 'Brukerne er oppdatert, men lederen ble ikke lagret fordi lederen du valgte også i brukerlisten for redigering og brukere kan ikke være sin egen leder. Velg brukerne igjen, unntatt lederen.', + 'user_exists' => 'Bruker finnes allerede!', + 'user_not_found' => 'Brukeren finnes ikke.', + 'user_login_required' => 'Login-feltet er påkrevd', + 'user_has_no_assets_assigned' => 'Ingen eiendeler er tilordnet brukeren for øyeblikket.', + 'user_password_required' => 'Passord er påkrevd.', + 'insufficient_permissions' => 'Utilstrekkelige rettigheter.', + 'user_deleted_warning' => 'Denne brukeren er slettet. Du vil må gjenopprette denne brukeren for å redigere, eller tildele nye eiendeler.', + 'ldap_not_configured' => 'LDAP integrasjonen er ikke konfigurert i denne installasjonen.', + 'password_resets_sent' => 'De valgte brukerne som er aktivert og har en gyldig e-postadresse har blitt sendt en tilbakestillingslenke.', + 'password_reset_sent' => 'En lenke for tilbakestilling av passord har blitt sendt til :email!', + 'user_has_no_email' => 'Denne brukeren har ingen e-postadresse i sin profil.', + 'log_record_not_found' => 'Finner ikke et samsvarende loggelement for denne brukeren.', + + + 'success' => array( + 'create' => 'Opprettelse av bruker vellykket.', + 'update' => 'Oppdatering av bruker vellykket.', + 'update_bulk' => 'Oppdatering av brukere vellykket!', + 'delete' => 'Sletting av bruker vellykket.', + 'ban' => 'Vellykket forbud av bruker.', + 'unban' => 'Forbud av bruker ble opphevet.', + 'suspend' => 'Vellykket deaktivering av bruker.', + 'unsuspend' => 'Vellykket aktivering av bruker.', + 'restored' => 'Vellykket gjenopprettelse av bruker.', + 'import' => 'Vellykket import av brukere.', + ), + + 'error' => array( + 'create' => 'Det oppstod et problem under opprettelse av bruker. Prøv igjen.', + 'update' => 'Det oppstod et problem under oppdatering av bruker. Prøv igjen.', + 'delete' => 'Det oppstod et problem under sletting av bruker. Prøv igjen.', + 'delete_has_assets' => 'Denne brukeren har utstyr tildelt og kan ikke slettes.', + 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', + 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', + 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', + 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', + 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', + 'unsuspend' => 'Det oppstod et problem under aktivering av bruker. Prøv igjen.', + 'import' => 'Det oppstod et problem under import av brukere. Prøv igjen.', + 'asset_already_accepted' => 'Denne eiendelen er allerede akseptert.', + 'accept_or_decline' => 'Du må enten akseptere eller avvise denne eiendelen.', + 'cannot_delete_yourself' => 'We would feel really bad if you deleted yourself, please reconsider.', + 'incorrect_user_accepted' => 'Eiendelen du prøvde å akseptere ble ikke sjekket ut til deg.', + 'ldap_could_not_connect' => 'Kunne ikke kople til LDAP-serveren. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server:', + 'ldap_could_not_bind' => 'Kunne ikke opprette tilkopling til LDAP-server. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server: ', + 'ldap_could_not_search' => 'Kunne ikke utføre søk på LDAP-serveren. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server:', + 'ldap_could_not_get_entries' => 'Fikk ingen oppføringer fra LDAP-serveren. Sjekk LDAP-innstillingene i konfigurasjonsfilen.
Feil fra LDAP-server:', + 'password_ldap' => 'Passordet for denne kontoen administreres av LDAP/Active Directory. Kontakt IT-avdelingen for å endre passordet. ', + ), + + 'deletefile' => array( + 'error' => 'Fil ble ikke slettet. Prøv igjen.', + 'success' => 'Fil ble slettet.', + ), + + 'upload' => array( + 'error' => 'Fil(er) ble ikke lastet opp. Prøv igjen.', + 'success' => 'Vellykket opplasting av fil(er).', + 'nofiles' => 'Du valgte ingen filer for opplasting', + 'invalidfiles' => 'En eller flere av filene dine er for store eller av en filtype som ikke er tillatt. Tillatte filtyper er png, gif, jpg, doc, docx, pdf og txt.', + ), + + 'inventorynotification' => array( + 'error' => 'Denne brukeren har ingen e-post.', + 'success' => 'Brukeren har blitt varslet om det gjeldende inventaret.' + ) +); \ No newline at end of file diff --git a/resources/lang/nn-NO/admin/users/table.php b/resources/lang/nn-NO/admin/users/table.php new file mode 100644 index 0000000000..993196129e --- /dev/null +++ b/resources/lang/nn-NO/admin/users/table.php @@ -0,0 +1,41 @@ + 'Aktiv', + 'allow' => 'Tillatt', + 'checkedout' => 'Eiendeler', + 'created_at' => 'Opprettet', + 'createuser' => 'Opprett bruker', + 'deny' => 'Nekt', + 'email' => 'E-post', + 'employee_num' => 'Ansattnummer', + 'first_name' => 'Fornavn', + 'groupnotes' => 'Velg en gruppe for brukeren. Husk at brukeren får samme rettigheter som gruppen han tildeles. Bruk ctrl+museklikk (eller cmd+museklikk på MacOS) for å velge bort grupper.', + 'id' => 'Id', + 'inherit' => 'Arv', + 'job' => 'Jobbtittel', + 'last_login' => 'Siste innlogging', + 'last_name' => 'Etternavn', + 'location' => 'Lokasjon', + 'lock_passwords' => 'Innloggingsdetaljer kan ikke endres i denne installasjonen.', + 'manager' => 'Overordnet', + 'managed_locations' => 'Administrere plasseringer', + 'managed_users' => 'Administrerte brukere', + 'name' => 'Navn', + 'nogroup' => 'Ingen grupper er opprettet ennå. For å legge til en, besøk: ', + 'notes' => 'Notater', + 'password_confirm' => 'Bekreft passord', + 'password' => 'Passord', + 'phone' => 'Telefon', + 'show_current' => 'Vis nåværende brukere', + 'show_deleted' => 'Vis slettede brukere', + 'title' => 'Tittel', + 'to_restore_them' => 'for å gjenopprette de.', + 'total_assets_cost' => "Totale ressurskostnader", + 'updateuser' => 'Oppdater bruker', + 'username' => 'Brukernavn', + 'user_deleted_text' => 'Denne brukeren er merket som slettet.', + 'username_note' => '(Dette brukes til binding i Active Directory, ikke for innlogging)', + 'cloneuser' => 'Klon bruker', + 'viewusers' => 'Vis brukere', +); diff --git a/resources/lang/nn-NO/auth.php b/resources/lang/nn-NO/auth.php new file mode 100644 index 0000000000..bfc2a2bd04 --- /dev/null +++ b/resources/lang/nn-NO/auth.php @@ -0,0 +1,20 @@ + 'Disse opplysningene samsvarer ikke med våre oppføringer.', + 'password' => 'Angitt passord er feil.', + 'throttle' => 'For mange innloggingsforsøk. Prøv igjen om :seconds sekunder.', + +); diff --git a/resources/lang/nn-NO/auth/general.php b/resources/lang/nn-NO/auth/general.php new file mode 100644 index 0000000000..47fb9d7f35 --- /dev/null +++ b/resources/lang/nn-NO/auth/general.php @@ -0,0 +1,18 @@ + 'Send Passord Tilbakestillingslink', + 'email_reset_password' => 'E-post Passord Tilbakestill', + 'reset_password' => 'Tilbakestill Passord', + 'saml_login' => 'Logg inn med SSO', + 'login' => 'Logg inn', + 'login_prompt' => 'Vennligst logg inn', + 'forgot_password' => 'Jeg har glemt passordet mitt', + 'ldap_reset_password' => 'Klikk her for å nullstille ditt LDAP-passord', + 'remember_me' => 'Husk meg', + 'username_help_top' => 'Skriv inn ditt brukernavn for å få tilsendt en lenke for tilbakestilling av passord.', + 'username_help_bottom' => 'Ditt brukernavn og e-postadresse kan være det samme, men kan være, avhengig av din konfigurasjon. Dersom du ikke husker brukernavnet ditt, ta kontakt med systemansvarlig.

Brukernavn uten en tilknyttet e-postadresse vil ikke bli sendt en lenke for tilbakestilling av passordet. ', + 'google_login' => 'Logg inn med Google Workspace', + 'google_login_failed' => 'Google innlogging feilet, vennligst prøv igjen.', +]; + diff --git a/resources/lang/nn-NO/auth/message.php b/resources/lang/nn-NO/auth/message.php new file mode 100644 index 0000000000..ba1ae4ec94 --- /dev/null +++ b/resources/lang/nn-NO/auth/message.php @@ -0,0 +1,47 @@ + 'En konto med denne e-postadressen finnes allerede.', + 'account_not_found' => 'Brukernavnet eller passordet er feil.', + 'account_not_activated' => 'Denne brukerkontoen er ikke aktiv.', + 'account_suspended' => 'Denne brukerkontoen er deaktivert.', + 'account_banned' => 'Denne brukerkontoen er forbudt.', + 'throttle' => 'For mange mislykkede påloggingsforsøk. Prøv igjen om :minutes minutter.', + + 'two_factor' => array( + 'already_enrolled' => 'Enheten din er allerede registrert.', + 'success' => 'Du har logget inn.', + 'code_required' => 'To-faktor-kode er påkrevd.', + 'invalid_code' => 'To-faktor-koden er ugyldig.', + 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', + 'please_enroll' => 'Please enroll a device in two-factor authentication.', + ), + + 'signin' => array( + 'error' => 'Det oppstod et problem under innlogging. Prøv igjen.', + 'success' => 'Vellykket innlogging.', + ), + + 'logout' => array( + 'error' => 'Det oppstod et problem med utlogging, prøv igjen.', + 'success' => 'Du har logget ut.', + ), + + 'signup' => array( + 'error' => 'Det oppstod et problem under opprettelse av konto. Prøv igjen.', + 'success' => 'Opprettelse av konto vellykket.', + ), + + 'forgot-password' => array( + 'error' => 'Det oppstod et problem under henting av kode for resetting av passord. Prøv igjen.', + 'success' => 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med gjenopprettelse av passord.', + ), + + 'forgot-password-confirm' => array( + 'error' => 'Det oppstod et problem under gjenopprettelse av passordet ditt. Prøv igjen.', + 'success' => 'Ditt passord er resatt.', + ), + + +); diff --git a/resources/lang/nn-NO/button.php b/resources/lang/nn-NO/button.php new file mode 100644 index 0000000000..d68f89a77a --- /dev/null +++ b/resources/lang/nn-NO/button.php @@ -0,0 +1,34 @@ + 'Handlinger', + 'add' => 'Opprett ny', + 'cancel' => 'Avbryt', + 'checkin_and_delete' => 'Sjekk inn alle / slett bruker', + 'delete' => 'Slett', + 'edit' => 'Rediger', + 'clone' => 'Clone', + 'restore' => 'Gjenopprett', + 'remove' => 'Fjern', + 'request' => 'Forespørsel', + 'submit' => 'Send', + 'upload' => 'Last opp', + 'select_file' => 'Velg fil...', + 'select_files' => 'Velg filer...', + 'generate_labels' => '{1} Lag etikett [2,*] Lag etiketter', + 'send_password_link' => 'Send lenke for å nullstille passordet', + 'go' => 'Gå', + 'bulk_actions' => 'Massehandlinger', + 'add_maintenance' => 'Legg til vedlikehold', + 'append' => 'Legg til', + 'new' => 'Ny', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] +]; diff --git a/resources/lang/nn-NO/general.php b/resources/lang/nn-NO/general.php new file mode 100644 index 0000000000..9c70d97a12 --- /dev/null +++ b/resources/lang/nn-NO/general.php @@ -0,0 +1,562 @@ + '2FA reset', + 'accessories' => 'Tilbehør', + 'activated' => 'Aktivert', + 'accepted_date' => 'Akseptdato', + 'accessory' => 'Tilbehør', + 'accessory_report' => 'Rapport over tilbehør', + 'action' => 'Handlinger', + 'activity_report' => 'Aktivitetsrapport', + 'address' => 'Adresse', + 'admin' => 'Admin', + 'admin_tooltip' => 'This user has admin privileges', + 'superuser' => 'Superuser', + 'superuser_tooltip' => 'This user has superuser privileges', + 'administrator' => 'Administrator', + 'add_seats' => 'Setelisenser lagt til', + 'age' => "Alder", + 'all_assets' => 'Alle eiendeler', + 'all' => 'Alle', + 'archived' => 'Arkivert', + 'asset_models' => 'Eiendelsmodeller', + 'asset_model' => 'Modell', + 'asset' => 'Eiendel', + 'asset_report' => 'Eiendelsrapport', + 'asset_tag' => 'Eiendelsmerke', + 'asset_tags' => 'Eiendelsmerker', + 'assets_available' => 'Tilgjengelige eiendeler', + 'accept_assets' => 'Godta Eiendelen :name', + 'accept_assets_menu' => 'Godta eiendeler', + 'audit' => 'Revisjon', + 'audit_report' => 'Overvåkingslogg', + 'assets' => 'Eiendeler', + 'assets_audited' => 'reviderte ressurser', + 'assets_checked_in_count' => 'innsjekkede ressurser', + 'assets_checked_out_count' => 'utsjekkede ressurser', + 'asset_deleted_warning' => 'Denne ressursen er slettet. Du må gjenopprette den før du kan tilordne den til noen.', + 'assigned_date' => 'Dato tildelt', + 'assigned_to' => 'Tilordnet :name', + 'assignee' => 'Tilordnet til', + 'avatar_delete' => 'Slett Avatar', + 'avatar_upload' => 'Last opp Avatar', + 'back' => 'Tilbake', + 'bad_data' => 'Fant ingenting. Kanskje feil i data?', + 'bulkaudit' => 'Bulk revisjon', + 'bulkaudit_status' => 'Revisjon Status', + 'bulk_checkout' => 'Masseutsjekk', + 'bulk_edit' => 'Masseredigering', + 'bulk_delete' => 'Massesletting', + 'bulk_actions' => 'Massehandlinger', + 'bulk_checkin_delete' => 'Masseinnsjekk/Slett brukere', + 'byod' => 'BYOD', + 'byod_help' => 'Denne enheten er eid av brukeren', + 'bystatus' => 'etter Status', + 'cancel' => 'Avbryt', + 'categories' => 'Kategorier', + 'category' => 'Kategori', + 'change' => 'Inn/ut', + 'changeemail' => 'Endre e-postadresse', + 'changepassword' => 'Endre passord', + 'checkin' => 'Sjekk inn', + 'checkin_from' => 'Innsjekk fra', + 'checkout' => 'Sjekk ut', + 'checkouts_count' => 'Sjekk ut', + 'checkins_count' => 'Sjekk inn', + 'user_requests_count' => 'Forespørsler', + 'city' => 'By', + 'click_here' => 'Klikk her', + 'clear_selection' => 'Tøm valg', + 'companies' => 'Selskaper', + 'company' => 'Firmanavn', + 'component' => 'Komponent', + 'components' => 'Komponenter', + 'complete' => 'Fullført', + 'consumable' => 'Forbruksvare', + 'consumables' => 'Forbruksvarer', + 'country' => 'Land', + 'could_not_restore' => 'Feil ved gjenoppretting av :item_type: :error', + 'not_deleted' => ':item_type er ikke slettet og kan ikke gjenopprettes', + 'create' => 'Opprett ny', + 'created' => 'Enhet opprettet', + 'created_asset' => 'eiendel opprettet', + 'created_at' => 'Opprettet', + 'created_by' => 'Opprettet av', + 'record_created' => 'Post opprettet', + 'updated_at' => 'Oppdatert', + 'currency' => '$', // this is deprecated + 'current' => 'Nåværende', + 'current_password' => 'Gjeldende passord', + 'customize_report' => 'Tilpass rapport', + 'custom_report' => 'Tilpasset eiendelsrapport', + 'dashboard' => 'Kontrollpanel', + 'days' => 'dager', + 'days_to_next_audit' => 'Dager til neste revisjon', + 'date' => 'Dato', + 'debug_warning' => 'Advarsel!', + 'debug_warning_text' => 'Dette programmet kjører i produksjonsmodus med feilsøking aktiverert. Dette kan utsette følsomme data hvis programmet er tilgjengelig for omverdenen. Deaktiver debug modus ved å sette APP_DEBUG-verdien i filen .env til false.', + 'delete' => 'Slett', + 'delete_confirm' => 'Er du sikker på at du vil slette :item?', + 'delete_confirm_no_undo' => 'Er du sikker på at du vil slette :item? Dette kan ikke angres.', + 'deleted' => 'Slettet', + 'delete_seats' => 'Slettede setelisenser', + 'deletion_failed' => 'Sletting mislyktes', + 'departments' => 'Avdelinger', + 'department' => 'Avdeling', + 'deployed' => 'Utlevert', + 'depreciation' => 'Avskrivning', + 'depreciations' => 'Avskrivninger', + 'depreciation_report' => 'Avskrivningsrapport', + 'details' => 'Detaljer', + 'download' => 'Last ned', + 'download_all' => 'Last ned alle', + 'editprofile' => 'Rediger din profil', + 'eol' => 'Livstid', + 'email_domain' => 'E-postdomene', + 'email_format' => 'E-postformat', + 'employee_number' => 'Ansattnummer', + 'email_domain_help' => 'Brukes til å generere e-postadresser ved import', + 'error' => 'Feil', + 'exclude_archived' => 'Ekskluder arkiverte ressurser', + 'exclude_deleted' => 'Ekskluder slettede ressurser', + 'example' => 'Eksempel: ', + 'filastname_format' => 'Fornavn (kun initial) Etternavn (oladunk@example.com)', + 'firstname_lastname_format' => 'Fornavn Etternavn (oladunk@example.com)', + 'firstname_lastname_underscore_format' => 'Fornavn Etternavn (oladunk@example.com)', + 'lastnamefirstinitial_format' => 'Etternavn Initialer (oladunk@example.com)', + 'firstintial_dot_lastname_format' => 'Fornavn Initialer. Etternavn (j.smith@example.com)', + 'firstname_lastname_display' => 'Fornavn Etternavn (Kari Torildsdottir)', + 'lastname_firstname_display' => 'Etternavn Fornavn (Torildsdottir, Kari)', + 'name_display_format' => 'Navneformat', + 'first' => 'Første', + 'firstnamelastname' => 'Fornavn Etternavn (oladunk@example.com)', + 'lastname_firstinitial' => 'Etternavn Fornavn Initialer (smith_j@example.com)', + 'firstinitial.lastname' => 'Fornavn Initialer Etternavn (j.smith@example.com)', + 'firstnamelastinitial' => 'Fornavn Etternavn Initialer (janes@example.com)', + 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'first_name' => 'Fornavn', + 'first_name_format' => 'Fornavn (oladunk@example.com)', + 'files' => 'Filer', + 'file_name' => 'Fil', + 'file_type' => 'Filtype', + 'filesize' => 'Filstørrelse', + 'file_uploads' => 'Filopplastinger', + 'file_upload' => 'Filopplastning', + 'generate' => 'Generer', + 'generate_labels' => 'Opprett etiketter', + 'github_markdown' => 'Dette feltet tillater Github flavored markdown.', + 'groups' => 'Grupper', + 'gravatar_email' => 'Gravatar e-postadresse', + 'gravatar_url' => 'Endre din avatar på Gravatar.com.', + 'history' => 'Historie', + 'history_for' => 'Historikk for', + 'id' => 'ID', + 'image' => 'Bilde', + 'image_delete' => 'Slett bilde', + 'include_deleted' => 'Inkluder slettede ressurser', + 'image_upload' => 'Last opp bilde', + 'filetypes_accepted_help' => 'Godkjent filtype er :types. Maks opplastingsstørrelse er :size.|Aksepterte filtyper er :types. Maks opplastingsstørrelse er :size.', + 'filetypes_size_help' => 'Maks opplastingsstørrelse er :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'unaccepted_image_type' => 'Denne bildefilen var ikke lesbar. Aksepterte filtyper er jpg, webp, png, gif og svg. Mime-typen til denne filen er :mimetype.', + 'import' => 'Importer', + 'import_this_file' => 'Kartfelter og behandle denne filen', + 'importing' => 'Importerer', + 'importing_help' => 'Du kan importere eiendeler, tilbehør, lisenser, komponenter, forbruksvarer og brukere via CSV-fil.

CSV-en må være kommaseparert og formatert med overskrifter som stemmer overens med de i eksempel-CSV i dokumentasjonen.', + 'import-history' => 'Importhistorikk', + 'asset_maintenance' => 'Vedlikehold av eiendeler', + 'asset_maintenance_report' => 'Rapport Vedlikehold av eiendeler', + 'asset_maintenances' => 'Vedlikehold av eiendeler', + 'item' => 'Enhet', + 'item_name' => 'Navn', + 'import_file' => 'importer CSV-fil', + 'import_type' => 'Type CSV-import', + 'insufficient_permissions' => 'Utilstrekkelige rettigheter!', + 'kits' => 'Forhåndsdefinerte sett', + 'language' => 'Språk', + 'last' => 'Siste', + 'last_login' => 'Siste pålogging', + 'last_name' => 'Etternavn', + 'license' => 'Lisens', + 'license_report' => 'Lisensrapport', + 'licenses_available' => 'Tilgjengelige lisenser', + 'licenses' => 'Lisenser', + 'list_all' => 'List alle', + 'loading' => 'Laster... vennligst vent....', + 'lock_passwords' => 'Denne feltverdien vil ikke bli lagret i en demo-installasjon.', + 'feature_disabled' => 'Denne funksjonen er deaktivert i demo-installasjonen.', + 'location' => 'Lokasjon', + 'location_plural' => 'Stedslokasjoner', + 'locations' => 'Lokasjoner', + 'logo_size' => 'Kvadratisk logo vises best med Logo + Text. Logo maximum display size is 50px high x 500px wide. ', + 'logout' => 'Logg ut', + 'lookup_by_tag' => 'Søk på ID-merke', + 'maintenances' => 'Vedlikehold', + 'manage_api_keys' => 'Administrer API-nøkler', + 'manufacturer' => 'Produsent', + 'manufacturers' => 'Produsenter', + 'markdown' => 'Dette feltet tillater Github flavored markdown.', + 'min_amt' => 'Min. antall', + 'min_amt_help' => 'Minimum antall varer som skal være tilgjengelig før et varsel blir utløst. La stå tomt hvis du ikke vil motta varsler for lavt inventar.', + 'model_no' => 'Modellnummer', + 'months' => 'måneder', + 'moreinfo' => 'Mer info', + 'name' => 'Navn', + 'new_password' => 'Nytt passord', + 'next' => 'Neste', + 'next_audit_date' => 'Neste revisjon dato', + 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', + 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', + 'no_email' => 'Ingen e-postadresse tilknyttet denne brukeren', + 'last_audit' => 'Siste revisjon', + 'new' => 'ny!', + 'no_depreciation' => 'Ingen avskrivning', + 'no_results' => 'Ingen treff.', + 'no' => 'Nei', + 'notes' => 'Notater', + 'order_number' => 'Ordreummer', + 'only_deleted' => 'Kun slettede ressurser', + 'page_menu' => 'Viser _MENU_ enheter', + 'pagination_info' => 'Viser _START_ til _END_ av _TOTAL_ enheter', + 'pending' => 'Under arbeid', + 'people' => 'Folk', + 'per_page' => 'Resultater pr side', + 'previous' => 'Forrige', + 'processing' => 'Behandler', + 'profile' => 'Din profil', + 'purchase_cost' => 'Innkjøpskostnad', + 'purchase_date' => 'Innkjøpsdato', + 'qty' => 'Antall', + 'quantity' => 'Antall', + 'quantity_minimum' => 'Du har :count enheter under eller nesten under minimum antall', + 'quickscan_checkin' => 'Hurtiginnsjekk ved skanning', + 'quickscan_checkin_status' => 'Innsjekkingsstatus', + 'ready_to_deploy' => 'Klar for utlevering', + 'recent_activity' => 'Nylig aktivitet', + 'remaining' => 'Gjenstår', + 'remove_company' => 'Fjern tilknytning til bedrift', + 'reports' => 'Rapporter', + 'restored' => 'gjenopprettet', + 'restore' => 'Gjenopprett', + 'requestable_models' => 'Forespørrbare modeller', + 'requestable_items' => 'Requestable Items', + 'requested' => 'Forespurt', + 'requested_date' => 'Forespurt dato', + 'requested_assets' => 'Forespurte eiendeler', + 'requested_assets_menu' => 'Forespurte eiendeler', + 'request_canceled' => 'Forespørsel avbrutt', + 'request_item' => 'Request this item', + 'external_link_tooltip' => 'External link to', + 'save' => 'Lagre', + 'select_var' => 'Velg :thing... ', // this will eventually replace all of our other selects + 'select' => 'Velg', + 'select_all' => 'Velg alle', + 'search' => 'Søk', + 'select_category' => 'Velg en kategori', + 'select_datasource' => 'Velg en datakilde', + 'select_department' => 'Velg en avdeling', + 'select_depreciation' => 'Velg en avskrivningstype', + 'select_location' => 'Velg en lokasjon', + 'select_manufacturer' => 'Velg en produsent', + 'select_model' => 'Velg en modell', + 'select_supplier' => 'Velg en leverandør', + 'select_user' => 'Velg en bruker', + 'select_date' => 'Velg dato (ÅÅÅÅ-MM-DD)', + 'select_statuslabel' => 'Velg status', + 'select_company' => 'Velg bedrift', + 'select_asset' => 'Velg eiendel', + 'settings' => 'Innstillinger', + 'show_deleted' => 'Vis slettede', + 'show_current' => 'Vis gjeldende', + 'sign_in' => 'Logg inn', + 'signature' => 'Signatur', + 'signed_off_by' => 'Godkjent av', + 'skin' => 'Tema', + 'webhook_msg_note' => 'En varsling vil bli sendt via webhook', + 'webhook_test_msg' => 'Hei-hå! Ser som din Slack-integrasjon med Snipe-IT fungerer!', + 'some_features_disabled' => 'DEMO MODUS: Noe funksjonalitet er skrudd av i denne installasjonen.', + 'site_name' => 'Nettstedsnavn', + 'state' => 'Stat', + 'status_labels' => 'Statusmerker', + 'status' => 'Status', + 'accept_eula' => 'Akseptavtale', + 'supplier' => 'Leverandør', + 'suppliers' => 'Leverandører', + 'sure_to_delete' => 'Er du sikker på at du vil slette', + 'sure_to_delete_var' => 'Er du sikker på at du vil slette :item?', + 'delete_what' => 'Slett :item', + 'submit' => 'Send', + 'target' => 'Mål', + 'time_and_date_display' => 'Tid og Datovisning', + 'total_assets' => 'eiendeler totalt', + 'total_licenses' => 'lisener totalt', + 'total_accessories' => 'antall tilbehør', + 'total_consumables' => 'antall forbruksvarer', + 'type' => 'Type', + 'undeployable' => 'Ikke utleverbar', + 'unknown_admin' => 'Ukjent admin', + 'username_format' => 'Format brukernavn', + 'username' => 'Brukernavn', + 'update' => 'Oppdater', + 'upload_filetypes_help' => 'Tillatte filtyper er png, gif, jpg, jpeg, doc, docx, pdf, xls, xlsx, txt, lic, xml, zip, rtf og rar. Maks. filstørrelse er :size.', + 'uploaded' => 'Lastet opp', + 'user' => 'Bruker', + 'accepted' => 'akseptert', + 'declined' => 'avslått', + 'declined_note' => 'Declined Notes', + 'unassigned' => 'Ikke tildelt', + 'unaccepted_asset_report' => 'Ikke aksepterte eiendeler', + 'users' => 'Brukere', + 'viewall' => 'Vis alle', + 'viewassets' => 'Vis tildelte eiendeler', + 'viewassetsfor' => 'Vis eiendelene til :name', + 'website' => 'Nettsted', + 'welcome' => 'Velkommen, :name', + 'years' => 'år', + 'yes' => 'Ja', + 'zip' => 'Postnummer', + 'noimage' => 'Bilde er ikke lastet opp eller finner ikke bilde.', + 'file_does_not_exist' => 'Den forespurte filen finnes ikke på serveren.', + 'file_upload_success' => 'Filopplasting vellykket!', + 'no_files_uploaded' => 'Filopplasting vellykket!', + 'token_expired' => 'Din sesjon har utløpt. Prøv igjen.', + 'login_enabled' => 'Innlogging aktiv', + 'audit_due' => 'Revisjonsfrist nær', + 'audit_due_days' => 'Aktiva Frist for revisjon innen :days days|Due for Audit Om dager', + 'checkin_due' => 'Forfalt for innsjekk', + 'checkin_overdue' => 'Forfalt for innsjekk', + 'checkin_due_days' => 'Eiendeler Tidsfrist for innsjekk innen :days Day|Asset Due for Checkin Innen :days', + 'audit_overdue' => 'Revisjonsfrist forfalt', + 'accept' => 'Akseptér :asset', + 'i_accept' => 'Jeg aksepterer', + 'i_decline' => 'Jeg avslår', + 'accept_decline' => 'Godta/Avslå', + 'sign_tos' => 'Signér under for å akseptere vilkårene for tjenesten:', + 'clear_signature' => 'Fjern signatur', + 'show_help' => 'Vis hjelp', + 'hide_help' => 'Skjul hjelp', + 'view_all' => 'se alle', + 'hide_deleted' => 'Skjul slettede', + 'email' => 'E-post', + 'do_not_change' => 'Ikke endre', + 'bug_report' => 'Rapporter feil', + 'user_manual' => 'Brukerhåndbok', + 'setup_step_1' => 'Trinn 1', + 'setup_step_2' => 'Trinn 2', + 'setup_step_3' => 'Trinn 3', + 'setup_step_4' => 'Trinn 4', + 'setup_config_check' => 'Sjekk konfigurasjon', + 'setup_create_database' => 'Opprett databasetabeller', + 'setup_create_admin' => 'Opprett adminbruker', + 'setup_done' => 'Ferdig!', + 'bulk_edit_about_to' => 'Du er i ferd med å redigere følgende: ', + 'checked_out' => 'Sjekket ut', + 'checked_out_to' => 'Sjekket ut til', + 'fields' => 'Felter', + 'last_checkout' => 'Siste utsjekk', + 'due_to_checkin' => 'Følgende :count elementer skal snart sjekkes inn:', + 'expected_checkin' => 'Forventet innsjekk', + 'reminder_checked_out_items' => 'Dette er en påminnelse om utstyr som er sjekket ut til deg. Hvis du mener at denne listen er unøyaktig (noe mangler, eller at noe vises her du tror du aldri har fått), vennligst send e-post til :reply_to_name på :reply_to_address.', + 'changed' => 'Endret', + 'to' => 'Til', + 'report_fields_info' => '

Velg feltene du vil inkludere i din egendefinerte rapport, og klikk Generer. Filen (custom-asset-report-YYYY-mm-dd.csv) vil bli lastet ned automatisk, og du kan åpne den i Excel.

+

Hvis du ønsker å eksportere bare enkelte eiendeler, bruk alternativene nedenfor til å finjustere resultatene dine.

', + 'range' => 'Område', + 'bom_remark' => 'Legg til et BOM (byte-order merke) i CSV-fila', + 'improvements' => 'Forbedringer', + 'information' => 'Informasjon', + 'permissions' => 'Tillatelser', + 'managed_ldap' => '(Administrert via LDAP)', + 'export' => 'Eksport', + 'ldap_sync' => 'LDAP-synk', + 'ldap_user_sync' => 'Synk av LDAP-brukere', + 'synchronize' => 'Synkroniser', + 'sync_results' => 'Synkroniseringsresultat', + 'license_serial' => 'Serienr/produktnøkkel', + 'invalid_category' => 'Ugyldig eller manglende kategori', + 'invalid_item_category_single' => 'Ugyldig eller mangler :type kategori. Oppdater kategorien til denne :type for å inkludere en gyldig kategori før du går til kassen.', + 'dashboard_info' => 'Dette er dashbordet ditt. Det er mange som det, men dette er ditt.', + '60_percent_warning' => '60% fullført (advarsel)', + 'dashboard_empty' => 'Det ser ut som du ikke har lagt til noe enda, så vi har ikke noe fantastisk å vise. Kom i gang ved å legge til noen eiendeler, tilbehør, forbruksartikler eller lisenser nå!', + 'new_asset' => 'Ny eiendel', + 'new_license' => 'Ny lisens', + 'new_accessory' => 'Nytt tilbehør', + 'new_consumable' => 'Ny forbruksvare', + 'collapse' => 'Kollaps', + 'assigned' => 'Tilordnet', + 'asset_count' => 'Antall eiendeler', + 'accessories_count' => 'Antall tilbehør', + 'consumables_count' => 'Antall forbruksvarer', + 'components_count' => 'Antall komponenter', + 'licenses_count' => 'Antall lisenser', + 'notification_error' => 'Feil', + 'notification_error_hint' => 'Vennligst sjekk skjemaet nedenfor for feil', + 'notification_bulk_error_hint' => 'Følgende felt har valideringsfeil og ble ikke endret:', + 'notification_success' => 'Suksess', + 'notification_warning' => 'Advarsel', + 'notification_info' => 'Informasjon', + 'asset_information' => 'Eiendelsinfo', + 'model_name' => 'Modell navn', + 'asset_name' => 'Eiendelens navn', + 'consumable_information' => 'Info om forbruksvare:', + 'consumable_name' => 'Navn på forbruksvare:', + 'accessory_information' => 'Info om tilbehør:', + 'accessory_name' => 'Tilbehørets navn:', + 'clone_item' => 'Klon element', + 'checkout_tooltip' => 'Sjekk ut denne gjenstanden', + 'checkin_tooltip' => 'Check this item in so that it is available for re-issue, re-imaging, etc', + 'checkout_user_tooltip' => 'Sjekk dette elementet ut til en bruker', + 'checkin_to_diff_location' => 'You can choose to check this asset in to a location other than this asset\'s default location of :default_location if one is set', + 'maintenance_mode' => 'Tjenesten er midlertidig utilgjengelig for systemoppdateringer. Vennligst prøv igjen senere.', + 'maintenance_mode_title' => 'System midlertidig ikke tilgjengelig', + 'ldap_import' => 'Brukerpassord bør ikke administreres av LDAP. (Dette lar deg sende glemte passord forespørsler.)', + 'purge_not_allowed' => 'Sletting av slettede data er deaktivert i .env-filen. Kontakt kundestøtte eller systemadministrator.', + 'backup_delete_not_allowed' => 'Sletting av sikkerhetskopier er deaktivert i .env filen. Kontakt kundestøtte eller systemadministrator.', + 'additional_files' => 'Flere filer', + 'shitty_browser' => 'Ingen signatur oppdaget. Hvis du bruker en eldre nettleser, vennligst bruk en mer moderne nettleser for å akseptere mottak av eiendel.', + 'bulk_soft_delete' =>'Fjern også disse brukerne ved å fjerne deres eiendelshistorikk intakt/til du fjerner slettede poster i Admin-innstillingene.', + 'bulk_checkin_delete_success' => 'Dine valgte brukere er slettet og deres elementer har blitt sjekket inn.', + 'bulk_checkin_success' => 'Elementene for de valgte brukerne har blitt sjekket inn.', + 'set_to_null' => 'Slette verdier for denne eiendelen Slett verdier for alle :asset_count eiendeler ', + 'set_users_field_to_null' => 'Slett :field verdier for denne brukeren. Slett :field verdier for alle :user_count brukere ', + 'na_no_purchase_date' => 'N/A - Ingen kjøpsdato oppgitt', + 'assets_by_status' => 'Eiendeler etter status', + 'assets_by_status_type' => 'Eiendeler etter status', + 'pie_chart_type' => 'Dashbord Kakediagram type', + 'hello_name' => 'Velkommen, :name!', + 'unaccepted_profile_warning' => 'Du har :count elementer som trenger godkjenning. Klikk her for å akseptere eller avslå dem', + 'start_date' => 'Startdato', + 'end_date' => 'Sluttdato', + 'alt_uploaded_image_thumbnail' => 'Opplastet miniatyrbilde', + 'placeholder_kit' => 'Velg ett sett', + 'file_not_found' => 'Finner ikke filen', + 'preview_not_available' => '(ingen forhåndsvisning)', + 'setup' => 'Innstillinger', + 'pre_flight' => 'Test', + 'skip_to_main_content' => 'Gå til hovedinnhold', + 'toggle_navigation' => 'Vis/skjul navigasjon', + 'alerts' => 'Varsler', + 'tasks_view_all' => 'Vis alle oppgaver', + 'true' => 'Sant', + 'false' => 'Usant', + 'integration_option' => 'Innstillinger for integrering', + 'log_does_not_exist' => 'Det finnes ingen samsvarende loggoppføring.', + 'merge_users' => 'Slå sammen brukere', + 'merge_information' => 'Dette vil slå sammen :count brukere til en enkelt bruker. Velg brukeren du ønsker å slå de andre sammen med, og de tilknyttede eiendelene, lisenser, etc vil bli flyttet til valgt bruker, og de andre vil bli merket som slettet.', + 'warning_merge_information' => 'Denne handlingen kan ikke angres og skal BARE brukes når du må slå sammen brukere på grunn av dårlig import eller synkronisering. Sørg for å kjøre en sikkerhetskopi først.', + 'no_users_selected' => 'Ingen brukere er valgt', + 'not_enough_users_selected' => 'Minst :count brukere må være valgt', + 'merge_success' => ':count brukere er slått sammen med :into_username!', + 'merged' => 'sammenslått', + 'merged_log_this_user_into' => 'Flettet denne brukeren (ID :to_id - :to_username) til bruker ID :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Flettet bruker-ID :from_id (:from_username) inn i denne brukeren (ID :to_id - :to_username)', + 'clear_and_save' => 'Tøm og lagre', + 'update_existing_values' => 'Oppdatere eksisterende verdier?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Automatisk generering av inkrementerende ressurskoder er skrudd av, så alle rader må ha "ressurskode"-kollonnen utfylt.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Merk: Automatisk generering av inkrementerende ressurskoder er er skrudd på, så for alle rader som ikke har fult ut "ressurskoden, så vil den bli generert autmatisk. Rader som har ressurskoden utfylt vil bli oppdatert med den gitte informasjonen.', + 'send_welcome_email_to_users' => ' Send velkomstepost til nye brukere?', + 'send_email' => 'Send e-post', + 'call' => 'Ring nummer', + 'back_before_importing' => 'Sikkerhetskopier før importering?', + 'csv_header_field' => 'CSV-toppfelt', + 'import_field' => 'Importer felt', + 'sample_value' => 'Eksempelverdi', + 'no_headers' => 'Ingen kolonner funnet', + 'error_in_import_file' => 'Det oppstod en feil under lesing av CSV-filen: :error', + 'errors_importing' => 'Det oppstod noen feil under importeringen: ', + 'warning' => 'ADVARSEL: :advarsel', + 'success_redirecting' => '"Vellykket... omadressering.', + 'cancel_request' => 'Avbryt forespørsel om element', + 'setup_successful_migrations' => 'Databasetabellene er opprettet', + 'setup_migration_output' => 'Migrasjonsmeldinger:', + 'setup_migration_create_user' => 'Neste: Opprett bruker', + 'importer_generic_error' => 'Importen av filen er fullført, men vi fikk en feil. Dette skyldes vanligvis tredjeparts "API throttling" fra en meldings webhook (som Slack) og ville ikke ha forstyrret selve importen; men du bør bekrefte dette selv.', + 'confirm' => 'Bekreft', + 'autoassign_licenses' => 'Tildel lisenser automatisk', + 'autoassign_licenses_help' => 'Tillat denne brukeren å ha lisenser tildelt via bulk-tildeling UI eller cli verktøy.', + 'autoassign_licenses_help_long' => 'Dette tillater at en bruker får tildelt lisenser via massetildeling av lisenser via UI eller cli verktøyet. (Du vil for eksempel ikke nødvendigvis at en konsulent automatisk skal tildeles en lisens, men bare ansatte vil du oppgi den. Du kan fremdeles tilordne lisens til disse brukerne, men de vil ikke bli inkludert i "Checkout License" til "Alle brukere" funksjonene.)', + 'no_autoassign_licenses_help' => 'Ikke inkluder bruker for massetilordning gjennom lisensbrukergrensesnittet eller cli verktøy.', + 'modal_confirm_generic' => 'Er du sikker?', + 'cannot_be_deleted' => 'Dette objektet kan ikke slettes', + 'cannot_be_edited' => 'Dette elementet kan ikke redigeres.', + 'undeployable_tooltip' => 'Dette elementet kan ikke sjekkes ut. Sjekk hvor mange som gjenstår.', + 'serial_number' => 'Serienummer', + 'item_notes' => ':item notater', + 'item_name_var' => ':item navn', + 'error_user_company' => 'Utsjekk firma og firmaet til ressursen stemmer ikke', + 'error_user_company_accept_view' => 'En ressurs tildelt til deg tilhører en annen bedrift, slik at du ikke kan akseptere eller avslå den, vennligst sjekk med din leder', + 'importer' => [ + 'checked_out_to_fullname' => 'Sjekket ut til: Fullt navn', + 'checked_out_to_first_name' => 'Sjekket ut til: Fornavn', + 'checked_out_to_last_name' => 'Sjekket ut til: Etternavn', + 'checked_out_to_username' => 'Sjekket ut til: Brukernavn', + 'checked_out_to_email' => 'Sjekket ut til: e-post', + 'checked_out_to_tag' => 'Sjekket ut til: ressursmerke', + 'manager_first_name' => 'Leders fornavn', + 'manager_last_name' => 'Leders etternavn', + 'manager_full_name' => 'Leders fulle navn', + 'manager_username' => 'Leders brukernavn', + 'checkout_type' => 'Utsjekk type', + 'checkout_location' => 'Sjekket ut til lokasjon', + 'image_filename' => 'Filnavn bilde', + 'do_not_import' => 'Ikke importer', + 'vip' => 'VIP', + 'avatar' => 'Profilbilde', + 'gravatar' => 'Gravatar e-post', + 'currency' => 'Valuta', + 'address2' => 'Adresselinje 2', + 'import_note' => 'Importert med csv-importør', + ], + 'remove_customfield_association' => 'Remove this field from the fieldset. This will not delete the custom field, only this field\'s association with this fieldset.', + 'checked_out_to_fields' => 'Checked Out To Fields', + 'percent_complete' => '% fullført', + 'uploading' => 'Laster opp... ', + 'upload_error' => 'Feil ved opplasting av fil. Vennligst sjekk at det ikke er noen tomme rader og at ingen kolonnenavn er duplisert.', + 'copy_to_clipboard' => 'Kopier til utklippstavlen', + 'copied' => 'Kopiert!', + 'status_compatibility' => 'Hvis eiendelene allerede er tilordnet, kan de ikke endres til en ikke-distribuerbar statustype og denne verdien vil bli hoppet over.', + 'rtd_location_help' => 'Dette er stedet til eiendel når den ikke er sjekket ut', + 'item_not_found' => ':item_type ID :id eksisterer ikke eller har blitt slettet', + 'action_permission_denied' => 'Du har ikke tillatelse til :action :item_type ID :id', + 'action_permission_generic' => 'Du har ikke tillatelse til :action denne :item_type', + 'edit' => 'rediger', + 'action_source' => 'Kilde for handling', + 'or' => 'eller', + 'url' => 'URL', + 'edit_fieldset' => 'Redigere feltene og opsjonene', + 'permission_denied_superuser_demo' => 'Tillatelse nektet. Du kan ikke oppdatere brukerinformasjon for superadmins på demo.', + 'pwd_reset_not_sent' => 'Brukeren er ikke aktivert, er LDAP synkronisert eller har ikke en e-postadresse', + 'error_sending_email' => 'Feil ved sending av e-post', + 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'bulk' => [ + 'delete' => + [ + 'header' => 'Bulk sletting :object_type', + 'warn' => 'Du er i ferd med å slette ett :object_type″Du er i ferd med å slette :count :object_type', + 'success' => ':object_type ble vellykket slettet :count :object_type', + 'error' => 'Kunne ikke slette :object_type', + 'nothing_selected' => 'Nei :object_type er valgt - ingenting å gjøre', + 'partial' => 'Slettet :success_count :object_type, men :error_count :object_type kunne ikke slettes', + ], + ], + 'no_requestable' => 'Det finnes ingen forespørselbare eiendeler eller modeller.', + + 'countable' => [ + 'accessories' => ':count Tilbehør|:count tilbehør', + 'assets' => ':count Eiendeler|:count', + 'licenses' => ':count Lisens|:count lisenser', + 'license_seats' => ':count lisenssete|:count Lisensseter', + 'consumables' => ':count Forbruksvare|:count Forbruksvarer', + 'components' => ':count Komponenter|:count komponenter', + ], + 'more_info' => 'Mer info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Utløper', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', + +]; diff --git a/resources/lang/nn-NO/help.php b/resources/lang/nn-NO/help.php new file mode 100644 index 0000000000..e091505712 --- /dev/null +++ b/resources/lang/nn-NO/help.php @@ -0,0 +1,35 @@ + 'Mer info', + + 'audit_help' => 'Kryss av for å endre eiendelen til å bruke denne nye lokasjonen. Hvis du ikke krysser av vil lokasjonen kun bli notert i revisjonsloggen.

Merk at hvis denne eiendelen er sjekket ut vil det ikke endre lokasjon for brukeren, ressursen eller lokasjonen den er sjekket ut til.', + + 'assets' => 'Eiendeler er enheter som spores på serienummer eller annen merking. Typisk er dette kostbare enheter der det gir mening å spore enkeltenheter.', + + 'categories' => 'Kategorier hjelper deg med å organisere ting. Eksempeler på kategorier kan være "Skrivebord", "Bærbare", "Mobiltelefon", "Nettbrett" og så videre, men du kan bruke kategorier som gir mening for deg.', + + 'accessories' => 'Tilbehør er ting du leverer ut som ikke har serienummer (eller som du ikke sporer enkeltvis), for eksempel datamus og tastaturer.', + + 'companies' => 'Firma kan brukes som et enkelt identifikatorfelt, eller det kan brukes til å begrense eksponeringen av eiendeler, brukere, etc hvis full firmastøtte er aktivert i innstillingene.', + + 'components' => 'Komponenter er ting som er del av en eiendel, f. eks. internminne, disk o. l.', + + 'consumables' => 'Forbruksvarer er alle varer som blir brukt opp over tid. For eksempel skrivertoner eller kopipapir.', + + 'depreciations' => 'Du kan sette opp avskrivninger for å kostnadsføre eiendeler basert på en lineær avskrivning i perioden.', + + 'empty_file' => 'Importbehandleren registrerer at filen er tom.' +]; diff --git a/resources/lang/nn-NO/localizations.php b/resources/lang/nn-NO/localizations.php new file mode 100644 index 0000000000..ec2ee04a80 --- /dev/null +++ b/resources/lang/nn-NO/localizations.php @@ -0,0 +1,321 @@ + 'Velg et språk', + 'languages' => [ + 'en-US'=> 'Engelsk, USA', + 'en-GB'=> 'Engelsk, Storbritannia', + 'am-ET' => 'Amharic', + 'af-ZA'=> 'Afrikansk', + 'ar-SA'=> 'Arabisk', + 'bg-BG'=> 'Bulgarsk', + 'zh-CN'=> 'Forenklet kinesisk', + 'zh-TW'=> 'Tradisjonell kinesisk', + 'ca-ES' => 'Katalansk', + 'hr-HR'=> 'Kroatisk', + 'cs-CZ'=> 'Tsjekkisk', + 'da-DK'=> 'Dansk', + 'nl-NL'=> 'Nederlandsk', + 'en-ID'=> 'Engelsk, Indonesia', + 'et-EE'=> 'Estisk', + 'fil-PH'=> 'Filippinsk', + 'fi-FI'=> 'Finsk', + 'fr-FR'=> 'Fransk', + 'de-DE'=> 'Tysk', + 'de-if'=> 'Tysk (uformel)', + 'el-GR'=> 'Gresk', + 'he-IL'=> 'Hebraisk', + 'hu-HU'=> 'Ungarsk', + 'is-IS' => 'Islandsk', + 'id-ID'=> 'Indonesisk', + 'ga-IE'=> 'Irsk', + 'it-IT'=> 'Italiensk', + 'ja-JP'=> 'Japansk', + 'km-KH'=>'Khmer', + 'ko-KR'=> 'Koreansk', + 'lt-LT'=>'Litauisk', + 'lv-LV'=> 'Latvisk', + 'mk-MK'=> 'Makedonsk', + 'ms-MY'=> 'Malayisk', + 'mi-NZ'=> 'Maori', + 'mn-MN'=> 'Mongolsk', + 'no-NO'=> 'Norsk', + 'fa-IR'=> 'Persisk', + 'pl-PL'=> 'Polsk', + 'pt-PT'=> 'Portugisisk', + 'pt-BR'=> 'Portugisisk, Brasiliansk', + 'ro-RO'=> 'Rumensk', + 'ru-RU'=> 'Russisk', + 'sr-CS' => 'Serbisk (Latin)', + 'sk-SK'=> 'Slovakisk', + 'sl-SI'=> 'Slovensk', + 'so-SO'=> 'Somali', + 'es-ES'=> 'Spansk', + 'es-CO'=> 'Spansk, Colombia', + 'es-MX'=> 'Spansk, Mexico', + 'es-VE'=> 'Spansk, Venezuela', + 'sv-SE'=> 'Svensk', + 'tl-PH'=> 'Tagalog', + 'ta-IN'=> 'Tamilsk', + 'th-TH'=> 'Thai', + 'tr-TR'=> 'Tyrkisk', + 'uk-UA'=> 'Ukrainsk', + 'vi-VN'=> 'Vietnamesisk', + 'cy-GB'=> 'Walisisk', + 'zu-ZA'=> 'Zulu', + ], + + 'select_country' => 'Velg et land', + + 'countries' => [ + 'AC'=>'Ascension Island', + 'AD'=>'Andorra', + 'AE'=>'De forente arabiske emirater', + 'AF'=>'Afghanistan', + 'AG'=>'Antigua og Barbuda', + 'AI'=>'Anguilla', + 'AL'=>'Albania', + 'AM'=>'Armenia', + 'AN'=>'De nederlandske Antillene', + 'AO'=>'Angola', + 'AQ'=>'Antarktis', + 'AR'=>'Argentina', + 'AS'=>'Amerikansk Samoa', + 'AT'=>'Østerrike', + 'AU'=>'Australia', + 'AW'=>'Aruba', + 'AX'=>'Åland', + 'AZ'=>'Aserbajdsjan', + 'BA'=>'Bosnia-Hercegovina', + 'BB'=>'Barbados', + 'BE'=>'Belgia', + 'BD'=>'Bangladesh', + 'BF'=>'Burkina Faso', + 'BG'=>'Bulgaria', + 'BH'=>'Bahrain', + 'BI'=>'Burundi', + 'BJ'=>'Benin', + 'BM'=>'Bermuda', + 'BN'=>'Brunei Darussalam', + 'BO'=>'Bolivia', + 'BR'=>'Brasil', + 'BS'=>'Bahamas', + 'BT'=>'Bhutan', + 'BV'=>'Bouvet-øya', + 'BW'=>'Botswana', + 'BY'=>'Republikken Belarus', + 'BZ'=>'Belize', + 'CA'=>'Canada', + 'CC'=>'Kokosøyene (Keelingøyene)', + 'CD'=>'Den demokratiske republikken Kongo', + 'CF'=>'Den sentralafrikanske republikk', + 'CG'=>'Republikken Kongo', + 'CH'=>'Sveits', + 'CI'=>'Elfenbenskysten', + 'CK'=>'Cook-øyene', + 'CL'=>'Chile', + 'CM'=>'Kamerun', + 'CN'=>'Folkerepublikken Kina', + 'CO'=>'Colombia', + 'CR'=>'Costa Rica', + 'CU'=>'Cuba', + 'CV'=>'Kapp Verde', + 'CX'=>'Christmasøya', + 'CY'=>'Kypros', + 'CZ'=>'Tsjekkia', + 'DE'=>'Tyskland', + 'DJ'=>'Djibouti', + 'DK'=>'Danmark', + 'DM'=>'Dominica', + 'DO'=>'Den dominikanske republikk', + 'DZ'=>'Algerie', + 'EC'=>'Ecuador', + 'EE'=>'Estland', + 'EG'=>'Egypt', + 'ER'=>'Eritrea', + 'ES'=>'Spania', + 'ET'=>'Etiopia', + 'EU'=>'EU', + 'FI'=>'Finland', + 'FJ'=>'Fiji', + 'FK'=>'Falklandsøyene (Malvinas)', + 'FM'=>'Mikronesia, De forente stater', + 'FO'=>'Færøyene', + 'FR'=>'Frankrike', + 'GA'=>'Gabon', + 'GD'=>'Grenada', + 'GE'=>'Georgia', + 'GF'=>'Fransk Guyana', + 'GG'=>'Guernsey', + 'GH'=>'Ghana', + 'GI'=>'Gibraltar', + 'GL'=>'Grønland', + 'GM'=>'Gambia', + 'GN'=>'Guinea', + 'GP'=>'Guadeloupe', + 'GQ'=>'Ekvatorial-Guinea', + 'GR'=>'Hellas', + 'GS'=>'Sør-Georgia og Sør-Sandwichøyene', + 'GT'=>'Guatemala', + 'GU'=>'Guam', + 'GW'=>'Guinea-Bissau', + 'GY'=>'Guyana', + 'HK'=>'Hong Kong', + 'HM'=>'Heard og Mc Donald Øyene', + 'HN'=>'Honduras', + 'HR'=>'Kroatia (lokalt navn: Hrvatska)', + 'HT'=>'Haiti', + 'HU'=>'Ungarn', + 'ID'=>'Indonesia', + 'IE'=>'Irland', + 'IL'=>'Israel', + 'IM'=>'Isle of Man', + 'IN'=>'India', + 'IO'=>'Det britiske territoriet i Indiahavet', + 'IQ'=>'Irak', + 'IR'=>'Iran', + 'IS'=>'Island', + 'IT'=>'Italia', + 'JE'=>'Jersey', + 'JM'=>'Jamaica', + 'JO'=>'Jordan', + 'JP'=>'Japan', + 'KE'=>'Kenya', + 'KG'=>'Kirgisistan', + 'KH'=>'Kambodsja', + 'KI'=>'Kiribati', + 'KM'=>'Komorene', + 'KN'=>'Saint Kitts og Nevis', + 'KR'=>'Republikken Korea', + 'KW'=>'Kuwait', + 'KY'=>'Caymanøyene', + 'KZ'=>'Kasakhstan', + 'LA'=>'Laos', + 'LB'=>'Libanon', + 'LC'=>'Saint Lucia', + 'LI'=>'Liechtenstein', + 'LK'=>'Sri Lanka', + 'LR'=>'Liberia', + 'LS'=>'Lesotho', + 'LT'=>'Litauen', + 'LU'=>'Luxemburg', + 'LV'=>'Latvia', + 'LY'=>'Libyan Arab Jamahiriya', + 'MA'=>'Marokko', + 'MC'=>'Monaco', + 'MD'=>'Moldova', + 'ME'=>'Montenegro', + 'MG'=>'Madagaskar', + 'MH'=>'Marshalløyene', + 'MK'=>'Makedonia, den tidligere jugoslaviske republikken', + 'ML'=>'Mali', + 'MM'=>'Myanmar', + 'MN'=>'Mongolia', + 'MO'=>'Macao', + 'MP'=>'Nord-Marianene', + 'MQ'=>'Martinique', + 'MR'=>'Mauritania', + 'MS'=>'Montserrat', + 'MT'=>'Malta', + 'MU'=>'Mauritius', + 'MV'=>'Maldivene', + 'MW'=>'Malawi', + 'MX'=>'Mexico', + 'MY'=>'Malaysia', + 'MZ'=>'Mosambik', + 'NA'=>'Namibia', + 'NC'=>'Ny Caledonia', + 'NE'=>'Niger', + 'NF'=>'Norfolkøyene', + 'NG'=>'Nigeria', + 'NI'=>'Nicaragua', + 'NL'=>'Nederland', + 'NO'=>'Norge', + 'NP'=>'Nepal', + 'NR'=>'Nauru', + 'NU'=>'Niue', + 'NZ'=>'New Zealand', + 'OM'=>'Oman', + 'PA'=>'Panama', + 'PE'=>'Peru', + 'PF'=>'Fransk Polynesia', + 'PG'=>'Papua Ny-Guinea', + 'PH'=>'Filippinene', + 'PK'=>'Pakistan', + 'PL'=>'Polen', + 'PM'=>'St. Pierre og Miquelon', + 'PN'=>'Pitcairnøyene', + 'PR'=>'Puerto Rico', + 'PS'=>'Palestina', + 'PT'=>'Portugal', + 'PW'=>'Palau', + 'PY'=>'Paraguay', + 'QA'=>'Qatar', + 'RE'=>'Réunion', + 'RO'=>'Romania', + 'RS'=>'Serbia', + 'RU'=>'Russland', + 'RW'=>'Rwanda', + 'SA'=>'Saudi-Arabia', + 'UK'=>'Skottland', + 'SB'=>'Salomonøyene', + 'SC'=>'Seychellene', + 'SS'=>'Sør-Sudan', + 'SD'=>'Sudan', + 'SE'=>'Sverige', + 'SG'=>'Singapor', + 'SH'=>'St. Helena', + 'SI'=>'Slovenia', + 'SJ'=>'Svalbard og Jan Mayen', + 'SK'=>'Slovakia', + 'SL'=>'Sierra Leone', + 'SM'=>'San Marino', + 'SN'=>'Senegal', + 'SO'=>'Somalia', + 'SR'=>'Surinam', + 'ST'=>'Sao Tome og Principe', + 'SU'=>'Sovjet', + 'SV'=>'El Salvador', + 'SY'=>'Syria', + 'SZ'=>'Swaziland', + 'TC'=>'Turks- og Caicosøyene', + 'TD'=>'Tsjad', + 'TF'=>'De franske sørterritorier', + 'TG'=>'Togo', + 'TH'=>'Thailand', + 'TJ'=>'Tadsjikistan', + 'TK'=>'Tokelau', + 'TI'=>'Øst-Timor', + 'TM'=>'Turkmenistan', + 'TN'=>'Tunisia', + 'TO'=>'Tonga', + 'TP'=>'Øst Timor', + 'TR'=>'Tyrkia', + 'TT'=>'Trinidad og Tobago', + 'TV'=>'Tuvalu', + 'TW'=>'Taiwan', + 'TZ'=>'Tanzania', + 'UA'=>'Ukraina', + 'UG'=>'Uganda', + 'UK'=>'Storbritannia', + 'US'=>'USA', + 'UM'=>'USAs ytre småøyer', + 'UY'=>'Uruguay', + 'UZ'=>'Usbekistan', + 'VA'=>'Vatikanstaten', + 'VC'=>'Saint Vincent og Grenadinene', + 'VE'=>'Venezuela', + 'VG'=>'Jomfru øyene (Storbritannia)', + 'VI'=>'Jomfruøyene, (USA)', + 'VN'=>'Vietnam', + 'VU'=>'Vanuatu', + 'WF'=>'Wallis- og Futunaøyene', + 'WS'=>'Samoa', + 'YE'=>'Jemen', + 'YT'=>'Mayotte', + 'ZA'=>'South Africa', + 'ZM'=>'Zambia', + 'ZW'=>'Zimbabwe', + ], +]; \ No newline at end of file diff --git a/resources/lang/nn-NO/mail.php b/resources/lang/nn-NO/mail.php new file mode 100644 index 0000000000..f9688539bf --- /dev/null +++ b/resources/lang/nn-NO/mail.php @@ -0,0 +1,96 @@ + 'Tilbehør sjekket inn', + 'Accessory_Checkout_Notification' => 'Tilbehør sjekket ut', + 'Asset_Checkin_Notification' => 'Eiendel sjekket inn', + 'Asset_Checkout_Notification' => 'Ressurs sjekket ut', + 'Confirm_Accessory_Checkin' => 'Bekreft innsjekk av tilbehør', + 'Confirm_Asset_Checkin' => 'Bekreft innsjekk av eiendel', + 'Confirm_accessory_delivery' => 'Bekreft levering av tilbehør', + 'Confirm_asset_delivery' => 'Bekreft levering av eiendel', + 'Confirm_consumable_delivery' => 'Bekreft levering av forbruksvare', + 'Confirm_license_delivery' => 'Bekreft levering av lisens', + 'Consumable_checkout_notification' => 'Forbruksvaren tatt ut', + 'Days' => 'Dager', + 'Expected_Checkin_Date' => 'En enhet som er sjekket ut til deg skal leveres tilbake den :date', + 'Expected_Checkin_Notification' => 'Påminnelse: Innsjekkingsfrist for :name nærmer seg', + 'Expected_Checkin_Report' => 'Rapport over forventet innsjekking av eiendeler', + 'Expiring_Assets_Report' => 'Rapport utløpende eiendeler.', + 'Expiring_Licenses_Report' => 'Rapport utløpende lisenser.', + 'Item_Request_Canceled' => 'Forespørsel av enhet avbrutt', + 'Item_Requested' => 'Forespurt enhet', + 'License_Checkin_Notification' => 'Lisens sjekket inn', + 'License_Checkout_Notification' => 'Lisens sjekket ut', + 'Low_Inventory_Report' => 'Rapport lav lagerbeholdning', + 'a_user_canceled' => 'Brukeren har avbrutt en element-forespørsel på webområdet', + 'a_user_requested' => 'En bruker har bedt om et element på webområdet', + 'acceptance_asset_accepted' => 'En bruker har godtatt et element', + 'acceptance_asset_declined' => 'En bruker har avvist et element', + 'accessory_name' => 'Navn tilbehør:', + 'additional_notes' => 'Flere notater:', + 'admin_has_created' => 'En administrator har opprettet en konto for deg på :web nettsted.', + 'asset' => 'Eiendel:', + 'asset_name' => 'Navn:', + 'asset_requested' => 'Eiendel forespurt', + 'asset_tag' => 'Eiendelsmerke', + 'assets_warrantee_alert' => 'En eiendel har garanti som utløper innenfor de neste :treshold dagene.|:count eiendeler har garanti som utløper innenfor de neste :tershold dagene.', + 'assigned_to' => 'Tilordnet til', + 'best_regards' => 'Med vennlig hilsen,', + 'canceled' => 'Avbrutt:', + 'checkin_date' => 'Innsjekkdato:', + 'checkout_date' => 'Utsjekkdato:', + 'checkedout_from' => 'Sjekket ut fra', + 'checkedin_from' => 'Sjekket inn fra', + 'checked_into' => 'Sjekket inn', + 'click_on_the_link_accessory' => 'Vennligst klikk på lenken nedenfor for å bekreft at du har mottatt tilbehøret.', + 'click_on_the_link_asset' => 'Vennligst klikk på lenken nedenfor for å bekreft at du har mottatt eiendelen.', + 'click_to_confirm' => 'Klikk på følgende link for å bekrefte din :web konto:', + 'current_QTY' => 'Nåværende antall', + 'days' => 'Dager', + 'expecting_checkin_date' => 'Forventet innsjekkdato:', + 'expires' => 'Utløper', + 'hello' => 'Hallo', + 'hi' => 'Hei', + 'i_have_read' => 'Jeg har lest og godtar vilkårene for bruk, og har mottatt denne enheten.', + 'inventory_report' => 'Lagerbeholdnings rapport', + 'item' => 'Enhet:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', + 'license_expiring_alert' => ':count lisens utløper de neste :threshold dagene.|:count lisenser utløper de neste :threshold dagene.', + 'link_to_update_password' => 'Klikk på følgende link for å bekrefte din :web passord:', + 'login' => 'Logg inn:', + 'login_first_admin' => 'Logg inn på din nye Snipe-IT-installasjon ved å bruke kontoen nedenfor:', + 'low_inventory_alert' => ':count enhet er under minimumnivå for beholdning, eller vil snart nå dette nivået.|:count enheter er under minimumnivå for beholdning, eller vil snart nå dette nivået.', + 'min_QTY' => 'Min. antall', + 'name' => 'Navn', + 'new_item_checked' => 'En ny enhet har blitt sjekket ut under ditt navn, detaljer nedenfor.', + 'notes' => 'Notater', + 'password' => 'Passord:', + 'password_reset' => 'Tilbakestill passord', + 'read_the_terms' => 'Vennligst les bruksbetingelsene nedenfor.', + 'read_the_terms_and_click' => 'Vennligst les vilkårene for bruk nedenfor. og klikk på lenken nederst for å bekrefte at du leser og godtar vilkårene for bruk, og har mottatt eiendelen.', + 'requested' => 'Forespurt:', + 'reset_link' => 'Lenke for tilbakestilling av passord', + 'reset_password' => 'Klikk her for å tilbakestille passordet:', + 'rights_reserved' => 'Alle rettigheter forbeholdt.', + 'serial' => 'Serienummer', + 'snipe_webhook_test' => 'Snipe-IT integrasjonstest', + 'snipe_webhook_summary' => 'Snipe-IT integrasjon test sammendrag', + 'supplier' => 'Leverandør', + 'tag' => 'Merke', + 'test_email' => 'Test-epost fra Snipe-IT', + 'test_mail_text' => 'Dette er en test fra Snipe-IT eiendelsadministrasjonssystem. Hvis du mottok denne meldingen fungerer e-post.', + 'the_following_item' => 'Følgende enheter har blitt sjekket inn: ', + 'to_reset' => 'Fullfør dette skjemaet for å tilbakestille ditt :web passord:', + 'type' => 'Type', + 'upcoming-audits' => ':count eiendel har revisjonsfrist innen :treshold dager.|:count eiendeler har revisjonsfrist innen :threshold dager.', + 'user' => 'Bruker', + 'username' => 'Brukernavn', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', + 'welcome' => 'Velkommen :name', + 'welcome_to' => 'Velkommen til :web!', + 'your_assets' => 'Vis dine eiendeler', + 'your_credentials' => 'Din Snipe-IT konto', + 'mail_sent' => 'Mail sent successfully!', +]; diff --git a/resources/lang/nn-NO/pagination.php b/resources/lang/nn-NO/pagination.php new file mode 100644 index 0000000000..26ea2fb2ad --- /dev/null +++ b/resources/lang/nn-NO/pagination.php @@ -0,0 +1,20 @@ + '« Forrige', + + 'next' => 'Neste »', + +); diff --git a/resources/lang/nn-NO/passwords.php b/resources/lang/nn-NO/passwords.php new file mode 100644 index 0000000000..3e82b8a1a5 --- /dev/null +++ b/resources/lang/nn-NO/passwords.php @@ -0,0 +1,9 @@ + 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med informasjon for gjenopprettelse av passord.', + 'user' => 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med gjenopprettelse av passord.', + 'token' => 'Token for tilbakestilling av passord er ugyldig eller utløpt, eller så stemmer den ikke overens med det angitte brukernavnet.', + 'reset' => 'Ditt passord har blitt tilbakestilt!', + 'password_change' => 'Ditt passord har blitt oppdatert!', +]; diff --git a/resources/lang/nn-NO/reminders.php b/resources/lang/nn-NO/reminders.php new file mode 100644 index 0000000000..a3d1e54447 --- /dev/null +++ b/resources/lang/nn-NO/reminders.php @@ -0,0 +1,21 @@ + "Passord må bestå av minst 6 tegn og stemme med bekreftelse.", + "user" => "Brukernavn eller epostadresse er ugyldig", + "token" => 'Token for tilbakestilling av passord er ugyldig eller utløpt, eller så stemmer den ikke overens med det angitte brukernavnet.', + 'sent' => 'Hvis den oppgitte e-postadressen finnes i systemet vårt har det blitt sendt en e-post med informasjon for gjenopprettelse av passord.', + +); diff --git a/resources/lang/nn-NO/table.php b/resources/lang/nn-NO/table.php new file mode 100644 index 0000000000..f32ec7ca4b --- /dev/null +++ b/resources/lang/nn-NO/table.php @@ -0,0 +1,11 @@ + 'Handlinger', + 'action' => 'Handling', + 'by' => 'Av', + 'item' => 'Enhet', + 'no_matching_records' => 'No matching records found', + +); diff --git a/resources/lang/nn-NO/validation.php b/resources/lang/nn-NO/validation.php new file mode 100644 index 0000000000..6f0c985764 --- /dev/null +++ b/resources/lang/nn-NO/validation.php @@ -0,0 +1,233 @@ + 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', + ], + 'boolean' => 'Attributtfeltet må være sant eller falskt.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Attributtfeltet har en duplikatverdi.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Attributtet :attribute er ugyldig.', + 'exists' => 'Valgt attributt :attribute er ugyldig.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Den :attribute må ha en verdi.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', + 'import_field_empty' => 'Verdien for :fieldname kan ikke være null.', + 'in' => 'Det valgte attributtet :attribute er ugyldig.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Attributtet :attribute er ugyldig.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Atributtfeltet :attribute må ha en verdi.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Attributt-feltet :attribute er påkrevd.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Attributt-feltet :attribute er påkrevd når :oher er :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Attributtfeltet kreves med mindre: annet er i: verdier.', + 'required_with' => 'Attributt-feltet :attribute er påkrevd når :values er tilstede.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Attributt-feltet :attribute er påkrevd når :values ikke er tilstede.', + 'required_without_all' => 'Attributtfeltet kreves når ingen av: verdiene er til stede.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', + ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', + 'string' => 'Attributtet :attribute må være en tekst.', + 'two_column_unique_undeleted' => ':attribute må være unik i forhold til :table1 og :table2. ', + 'unique_undeleted' => ':attribute må være unikt.', + 'non_circular' => 'Attributtet :attribute kan ikke opprette en sirkulær referanse.', + 'not_array' => ':attribute kan ikke være en matrise.', + 'disallow_same_pwd_as_user_fields' => 'Passordet kan ikke være det samme som brukernavnet.', + 'letters' => 'Passordet må inneholde minst en bokstav.', + 'numbers' => 'Passordet må inneholde minst ett tall.', + 'case_diff' => 'Passordet må innehode store og små bokstaver.', + 'symbols' => 'Passordet må inneholde symboler.', + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Attributtet :attribute er allerede tatt.', + 'uploaded' => 'Atribbutet :attribute kunne ikke lastes opp.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'alpha_space' => 'Attributtfeltet inneholder et tegn som ikke er tillatt.', + 'email_array' => 'En eller flere e-postadresser er ugyldige.', + 'hashed_pass' => 'Gjeldende passord er feil', + 'dumbpwd' => 'Passordet er for vanlig.', + 'statuslabel_type' => 'Du må velge en gyldig statusetikett-type', + + // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( + // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP + // people won't know how to format. + 'purchase_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'last_audit_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD hh:mm:ss format', + 'expiration_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'termination_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'expected_checkin.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'start_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'end_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', + 'checkboxes' => ':attribute inneholder ugyldige valg.', + 'radio_buttons' => ':attribute er ugyldig.', + 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', + ], + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute + |-------------------------------------------------------------------------- + */ + + 'generic' => [ + 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + +]; diff --git a/resources/lang/no-NO/account/general.php b/resources/lang/no-NO/account/general.php index bb3f5350b6..9a4242971b 100644 --- a/resources/lang/no-NO/account/general.php +++ b/resources/lang/no-NO/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personlige API-nøkler', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Din API base-url finnes på:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API-tokens er satt til å utløpe om:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/no-NO/admin/accessories/message.php b/resources/lang/no-NO/admin/accessories/message.php index b2762cb669..c6e641c692 100644 --- a/resources/lang/no-NO/admin/accessories/message.php +++ b/resources/lang/no-NO/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Tilbehør ble ikke sjekket ut. Prøv igjen', 'success' => 'Vellykket utsjekking av tilbehør.', 'unavailable' => 'Tilbehør er ikke tilgjengelig for utsjekk. Sjekk antall tilgjengelig', - 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.' + 'user_does_not_exist' => 'Denne brukeren er ugyldig. Prøv igjen.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/no-NO/admin/consumables/general.php b/resources/lang/no-NO/admin/consumables/general.php index bb602196b3..cf7e29fcd3 100644 --- a/resources/lang/no-NO/admin/consumables/general.php +++ b/resources/lang/no-NO/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Gjenstår', 'total' => 'Total', 'update' => 'Oppdater forbruksvare', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/no-NO/admin/consumables/message.php b/resources/lang/no-NO/admin/consumables/message.php index dad90d5f02..e652d40ef6 100644 --- a/resources/lang/no-NO/admin/consumables/message.php +++ b/resources/lang/no-NO/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Forbruksvaren finnes ikke.', 'create' => array( diff --git a/resources/lang/no-NO/admin/custom_fields/message.php b/resources/lang/no-NO/admin/custom_fields/message.php index 0dd248415a..976984aae1 100644 --- a/resources/lang/no-NO/admin/custom_fields/message.php +++ b/resources/lang/no-NO/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Feltet finnes ikke.', 'already_added' => 'Feltet er allerede lagt til', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Feltet ble ikke opprettet, vennligst prøv igjen.', diff --git a/resources/lang/no-NO/admin/hardware/message.php b/resources/lang/no-NO/admin/hardware/message.php index b8afac8356..90cc926a32 100644 --- a/resources/lang/no-NO/admin/hardware/message.php +++ b/resources/lang/no-NO/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Advarsel: Denne eiendelen er merket som ikke utleverbar. - Oppdater eiendelsstatus hvis situasjonen har endret seg.', + 'undeployable' => 'Advarsel: Denne eiendelen er merket som ikke utplasserbar. Vennligst endre status for eiendel dette har endret seg.', 'does_not_exist' => 'Eiendel eksisterer ikke.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Noen elementer ble ikke importert riktig.', 'errorDetail' => 'Følgende elementer ble ikke importert på grunn av feil.', 'success' => 'Filen har blitt importert', diff --git a/resources/lang/no-NO/admin/licenses/general.php b/resources/lang/no-NO/admin/licenses/general.php index 17914c383c..21df57a62a 100644 --- a/resources/lang/no-NO/admin/licenses/general.php +++ b/resources/lang/no-NO/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Lisensinformasjon', 'license_seats' => 'Setelisenser', 'seat' => 'Setelisens', + 'seat_count' => 'Seat :count', 'seats' => 'Setelisenser', 'software_licenses' => 'Programvarelisenser', 'user' => 'Bruker', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Sjekk inn alle seter', - 'modal' => 'Dette vil handling innhente ett sete. Denne handlingen vil sjekke inn alle :checkedout_seats_count seter for denne lisensen.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Sjekk inn ALLE seter for denne lisensen fra både brukere og ressurser', 'disabled_tooltip' => 'Dette er deaktivert fordi det ikke er seter som er sjekket ut', 'disabled_tooltip_reassignable' => 'Dette er deaktivert fordi lisensen ikke kan refordeles', 'success' => 'Lisensen ble sjekket inn! | Alle lisensene ble vellykket sjekket inn!', - 'log_msg' => 'Sjekket inn via masselisensutsjekking i lisens GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/no-NO/admin/licenses/message.php b/resources/lang/no-NO/admin/licenses/message.php index c00c3e2c3b..eeecd25d1f 100644 --- a/resources/lang/no-NO/admin/licenses/message.php +++ b/resources/lang/no-NO/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Det oppstod et problem under utsjekk av lisens. Vennligst prøv igjen.', 'success' => 'Vellykket utsjekk av lisens', 'not_enough_seats' => 'Ikke nok lisensseter tilgjengelige for utsjekking', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/no-NO/admin/models/message.php b/resources/lang/no-NO/admin/models/message.php index 099d18d94c..642bc1050e 100644 --- a/resources/lang/no-NO/admin/models/message.php +++ b/resources/lang/no-NO/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ADVARSEL! Ressursmodellen for dette elementet er ugyldig eller mangler!', 'no_association_fix' => 'Dette vil ødelegge ting på merkelige og forferdelige måte. Rediger denne ressursen nå for å tildele den en modell.', 'assoc_users' => 'Denne modellen er tilknyttet en eller flere eiendeler og kan ikke slettes. Slett eiendelene, og prøv å slette modellen igjen. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Modellen ble ikke opprettet. Prøv igjen.', diff --git a/resources/lang/no-NO/admin/settings/general.php b/resources/lang/no-NO/admin/settings/general.php index 87a78de968..d635f260fb 100644 --- a/resources/lang/no-NO/admin/settings/general.php +++ b/resources/lang/no-NO/admin/settings/general.php @@ -95,7 +95,7 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'ldap_login_sync_help' => 'Tester at LDAP kan synkronisere. Feil i LDAP autentiseringsspørringen din kan før til at brukere ikke kan logge inn. DU MÅ LAGRE DINE OPPDATERTE LDAP-INNSTILLINGER FØRST.', 'ldap_manager' => 'LDAP Administrator', 'ldap_server' => 'LDAP Server', - 'ldap_server_help' => 'Dette bør starte med ldap:// (for ukryptert eller TLS) eller ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validering av LDAP SSL sertifikat', 'ldap_server_cert_ignore' => 'Godta ugyldig SSL sertifikat', 'ldap_server_cert_help' => 'Kryss av denne boksen hvis du bruker et selv-signert SSL sertifikat og vil akkseptere et ugyldig sertifikat.', @@ -123,8 +123,8 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP-synkronisering', 'license' => 'Programvarelisens', - 'load_remote' => 'Bruk Gravatar', - 'load_remote_help_text' => 'Fjern avhuking på denne boksen hvis din installasjon ikke kan laste skript fra utenfor Internett. Dette forhindrer Snipe-IT at man prøver å laste bilder fra Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Innloggingsforsøk', 'login_attempt' => 'Innloggingsforsøk', 'login_ip' => 'IP-addresse', @@ -151,7 +151,7 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'optional' => 'valgfri', 'per_page' => 'Resultater pr side', 'php' => 'PHP-versjon', - 'php_info' => 'PHP-info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP systeminfo', @@ -376,5 +376,9 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'timezone' => 'Tidssone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/no-NO/button.php b/resources/lang/no-NO/button.php index a29c19ca66..d68f89a77a 100644 --- a/resources/lang/no-NO/button.php +++ b/resources/lang/no-NO/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Sjekk inn alle / slett bruker', 'delete' => 'Slett', 'edit' => 'Rediger', + 'clone' => 'Clone', 'restore' => 'Gjenopprett', 'remove' => 'Fjern', 'request' => 'Forespørsel', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Legg til vedlikehold', 'append' => 'Legg til', 'new' => 'Ny', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/no-NO/general.php b/resources/lang/no-NO/general.php index 6e111a25dc..9c70d97a12 100644 --- a/resources/lang/no-NO/general.php +++ b/resources/lang/no-NO/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count lisenssete|:count Lisensseter', 'consumables' => ':count Forbruksvare|:count Forbruksvarer', 'components' => ':count Komponenter|:count komponenter', - ] + ], + 'more_info' => 'Mer info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Utløper', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/no-NO/mail.php b/resources/lang/no-NO/mail.php index 608f83e933..f9688539bf 100644 --- a/resources/lang/no-NO/mail.php +++ b/resources/lang/no-NO/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Jeg har lest og godtar vilkårene for bruk, og har mottatt denne enheten.', 'inventory_report' => 'Lagerbeholdnings rapport', 'item' => 'Enhet:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => ':count lisens utløper de neste :threshold dagene.|:count lisenser utløper de neste :threshold dagene.', 'link_to_update_password' => 'Klikk på følgende link for å bekrefte din :web passord:', 'login' => 'Logg inn:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => ':count eiendel har revisjonsfrist innen :treshold dager.|:count eiendeler har revisjonsfrist innen :threshold dager.', 'user' => 'Bruker', 'username' => 'Brukernavn', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Velkommen :name', 'welcome_to' => 'Velkommen til :web!', 'your_assets' => 'Vis dine eiendeler', 'your_credentials' => 'Din Snipe-IT konto', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/no-NO/validation.php b/resources/lang/no-NO/validation.php index 19d16ae394..6f0c985764 100644 --- a/resources/lang/no-NO/validation.php +++ b/resources/lang/no-NO/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Attributtet :attribute må velges.', - 'active_url' => 'Attributtet :attribute er ikke en gyldig URL.', - 'after' => 'Attributtet :attribute må være en dato etter :date.', - 'after_or_equal' => 'Attributtet :attribute må være en dato etter eller lik :date.', - 'alpha' => 'Attributtet :attribute kan kun inneholde bokstaver.', - 'alpha_dash' => 'Attributtet :attribute kan kun inneholde bokstaver, nummer eller bindestrek.', - 'alpha_num' => 'Attributtet :attribute kan kun inneholde bokstaver og numre.', - 'array' => 'Attributtet må være en matrise.', - 'before' => 'Attributtet :attribute må være en dato før :date.', - 'before_or_equal' => 'Attributtet :attribute må være en dato før eller lik :date.', - 'between' => [ - 'numeric' => 'Attributtet :attribute må være mellom :min og :max.', - 'file' => 'Attributtet :attribute må være mellom :min og :max kilobytes.', - 'string' => 'Attributtet :attribute må være mellom :min og :max tegn.', - 'array' => 'Attributtet må ha mellom: min og: maks elementer.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Attributtfeltet må være sant eller falskt.', - 'confirmed' => 'Bekreftelse på attributtet :attribute stemmer ikke.', - 'date' => 'Attributtet :attribute er ikke en gyldig dato.', - 'date_format' => 'Attributtet :attribute passer ikke formatet :format.', - 'different' => 'Attributtet :attribute og :other er forskjellige.', - 'digits' => 'Attributtet :attribute må være :digits sifre.', - 'digits_between' => 'Attributtet :attribute må være mellom :min og :max sifre.', - 'dimensions' => 'Attributtet har ugyldige bildedimensjoner.', - 'distinct' => 'Attributtfeltet har en duplikatverdi.', - 'email' => 'Attributtet :attribute er ugyldig.', - 'exists' => 'Valgt attributt :attribute er ugyldig.', - 'file' => 'Attributtet :attribute må være en fil.', - 'filled' => 'Den :attribute må ha en verdi.', - 'image' => 'Attributtet :attribute må være et bilde.', + 'boolean' => 'Attributtfeltet må være sant eller falskt.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Attributtfeltet har en duplikatverdi.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Attributtet :attribute er ugyldig.', + 'exists' => 'Valgt attributt :attribute er ugyldig.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Den :attribute må ha en verdi.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Verdien for :fieldname kan ikke være null.', - 'in' => 'Det valgte attributtet :attribute er ugyldig.', - 'in_array' => 'Attributtfeltet finnes ikke i: andre.', - 'integer' => 'Attributtet :attribute må være et heltall.', - 'ip' => 'Attributtet :attribute må være en gyldig IP-adresse.', - 'ipv4' => 'Attributtet :attribute må være en gyldig IPv4-adresse.', - 'ipv6' => 'Attributtet :attribute må være en gyldig IPv6-adresse.', - 'is_unique_department' => 'Attributtet :attribute må være unikt for denne bedriftslokasjonen', - 'json' => 'Attributtet: må være en gyldig JSON-streng.', - 'max' => [ - 'numeric' => 'Attributtet :attribute må ikke være større enn :max.', - 'file' => 'Attributtet :attribute kan ikke være større enn :max kilobytes.', - 'string' => 'Attributtet :attribute kan ikke være større enn :max tegn.', - 'array' => 'Attributtet: Må ikke ha mer enn: maks. Elementer.', + 'in' => 'Det valgte attributtet :attribute er ugyldig.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Attributtet :attribute må være en fil av typen: :values.', - 'mimetypes' => 'Attributtet må være en fil av type:: verdier.', - 'min' => [ - 'numeric' => 'Attributtet :attribute må være minst :min.', - 'file' => 'Attributtet :attribute må være minst :min kilobytes.', - 'string' => 'Attributtet :attribute må være minst :min tegn.', - 'array' => 'Attributtet må ha minst: min elementer.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute må starte med en av følgende: :values.', - 'ends_with' => ':attribute må avsluttes med en av følgende: :values.', - - 'not_in' => 'Attributtet :attribute er ugyldig.', - 'numeric' => 'Attributtet :attribute må være et nummer.', - 'present' => 'Atributtfeltet :attribute må ha en verdi.', - 'valid_regex' => 'Det er ikke en gyldig regex. ', - 'regex' => 'Attributt-formatet til :attribute er ugyldig.', - 'required' => 'Attributt-feltet :attribute er påkrevd.', - 'required_if' => 'Attributt-feltet :attribute er påkrevd når :oher er :value.', - 'required_unless' => 'Attributtfeltet kreves med mindre: annet er i: verdier.', - 'required_with' => 'Attributt-feltet :attribute er påkrevd når :values er tilstede.', - 'required_with_all' => 'Attributtfeltet kreves når: verdiene er til stede.', - 'required_without' => 'Attributt-feltet :attribute er påkrevd når :values ikke er tilstede.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Attributtet :attribute er ugyldig.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Atributtfeltet :attribute må ha en verdi.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Attributt-feltet :attribute er påkrevd.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Attributt-feltet :attribute er påkrevd når :oher er :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Attributtfeltet kreves med mindre: annet er i: verdier.', + 'required_with' => 'Attributt-feltet :attribute er påkrevd når :values er tilstede.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Attributt-feltet :attribute er påkrevd når :values ikke er tilstede.', 'required_without_all' => 'Attributtfeltet kreves når ingen av: verdiene er til stede.', - 'same' => 'Attributtet :attribute og :other må være like.', - 'size' => [ - 'numeric' => 'Attributtet :attribute må være :size.', - 'file' => 'Attributtet :attribute må være :size kilobytes.', - 'string' => 'Attributtet :attribute må være :size tegn.', - 'array' => 'Attributtet må inneholde: størrelseselementer.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Attributtet :attribute må være en tekst.', - 'timezone' => 'Attributtet må være en gyldig sone.', 'two_column_unique_undeleted' => ':attribute må være unik i forhold til :table1 og :table2. ', - 'unique' => 'Attributtet :attribute er allerede tatt.', - 'uploaded' => 'Atribbutet :attribute kunne ikke lastes opp.', - 'url' => 'Attributt-formatet :attribute er ugyldig.', 'unique_undeleted' => ':attribute må være unikt.', 'non_circular' => 'Attributtet :attribute kan ikke opprette en sirkulær referanse.', 'not_array' => ':attribute kan ikke være en matrise.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Passordet må inneholde minst ett tall.', 'case_diff' => 'Passordet må innehode store og små bokstaver.', 'symbols' => 'Passordet må inneholde symboler.', - 'gte' => [ - 'numeric' => 'Verdi kan ikke være negativ' - ], - 'checkboxes' => ':attribute inneholder ugyldige valg.', - 'radio_buttons' => ':attribute er ugyldig.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Attributtet :attribute er allerede tatt.', + 'uploaded' => 'Atribbutet :attribute kunne ikke lastes opp.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', 'last_audit_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', 'start_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', 'end_date.date_format' => ':attribute må være en gyldig dato i YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute inneholder ugyldige valg.', + 'radio_buttons' => ':attribute er ugyldig.', + 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', + + 'generic' => [ + 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/pl-PL/account/general.php b/resources/lang/pl-PL/account/general.php index f957760333..b021d129bb 100644 --- a/resources/lang/pl-PL/account/general.php +++ b/resources/lang/pl-PL/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Osobiste klucze API', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Twój bazowy adres URL API znajduje się w:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Tokeny API tracą ważność za:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/pl-PL/admin/accessories/message.php b/resources/lang/pl-PL/admin/accessories/message.php index 6b16eb6678..1cce9e89aa 100644 --- a/resources/lang/pl-PL/admin/accessories/message.php +++ b/resources/lang/pl-PL/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Akcesoria nie zostały przypisane, spróbuj ponownie', 'success' => 'Akcesoria przypisany pomyślnie.', 'unavailable' => 'Akcesoria nie są dostępne do zakupu. Sprawdź ilość dostępną', - 'user_does_not_exist' => 'Użytkownik nie istnieje. Spróbuj ponownie.' + 'user_does_not_exist' => 'Użytkownik nie istnieje. Spróbuj ponownie.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/pl-PL/admin/consumables/general.php b/resources/lang/pl-PL/admin/consumables/general.php index 068ae529a5..7bd7c2b242 100644 --- a/resources/lang/pl-PL/admin/consumables/general.php +++ b/resources/lang/pl-PL/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Pozostało', 'total' => 'Łącznie', 'update' => 'Aktualizuj materiał eksploatacyjny', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/pl-PL/admin/consumables/message.php b/resources/lang/pl-PL/admin/consumables/message.php index 3e16db0c07..82356a05df 100644 --- a/resources/lang/pl-PL/admin/consumables/message.php +++ b/resources/lang/pl-PL/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Materiał eksploatacyjny nie istnieje.', 'create' => array( diff --git a/resources/lang/pl-PL/admin/custom_fields/message.php b/resources/lang/pl-PL/admin/custom_fields/message.php index 3394d8404b..0d567bb930 100644 --- a/resources/lang/pl-PL/admin/custom_fields/message.php +++ b/resources/lang/pl-PL/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Pole nie istnieje.', 'already_added' => 'Pole już istnieje', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Pole nie zostało utworzone. Spróbuj ponownie.', diff --git a/resources/lang/pl-PL/admin/hardware/form.php b/resources/lang/pl-PL/admin/hardware/form.php index 156307e07d..6630db510d 100644 --- a/resources/lang/pl-PL/admin/hardware/form.php +++ b/resources/lang/pl-PL/admin/hardware/form.php @@ -39,8 +39,8 @@ return [ 'order' => 'Numer zamówienia', 'qr' => 'Kod QR', 'requestable' => 'Użytkownicy mogą wymagać tego zasobu', - 'redirect_to_all' => 'Return to all :type', - 'redirect_to_type' => 'Go to :type', + 'redirect_to_all' => 'Wróć do wszystkich :type', + 'redirect_to_type' => 'Przejdź do :type', 'redirect_to_checked_out_to' => 'Go to Checked Out to', 'select_statustype' => 'Wybierz status', 'serial' => 'Numer seryjny', diff --git a/resources/lang/pl-PL/admin/hardware/general.php b/resources/lang/pl-PL/admin/hardware/general.php index 3005434105..1c2f5973ee 100644 --- a/resources/lang/pl-PL/admin/hardware/general.php +++ b/resources/lang/pl-PL/admin/hardware/general.php @@ -15,7 +15,7 @@ return [ 'delete_confirm' => 'Czy na pewno chcesz usunąć?', 'edit' => 'Edytuj zasób', 'model_deleted' => 'Ten model zasobów został usunięty. Musisz przywrócić model zanim będziesz mógł przywrócić zasób.', - 'model_invalid' => 'This model for this asset is invalid.', + 'model_invalid' => 'Nieprawidłowy model dla tego zasobu.', 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', 'requestable' => 'Żądane', 'requested' => 'Zamówione', @@ -32,7 +32,7 @@ return [ 'csv_import_match_f-l' => 'Spróbuj dopasować użytkowników o formacie imie.Nazwisko (jane.smith)', 'csv_import_match_initial_last' => 'Spróbuj dopasować użytkowników według formatu pierwsze imię (jsmith)', 'csv_import_match_first' => 'Spróbuj dopasować użytkowników o formacie imienia (jane)', - 'csv_import_match_email' => 'Try to match users by email as username', + 'csv_import_match_email' => 'Spróbuj dopasować użytkowników po adresie e-mail', 'csv_import_match_username' => 'Spróbuj dopasować użytkowników do nazwy użytkownika ', 'error_messages' => 'Komunikat błędu:', 'success_messages' => 'Wiadomości o powodzeniu:', diff --git a/resources/lang/pl-PL/admin/hardware/message.php b/resources/lang/pl-PL/admin/hardware/message.php index 17f46484da..dee8d56da9 100644 --- a/resources/lang/pl-PL/admin/hardware/message.php +++ b/resources/lang/pl-PL/admin/hardware/message.php @@ -2,10 +2,9 @@ return [ - 'undeployable' => 'Uwaga: To aktywo zostało oznaczone jako tymczasowo niemożliwe do wdrożenia. - Jeśli jego stan się zmienił, zaktualizuj status aktywa.', + 'undeployable' => 'Uwaga: Ten nabytek został oznaczony jako obecnie nie przypisany. Jeśli jego status uległ zmianie proszę zaktualizować status nabytku.', 'does_not_exist' => 'Nabytek/zasób nie istnieje.', - 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', + 'does_not_exist_var'=> 'Nie znaleziono zasobu o tagu :asset_tag.', 'no_tag' => 'No asset tag provided.', 'does_not_exist_or_not_requestable' => 'Aktywo nie istnieje albo nie można go zażądać.', 'assoc_users' => 'Ten nabytek/zasób jest przypisany do użytkownika i nie może być usunięty. Proszę sprawdzić przypisanie nabytków/zasobów a następnie spróbować ponownie.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Niektóre elementy nie zostały poprawnie zaimportowane.', 'errorDetail' => 'Następujące elementy nie zostały zaimportowane z powodu błędów.', 'success' => 'Twój plik został zaimportowany', diff --git a/resources/lang/pl-PL/admin/licenses/general.php b/resources/lang/pl-PL/admin/licenses/general.php index dca1165b6e..84486c52c1 100644 --- a/resources/lang/pl-PL/admin/licenses/general.php +++ b/resources/lang/pl-PL/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informacja o licencji', 'license_seats' => 'Licencje', 'seat' => 'Miejsce', + 'seat_count' => 'Seat :count', 'seats' => 'Miejsca', 'software_licenses' => 'Licencje oprogramowania', 'user' => 'Użytkownik', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Zaznacz wszystkie miejsca', - 'modal' => 'Spowoduje to zaznaczenie jednego miejsca. | Ta akcja będzie sprawdzać wszystkie :checkedout_seats_count miejsc dla tej licencji.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Zaznacz WSZYSTKIE miejsca dla tej licencji zarówno od użytkowników, jak i aktywów', 'disabled_tooltip' => 'To jest wyłączone, ponieważ nie ma obecnie zamówionych miejsc', 'disabled_tooltip_reassignable' => 'To jest wyłączone, ponieważ licencja nie jest przypisywana ponownie', 'success' => 'Licencja pomyślnie odblokowana! | Wszystkie licencje zostały pomyślnie sprawdzone!', - 'log_msg' => 'Zamówione za pomocą licencji masowej w interfejsie licencyjnym', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/pl-PL/admin/licenses/message.php b/resources/lang/pl-PL/admin/licenses/message.php index 95dcf9baa3..e315dd75a3 100644 --- a/resources/lang/pl-PL/admin/licenses/message.php +++ b/resources/lang/pl-PL/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Nastąpił problem podczas weryfikacji licencji. Spróbuj ponownie', 'success' => 'Licencja poprawna', 'not_enough_seats' => 'Za mało dostępnych miejsc do zamówienia', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/pl-PL/admin/models/message.php b/resources/lang/pl-PL/admin/models/message.php index 37f03b5d17..3fcea35526 100644 --- a/resources/lang/pl-PL/admin/models/message.php +++ b/resources/lang/pl-PL/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'OSTRZEŻENIE! Model aktywów dla tego przedmiotu jest nieprawidłowy lub brakuje!', 'no_association_fix' => 'To zepsuje rzeczy w dziwny i straszny sposób. Edytuj teraz ten zasób, aby przypisać mu model.', 'assoc_users' => 'Ten model jest przypisany do minim jednego aktywa i nie może być usunięty. Proszę usunąć aktywa, a następnie spróbować ponownie. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model nie został stworzony. Spróbuj ponownie.', diff --git a/resources/lang/pl-PL/admin/settings/general.php b/resources/lang/pl-PL/admin/settings/general.php index ba370bf3c2..b2a41a898b 100644 --- a/resources/lang/pl-PL/admin/settings/general.php +++ b/resources/lang/pl-PL/admin/settings/general.php @@ -49,7 +49,7 @@ return [ 'default_eula_text' => 'Domyślna EULA', 'default_language' => 'Domyślny język', 'default_eula_help_text' => 'Możesz również sporządzić własną licencje by sprecyzować kategorie aktywa.', - 'acceptance_note' => 'Add a note for your decision (Optional)', + 'acceptance_note' => 'Dodaj notatkę do swojej decyzji (opcjonalnie)', 'display_asset_name' => 'Wyświetl nazwę aktywa', 'display_checkout_date' => 'Wyświetl Datę Przypisania', 'display_eol' => 'Wyświetl koniec linii w widoku tabeli', @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'To tylko sprawdza, czy LDAP może poprawnie się synchronizować. Jeśli zapytanie o autoryzację LDAP nie jest poprawne, użytkownicy nadal mogą nie być w stanie się zalogować. NAJPIERW MUSISZ ZAPISAĆ TWOJE WCZEŚNIEJSZE AKTUALIZACJE USTAWIEŃ LDAP.', 'ldap_manager' => 'Menedżer LDAP', 'ldap_server' => 'Serwery LDAP', - 'ldap_server_help' => 'To powinno się rozpocząć od ldap: / / (dla nieszyfrowanych połączeń) lub ldaps: / / (dla szyfrowanych połączeń)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Walidacja certyfikatu SSL dla LDAP', 'ldap_server_cert_ignore' => 'Zezwalaj na nieprawidłowy certyfikat SSL', 'ldap_server_cert_help' => 'Zaznacz tą opcje jeśli używasz certyfikatu SSL podpisanego przez samego siebie i chcesz zezwolić na nieprawidłowy certyfikat.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Testuj synchronizację LDAP', 'license' => 'Licencja oprogramowania', - 'load_remote' => 'Użyj Gravatara', - 'load_remote_help_text' => 'Odznacz to pole, jeśli instalacja nie może załadować skryptów z zewnętrznego internetu. To uniemożliwi Snipe-IT próby załadowania obrazów z Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Próby logowania', 'login_attempt' => 'Próba logowania', 'login_ip' => 'Adres IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'opcjonalny', 'per_page' => 'Wyników na stronie', 'php' => 'Wersja PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'Informacje o systemie PHP', @@ -287,13 +287,13 @@ return [ 'zerofill_count' => 'Długość znaczników zasobów, w tym zerofill', 'username_format_help' => 'To ustawienie będzie używane przez proces importu tylko wtedy, gdy nazwa użytkownika nie jest podana i musimy wygenerować nazwę użytkownika dla Ciebie.', 'oauth_title' => 'Ustawienia API OAuth', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'Klienci OAuth', 'oauth' => 'OAuth', 'oauth_help' => 'Ustawienia punktu końcowego Oauth', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', - 'oauth_secret' => 'Secret', + 'oauth_no_clients' => 'Nie utworzyłeś jeszcze żadnych klientów OAuth.', + 'oauth_secret' => 'Sekret', 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', + 'oauth_redirect_url' => 'URL przekierowania', 'oauth_name_help' => ' Something your users will recognize and trust.', 'oauth_scopes' => 'Scopes', 'oauth_callback_url' => 'Your application authorization callback URL.', @@ -373,7 +373,11 @@ return [ 'database_driver' => 'Sterownik bazy danych', 'bs_table_storage' => 'Pamięć tabeli', 'timezone' => 'Strefa czasowa', - 'profile_edit' => 'Edit Profile', + 'profile_edit' => 'Edytuj profil', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/pl-PL/auth/message.php b/resources/lang/pl-PL/auth/message.php index 213970647a..72db39464b 100644 --- a/resources/lang/pl-PL/auth/message.php +++ b/resources/lang/pl-PL/auth/message.php @@ -14,7 +14,7 @@ return array( 'success' => 'Zalogowano pomyślnie.', 'code_required' => 'Kod weryfikacji dwuskładnikowej jest wymagany.', 'invalid_code' => 'Kod weryfikacji dwuskładnikowej jest nieprawidłowy.', - 'enter_two_factor_code' => 'Please enter your two-factor authentication code.', + 'enter_two_factor_code' => 'Wprowadź kod uwierzytelniania dwuskładnikowego.', 'please_enroll' => 'Please enroll a device in two-factor authentication.', ), diff --git a/resources/lang/pl-PL/button.php b/resources/lang/pl-PL/button.php index 1fc155c89d..b8ed961bc9 100644 --- a/resources/lang/pl-PL/button.php +++ b/resources/lang/pl-PL/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Odbierz wszytko i usuń użytkownika', 'delete' => 'Kasuj', 'edit' => 'Edycja', + 'clone' => 'Clone', 'restore' => 'Przywróć', 'remove' => 'Usuń', 'request' => 'Zamówienie', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Dodaj konserwację', 'append' => 'Dołącz', 'new' => 'Nowy', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/pl-PL/general.php b/resources/lang/pl-PL/general.php index a315ffb9b3..354db6c23e 100644 --- a/resources/lang/pl-PL/general.php +++ b/resources/lang/pl-PL/general.php @@ -11,9 +11,9 @@ return [ 'activity_report' => 'Raport Aktywności', 'address' => 'Adres', 'admin' => 'Admin', - 'admin_tooltip' => 'This user has admin privileges', - 'superuser' => 'Superuser', - 'superuser_tooltip' => 'This user has superuser privileges', + 'admin_tooltip' => 'Ten użytkownik ma uprawnienia administratora', + 'superuser' => 'Superużytkownik', + 'superuser_tooltip' => 'Ten użytkownik ma uprawnienia superużytkownika', 'administrator' => 'Administrator', 'add_seats' => 'Dodano miejsca', 'age' => "Wiek", @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Nazwisko i pierwsza litera imienia (smith_j@example.com)', 'firstinitial.lastname' => 'Pierwsza litera imienia i nazwisko (jsmith@example.com)', 'firstnamelastinitial' => 'Nazwisko i pierwsza litera imienia (smithj@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Nazwisko i imię (smith.jane@example.com)', 'first_name' => 'Imię', 'first_name_format' => 'Imię (jane@example.com)', 'files' => 'Pliki', @@ -247,7 +247,7 @@ return [ 'requested_assets_menu' => 'Żądane zasoby', 'request_canceled' => 'Żądanie anulowane', 'request_item' => 'Request this item', - 'external_link_tooltip' => 'External link to', + 'external_link_tooltip' => 'Zewnętrzny link do', 'save' => 'Zapisz', 'select_var' => 'Wybierz :thing... ', // this will eventually replace all of our other selects 'select' => 'Wybierz', @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Licencja Siedzenia|:count Licencja', 'consumables' => ':count Materiał|:count Materiałów|:count Materiałów', 'components' => ':count Składnik|:count Składniki', - ] + ], + 'more_info' => 'Więcej informacji', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Wygasa', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/pl-PL/mail.php b/resources/lang/pl-PL/mail.php index 0fea0f6deb..569c22064a 100644 --- a/resources/lang/pl-PL/mail.php +++ b/resources/lang/pl-PL/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Przeczytałem i zgadzam się z warunkami użytkowania oraz potwierdzam otrzymanie niniejszej pozycji.', 'inventory_report' => 'Raport z magazynu', 'item' => 'Pozycja:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Istnieje: liczba licencja wygasająca w ciągu następnych: dni progowe. | Istnieje: liczba licencji wygasających w ciągu następnych: dni progowe.', 'link_to_update_password' => 'Proszę kliknąć na poniższy link, aby zaktualizować swoje hasło na :web:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Istnieje :count aktywa, które nadchodzą do rewizji w ciągu :threshold days.|Istnieje :count aktywów, które nadchodzą do rewizji w ciągu :threshold dni.', 'user' => 'Użytkownik', 'username' => 'Nazwa użytkownika', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Witaj :name', 'welcome_to' => 'Witamy na :web!', 'your_assets' => 'Zobacz swój sprzęt', 'your_credentials' => 'Twoje poświadczenia :web', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/pl-PL/table.php b/resources/lang/pl-PL/table.php index 71f834cf02..98bc369bf6 100644 --- a/resources/lang/pl-PL/table.php +++ b/resources/lang/pl-PL/table.php @@ -6,6 +6,6 @@ return array( 'action' => 'Akcja', 'by' => 'Przez', 'item' => 'Przedmiot', - 'no_matching_records' => 'No matching records found', + 'no_matching_records' => 'Nie znaleziono pasujących wyników', ); diff --git a/resources/lang/pl-PL/validation.php b/resources/lang/pl-PL/validation.php index 5e56b7a07c..c9fcf0e817 100644 --- a/resources/lang/pl-PL/validation.php +++ b/resources/lang/pl-PL/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute musi zostać zaakceptowany.', - 'active_url' => ':attribute nie jest poprawnym adresem URL.', - 'after' => ':attribute musi być późniejszą datą w stosunku do :date.', - 'after_or_equal' => ':attribute musi być datą po lub równa :date.', - 'alpha' => ':attribute może zawierać tylko litery.', - 'alpha_dash' => ':attribute może zawierać tylko litery, cyfry i myślniki.', - 'alpha_num' => ':attribute może zawierać tylko litery i cyfry.', - 'array' => ':attribute musi być zbiorem.', - 'before' => ':attribute musi być późniejszą datą w stosunku do :date.', - 'before_or_equal' => ':attribute musi być datą po lub równa :date.', - 'between' => [ - 'numeric' => ':attribute musi być pomiędzy :min - :max.', - 'file' => ':attribute musi być pomiędzy :min - :max kilobajtów.', - 'string' => ':attribute musi być pomiędzy :min - :max znaków.', - 'array' => ':attribute musi być pomiędzy :min - :max.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Pole atrybutu: musi być prawdziwe lub fałszywe.', - 'confirmed' => 'Potwierdzenie :attribute nie pasuje.', - 'date' => ':attribute nie jest prawidłową datą.', - 'date_format' => 'Format :attribute nie pasuje do :format.', - 'different' => ':attribute musi różnić się od :other.', - 'digits' => ':attribute musi posiadać cyfry :digits.', - 'digits_between' => ':attribute musi być pomiędzy cyframi :min i :max.', - 'dimensions' => 'Atrybut: atrybut ma nieprawidłowe wymiary obrazu.', - 'distinct' => 'Pole :attribute ma zduplikowane wartości.', - 'email' => 'Format pola :attribute jest niewłaściwy.', - 'exists' => 'Wybrane :attribute jest niewłaściwe.', - 'file' => ':attribute musi być plikiem.', - 'filled' => 'Pole :attribute musi posiadać wartość.', - 'image' => ':attribute musi być obrazkiem.', + 'boolean' => 'Pole atrybutu: musi być prawdziwe lub fałszywe.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Pole :attribute ma zduplikowane wartości.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Wybrany :attribute jest nieprawidłowy.', + 'exists' => 'Wybrane :attribute jest niewłaściwe.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Pole :attribute musi posiadać wartość.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Wartość dla :fieldname nie może być pusta.', - 'in' => 'Wybrane :attribute jest niewłaściwe.', - 'in_array' => 'Pole: attribute nie istnieje w: other.', - 'integer' => ':attribute must musi być liczbą całkowitą.', - 'ip' => ':attribute musi być poprawnym adresem IP.', - 'ipv4' => 'Atrybut: musi być prawidłowym adresem IPv4.', - 'ipv6' => 'Atrybut: musi być prawidłowym adresem IPv6.', - 'is_unique_department' => ':attribute musi być unikatowy dla tej firmy', - 'json' => 'Atrybut: musi być prawidłowym ciągiem JSON.', - 'max' => [ - 'numeric' => ':attribute nie może być większy niż :max.', - 'file' => ':attribute nie może być więszky niż :max kilobajtów.', - 'string' => ':attribute nie może posiadać więcej znaków niż :max.', - 'array' => 'Atrybut: atrybut nie może zawierać więcej niż: max elementów.', + 'in' => 'Wybrane :attribute jest niewłaściwe.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute musi być plikiem z rozszerzeniami :values.', - 'mimetypes' => 'Atrybut: atrybut musi być plikiem typu:: wartości.', - 'min' => [ - 'numeric' => ':attribute musi być przynajmniej :min.', - 'file' => ':attribute musi być przynajmniej wielkości :min kilobajtów.', - 'string' => ':attribute musi być posiadać minimum :min znaki.', - 'array' => 'Atrybut: musi zawierać co najmniej: min.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute musi zaczynać się jednym z następujących wartości: :values.', - 'ends_with' => ':attribute musi kończyć się jedną z następujących wartości: :values.', - - 'not_in' => 'Wybrany :attribute jest nieprawidłowy.', - 'numeric' => ':attribute musi być liczbą.', - 'present' => ':attribute nie może być puste.', - 'valid_regex' => 'Nieprawidłowe wyrażenie regularne. ', - 'regex' => 'Format :attribute jest niewłaściwy.', - 'required' => ':attribute nie może być puste.', - 'required_if' => 'Pole :attribute jest wymagane gdy :other jest :value.', - 'required_unless' => 'Pole atrybutów: wymagane jest, chyba że inne są w: wartościach.', - 'required_with' => 'Pole :attribute jest wymagane gdy :values jest podana.', - 'required_with_all' => 'Pole atrybutu: atrybut jest wymagane, gdy: wartości są obecne.', - 'required_without' => 'Pole :attribute jest wymagane gdy :values nie jest podana.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Wybrany :attribute jest nieprawidłowy.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ':attribute nie może być puste.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute nie może być puste.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Pole :attribute jest wymagane gdy :other jest :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Pole atrybutów: wymagane jest, chyba że inne są w: wartościach.', + 'required_with' => 'Pole :attribute jest wymagane gdy :values jest podana.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Pole :attribute jest wymagane gdy :values nie jest podana.', 'required_without_all' => 'Pole atrybutu: attribute jest wymagane, gdy żadna z: wartości nie jest obecna.', - 'same' => ':attribute i :other muszą pasować.', - 'size' => [ - 'numeric' => ':attribute musi być wielkości :size.', - 'file' => ':attribute musi być :size kilobajtów.', - 'string' => ':attribute musi być :size znakowy.', - 'array' => 'Atrybut: musi zawierać: elementy rozmiaru.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Atrybut: atrybut musi być ciągiem.', - 'timezone' => 'Atrybut: musi być poprawną strefą.', 'two_column_unique_undeleted' => ':attribute musi być unikalny pomiędzy :table1 i :table2. ', - 'unique' => ':attribute został już wzięty.', - 'uploaded' => 'Nie udało się przesłać atrybutu:.', - 'url' => 'Format pola :attribute jest niewłaściwy.', 'unique_undeleted' => 'Wartość :attribute musi być unikalna.', 'non_circular' => ':attribute nie może tworzyć odwołań cyklicznych.', 'not_array' => ':attribute nie może być tablicą.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Hasło musi zawierać co najmniej jedną cyfrę.', 'case_diff' => 'Hasło musi zawierać małe i wielkie litery.', 'symbols' => 'Hasło musi zawierać znaki specjalne.', - 'gte' => [ - 'numeric' => 'Wartość nie może być ujemna' - ], - 'checkboxes' => ':attribute zawiera nieprawidłowe opcje.', - 'radio_buttons' => ':attribute jest nieprawidłowy.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute został już wzięty.', + 'uploaded' => 'Nie udało się przesłać atrybutu:.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute musi być prawidłową datą w formacie YYYY-MM-DD', 'last_audit_date.date_format' => ':attribute musi być prawidłową datą w formacie YYYY-MM-DD hh:mm:ss', 'expiration_date.date_format' => ':attribute musi być prawidłową datą w formacie YYYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute musi być prawidłową datą w formacie YYYY-MM-DD', 'start_date.date_format' => ':attribute musi być prawidłową datą w formacie YYYY-MM-DD', 'end_date.date_format' => ':attribute musi być prawidłową datą w formacie YYYY-MM-DD', - - ], - + 'checkboxes' => ':attribute zawiera nieprawidłowe opcje.', + 'radio_buttons' => ':attribute jest nieprawidłowy.', + 'invalid_value_in_field' => 'Nieprawidłowa wartość dołączona do tego pola', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Nieprawidłowa wartość dołączona do tego pola', + + 'generic' => [ + 'invalid_value_in_field' => 'Nieprawidłowa wartość dołączona do tego pola', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/pt-BR/account/general.php b/resources/lang/pt-BR/account/general.php index d5ce373167..8ec44d0af5 100644 --- a/resources/lang/pt-BR/account/general.php +++ b/resources/lang/pt-BR/account/general.php @@ -2,10 +2,15 @@ return array( 'personal_api_keys' => 'Chaves de API pessoal', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'personal_access_token' => 'Token de acesso pessoal', + 'personal_api_keys_success' => 'Chave de API pessoal: chave criada com sucesso', + 'here_is_api_key' => 'Aqui está seu novo token de acesso pessoal. Esta é a única vez que ela será mostrada então não perca! Agora você pode usar esse token para fazer solicitações de API.', + 'api_key_warning' => 'Ao gerar um token de API, certifique-se de copiá-lo imediatamente porque + eles não serão visíveis para você novamente.', 'api_base_url' => 'A sua URL base da API está localizada em:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Tokens de API estão definidos para expirar em:', - 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', - 'profile_updated' => 'Account successfully updated', + 'api_reference' => 'Por favor, verifique as referências da API para encontrar endpoints específicos da API e documentação adicional da API.', + 'profile_updated' => 'Conta atualizada com sucesso', + 'no_tokens' => 'Você não criou nenhum token de acesso pessoal.', ); diff --git a/resources/lang/pt-BR/admin/accessories/message.php b/resources/lang/pt-BR/admin/accessories/message.php index e77b81131b..55e5beb329 100644 --- a/resources/lang/pt-BR/admin/accessories/message.php +++ b/resources/lang/pt-BR/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'O acessório não foi alocado, por favor tente novamente', 'success' => 'Acessório alocado com sucesso.', 'unavailable' => 'Acessório não está disponível para check-out. Verifique a quantidade disponível', - 'user_does_not_exist' => 'Este usuário é inválido. Tente novamente.' + 'user_does_not_exist' => 'Este usuário é inválido. Tente novamente.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/pt-BR/admin/consumables/general.php b/resources/lang/pt-BR/admin/consumables/general.php index 754c07d5f0..2e9bda6d3e 100644 --- a/resources/lang/pt-BR/admin/consumables/general.php +++ b/resources/lang/pt-BR/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Atualizar um suprimento', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/pt-BR/admin/consumables/message.php b/resources/lang/pt-BR/admin/consumables/message.php index ee2b1e30ac..6c05d710e3 100644 --- a/resources/lang/pt-BR/admin/consumables/message.php +++ b/resources/lang/pt-BR/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'O consumível não existe.', 'create' => array( diff --git a/resources/lang/pt-BR/admin/custom_fields/message.php b/resources/lang/pt-BR/admin/custom_fields/message.php index a887dfed8d..6f5d37202b 100644 --- a/resources/lang/pt-BR/admin/custom_fields/message.php +++ b/resources/lang/pt-BR/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Esse campo não existe.', 'already_added' => 'Campo já adicionado', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Campo não criado. Por favor tente novamente.', diff --git a/resources/lang/pt-BR/admin/hardware/general.php b/resources/lang/pt-BR/admin/hardware/general.php index fae8afb6dc..58a9999192 100644 --- a/resources/lang/pt-BR/admin/hardware/general.php +++ b/resources/lang/pt-BR/admin/hardware/general.php @@ -15,8 +15,8 @@ return [ 'delete_confirm' => 'Tem certeza de que deseja excluir este ativo?', 'edit' => 'Editar Ativo', 'model_deleted' => 'Este modelo de Ativos foi excluído. Você deve restaurar o modelo antes de restaurar o Ativo.', - 'model_invalid' => 'This model for this asset is invalid.', - 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', + 'model_invalid' => 'Esse modelo para esse ativo é inválido.', + 'model_invalid_fix' => 'O ativo deve ser atualizado use um modelo de ativo válido antes de tentar verificá-lo ou fazer uma auditoria.', 'requestable' => 'Solicitável', 'requested' => 'Solicitado', 'not_requestable' => 'Não solicitável', diff --git a/resources/lang/pt-BR/admin/hardware/message.php b/resources/lang/pt-BR/admin/hardware/message.php index 6e0094fdaa..05f7da6eb0 100644 --- a/resources/lang/pt-BR/admin/hardware/message.php +++ b/resources/lang/pt-BR/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Aviso: Este ativo foi marcado como atualmente não implementável. Se este status mudou, atualize o status do ativo.', + 'undeployable' => 'Aviso: Este bem foi marcado como atualmente não implementável. Se este status mudou, por favor, atualize o status do bem.', 'does_not_exist' => 'O ativo não existe.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Alguns itens não foram importados corretamente.', 'errorDetail' => 'Os seguintes itens não foram importados devido a erros.', 'success' => 'O seu arquivo foi importado', diff --git a/resources/lang/pt-BR/admin/licenses/general.php b/resources/lang/pt-BR/admin/licenses/general.php index 0a9dc5f690..c0f9fbbb9c 100644 --- a/resources/lang/pt-BR/admin/licenses/general.php +++ b/resources/lang/pt-BR/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informações da Licença', 'license_seats' => 'Compartilhamentos de Licença', 'seat' => 'Licença Compartilhada', + 'seat_count' => 'Seat :count', 'seats' => 'Licenças Compartilhadas', 'software_licenses' => 'Licenças de Software', 'user' => 'Usuário', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Checkin todas as vagas', - 'modal' => 'Esta ação irá realizar a verificação de uma única vaga. | Esta ação verificará todos os :checkedout_seats_count vagas para esta licença.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Check-in de TODOS as vagas para esta licença de usuários e ativos', 'disabled_tooltip' => 'Isto está desativado porque não há vagas desbloqueadas no momento', 'disabled_tooltip_reassignable' => 'Isto está desativado porque a licença não é transferível', 'success' => 'Licença desbloqueada com sucesso! | Todas as licenças foram verificadas com sucesso!', - 'log_msg' => 'Check-in feito através do checkout em massa da licença GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/pt-BR/admin/licenses/message.php b/resources/lang/pt-BR/admin/licenses/message.php index 8e8f4e3abc..3f2f589d46 100644 --- a/resources/lang/pt-BR/admin/licenses/message.php +++ b/resources/lang/pt-BR/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Houve um problema de registro na licença. Favor tentar novamente.', 'success' => 'A licença foi registrada com sucesso', 'not_enough_seats' => 'Não há vagas de licença suficientes disponíveis para o pagamento', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/pt-BR/admin/locations/message.php b/resources/lang/pt-BR/admin/locations/message.php index 8e995b9345..abd89d9974 100644 --- a/resources/lang/pt-BR/admin/locations/message.php +++ b/resources/lang/pt-BR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'O local não existe.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Este local não é deletado atualmente, porque é a localização do registro para pelo menos um ativo ou usuário, tem ativos atribuídos a ele, ou é a localização principal de outro local. Por favor, atualize os modelos para não referenciarem mais esta empresa e tente novamente. ', 'assoc_assets' => 'Este local esta atualmente associado a pelo menos um ativo e não pode ser deletado. Por favor atualize seu ativo para não fazer mais referência a este local e tente novamente. ', 'assoc_child_loc' => 'Este local é atualmente o principal de pelo menos local secundário e não pode ser deletado. Por favor atualize seus locais para não fazer mais referência a este local e tente novamente. ', 'assigned_assets' => 'Ativos atribuídos', diff --git a/resources/lang/pt-BR/admin/models/message.php b/resources/lang/pt-BR/admin/models/message.php index d39ca0132e..29d7d98d02 100644 --- a/resources/lang/pt-BR/admin/models/message.php +++ b/resources/lang/pt-BR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ATENÇÃO! O modelo de ativo para este item é inválido ou está faltando!', 'no_association_fix' => 'Isso quebrará as coisas de maneiras estranhas e horríveis. Edite este equipamento agora para atribuir um modelo a ele.', 'assoc_users' => 'Este modelo está no momento associado com um ou mais ativos e não pode ser excluído. Exclua os ativos e então tente excluir novamente. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'O modelo não foi criado, tente novamente.', diff --git a/resources/lang/pt-BR/admin/settings/general.php b/resources/lang/pt-BR/admin/settings/general.php index 8355a5fe85..741be2ef16 100644 --- a/resources/lang/pt-BR/admin/settings/general.php +++ b/resources/lang/pt-BR/admin/settings/general.php @@ -49,7 +49,7 @@ return [ 'default_eula_text' => 'EULA Padrão', 'default_language' => 'Idioma Padrão', 'default_eula_help_text' => 'Você também pode associar EULAs personalizados para categorias específicas de ativos.', - 'acceptance_note' => 'Add a note for your decision (Optional)', + 'acceptance_note' => 'Adicione uma anotação para sua decisão (Opcional)', 'display_asset_name' => 'Exibir Nome do Ativo', 'display_checkout_date' => 'Mostrar data de check-out', 'display_eol' => 'Exibir EOL na visualização de tabela', @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Isso apenas prova que LDAP sincroniza corretamente. Se o autenticador query LDAP não estiver correto, usuários ainda não poderão realizar o login. VOCÊ DEVE PRIMEIRO SALVAR AS NOVAS CONFIGURAÇÕES DO LDAP.', 'ldap_manager' => 'Gerenciador LDAP', 'ldap_server' => 'Servidor LDAP', - 'ldap_server_help' => 'Deve iniciar com ldap:// (para encriptado ou TLS) ou ldaps:// (para SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validação certificado SSL LDAP', 'ldap_server_cert_ignore' => 'Permitir certificado SSL inválido', 'ldap_server_cert_help' => 'Selecione esta opção se está utilizando um certificado SSL próprio e deseja aceitar um certificado SSL inválido.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Testar LDAP', 'ldap_test_sync' => 'Testar Sincronização LDAP', 'license' => 'Licença de software', - 'load_remote' => 'Usar Gravatar', - 'load_remote_help_text' => 'Desmarque esta caixa se sua instalação não pode carregar scripts do exterior da internet. Isso irá impedir que o Snipe-IT tente carregar imagens do Gravatar.', + 'load_remote' => 'Carregar Avatares Remotos', + 'load_remote_help_text' => 'Desmarque essa caixa se a sua instalação não pode carregar scripts vindos da internet. Isso vai prevenir que o Snipe-IT carregue avatares do Gravatar ou outras fontes externas.', 'login' => 'Tentativas de Login', 'login_attempt' => 'Tentativa de login', 'login_ip' => 'Endereço IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'Opcional', 'per_page' => 'Resultados Por Página', 'php' => 'Versão do PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'Informações do PHP', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, sistema, informações', 'php_overview_help' => 'Informação do sistema PHP', @@ -287,18 +287,18 @@ return [ 'zerofill_count' => 'Comprimento de etiquetas de ativos, incluindo zerofill', 'username_format_help' => 'Esta configuração será usada somente pelo processo de importação, se um nome de usuário não for fornecido nós iremos gerar um nome de usuário para você.', 'oauth_title' => 'Configurações da API OAuth', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'Clientes OAuth', 'oauth' => 'OAuth', 'oauth_help' => 'Configurações de Endpoint Oauth', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', - 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', - 'oauth_name_help' => ' Something your users will recognize and trust.', - 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', + 'oauth_no_clients' => 'Você ainda não criou nenhum cliente OAuth.', + 'oauth_secret' => 'Secreto', + 'oauth_authorized_apps' => 'Aplicações autorizadas', + 'oauth_redirect_url' => 'Redirecionar URL', + 'oauth_name_help' => ' Algo que os usuários irão reconhecer e confiar.', + 'oauth_scopes' => 'Escopos', + 'oauth_callback_url' => 'URL de callback de autorização do seu aplicativo.', + 'create_client' => 'Criar Cliente', + 'no_scopes' => 'Sem escopos', 'asset_tag_title' => 'Atualizar configurações de Tag do Ativo', 'barcode_title' => 'Atualizar Configurações de Código de Barras', 'barcodes' => 'Códigos de barras', @@ -373,7 +373,11 @@ return [ 'database_driver' => 'Driver de Banco de Dados', 'bs_table_storage' => 'Armazenamento de Tabela', 'timezone' => 'Fuso horário', - 'profile_edit' => 'Edit Profile', - 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'profile_edit' => 'Editar perfil', + 'profile_edit_help' => 'Permitir que os usuários editem seus próprios perfis.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/pt-BR/button.php b/resources/lang/pt-BR/button.php index 422ca04ad7..053b40ec57 100644 --- a/resources/lang/pt-BR/button.php +++ b/resources/lang/pt-BR/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Fazer check-in de todos / Excluir usuário', 'delete' => 'Excluir', 'edit' => 'Editar', + 'clone' => 'Clone', 'restore' => 'Restaurar', 'remove' => 'Remover', 'request' => 'Solicitação', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Adicionar Manutenção', 'append' => 'Acrescentar', 'new' => 'Novo', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/pt-BR/general.php b/resources/lang/pt-BR/general.php index 700fa0c8d6..1caee13cff 100644 --- a/resources/lang/pt-BR/general.php +++ b/resources/lang/pt-BR/general.php @@ -550,6 +550,14 @@ Resultados da Sincronização', 'license_seats' => ':count licença assentonamed@@0:count licença de assentos', 'consumables' => ':count Consumível|:count Consumíveis', 'components' => ':count Componente|:count Componentes', - ] + ], + 'more_info' => 'Mais Informações', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expira', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/pt-BR/mail.php b/resources/lang/pt-BR/mail.php index a03869290c..7a1897e899 100644 --- a/resources/lang/pt-BR/mail.php +++ b/resources/lang/pt-BR/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Li e concordo com os termos de uso e recebi este item.', 'inventory_report' => 'Relatório de Inventário', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Há uma :count licença expirando nos próximos :threshold dias. | Existem :count licenças expirand nos próximos :threshold dias.', 'link_to_update_password' => 'Por favor clique no link abaixo para atualizar a sua senha do :web:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Existe um :count ativo que está sendo auditado dentro de :threshold days. There are :count assets que estão sendo enviados para auditoria dentro de :threshold dias.', 'user' => 'Usuário', 'username' => 'Nome de Usuário', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Bem-vindo(a), :name', 'welcome_to' => 'Bem-vindo ao :web!', 'your_assets' => 'Ver seus ativos', 'your_credentials' => 'Suas credenciais do Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/pt-BR/validation.php b/resources/lang/pt-BR/validation.php index c6efdc3dcf..f07c920d6e 100644 --- a/resources/lang/pt-BR/validation.php +++ b/resources/lang/pt-BR/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'O :attribute dever ser aceito.', - 'active_url' => 'O :attribute não é uma URL válida.', - 'after' => 'O :attribute deve ser uma data após :date.', - 'after_or_equal' => 'O :attribute deve ser uma data depois ou igual a :date.', - 'alpha' => 'O :attribute pode apenas conter letras.', - 'alpha_dash' => 'O :attribute pode apenas conter letras, números, e traços.', - 'alpha_num' => 'O :attribute pode apenas conter letras e números.', - 'array' => 'O :attribute deve estar em ordem.', - 'before' => 'O :attribute deve ser uma data antes de :date.', - 'before_or_equal' => 'O atributo: deve ser uma data anterior ou igual a: date.', - 'between' => [ - 'numeric' => 'O :attribute deve estar entre :min - :max.', - 'file' => 'O :attribute deve estar entre :min - :max kilobytes.', - 'string' => 'O :attribute deve estar entre :min - :max caracteres.', - 'array' => 'O :attribute deve ter entre :min e :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'O :atributo têm que ser verdadeiro ou falso.', - 'confirmed' => 'A confirmação do :attribute não corresponde.', - 'date' => 'O :attribute não é uma data válida.', - 'date_format' => 'O :attribute não corresponde ao formato :format.', - 'different' => 'O :attribute e :other devem ser diferentes.', - 'digits' => 'O :attribute deve ter :digits dígitos.', - 'digits_between' => 'O :attribute deve ter entre :min e :max dígitos.', - 'dimensions' => 'O :attribute tem dimensões de imagem inválidas.', - 'distinct' => 'O :attribute tem um valor duplicado.', - 'email' => 'O formato de :attribute é inválido.', - 'exists' => 'O :attribute selecionado é inválido.', - 'file' => 'O :attribute deve ser um arquivo.', - 'filled' => 'O :attribute deve ter um valor.', - 'image' => 'O :attribute deve ser uma imagem.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'O :attribute tem um valor duplicado.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'O :attribute selecionado é inválido.', + 'exists' => 'O :attribute selecionado é inválido.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'O :attribute deve ter um valor.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'O valor para :fieldname não pode ser nulo.', - 'in' => 'O :attribute selecionado é inválido.', - 'in_array' => 'O :attribute campo não existe em :other.', - 'integer' => 'O :attribute deve ser um número inteiro.', - 'ip' => 'O :attribute deve ser um endereço de IP válido.', - 'ipv4' => 'O :attribute deve ter um endereço IPv4.', - 'ipv6' => 'O :attribute deve ter um IPv6 válido.', - 'is_unique_department' => 'O :attribute deve ser único para esta localização da empresa', - 'json' => 'The :attribute deve ser um JSON válida.', - 'max' => [ - 'numeric' => 'O :attribute não pode ser maior do que :max.', - 'file' => 'O :attribute não pode ser maior do que :max kilobytes.', - 'string' => 'O :attribute não pode ser maior do que :max caracteres.', - 'array' => 'O :attribute não pode ter mais que :max items.', + 'in' => 'O :attribute selecionado é inválido.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'O :attribute deve ser um arquivo do tipo: :values.', - 'mimetypes' => 'O :attribute deve ser um arquivo de tipo: :values.', - 'min' => [ - 'numeric' => 'O :attribute deve ter pelo menos :min.', - 'file' => 'O :attribute deve ter pelo menos :min kilobytes.', - 'string' => 'O :attribute deve ter pelo menos :min caracteres.', - 'array' => 'O :attribute deve ter pelo menos :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'O atributo deve começar com um dos seguintes valores.', - 'ends_with' => 'O :attribute deve terminar com um dos seguintes: :values.', - - 'not_in' => 'O :attribute selecionado é inválido.', - 'numeric' => 'O :attribute deve ser um número.', - 'present' => 'O campo:attribute deve estar presente.', - 'valid_regex' => 'Isso não é uma regex válida. ', - 'regex' => 'O formato de :attribute é inválido.', - 'required' => 'O campo de :attribute é requerido.', - 'required_if' => 'O campo de :attribute é requerido quando :other é :value.', - 'required_unless' => 'O campo:attribute é obrigatório a não ser que: :other estiver em : :values.', - 'required_with' => 'O campo de :attribute é requerido quando :values está presente.', - 'required_with_all' => 'O campo :attribute é obrigatorio quando : :values está presente.', - 'required_without' => 'O campo de :attribute é requerido quando :values não está presente.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'O :attribute selecionado é inválido.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'O campo:attribute deve estar presente.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'O campo de :attribute é requerido.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'O campo de :attribute é requerido quando :other é :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'O campo:attribute é obrigatório a não ser que: :other estiver em : :values.', + 'required_with' => 'O campo de :attribute é requerido quando :values está presente.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'O campo de :attribute é requerido quando :values não está presente.', 'required_without_all' => 'O campo :attribute é obrigatório nenhum dos :values está presente.', - 'same' => 'O :attribute e :other devem corresponderem.', - 'size' => [ - 'numeric' => 'O :attribute deve ser :size.', - 'file' => 'O :attribute deve ter :size kilobytes.', - 'string' => 'O :attribute deve ter :size caracteres.', - 'array' => 'O :attribute deve conter :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'O :attribute deve ser string.', - 'timezone' => 'O :attribute deve ser um campo válido.', 'two_column_unique_undeleted' => 'O :attribute deve ser único entre :table1 e :table2. ', - 'unique' => 'O :attribute já foi tomado.', - 'uploaded' => 'O :attribute falhou no upload.', - 'url' => 'O formato de :attribute é inválido.', 'unique_undeleted' => 'O :attribute deve ser único.', 'non_circular' => 'O :attribute não pode criar uma referência circular.', 'not_array' => ':attribute não pode ser um array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'A senha deve conter pelo menos um número.', 'case_diff' => 'A senha deve conter letras maiúsculas e minusculas.', 'symbols' => 'A senha deve conter símbolos.', - 'gte' => [ - 'numeric' => 'Valor não pode ser negativo' - ], - 'checkboxes' => ':attribute contém opções inválidas.', - 'radio_buttons' => ':attribute é inválido.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'O :attribute já foi tomado.', + 'uploaded' => 'O :attribute falhou no upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'O :attribute deve ser uma data válida em formato DD-MM-YYYY', 'last_audit_date.date_format' => 'O :attribute deve ser uma data válida em formato DD-MM-YYYY hh:mm:ss', 'expiration_date.date_format' => 'O :attribute deve ser uma data válida em formato DD-MM-YYYY', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'O :attribute deve ser uma data válida em formato DD-MM-YYYY', 'start_date.date_format' => 'O :attribute deve ser uma data válida em formato DD-MM-YYYY', 'end_date.date_format' => 'O :attribute deve ser uma data válida em formato DD-MM-YYYY', - - ], - + 'checkboxes' => ':attribute contém opções inválidas.', + 'radio_buttons' => ':attribute é inválido.', + 'invalid_value_in_field' => 'Valor inválido incluído neste campo', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valor inválido incluído neste campo', + + 'generic' => [ + 'invalid_value_in_field' => 'Valor inválido incluído neste campo', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/pt-PT/account/general.php b/resources/lang/pt-PT/account/general.php index 9edf9bb3e5..b116502463 100644 --- a/resources/lang/pt-PT/account/general.php +++ b/resources/lang/pt-PT/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Chaves Pessoais de API', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'O URL base da API está localizada em:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Tokens de API estão definidos para expirar em:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/pt-PT/admin/accessories/message.php b/resources/lang/pt-PT/admin/accessories/message.php index 23fd1ab8ca..7c338b63be 100644 --- a/resources/lang/pt-PT/admin/accessories/message.php +++ b/resources/lang/pt-PT/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'O acessório não foi alocado. Por favor, tente novamente', 'success' => 'Acessório alocado com sucesso.', 'unavailable' => 'O acessório não está disponível para check-out. Verifique a quantidade disponível', - 'user_does_not_exist' => 'O utilizador é inválido. Por favor, tente novamente.' + 'user_does_not_exist' => 'O utilizador é inválido. Por favor, tente novamente.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/pt-PT/admin/consumables/general.php b/resources/lang/pt-PT/admin/consumables/general.php index 5964fd5440..03c953307d 100644 --- a/resources/lang/pt-PT/admin/consumables/general.php +++ b/resources/lang/pt-PT/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Restantes', 'total' => 'Total', 'update' => 'Atualizar consumível', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/pt-PT/admin/consumables/message.php b/resources/lang/pt-PT/admin/consumables/message.php index 376fe62d73..d55968f69a 100644 --- a/resources/lang/pt-PT/admin/consumables/message.php +++ b/resources/lang/pt-PT/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'O consumível não existe.', 'create' => array( diff --git a/resources/lang/pt-PT/admin/custom_fields/message.php b/resources/lang/pt-PT/admin/custom_fields/message.php index 4aab9819e0..e557e60803 100644 --- a/resources/lang/pt-PT/admin/custom_fields/message.php +++ b/resources/lang/pt-PT/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Esse campo não existe.', 'already_added' => 'Campo já adicionado', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Campo não criado. Por favor tente novamente.', diff --git a/resources/lang/pt-PT/admin/hardware/message.php b/resources/lang/pt-PT/admin/hardware/message.php index 4bff840076..4d8a46d100 100644 --- a/resources/lang/pt-PT/admin/hardware/message.php +++ b/resources/lang/pt-PT/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Aviso: Este artigo foi assinalado como "não implementável". - Se este estado mudou, por favor atualize o estado do artigo.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Artigo não existente.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Alguns itens não foram importados corretamente.', 'errorDetail' => 'Os seguintes itens não foram importados devido a erros.', 'success' => 'O seu ficheiro foi importado', diff --git a/resources/lang/pt-PT/admin/licenses/general.php b/resources/lang/pt-PT/admin/licenses/general.php index bdbac32065..2d1df2ef41 100644 --- a/resources/lang/pt-PT/admin/licenses/general.php +++ b/resources/lang/pt-PT/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informação de Licença', 'license_seats' => 'Instalações da Licença', 'seat' => 'Instalação', + 'seat_count' => 'Seat :count', 'seats' => 'Instalações', 'software_licenses' => 'Licenças de Software', 'user' => 'Utilizador', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Receber todos os lugares', - 'modal' => 'Esta ação irá realizar a verificação de um único lugar. | Esta ação verificará todos os :checkedout_seats_count lugares para esta licença.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Entrega de TODOS os lugares para esta licença de utilizadores e ativos', 'disabled_tooltip' => 'Isto está desativado porque não há lugares recebidos no momento', 'disabled_tooltip_reassignable' => 'Isso está desativado porque a licença não é reatribuível', 'success' => 'Licença entregue com sucesso! Todas as licenças foram entregues com sucesso!', - 'log_msg' => 'Entrega feita através da entrega em massa da licença', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/pt-PT/admin/licenses/message.php b/resources/lang/pt-PT/admin/licenses/message.php index e5d8230ce9..dabf476519 100644 --- a/resources/lang/pt-PT/admin/licenses/message.php +++ b/resources/lang/pt-PT/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Ocorreu um problema ao atribuir esta licença. Por favor, tente novamente.', 'success' => 'A licença foi alocada com sucesso', 'not_enough_seats' => 'Não há assentos de licença suficientes disponíveis para o pagamento', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/pt-PT/admin/models/message.php b/resources/lang/pt-PT/admin/models/message.php index c0a85ba02b..af252da3a5 100644 --- a/resources/lang/pt-PT/admin/models/message.php +++ b/resources/lang/pt-PT/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'AVISO! O modelo de artigo para este item é inválido ou está em falta!', 'no_association_fix' => 'Isto estragará as coisas de maneiras estranhas e horríveis. Edite este artigo agora para lhe atribuir um modelo.', 'assoc_users' => 'Este modelo está atualmente associado com pelo menos um artigo e não pode ser removido. Por favor, remova os artigos e depois tente novamente. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'O Modelo não foi criado. Por favor tente novamente.', diff --git a/resources/lang/pt-PT/admin/settings/general.php b/resources/lang/pt-PT/admin/settings/general.php index 1fa83d6414..5cfdac9c69 100644 --- a/resources/lang/pt-PT/admin/settings/general.php +++ b/resources/lang/pt-PT/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Isto apenas testa que a LDAP consegue sincronizar corretamente. Se a sua consulta de autenticação LDAP não estiver correta, os utilizadores poderão ainda não conseguir fazer a autenticação. PRIMEIRO DEVE GRAVAR AS SUAS DEFINIÇÕES ATUALIZADAS DA LDAP.', 'ldap_manager' => 'Gestor LDAP', 'ldap_server' => 'Servidor LDAP', - 'ldap_server_help' => 'Isso deve começar com ldap: / / (para não-criptado ou TLS) ou ldaps: / / (para SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validação certificado SSL LDAP', 'ldap_server_cert_ignore' => 'Permitir certificado SSL inválido', 'ldap_server_cert_help' => 'Seleccione esta opção se está a usar um certificado SSL auto-assinado e desejar aceitar um certificado SSL inválido.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Testar LDAP', 'ldap_test_sync' => 'Testar Sincronização LDAP', 'license' => 'Licença de software', - 'load_remote' => 'Usar Gravatar', - 'load_remote_help_text' => 'Desmarque esta caixa se sua instalação não pode carregar scripts do exterior da internet. Isso irá impedir que o Snipe-IT tente carregar imagens do Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Tentativas de login', 'login_attempt' => 'Tentativa de login', 'login_ip' => 'Endereço IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'opcional', 'per_page' => 'Resultados por página', 'php' => 'Versão do PHP', - 'php_info' => 'Informações do PHP', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, sistema, informações', 'php_overview_help' => 'Informação do sistema PHP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Fuso horário', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/pt-PT/button.php b/resources/lang/pt-PT/button.php index d42fb6dd2d..fd6ea03258 100644 --- a/resources/lang/pt-PT/button.php +++ b/resources/lang/pt-PT/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Entrega todos / Apaga Utilizadores', 'delete' => 'Remover', 'edit' => 'Editar', + 'clone' => 'Clone', 'restore' => 'Restaurar', 'remove' => 'Remover', 'request' => 'Solicitar', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Adicionar Manutenção', 'append' => 'Anexar', 'new' => 'Novo', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/pt-PT/general.php b/resources/lang/pt-PT/general.php index 557f49e00e..c18d695371 100644 --- a/resources/lang/pt-PT/general.php +++ b/resources/lang/pt-PT/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count licença assentonamed@@0:count licença de assentos', 'consumables' => ':count Consumível|:count Consumíveis', 'components' => ':count Componente|:count Componentes', - ] + ], + 'more_info' => 'Mais Informações', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expira a', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/pt-PT/mail.php b/resources/lang/pt-PT/mail.php index cbb3394edc..dcf8db7b4f 100644 --- a/resources/lang/pt-PT/mail.php +++ b/resources/lang/pt-PT/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Li e concordo com os termos de uso e recebi este item.', 'inventory_report' => 'Relatório de Inventário', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Há :count licença a expirar nos próximos :threshold dias. Existem :count licenças que irão expirar nos próximos :threshold dias.', 'link_to_update_password' => 'Por favor clique no link abaixo para actualizar a sua senha do :web:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Existe um :count ativo que está a chegar para ser auditado em :threshold dias.|Existem :count ativos que estão a chegar para serem auditados em :threshold dias.', 'user' => 'Utilizador', 'username' => 'Nome de utilizador', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Bem vindo, :name', 'welcome_to' => 'Bem-vindo ao :web!', 'your_assets' => 'Ver seus ativos', 'your_credentials' => 'Suas credenciais do Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/pt-PT/validation.php b/resources/lang/pt-PT/validation.php index 9fa8ba649d..73633f5713 100644 --- a/resources/lang/pt-PT/validation.php +++ b/resources/lang/pt-PT/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'O :attribute tem que ser aceite.', - 'active_url' => 'O :attribute não é um URL válido.', - 'after' => 'A :attribute tem que ser superior a :date.', - 'after_or_equal' => 'O atributo: deve ser uma data após ou igual a: data.', - 'alpha' => 'O :attribute só pode conter letras.', - 'alpha_dash' => 'O :attribute só pode conter letras, números e traços.', - 'alpha_num' => 'O :attribute só pode conter letras e números.', - 'array' => 'O atributo: deve ser uma matriz.', - 'before' => 'A :attribute tem que ser anterior a :date.', - 'before_or_equal' => 'O atributo: deve ser uma data anterior ou igual a: data.', - 'between' => [ - 'numeric' => 'O :attribute deve estar entre :min e :max.', - 'file' => 'O :attribute deve estar entre :min e :max kilobytes.', - 'string' => 'O :attribute deve estar entre :min e :max caracteres.', - 'array' => 'O atributo deve ter entre: min e: itens máximos.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'O campo: atributo deve ser verdadeiro ou falso.', - 'confirmed' => 'A confirmação da :attribute não coincide.', - 'date' => 'A :attribute não é uma data válida.', - 'date_format' => ':attribute não corresponde ao formato :format.', - 'different' => ':attribute e :other têm que ser diferentes.', - 'digits' => ':attribute de contem :digits dígitos.', - 'digits_between' => 'O :attribute deve estar entre :min e :max dígitos.', - 'dimensions' => 'O atributo: tem dimensões de imagem inválidas.', - 'distinct' => 'O campo: atributo tem um valor duplicado.', - 'email' => 'O formato do :attribute é inválido.', - 'exists' => 'O :attribute é inválido.', - 'file' => 'O atributo: deve ser um arquivo.', - 'filled' => 'O campo: atributo deve ter um valor.', - 'image' => 'O :attribute tem que ser uma imagem.', + 'boolean' => 'O campo: atributo deve ser verdadeiro ou falso.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'O campo: atributo tem um valor duplicado.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'O :attribute selecionado é inválido.', + 'exists' => 'O :attribute é inválido.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'O campo: atributo deve ter um valor.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'O valor para :fieldname não pode ser nulo.', - 'in' => 'O :attribute selecionado é inválido.', - 'in_array' => 'O campo: atributo não existe em: outro.', - 'integer' => 'O :attribute tem que ser um inteiro.', - 'ip' => 'O :attribute tem que ser um IP válido.', - 'ipv4' => 'O atributo: deve ser um endereço IPv4 válido.', - 'ipv6' => 'O atributo deve ser um endereço IPv6 válido.', - 'is_unique_department' => 'O :attribute deve ser único para esta localização da empresa', - 'json' => 'O atributo: deve ser uma string JSON válida.', - 'max' => [ - 'numeric' => 'O :attribute não pode ser maior do que :max.', - 'file' => 'O :attribute não pode ter mais do que :max kilobytes.', - 'string' => 'O :attribute não pode tem mais do que :max caracteres.', - 'array' => 'O atributo: pode não ter mais do que: itens máximos.', + 'in' => 'O :attribute selecionado é inválido.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'O :attribute só pode contem os seguintes formatos: :values.', - 'mimetypes' => 'O: atributo deve ser um arquivo de tipo:: valores.', - 'min' => [ - 'numeric' => ':attribute deve ter pelos menos :min.', - 'file' => ':attribute deve ter pelos menos :min kilobytes.', - 'string' => 'O :attribute deve conter pelos menos :min caracteres.', - 'array' => 'O atributo deve ter pelo menos: itens mínimos.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'O :attribute deve começar com um dos seguintes: :values.', - 'ends_with' => 'O :attribute deve terminar com um dos seguintes: :values.', - - 'not_in' => 'O :attribute selecionado é inválido.', - 'numeric' => ':attribute tem que ser um número.', - 'present' => 'O campo: atributo deve estar presente.', - 'valid_regex' => 'Este não é um código regex válido.', - 'regex' => 'O formato do :attribute é inválido.', - 'required' => ':attribute é obrigatório.', - 'required_if' => 'O :attribute é obrigatório quando :other é :value.', - 'required_unless' => 'O campo: atributo é necessário a menos que: outro esteja em: valores.', - 'required_with' => 'O :attribute é obrigatório quando :values existem.', - 'required_with_all' => 'O campo: atributo é obrigatório quando: os valores estão presentes.', - 'required_without' => 'O :attribute é obrigatório quando :values não existem.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'O :attribute selecionado é inválido.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'O campo: atributo deve estar presente.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute é obrigatório.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'O :attribute é obrigatório quando :other é :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'O campo: atributo é necessário a menos que: outro esteja em: valores.', + 'required_with' => 'O :attribute é obrigatório quando :values existem.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'O :attribute é obrigatório quando :values não existem.', 'required_without_all' => 'O campo: atributo é obrigatório quando nenhum de: valores estão presentes.', - 'same' => ':attribute e :other devem coincidir.', - 'size' => [ - 'numeric' => 'O :attribute deve ser maior que :size.', - 'file' => 'O :attribute deve ter :size kilobytes.', - 'string' => 'O :attribute deve conter :size caracteres.', - 'array' => 'O atributo: deve conter: itens de tamanho.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'O atributo deve ser uma string.', - 'timezone' => 'O atributo: deve ser uma zona válida.', 'two_column_unique_undeleted' => 'O :attribute deve ser único entre :table1 e :table2. ', - 'unique' => 'Este :attribute já existe.', - 'uploaded' => 'O atributo: não foi possível carregar.', - 'url' => 'O formato do :attribute é inválido.', 'unique_undeleted' => 'O :atribute deve ser único.', 'non_circular' => 'O :attribute não deve criar uma referência circular.', 'not_array' => ':attribute não pode ser um array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'A senha deve conter no mínimo um símbolo.', 'case_diff' => 'A senha deve usar maiúsculas e minúsculas.', 'symbols' => 'A senha deve conter símbolos.', - 'gte' => [ - 'numeric' => 'Valor não pode ser negativo' - ], - 'checkboxes' => ':attribute contém opções inválidas.', - 'radio_buttons' => ':attribute é inválido.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Este :attribute já existe.', + 'uploaded' => 'O atributo: não foi possível carregar.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'O :attribute deve ser uma data válida em formato YYYY-MM-DD', 'last_audit_date.date_format' => 'O :attribute deve ser uma data válida em formato YYYY-MM-DD hh:mm:ss', 'expiration_date.date_format' => 'O :attribute deve ser uma data válida em formato YYYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'O :attribute deve ser uma data válida em formato YYYY-MM-DD', 'start_date.date_format' => 'O :attribute deve ser uma data válida em formato YYYY-MM-DD', 'end_date.date_format' => 'O :attribute deve ser uma data válida em formato YYYY-MM-DD', - - ], - + 'checkboxes' => ':attribute contém opções inválidas.', + 'radio_buttons' => ':attribute é inválido.', + 'invalid_value_in_field' => 'Valor inválido incluído neste campo', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valor inválido incluído neste campo', + + 'generic' => [ + 'invalid_value_in_field' => 'Valor inválido incluído neste campo', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ro-RO/account/general.php b/resources/lang/ro-RO/account/general.php index 43143459fb..2718d43eb6 100644 --- a/resources/lang/ro-RO/account/general.php +++ b/resources/lang/ro-RO/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Chei API personale', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'URL-ul de bază API este localizat la:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Token-urile API sunt setate să expire în:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ro-RO/admin/accessories/message.php b/resources/lang/ro-RO/admin/accessories/message.php index fd2b34befd..610c775322 100644 --- a/resources/lang/ro-RO/admin/accessories/message.php +++ b/resources/lang/ro-RO/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accesoriu nu a fost predat, vă rugăm să încercaţi din nou', 'success' => 'Accesoriu a fost predat.', 'unavailable' => 'Accesoriul nu este disponibil pentru checkout. Verificați cantitatea disponibilă', - 'user_does_not_exist' => 'Acest utilizator nu este valid. Vă rugăm să încercaţi din nou.' + 'user_does_not_exist' => 'Acest utilizator nu este valid. Vă rugăm să încercaţi din nou.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ro-RO/admin/consumables/general.php b/resources/lang/ro-RO/admin/consumables/general.php index 5d70a0c388..f8f89ad30b 100644 --- a/resources/lang/ro-RO/admin/consumables/general.php +++ b/resources/lang/ro-RO/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Rămas', 'total' => 'Total', 'update' => 'Actualizați consumabilele', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ro-RO/admin/consumables/message.php b/resources/lang/ro-RO/admin/consumables/message.php index 1f97ef3b61..5c4f1e3c14 100644 --- a/resources/lang/ro-RO/admin/consumables/message.php +++ b/resources/lang/ro-RO/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumul nu există.', 'create' => array( diff --git a/resources/lang/ro-RO/admin/custom_fields/message.php b/resources/lang/ro-RO/admin/custom_fields/message.php index 8def1ea2d2..395169fa84 100644 --- a/resources/lang/ro-RO/admin/custom_fields/message.php +++ b/resources/lang/ro-RO/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Acest câmp nu există.', 'already_added' => 'Câmpul deja adăugat', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Câmpul nu a fost creat, încercați din nou.', diff --git a/resources/lang/ro-RO/admin/hardware/message.php b/resources/lang/ro-RO/admin/hardware/message.php index 3cd257b274..2384ddc869 100644 --- a/resources/lang/ro-RO/admin/hardware/message.php +++ b/resources/lang/ro-RO/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Warning: Acest activ a fost marcat ca fiind în prezent nedelimitat. Dacă această stare sa modificat, actualizați starea activelor.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Activul nu exista.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Unele elemente nu au importat corect.', 'errorDetail' => 'Următoarele elemente nu au fost importate din cauza erorilor.', 'success' => 'Fișierul dvs. a fost importat', diff --git a/resources/lang/ro-RO/admin/licenses/general.php b/resources/lang/ro-RO/admin/licenses/general.php index 95a4450875..86f301504a 100644 --- a/resources/lang/ro-RO/admin/licenses/general.php +++ b/resources/lang/ro-RO/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Info licenta', 'license_seats' => 'Locuri licenta', 'seat' => 'Loc', + 'seat_count' => 'Seat :count', 'seats' => 'Locuri', 'software_licenses' => 'Licente software', 'user' => 'Utilizator', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Verifică toate locurile', - 'modal' => 'Aceasta actiune va verifica un singur loc. This action will checkin all :checkedout_seats_count seats for this license.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Verificați TOATE scaunele pentru această licență atât de la utilizatori, cât și de la active', 'disabled_tooltip' => 'Acest lucru este dezactivat deoarece nu există locuri în prezent verificate', 'disabled_tooltip_reassignable' => 'Acest lucru este dezactivat deoarece licența nu este reatribuită', 'success' => 'Licenta a fost verificata cu succes! In toate licentele au fost verificate cu succes!', - 'log_msg' => 'Verificat prin licenta colectiva in Licenta GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ro-RO/admin/licenses/message.php b/resources/lang/ro-RO/admin/licenses/message.php index 641c04abab..52d1ac3641 100644 --- a/resources/lang/ro-RO/admin/licenses/message.php +++ b/resources/lang/ro-RO/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'A aparut o problema la predarea licentei. Va rugam incercati iar.', 'success' => 'Licenta a fost predata', 'not_enough_seats' => 'Nu sunt disponibile suficiente locuri de licență pentru checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ro-RO/admin/models/message.php b/resources/lang/ro-RO/admin/models/message.php index 96d27ebd67..7e164313e2 100644 --- a/resources/lang/ro-RO/admin/models/message.php +++ b/resources/lang/ro-RO/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'AVERTISMENT! Modelul de activ pentru acest articol este invalid sau lipsește!', 'no_association_fix' => 'Acest lucru va strica lucrurile în moduri ciudate și oribile. Editează acest bun acum pentru a-l atribui un model.', 'assoc_users' => 'Acest model este momentan asociat cu cel putin unul sau mai multe active si nu poate fi sters. Va rugam sa stergeti activul si dupa incercati iar. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Modelul nu a fost creat, incercati iar.', diff --git a/resources/lang/ro-RO/admin/settings/general.php b/resources/lang/ro-RO/admin/settings/general.php index b51150f059..63a1b3d2c0 100644 --- a/resources/lang/ro-RO/admin/settings/general.php +++ b/resources/lang/ro-RO/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Acest lucru testează numai faptul că LDAP poate sincroniza corect. Dacă interogarea dvs. de autentificare LDAP nu este corectă, este posibil ca utilizatorii să nu se poată conecta. TREBUIE SĂ ACTUALIZAȚI SETĂRILE LDAP MAI ÎNTÂI.', 'ldap_manager' => 'Manager LDAP', 'ldap_server' => 'LDAP Server', - 'ldap_server_help' => 'Acest lucru ar trebui să înceapă cu ldap: // (pentru TCP sau TLS) sau ldaps: // (pentru SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validarea certificatelor SSL pentru LDAP', 'ldap_server_cert_ignore' => 'Permiteți certificatul SSL nevalid', 'ldap_server_cert_help' => 'Bifați această casetă de selectare dacă utilizați un certificat SSL auto-semnat și doriți să acceptați un certificat SSL nevalid.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Testează LDAP', 'ldap_test_sync' => 'Testează sincronizarea LDAP', 'license' => 'Licență software', - 'load_remote' => 'Folosește Gravatar', - 'load_remote_help_text' => 'Debifați această casetă dacă instalarea nu poate încărca scripturi din exterior. Acest lucru va împiedica Snipe-IT să încerce încărcarea imaginilor de la Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Încercări de conectare', 'login_attempt' => 'Încercare de conectare', 'login_ip' => 'Adresă IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'facultativ', 'per_page' => 'Rezultate pe pagina', 'php' => 'Versiune PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, sistem, info', 'php_overview_help' => 'Informaţii sistem PHP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ro-RO/button.php b/resources/lang/ro-RO/button.php index 1dbff7310e..169d449a75 100644 --- a/resources/lang/ro-RO/button.php +++ b/resources/lang/ro-RO/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Verifică tot / Șterge Utilizatorul', 'delete' => 'Sterge', 'edit' => 'Editeaza', + 'clone' => 'Clone', 'restore' => 'Restaureaza', 'remove' => 'Elimină', 'request' => 'Cerere', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Adaugă Mentenanță', 'append' => 'Adăugare', 'new' => 'Nou', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ro-RO/general.php b/resources/lang/ro-RO/general.php index f00bd2b38f..573c6d9d88 100644 --- a/resources/lang/ro-RO/general.php +++ b/resources/lang/ro-RO/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count Locul de licență:count Locuri de licență', 'consumables' => ':count Consumabile|:count Consumabile', 'components' => ':count Component|:count Componente', - ] + ], + 'more_info' => 'Mai multe', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'expiră', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ro-RO/mail.php b/resources/lang/ro-RO/mail.php index 5dc8b0906d..0d117e9562 100644 --- a/resources/lang/ro-RO/mail.php +++ b/resources/lang/ro-RO/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Am citit și sunt de acord cu termenii de utilizare și am primit acest articol.', 'inventory_report' => 'Raport de inventar', 'item' => 'Articol:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Există :count licență care expiră în următoarele :prag zile. Există :count licențe care expiră în următoarele :threshold zile.', 'link_to_update_password' => 'Faceți clic pe următorul link pentru a vă actualiza parola web:', 'login' => 'Logare:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Există :count atuuri care vin pentru audit în :prag zile.• Există :count active care vin pentru audit în următoarele zile limită.', 'user' => 'Utilizator', 'username' => 'Utilizator', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Bun venit: nume', 'welcome_to' => 'Bun venit pe: web!', 'your_assets' => 'Vezi activele tale', 'your_credentials' => 'Informațiile dvs. Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ro-RO/validation.php b/resources/lang/ro-RO/validation.php index 991ed6db96..34e1ec23e4 100644 --- a/resources/lang/ro-RO/validation.php +++ b/resources/lang/ro-RO/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute a fost acceptat.', - 'active_url' => ':attribute nu este un URL valid.', - 'after' => ':attribute trebuie sa fie o data dupa :date.', - 'after_or_equal' => ': atribute trebuie să fie o dată mai mare sau egală cu :date.', - 'alpha' => ':attribute trebuie sa contina numai litere.', - 'alpha_dash' => ':attribute poate sa contina numai litere, cifre si linia de punctuatie.', - 'alpha_num' => ':attribute poate sa contina numai litere si cifre.', - 'array' => ': attribute trebuie să fie un șir/matrice.', - 'before' => ':attribute trebuie sa contina o data inainte de :date.', - 'before_or_equal' => ': atribute trebuie să fie o dată mai mică cu o zi sau egală cu :date.', - 'between' => [ - 'numeric' => ':attribute trebuie sa fie intre :min - :max.', - 'file' => ':attribute trebuie sa fie intre :min - :max kilobytes.', - 'string' => ':attribute trebuie sa aiba intre :min - :max caractere.', - 'array' => ': atribute trebuie să fie între: min şi: max.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Câmpul atributului trebuie să fie adevărat sau fals.', - 'confirmed' => 'Confirmarea la :attribute nu este asemanatoare.', - 'date' => ':attribute nu este o data.', - 'date_format' => ':attribute nu se leaga cu formatul :format.', - 'different' => ':attribute si :other trebuie sa fie diferite.', - 'digits' => ':attribute trebuie sa fie de :digits cifre.', - 'digits_between' => ':attribute trebuie sa fie intre :min si :max cifre.', - 'dimensions' => 'Atributul: are dimensiuni de imagine nevalide.', - 'distinct' => 'Câmpul atributului: are o valoare duplicat.', - 'email' => 'Formatul :attribute nu este valid.', - 'exists' => ':attribute selectat nu e valid.', - 'file' => 'Atributul: trebuie să fie un fișier.', - 'filled' => 'Câmpul atributului trebuie să aibă o valoare.', - 'image' => ':attribute trebuie sa fie o imagine.', + 'boolean' => 'Câmpul atributului trebuie să fie adevărat sau fals.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Câmpul atributului: are o valoare duplicat.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => ':attribute selectat nu e valid.', + 'exists' => ':attribute selectat nu e valid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Câmpul atributului trebuie să aibă o valoare.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Valoarea pentru :field name nu poate fi null.', - 'in' => ':attribute selectat nu este valid.', - 'in_array' => 'Câmpul atributului nu există în: altul.', - 'integer' => ':attribute trebuie sa fie numar intreg.', - 'ip' => ':attribute trebuie sa fie o adresa IP valida.', - 'ipv4' => 'Atributul: trebuie să fie o adresă IPv4 validă.', - 'ipv6' => 'Atributul: trebuie să fie o adresă IPv6 validă.', - 'is_unique_department' => ':attribute trebuie să fie unic pentru această companie locaţie', - 'json' => 'Atributul: trebuie să fie un șir JSON valid.', - 'max' => [ - 'numeric' => ':attribute nu poate sa fie mai mare de :max.', - 'file' => ':attribute nu poate sa fie mai mare de :max kilobytes.', - 'string' => ':attribute nu trebuie sa fie mai mare de :max caractere.', - 'array' => 'Atributul:: nu poate avea mai mult de: elemente max.', + 'in' => ':attribute selectat nu este valid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute trebuie sa fie un fisier de tipul :values.', - 'mimetypes' => 'Atributul: trebuie să fie un fișier de tip:: valori.', - 'min' => [ - 'numeric' => ':attribute trebuie sa aiba cel putin :min.', - 'file' => ':attribute trebuie sa aiba minim :min kilobytes.', - 'string' => ':attribute trebuie sa aiba cel putin :min caractere.', - 'array' => 'Atributul:: trebuie să aibă cel puțin: min.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute trebuie să înceapă cu una dintre următoarele: :values.', - 'ends_with' => ':attribute trebuie să se termine cu una dintre următoarele: :values.', - - 'not_in' => ':attribute selectat nu e valid.', - 'numeric' => ':attribute trebuie sa fie un numar.', - 'present' => 'Câmpul atributului trebuie să fie prezent.', - 'valid_regex' => 'Acesta nu este un regex valid. ', - 'regex' => 'Formatul :attribute nu este valid.', - 'required' => 'Campul :attribute este obligatoriu.', - 'required_if' => ':attribute este obligatoriu atunci cand :other este :value.', - 'required_unless' => 'Câmpul atributului este necesar dacă: altul nu este în: valori.', - 'required_with' => ':attribute este obligatoriu atunci cand :values este prezent.', - 'required_with_all' => 'Câmpul atributului este necesar când: există valori.', - 'required_without' => ':attribute este obligatoriu atunci cand :values nu este prezent.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => ':attribute selectat nu e valid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Câmpul atributului trebuie să fie prezent.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Campul :attribute este obligatoriu.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute este obligatoriu atunci cand :other este :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Câmpul atributului este necesar dacă: altul nu este în: valori.', + 'required_with' => ':attribute este obligatoriu atunci cand :values este prezent.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute este obligatoriu atunci cand :values nu este prezent.', 'required_without_all' => 'Câmpul atributului este necesar atunci când niciuna dintre valorile: nu este prezentă.', - 'same' => ':attribute si :other trebuie sa fie la fel.', - 'size' => [ - 'numeric' => ':attribute trebuie sa aiba :size.', - 'file' => ':attribute trebuie sa aiba :size kilobytes.', - 'string' => ':attribute trebuie sa aiba :size caractere.', - 'array' => 'Atributul:: trebuie să conțină: elemente de dimensiune.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Atributul: trebuie să fie un șir.', - 'timezone' => 'Atributul: trebuie să fie o zonă validă.', 'two_column_unique_undeleted' => ':attribute trebuie să fie unic în :table1 și :table2. ', - 'unique' => ':attribute este deja folosit.', - 'uploaded' => 'Atributul: nu a reușit să se încarce.', - 'url' => 'Formatul :attribute nu este valid.', 'unique_undeleted' => 'Atributul: trebuie să fie unic.', 'non_circular' => ':attribute nu trebuie să creeze o referință circulară.', 'not_array' => ':attribute nu poate fi un array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Parola trebuie să conțină cel puțin un număr.', 'case_diff' => 'Parola trebuie să fie utilizată cu majuscule.', 'symbols' => 'Parola trebuie să conțină simboluri.', - 'gte' => [ - 'numeric' => 'Valoarea nu poate fi negativă' - ], - 'checkboxes' => ':attribute conține opțiuni invalide.', - 'radio_buttons' => ':attribute nu este valid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute este deja folosit.', + 'uploaded' => 'Atributul: nu a reușit să se încarce.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute trebuie să fie o dată validă în formatul AAAA-LL-ZZ', 'last_audit_date.date_format' => ':attribute trebuie să fie o dată validă în AAAA-LL-ZZ hh:mm:ss format', 'expiration_date.date_format' => ':attribute trebuie să fie o dată validă în formatul AAAA-LL-ZZ', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute trebuie să fie o dată validă în formatul AAAA-LL-ZZ', 'start_date.date_format' => ':attribute trebuie să fie o dată validă în formatul AAAA-LL-ZZ', 'end_date.date_format' => ':attribute trebuie să fie o dată validă în formatul AAAA-LL-ZZ', - - ], - + 'checkboxes' => ':attribute conține opțiuni invalide.', + 'radio_buttons' => ':attribute nu este valid.', + 'invalid_value_in_field' => 'Valoare nevalidă inclusă în acest câmp', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Valoare nevalidă inclusă în acest câmp', + + 'generic' => [ + 'invalid_value_in_field' => 'Valoare nevalidă inclusă în acest câmp', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ru-RU/account/general.php b/resources/lang/ru-RU/account/general.php index 546ad05945..6c54d5c6e4 100644 --- a/resources/lang/ru-RU/account/general.php +++ b/resources/lang/ru-RU/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Персональные API ключи', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Ваш базовый URL-адрес API находится в:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API токены истекут:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ru-RU/admin/accessories/message.php b/resources/lang/ru-RU/admin/accessories/message.php index 4f4abee8ed..d79b162fa1 100644 --- a/resources/lang/ru-RU/admin/accessories/message.php +++ b/resources/lang/ru-RU/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Ошибка при выдаче аксессуара. Повторите попытку', 'success' => 'Аксессуар успешно выдан.', 'unavailable' => 'Нет доступных аксессуаров для выдачи. Проверьте их количество', - 'user_does_not_exist' => 'Этот пользователь является недопустимым. Пожалуйста, попробуйте еще раз.' + 'user_does_not_exist' => 'Этот пользователь является недопустимым. Пожалуйста, попробуйте еще раз.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ru-RU/admin/consumables/general.php b/resources/lang/ru-RU/admin/consumables/general.php index 0738a7d215..6a9544c868 100644 --- a/resources/lang/ru-RU/admin/consumables/general.php +++ b/resources/lang/ru-RU/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Осталось', 'total' => 'Всего', 'update' => 'Обновить расходный материал', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ru-RU/admin/consumables/message.php b/resources/lang/ru-RU/admin/consumables/message.php index b4dce77f68..f64467a984 100644 --- a/resources/lang/ru-RU/admin/consumables/message.php +++ b/resources/lang/ru-RU/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Расходный материал не существует.', 'create' => array( diff --git a/resources/lang/ru-RU/admin/custom_fields/message.php b/resources/lang/ru-RU/admin/custom_fields/message.php index 124db7d697..ecf5462179 100644 --- a/resources/lang/ru-RU/admin/custom_fields/message.php +++ b/resources/lang/ru-RU/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Это поле не существует.', 'already_added' => 'Поле уже добавлено', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Поле не было создано, попробуйте ещё раз.', diff --git a/resources/lang/ru-RU/admin/hardware/message.php b/resources/lang/ru-RU/admin/hardware/message.php index 4c075b42f2..24026cc72d 100644 --- a/resources/lang/ru-RU/admin/hardware/message.php +++ b/resources/lang/ru-RU/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Внимание: Этот актив был помечен как выданный. - Если этот статус изменился, необходимо его обновить.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Актив не существует.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Некоторые элементы не были импортированы корректно.', 'errorDetail' => 'Следующие элементы не были импортированы из за ошибок.', 'success' => 'Ваш файл был импортирован', diff --git a/resources/lang/ru-RU/admin/licenses/general.php b/resources/lang/ru-RU/admin/licenses/general.php index 9086062db7..5f79d22d9e 100644 --- a/resources/lang/ru-RU/admin/licenses/general.php +++ b/resources/lang/ru-RU/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Информация о лицензии', 'license_seats' => 'Лицензируемых мест', 'seat' => 'Место', + 'seat_count' => 'Seat :count', 'seats' => 'Мест', 'software_licenses' => 'Лицензии ПО', 'user' => 'Пользователь', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Изъять все места', - 'modal' => 'Это действие освободит одно место. | Это действие освободит все места :checkedout_seats_count для этой лицензии.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Освободить назначения ВСЕХ мест на эту лицензию как от пользователей, так и от активов', 'disabled_tooltip' => 'Недоступно, т.к. в настоящее время нет выданных (назначенных) мест', 'disabled_tooltip_reassignable' => 'Недоступно, т.к. Лицензия не переназначаема', 'success' => 'Лицензия успешно получена! | Все лицензии были успешно получены!', - 'log_msg' => 'Принято через массовую выдачу лицензий в веб-интерфейсе лицензии', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ru-RU/admin/licenses/message.php b/resources/lang/ru-RU/admin/licenses/message.php index 5526c8ac80..2e1094ac4c 100644 --- a/resources/lang/ru-RU/admin/licenses/message.php +++ b/resources/lang/ru-RU/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'При выдаче лицензии произошла ошибка. Повторите попытку.', 'success' => 'Лицензия успешно назначена', 'not_enough_seats' => 'Недостаточно лицензионных мест для оформления заказа', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ru-RU/admin/models/message.php b/resources/lang/ru-RU/admin/models/message.php index 548c45ca0a..be158c8e2d 100644 --- a/resources/lang/ru-RU/admin/models/message.php +++ b/resources/lang/ru-RU/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ПРЕДУПРЕЖДЕНИЕ! Модель активов для этого элемента неверна или отсутствует!', 'no_association_fix' => 'Это странно и ужасно сломает вещи. Отредактируйте этот актив сейчас, чтобы назначить ему модель.', 'assoc_users' => 'Данная модель связана с одним или несколькими активами, и не может быть удалена. Удалите либо измените связанные активы. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Модель не была создана, повторите еще раз.', diff --git a/resources/lang/ru-RU/admin/settings/general.php b/resources/lang/ru-RU/admin/settings/general.php index cd70011f18..e6fd3cdfc7 100644 --- a/resources/lang/ru-RU/admin/settings/general.php +++ b/resources/lang/ru-RU/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Этим производится проверка правильности синхронизации LDAP. Если тест подлинности LDAP не пройдёт, пользователи так и не смогут войти в систему. СНАЧАЛА ВЫ ДОЛЖНЫ СОХРАНИТЬ ВАШИ ОБНОВЛЕННЫЕ НАСТРОЙКИ LDAP.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'Сервер LDAP', - 'ldap_server_help' => 'Должен начинаться с ldap:// (для незашифрованных или TLS соединений) или ldaps:// (SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Подтверждение SSL сертификата LDAP', 'ldap_server_cert_ignore' => 'Разрешить невалидный SSL сертификат', 'ldap_server_cert_help' => 'Выберите галочку если вы используете самоподписанный SSL сертификат и хотите принять невалидный SSL сертификат.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Тест LDAP', 'ldap_test_sync' => 'Тест синхронизации LDAP', 'license' => 'Лицензия на ПО', - 'load_remote' => 'Использовать Gravatar', - 'load_remote_help_text' => 'Снимите флажок, если вы не можете загрузить скрипты из внешнего интернета. Это не позволит Snipe-IT пытаться загрузить образы из Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Попытки входа', 'login_attempt' => 'Попытка входа', 'login_ip' => 'IP-адрес', @@ -150,7 +150,7 @@ return [ 'optional' => 'не обязательно', 'per_page' => 'Результатов на страницу', 'php' => 'Версия PHP', - 'php_info' => 'PHP информация', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Часовой пояс', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ru-RU/button.php b/resources/lang/ru-RU/button.php index 293bdc7d17..c580d84e8e 100644 --- a/resources/lang/ru-RU/button.php +++ b/resources/lang/ru-RU/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Вернуть все и удалить пользователя', 'delete' => 'Удалить', 'edit' => 'Редактировать', + 'clone' => 'Clone', 'restore' => 'Восстановить', 'remove' => 'Удалить', 'request' => 'Требовать', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Добавить техническое обслуживание', 'append' => 'Добавить', 'new' => 'Создать', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ru-RU/general.php b/resources/lang/ru-RU/general.php index 697c390bb3..73cf16ff66 100644 --- a/resources/lang/ru-RU/general.php +++ b/resources/lang/ru-RU/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count лицензия на место|:count мест', 'consumables' => ':count расходный материал|:count расходников', 'components' => ':count компонент|:count компонентов', - ] + ], + 'more_info' => 'Подробнее', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Истекает', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ru-RU/mail.php b/resources/lang/ru-RU/mail.php index 7f32f35d9f..33efa43533 100644 --- a/resources/lang/ru-RU/mail.php +++ b/resources/lang/ru-RU/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Я прочитал и согласен с условиями использования, и получил этот предмет.', 'inventory_report' => 'Отчет о запасах', 'item' => 'Предмет:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Имеется :count лицензия, срок которой истечет в следующ(ие/ий) :threshold дней/день.|Имеются :count лицензии, срок которых истечет в следующ(ие/ий) :threshold дней/день.', 'link_to_update_password' => 'Пожалуйста, перейдите по ссылке, чтобы обновить ваш :web пароль:', 'login' => 'Логин:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => ':count активов запланированы для аудита в течение :threshold дней.| :count активов будут запланированы для аудита через :threshold дней.', 'user' => 'Пользователь', 'username' => 'Имя пользователя', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Добро пожаловать, :name', 'welcome_to' => 'Добро пожаловать на :web!', 'your_assets' => 'Посмотреть активы', 'your_credentials' => 'Ваш логин и пароль от Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ru-RU/validation.php b/resources/lang/ru-RU/validation.php index ed24e7bbda..133b8e4e21 100644 --- a/resources/lang/ru-RU/validation.php +++ b/resources/lang/ru-RU/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute должен быть принят.', - 'active_url' => ':attribute некорректный URL.', - 'after' => 'The :attribute должен быть после :date.', - 'after_or_equal' => 'Атрибут: должен быть датой после или равной: дата.', - 'alpha' => ':attribute может содержать только символы.', - 'alpha_dash' => ':attribute может содержать только буквы, цифры и тире.', - 'alpha_num' => ':attribute может содержать только буквы и цифры.', - 'array' => 'Атрибут: должен быть массивом.', - 'before' => ':attribute должен быть датой до :date.', - 'before_or_equal' => 'Атрибут: должен быть дата до или равна: дата.', - 'between' => [ - 'numeric' => ':attribute должен быть между :min - :max.', - 'file' => ':attribute должен быть между :min - :max килобайт.', - 'string' => ':attribute должен быть между :min - :max символов.', - 'array' => 'Атрибут: должен находиться между: min и: max элементами.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute должен быть true или false.', - 'confirmed' => 'Подтверждение :attribute не совпадает.', - 'date' => ':attribute неправильная дата.', - 'date_format' => ':attribute не совпадает с форматом :format.', - 'different' => ':attribute и :other должны быть разными.', - 'digits' => ':attribute должен содержать :digits цифр.', - 'digits_between' => ':attribute должно быть между :min и :max цифр.', - 'dimensions' => 'Атрибут: имеет недопустимые размеры изображения.', - 'distinct' => 'Поле атрибута: имеет двойное значение.', - 'email' => 'Неправильный формат :attribute.', - 'exists' => 'Выбранный :attribute неправильный.', - 'file' => 'Атрибут: должен быть файлом.', - 'filled' => 'Поле атрибута: должно иметь значение.', - 'image' => ':attribute должен быть изображением.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Поле атрибута: имеет двойное значение.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Выбранный :attribute неправильный.', + 'exists' => 'Выбранный :attribute неправильный.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Поле атрибута: должно иметь значение.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Значение :fieldname не может быть пустым.', - 'in' => 'Выбранный :attribute неправильный.', - 'in_array' => 'Поле: атрибут не существует в: other.', - 'integer' => ':attribute должно быть числом.', - 'ip' => ':attribute должно быть IP адресом.', - 'ipv4' => 'Атрибут: должен быть действительным адресом IPv4.', - 'ipv6' => 'Атрибут: должен быть действительным адресом IPv6.', - 'is_unique_department' => ':attribute должен быть уникальным для этого местоположения компании', - 'json' => 'Атрибут: должен быть действительной строкой JSON.', - 'max' => [ - 'numeric' => ':attribute не должно быть больше :max.', - 'file' => ':attribute не должен превышать :max килобайт.', - 'string' => ':attribute не должно превышать :max символов.', - 'array' => 'Атрибут: может быть не больше: max элементов.', + 'in' => 'Выбранный :attribute неправильный.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute тип файла должен быть: :values.', - 'mimetypes' => 'Атрибут: должен быть файл типа:: values.', - 'min' => [ - 'numeric' => ':attribute должно быть не менее :min.', - 'file' => ':attribute должно быть не менее :min килобайт.', - 'string' => ':attribute должно быть не менее :min символов.', - 'array' => 'Атрибут: должен содержать не менее: мин.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute должен начинаться с одного из следующих значений: :values.', - 'ends_with' => 'Атрибут :attribute должен заканчиваться одним из следующих значений: :values.', - - 'not_in' => 'Выбранный :attribute неправильный.', - 'numeric' => ':attribute должно быть числом.', - 'present' => 'Поле атрибута: должно присутствовать.', - 'valid_regex' => 'Это не верно составленное регулярное выражение. ', - 'regex' => 'Неправильный формат :attribute.', - 'required' => ':attribute обязательное поле.', - 'required_if' => ':attribute обязательное поле, когда :other :value.', - 'required_unless' => 'Поле атрибута: требуется, если: other находится в: значения.', - 'required_with' => ':attribute обязательное поле, когда присутствует :values.', - 'required_with_all' => 'Поле атрибута: требуется, когда: есть значения.', - 'required_without' => ':attribute обязательное поле, когда отсутствует :values.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Выбранный :attribute неправильный.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Поле атрибута: должно присутствовать.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute обязательное поле.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute обязательное поле, когда :other :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Поле атрибута: требуется, если: other находится в: значения.', + 'required_with' => ':attribute обязательное поле, когда присутствует :values.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute обязательное поле, когда отсутствует :values.', 'required_without_all' => 'Поле атрибута: требуется, если ни один из: значений не присутствует.', - 'same' => ':attribute и :other должны совпадать.', - 'size' => [ - 'numeric' => ':attribute должен быть :size.', - 'file' => ':attribute должен быть :size килобайт.', - 'string' => ':attribute должен быть :size символов.', - 'array' => 'Атрибут: должен содержать: элементы размера.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Атрибут: должен быть строкой.', - 'timezone' => 'Атрибут: должен быть допустимой зоной.', 'two_column_unique_undeleted' => 'Поле :attribute должно быть уникальным для :table1 и :table2. ', - 'unique' => ':attribute уже занят.', - 'uploaded' => 'Атрибут: не удалось загрузить.', - 'url' => 'Неправильный формат :attribute.', 'unique_undeleted' => 'Свойство :attribute должно быть уникальным.', 'non_circular' => ':attribute не должен создавать циклическую ссылку.', 'not_array' => ':attribute не может быть массивом.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Пароль должен содержать хотя бы одну цифру.', 'case_diff' => 'Пароль должен использовать смешанный регистр.', 'symbols' => 'Пароль должен содержать символы.', - 'gte' => [ - 'numeric' => 'Значение не может быть отрицательным' - ], - 'checkboxes' => ':attribute содержит недопустимые параметры.', - 'radio_buttons' => ':attribute не верно.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute уже занят.', + 'uploaded' => 'Атрибут: не удалось загрузить.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute должен быть допустимой датой в формате YYYY-MM-DD', 'last_audit_date.date_format' => ':attribute должен быть допустимой датой в формате YYYY-MM-DD hh:mm:ss', 'expiration_date.date_format' => ':attribute должен быть допустимой датой в формате YYYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute должен быть допустимой датой в формате YYYY-MM-DD', 'start_date.date_format' => ':attribute должен быть допустимой датой в формате YYYY-MM-DD', 'end_date.date_format' => ':attribute должен быть допустимой датой в формате YYYY-MM-DD', - - ], - + 'checkboxes' => ':attribute содержит недопустимые параметры.', + 'radio_buttons' => ':attribute не верно.', + 'invalid_value_in_field' => 'Недопустимое значение в этом поле', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Недопустимое значение в этом поле', + + 'generic' => [ + 'invalid_value_in_field' => 'Недопустимое значение в этом поле', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/si-LK/account/general.php b/resources/lang/si-LK/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/si-LK/account/general.php +++ b/resources/lang/si-LK/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/si-LK/admin/accessories/message.php b/resources/lang/si-LK/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/si-LK/admin/accessories/message.php +++ b/resources/lang/si-LK/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/si-LK/admin/consumables/general.php b/resources/lang/si-LK/admin/consumables/general.php index fb8c28443b..e5c8f6d256 100644 --- a/resources/lang/si-LK/admin/consumables/general.php +++ b/resources/lang/si-LK/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'එකතුව', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/si-LK/admin/consumables/message.php b/resources/lang/si-LK/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/si-LK/admin/consumables/message.php +++ b/resources/lang/si-LK/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/si-LK/admin/custom_fields/message.php b/resources/lang/si-LK/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/si-LK/admin/custom_fields/message.php +++ b/resources/lang/si-LK/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/si-LK/admin/hardware/message.php b/resources/lang/si-LK/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/si-LK/admin/hardware/message.php +++ b/resources/lang/si-LK/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/si-LK/admin/licenses/general.php b/resources/lang/si-LK/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/si-LK/admin/licenses/general.php +++ b/resources/lang/si-LK/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/si-LK/admin/licenses/message.php b/resources/lang/si-LK/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/si-LK/admin/licenses/message.php +++ b/resources/lang/si-LK/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/si-LK/admin/models/message.php b/resources/lang/si-LK/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/si-LK/admin/models/message.php +++ b/resources/lang/si-LK/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/si-LK/admin/settings/general.php b/resources/lang/si-LK/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/si-LK/admin/settings/general.php +++ b/resources/lang/si-LK/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/si-LK/button.php b/resources/lang/si-LK/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/si-LK/button.php +++ b/resources/lang/si-LK/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/si-LK/general.php b/resources/lang/si-LK/general.php index b698ec1ac9..4c0d64fd9d 100644 --- a/resources/lang/si-LK/general.php +++ b/resources/lang/si-LK/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/si-LK/mail.php b/resources/lang/si-LK/mail.php index bb7891c06f..04a26c1768 100644 --- a/resources/lang/si-LK/mail.php +++ b/resources/lang/si-LK/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/si-LK/validation.php b/resources/lang/si-LK/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/si-LK/validation.php +++ b/resources/lang/si-LK/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/sk-SK/account/general.php b/resources/lang/sk-SK/account/general.php index a1759f999f..10a9becd88 100644 --- a/resources/lang/sk-SK/account/general.php +++ b/resources/lang/sk-SK/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Osobné API kľúče', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/sk-SK/admin/accessories/message.php b/resources/lang/sk-SK/admin/accessories/message.php index 75fef16772..3b8c8d0e90 100644 --- a/resources/lang/sk-SK/admin/accessories/message.php +++ b/resources/lang/sk-SK/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Tento užívateľ nie je platný. Prosím skúste znovu.' + 'user_does_not_exist' => 'Tento užívateľ nie je platný. Prosím skúste znovu.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/sk-SK/admin/consumables/general.php b/resources/lang/sk-SK/admin/consumables/general.php index a1c7a5fda6..f7d201525c 100644 --- a/resources/lang/sk-SK/admin/consumables/general.php +++ b/resources/lang/sk-SK/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Celkom', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/sk-SK/admin/consumables/message.php b/resources/lang/sk-SK/admin/consumables/message.php index 6bb2663459..33f4aebeb2 100644 --- a/resources/lang/sk-SK/admin/consumables/message.php +++ b/resources/lang/sk-SK/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/sk-SK/admin/custom_fields/message.php b/resources/lang/sk-SK/admin/custom_fields/message.php index e3ff88ac5f..0371705693 100644 --- a/resources/lang/sk-SK/admin/custom_fields/message.php +++ b/resources/lang/sk-SK/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/sk-SK/admin/hardware/message.php b/resources/lang/sk-SK/admin/hardware/message.php index 16a6c4b230..04d07b0134 100644 --- a/resources/lang/sk-SK/admin/hardware/message.php +++ b/resources/lang/sk-SK/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Varovanie: Tento majetok bol oznáčený ako nepriraditeľný. - Ak došlo k zmene, prosím upravte aktuálny stav majetku.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Majetok neexistuje.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Niektoré položky neboli správne naimportované.', 'errorDetail' => 'Nasledujúce položky neboli kvôli chybám importované.', 'success' => 'Súbor bol naimportovaný', diff --git a/resources/lang/sk-SK/admin/licenses/general.php b/resources/lang/sk-SK/admin/licenses/general.php index e7f8412c1d..f10548fea3 100644 --- a/resources/lang/sk-SK/admin/licenses/general.php +++ b/resources/lang/sk-SK/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/sk-SK/admin/licenses/message.php b/resources/lang/sk-SK/admin/licenses/message.php index ae08d2cfcb..1eecd2a7e7 100644 --- a/resources/lang/sk-SK/admin/licenses/message.php +++ b/resources/lang/sk-SK/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Pri priraďovaní licencie nastala chyba. Skúste prosím znovu.', 'success' => 'Licencia bola úspešne priradená', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/sk-SK/admin/models/message.php b/resources/lang/sk-SK/admin/models/message.php index 0bbb27bc82..72dc584717 100644 --- a/resources/lang/sk-SK/admin/models/message.php +++ b/resources/lang/sk-SK/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Tento model je použítý v jednom alebo viacerých majetkoch, preto nemôže byť odstránený. Prosím odstráňte príslušný majetok a skúste odstrániť znovu. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model nebol vytovrený, prosím skúste znovu.', diff --git a/resources/lang/sk-SK/admin/settings/general.php b/resources/lang/sk-SK/admin/settings/general.php index 3d92a81ff8..6e8f2ddfbf 100644 --- a/resources/lang/sk-SK/admin/settings/general.php +++ b/resources/lang/sk-SK/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Softvérová licencia', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Pokusy o prihlásenie', 'login_attempt' => 'Pokus o prihlásenie', 'login_ip' => 'IP adresa', @@ -150,7 +150,7 @@ return [ 'optional' => 'voliteľné', 'per_page' => 'Výsledkov na stránku', 'php' => 'PHP verzia', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, systém, info', 'php_overview_help' => 'PHP systémové info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/sk-SK/button.php b/resources/lang/sk-SK/button.php index f22349b2c1..e69cdb7485 100644 --- a/resources/lang/sk-SK/button.php +++ b/resources/lang/sk-SK/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Odstrániť', 'edit' => 'Upraviť', + 'clone' => 'Clone', 'restore' => 'Obnoviť', 'remove' => 'Odstrániť', 'request' => 'Požiadavka', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Pridať údržbu', 'append' => 'Append', 'new' => 'Nový', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/sk-SK/general.php b/resources/lang/sk-SK/general.php index 6882fd3cd9..07ba6d0773 100644 --- a/resources/lang/sk-SK/general.php +++ b/resources/lang/sk-SK/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Viac info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Exspiruje', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/sk-SK/mail.php b/resources/lang/sk-SK/mail.php index 3315db3cf2..db926665a8 100644 --- a/resources/lang/sk-SK/mail.php +++ b/resources/lang/sk-SK/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Položka:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Prihlásenie:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Používateľské meno', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/sk-SK/validation.php b/resources/lang/sk-SK/validation.php index a2ef32d5c7..1adfb8e1d4 100644 --- a/resources/lang/sk-SK/validation.php +++ b/resources/lang/sk-SK/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute musí začínať jedným z nasledujúcich výrazov: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Heslo musí obsahovať najmenej jednu číslicu.', 'case_diff' => 'Heslo musí obsahovať veľké aj malé písmena.', 'symbols' => 'Heslo musí obsahovať symboly.', - 'gte' => [ - 'numeric' => '´Hodnota nemôže byť záporná' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/sl-SI/account/general.php b/resources/lang/sl-SI/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/sl-SI/account/general.php +++ b/resources/lang/sl-SI/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/sl-SI/admin/accessories/message.php b/resources/lang/sl-SI/admin/accessories/message.php index 2ec1e8ab95..3d9007940f 100644 --- a/resources/lang/sl-SI/admin/accessories/message.php +++ b/resources/lang/sl-SI/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Dodatek ni bil izdan, poskusite znova', 'success' => 'Dodatek uspešno izdan.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Uporabnik je napačen. Prosim poskusite ponovno.' + 'user_does_not_exist' => 'Uporabnik je napačen. Prosim poskusite ponovno.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/sl-SI/admin/consumables/general.php b/resources/lang/sl-SI/admin/consumables/general.php index c655f95f1a..ef5cc82500 100644 --- a/resources/lang/sl-SI/admin/consumables/general.php +++ b/resources/lang/sl-SI/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Preostanek', 'total' => 'Skupaj', 'update' => 'Posodobi potrošni material', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/sl-SI/admin/consumables/message.php b/resources/lang/sl-SI/admin/consumables/message.php index 9edcd7a8c9..9943c5d90e 100644 --- a/resources/lang/sl-SI/admin/consumables/message.php +++ b/resources/lang/sl-SI/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Potrošni material ne obstaja.', 'create' => array( diff --git a/resources/lang/sl-SI/admin/custom_fields/message.php b/resources/lang/sl-SI/admin/custom_fields/message.php index 637dbfb554..6d147fc732 100644 --- a/resources/lang/sl-SI/admin/custom_fields/message.php +++ b/resources/lang/sl-SI/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'To polje ne obstaja.', 'already_added' => 'Polje je že dodano', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Polje ni bilo ustvarjeno, poskusite znova.', diff --git a/resources/lang/sl-SI/admin/hardware/message.php b/resources/lang/sl-SI/admin/hardware/message.php index 813c6b2cad..e9cb9fdcbf 100644 --- a/resources/lang/sl-SI/admin/hardware/message.php +++ b/resources/lang/sl-SI/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Opozorilo: To sredstvo je bilo označeno kot trenutno nerazdeljeno. Če se je ta status spremenil, posodobite status sredstva.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Sredstvo ne obstaja.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Nekateri elementi niso bili pravilno uvoženi.', 'errorDetail' => 'Naslednji elementi niso bili uvoženi zaradi napak.', 'success' => 'Vaša datoteka je bila uvožena', diff --git a/resources/lang/sl-SI/admin/licenses/general.php b/resources/lang/sl-SI/admin/licenses/general.php index b38e3b3f64..394377436d 100644 --- a/resources/lang/sl-SI/admin/licenses/general.php +++ b/resources/lang/sl-SI/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informacije o licenci', 'license_seats' => 'Število licenc', 'seat' => 'Število licenc', + 'seat_count' => 'Seat :count', 'seats' => 'Število licenc', 'software_licenses' => 'Licence za programsko opremo', 'user' => 'Uporabnik', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/sl-SI/admin/licenses/message.php b/resources/lang/sl-SI/admin/licenses/message.php index bfdb6533cc..ef21fbda02 100644 --- a/resources/lang/sl-SI/admin/licenses/message.php +++ b/resources/lang/sl-SI/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Prišlo je do težave pri izdji licence. Prosim poskusite ponovno.', 'success' => 'Licenca je uspešno izdana', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/sl-SI/admin/models/message.php b/resources/lang/sl-SI/admin/models/message.php index a31e23fbdf..b86b7e337c 100644 --- a/resources/lang/sl-SI/admin/models/message.php +++ b/resources/lang/sl-SI/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Ta model je trenutno povezan z enim ali več sredstvi in ​​ga ni mogoče izbrisati. Prosimo, izbrišite sredstva in poskusite zbrisati znova. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model ni bil ustvarjen, poskusite znova.', diff --git a/resources/lang/sl-SI/admin/settings/general.php b/resources/lang/sl-SI/admin/settings/general.php index 987a013c95..ec9e4f8ef9 100644 --- a/resources/lang/sl-SI/admin/settings/general.php +++ b/resources/lang/sl-SI/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'To samo testira, če lahko LDAP pravilno sinhronizira. Če vaša poizvedba LDAP Authentication ni pravilna, se uporabniki morda še vedno ne morejo prijaviti. Najprej morate shraniti posodobljene nastavitve za LDAP.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'Strežnik LDAP', - 'ldap_server_help' => 'To se mora začeti z ldap: / / (za nešifrirano ali TLS) ali ldaps: / / (za SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validacija potrdila SSL LDAP', 'ldap_server_cert_ignore' => 'Dovoli neveljavno potrdilo SSL', 'ldap_server_cert_help' => 'Izberite to potrditveno polje, če uporabljate samo-podpisano potrdilo SSL in želite sprejeti neveljavno potrdilo SSL.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Licenca za programsko opremo', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'Opcijsko', 'per_page' => 'Rezultatov na stran', 'php' => 'PHP različica', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/sl-SI/button.php b/resources/lang/sl-SI/button.php index 811a461bb6..5f952f67ff 100644 --- a/resources/lang/sl-SI/button.php +++ b/resources/lang/sl-SI/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Izbriši', 'edit' => 'Uredi', + 'clone' => 'Clone', 'restore' => 'Obnovi', 'remove' => 'Remove', 'request' => 'Zahteva', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Novo', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/sl-SI/general.php b/resources/lang/sl-SI/general.php index 94f5d9461c..ad10cef23c 100644 --- a/resources/lang/sl-SI/general.php +++ b/resources/lang/sl-SI/general.php @@ -550,6 +550,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Več informacij', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Poteče', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/sl-SI/mail.php b/resources/lang/sl-SI/mail.php index 429cb51a97..17aae9c740 100644 --- a/resources/lang/sl-SI/mail.php +++ b/resources/lang/sl-SI/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Sem prebral oz. prebrala in se strinjam s pogoji uporabe. Potrjujem prejetje opreme.', 'inventory_report' => 'Inventory Report', 'item' => 'Element:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Prosimo, kliknite na to povezavo, da posodobite svoje: spletno geslo:', 'login' => 'Prijava:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Uporabnik', 'username' => 'Uporabniško ime', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Dobrodošli: ime', 'welcome_to' => 'Dobrodošli na :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Vaše poverilnice Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/sl-SI/validation.php b/resources/lang/sl-SI/validation.php index 5e4dd5b226..e6c24afe9f 100644 --- a/resources/lang/sl-SI/validation.php +++ b/resources/lang/sl-SI/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Atribut mora biti sprejet.', - 'active_url' => 'Atribut ni veljaven URL.', - 'after' => 'Atribut mora biti datum po: datumu.', - 'after_or_equal' => 'Atribut mora biti datum po ali enak: datumu.', - 'alpha' => 'Atribut lahko vsebuje le črke.', - 'alpha_dash' => 'Atribut lahko vsebuje samo črke, številke in pomišljaje.', - 'alpha_num' => 'Atribut lahko vsebuje le črke in številke.', - 'array' => 'Atribut mora biti matrika.', - 'before' => 'Atribut mora biti datum pred: datum.', - 'before_or_equal' => 'Atribut mora biti datum, ki je pred ali enakovreden datumu.', - 'between' => [ - 'numeric' => 'Atribut mora biti med: min -: max.', - 'file' => 'Atribut mora biti med: min -: max kilobajtov.', - 'string' => 'Atribut mora biti med: min -: max znakov.', - 'array' => 'Atribut mora imeti med: min in: max elementov.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Atribut mora biti true ali false.', - 'confirmed' => 'Potrditev atributa se ne ujema.', - 'date' => 'Atribut ni veljaven datum.', - 'date_format' => 'Atribut se ne ujema z obliko: format.', - 'different' => 'Atribut: drugi mora biti drugačen.', - 'digits' => 'Atribut mora biti: števnik.', - 'digits_between' => 'Atribut mora biti med: min in: max števkami.', - 'dimensions' => 'Atribut ima neveljavne dimenzije slike.', - 'distinct' => 'Polje atribut ima podvojeno vrednost.', - 'email' => 'Oblika atributa je neveljavna.', - 'exists' => 'Izbrani atribut je neveljaven.', - 'file' => 'Atribut mora biti datoteka.', - 'filled' => 'Polje atribut mora imeti vrednost.', - 'image' => 'Atribut mora biti slika.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Polje atribut ima podvojeno vrednost.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Izbrani atribut je neveljaven.', + 'exists' => 'Izbrani atribut je neveljaven.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Polje atribut mora imeti vrednost.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Izbrani atribut je neveljaven.', - 'in_array' => 'Polje atributov ne obstaja v: drugem.', - 'integer' => 'Atribut mora biti celo število.', - 'ip' => 'Atribut mora biti veljaven IP-naslov.', - 'ipv4' => 'Atribut mora biti veljaven IPv4 naslov.', - 'ipv6' => 'Atribut mora biti veljaven IPv6 naslov.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'Atribut mora biti veljaven JSON niz.', - 'max' => [ - 'numeric' => 'Atribut ne sme biti večji od: max.', - 'file' => 'Atribut ne sme biti večji od: max kilobajtov.', - 'string' => 'Atribut ne sme biti večji od: max znakov.', - 'array' => 'Atribut ne sme vsebovati več kot: max elementov.', + 'in' => 'Izbrani atribut je neveljaven.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Atribut mora biti datoteka vrste:: vrednost.', - 'mimetypes' => 'Atribut mora biti datoteka vrste:: vrednosti.', - 'min' => [ - 'numeric' => 'Atribut mora biti vsaj: min.', - 'file' => 'Atribut mora biti vsaj: min kilobajtov.', - 'string' => 'Atribut mora biti vsaj: min znakov.', - 'array' => 'Atribut mora imeti vsaj: min elementov.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Izbrani atribut je neveljaven.', - 'numeric' => 'Atribut mora biti število.', - 'present' => 'Polje atribut mora biti prisotno.', - 'valid_regex' => 'To ni veljaven regex. ', - 'regex' => 'Oblika atributa je neveljavna.', - 'required' => 'Polje ne sme biti prazno.', - 'required_if' => 'Polje atributa je obvezno, če: drugo je: vrednost.', - 'required_unless' => 'Polje atributa je obvezno, razen če je: drugo v: vrednosti.', - 'required_with' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.', - 'required_with_all' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.', - 'required_without' => 'Polje atributa je obvezno, če: vrednosti niso prisotne.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Izbrani atribut je neveljaven.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Polje atribut mora biti prisotno.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Polje ne sme biti prazno.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Polje atributa je obvezno, če: drugo je: vrednost.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Polje atributa je obvezno, razen če je: drugo v: vrednosti.', + 'required_with' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Polje atributa je obvezno, če: vrednosti niso prisotne.', 'required_without_all' => 'Polje atributa je obvezno, če nobena od: vrednosti ni prisotna.', - 'same' => 'Atribut in: drugi se morajo ujemati.', - 'size' => [ - 'numeric' => 'Atribut mora biti: velikost.', - 'file' => 'Atribut mora biti: velikost kilobajtov.', - 'string' => 'Atribut mora biti: velikost znakov.', - 'array' => 'Atribut mora vsebovati: elemente velikosti.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Atribut mora biti niz.', - 'timezone' => 'Atribut mora biti veljavno območje.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'Atribut je bil že sprejet.', - 'uploaded' => 'Atribut se ni uspel naložiti.', - 'url' => 'Oblika atributa je neveljavna.', 'unique_undeleted' => 'Atribut mora biti edinstven.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'Atribut je bil že sprejet.', + 'uploaded' => 'Atribut se ni uspel naložiti.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/so-SO/account/general.php b/resources/lang/so-SO/account/general.php index df21ad820e..f3a5ef4cc0 100644 --- a/resources/lang/so-SO/account/general.php +++ b/resources/lang/so-SO/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Furayaasha API Personal', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Url saldhigga API wuxuu ku yaalaa:', 'api_base_url_endpoint' => '/< dhamaadka>', 'api_token_expiration_time' => 'Calaamadaha API waxa lagu dejiyay inay ku dhacaan:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/so-SO/admin/accessories/message.php b/resources/lang/so-SO/admin/accessories/message.php index c3d08b8a41..2672b8394e 100644 --- a/resources/lang/so-SO/admin/accessories/message.php +++ b/resources/lang/so-SO/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Agabka lama hubin, fadlan isku day mar kale', 'success' => 'Qalabka si guul leh ayaa loo hubiyay', 'unavailable' => 'Agabka looma hayo hubinta Hubi tirada la heli karo', - 'user_does_not_exist' => 'Isticmaalahaasi waa khalad Fadlan isku day mar kale' + 'user_does_not_exist' => 'Isticmaalahaasi waa khalad Fadlan isku day mar kale', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/so-SO/admin/consumables/general.php b/resources/lang/so-SO/admin/consumables/general.php index 3a8e013a02..1879f8bd9a 100644 --- a/resources/lang/so-SO/admin/consumables/general.php +++ b/resources/lang/so-SO/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Haraaga', 'total' => 'Wadarta', 'update' => 'Cusbooneysii Isticmaalka', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/so-SO/admin/consumables/message.php b/resources/lang/so-SO/admin/consumables/message.php index 6a672d9941..cb87828905 100644 --- a/resources/lang/so-SO/admin/consumables/message.php +++ b/resources/lang/so-SO/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Wax la isticmaali karo ma jiro.', 'create' => array( diff --git a/resources/lang/so-SO/admin/custom_fields/message.php b/resources/lang/so-SO/admin/custom_fields/message.php index caff4e7720..71b4198005 100644 --- a/resources/lang/so-SO/admin/custom_fields/message.php +++ b/resources/lang/so-SO/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Goobtaas ma jirto.', 'already_added' => 'Goobta mar hore ayaa lagu daray', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Goobta lama abuurin, fadlan isku day mar kale.', diff --git a/resources/lang/so-SO/admin/hardware/message.php b/resources/lang/so-SO/admin/hardware/message.php index 144bdad52d..e5a8fa8c4e 100644 --- a/resources/lang/so-SO/admin/hardware/message.php +++ b/resources/lang/so-SO/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Digniin: Hantidan waxaa loo calaamadeeyay mid aan hadda la daabul karin. - Haddii heerkan uu isbedelay, fadlan cusboonaysii heerka hantida.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Hantidu ma jirto.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Alaabta qaar si sax ah uma soo dejin.', 'errorDetail' => 'Alaabta soo socota looma soo dejin khaladaad dartood.', 'success' => 'Faylkaaga waa la soo dejiyay', diff --git a/resources/lang/so-SO/admin/licenses/general.php b/resources/lang/so-SO/admin/licenses/general.php index 4d45176581..003ed4c9fa 100644 --- a/resources/lang/so-SO/admin/licenses/general.php +++ b/resources/lang/so-SO/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Macluumaadka shatiga', 'license_seats' => 'Kuraasta shatiga', 'seat' => 'Kursiga', + 'seat_count' => 'Seat :count', 'seats' => 'Kuraasta', 'software_licenses' => 'Shatiyada Software', 'user' => 'Isticmaale', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Hubi Dhammaan Kuraasta', - 'modal' => 'Tani waxay tallaabo ku hubin doontaa hal kursi. | Tallaabadani waxay hubin doontaa dhammaan :checkedout_seats_count kuraasida shatigan.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Hubi dhammaan kuraasta shatigan isticmaalayaasha iyo hantida labadaba', 'disabled_tooltip' => 'Tani waa naafo sababtoo ah ma jiraan kuraas hadda la hubiyay', 'disabled_tooltip_reassignable' => 'Tani waa naafo sababtoo ah shatiga dib looma wareejin karo', 'success' => 'Shatiga si guul leh ayaa loo hubiyay! | Dhammaan shatiyada si guul leh ayaa loo hubiyay!', - 'log_msg' => 'Lagu hubiyay hubinta shatiga bulk ee shatiga GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/so-SO/admin/licenses/message.php b/resources/lang/so-SO/admin/licenses/message.php index 18697e8ae5..66ad3d94f1 100644 --- a/resources/lang/so-SO/admin/licenses/message.php +++ b/resources/lang/so-SO/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Waxaa jirtay arrin lagu hubinayo shatiga. Fadlan isku day mar kale', 'success' => 'Shatiga si guul leh ayaa loo hubiyay', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/so-SO/admin/models/message.php b/resources/lang/so-SO/admin/models/message.php index ea835549f8..a573a67e5b 100644 --- a/resources/lang/so-SO/admin/models/message.php +++ b/resources/lang/so-SO/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'DIGNIIN! Qaabka hantida shaygan waa mid aan sax ahayn ama maqan!', 'no_association_fix' => 'Tani waxay wax u jebin doontaa siyaabo yaab leh oo naxdin leh. Wax ka beddel hantidan hadda si aad mooddo.', 'assoc_users' => 'Qaabkani waxa uu hadda la xidhiidha hal ama ka badan oo hanti ah lamana tirtiri karo. Fadlan tirtir hantida, ka dibna isku day in aad mar kale tirtirto. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Qaabka lama abuurin, fadlan isku day mar kale.', diff --git a/resources/lang/so-SO/admin/settings/general.php b/resources/lang/so-SO/admin/settings/general.php index 579e7c1d1e..9eccfd2e6f 100644 --- a/resources/lang/so-SO/admin/settings/general.php +++ b/resources/lang/so-SO/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Tani waxay tijaabinaysaa kaliya in LDAP ay si sax ah u wada shaqayn karto. Haddii su\'aasha xaqiijinta LDAP aysan sax ahayn, isticmaalayaashu wali ma awoodi karaan inay soo galaan WAA IN AAD KORDHISAY DEABKAAGA LA CUSBOONAYSAY EE LDAP.', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'Adeegaha LDAP', - 'ldap_server_help' => 'Tani waa inay ku bilaabataa ldap: // (mid aan qarsoodi ahayn ama TLS) ama ldaps:// (loogu talagalay SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Xaqiijinta shahaadada LDAP SSL', 'ldap_server_cert_ignore' => 'Oggolow shahaadada SSL aan ansax ahayn', 'ldap_server_cert_help' => 'Dooro sanduuqan hubinta haddii aad isticmaalayso shahaadada SSL oo aad adigu iskaa u saxeexday oo aad jeclaan lahayd inaad aqbasho shahaado SSL oo aan sax ahayn.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Tijaabi LDAP', 'ldap_test_sync' => 'Tijaabi wada shaqaynta LDAP', 'license' => 'Shatiga Software', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Isku-dayga Galitaanka', 'login_attempt' => 'Isku day Login', 'login_ip' => 'Ciwaanka IP-ga', @@ -150,7 +150,7 @@ return [ 'optional' => 'Ikhtiyaar', 'per_page' => 'Natiijooyinka boggiiba', 'php' => 'Nooca PHP', - 'php_info' => 'Macluumaadka PHP', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, nidaamka, macluumaadka', 'php_overview_help' => 'Macluumaadka Nidaamka PHP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/so-SO/button.php b/resources/lang/so-SO/button.php index 680e868354..a1f9ba5f0f 100644 --- a/resources/lang/so-SO/button.php +++ b/resources/lang/so-SO/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Geli Dhammaan / Tirtir Isticmaalaha', 'delete' => 'Tirtir', 'edit' => 'Wax ka beddel', + 'clone' => 'Clone', 'restore' => 'Soo celi', 'remove' => 'Ka saar', 'request' => 'Codsi', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Ku dar Dayactirka', 'append' => 'Ku lifaaq', 'new' => 'Cusub', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/so-SO/general.php b/resources/lang/so-SO/general.php index 60919859d9..62851654cd 100644 --- a/resources/lang/so-SO/general.php +++ b/resources/lang/so-SO/general.php @@ -548,6 +548,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Macluumaad dheeraad ah', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Dhacaya', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/so-SO/mail.php b/resources/lang/so-SO/mail.php index 1c15875506..2b494ce19c 100644 --- a/resources/lang/so-SO/mail.php +++ b/resources/lang/so-SO/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Waan akhriyay oo waan aqbalay shuruudaha isticmaalka, waxaana helay shaygan.', 'inventory_report' => 'Warbixinta Alaabada', 'item' => 'Shayga:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Fadlan dhagsii xidhiidhka soo socda si aad u cusboonaysiiso :web eraygaaga sirta ah:', 'login' => 'Soo gal:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Isticmaale', 'username' => 'Magaca isticmaale', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Soo dhawoow :name', 'welcome_to' => 'Ku soo dhawoow :web!', 'your_assets' => 'Arag Hantidaada', 'your_credentials' => 'Aqoonsigaaga Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/so-SO/validation.php b/resources/lang/so-SO/validation.php index aee37fac3d..6024af2115 100644 --- a/resources/lang/so-SO/validation.php +++ b/resources/lang/so-SO/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ' :attribute waa in la aqbalaa', - 'active_url' => ' :attribute ku maaha URL sax ah.', - 'after' => ' :attribute ku waa inuu noqdaa taariikh ka dambaysa :date.', - 'after_or_equal' => ' :attribute ku waa inuu noqdaa taariikh ka dambaysa ama la mid ah :date.', - 'alpha' => ' :attribute waxa ku jiri kara xarfo kaliya', - 'alpha_dash' => ' :attribute ku waxa uu ka koobnaan karaa xarfo, tirooyin, iyo jajab.', - 'alpha_num' => ' :attribute ku waxa uu ka koobnaan karaa xarfo iyo tirooyin keliya.', - 'array' => ' :attribute ku waa inuu noqdaa hannaan', - 'before' => ' :attribute ku waa inuu ahaadaa taariikh ka horeysa :date.', - 'before_or_equal' => ' :attribute ku waa inuu ahaadaa taariikh ka horeysa ama la mid ah :date.', - 'between' => [ - 'numeric' => ' :attribute ku waa inuu u dhexeeyaa :min - :max.', - 'file' => ' :attribute ku waa inuu u dhexeeyaa :min - :max kilobytes.', - 'string' => ' :attribute ku waa inuu u dhexeeyaa :min - :max xaraf.', - 'array' => ' :attribute ku waa inuu lahaadaa inta u dhaxaysa :min iyo :max shay.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ' :attribute ku waa inuu run yahay ama been yahay.', - 'confirmed' => 'Xaqiijinta :attribute kuma habboona', - 'date' => ' :attribute maaha taariikh ansax ah.', - 'date_format' => ' :attribute ku kuma habboona qaabka :format.', - 'different' => ' :attribute iyo :other waa inay kala duwanaadaan.', - 'digits' => ' :attribute ku waa inuu noqdaa :digits lambar', - 'digits_between' => ' :attribute ku waa inuu u dhexeeyaa :min iyo :max lambar', - 'dimensions' => ' :attribute ku wuxuu leeyahay cabbir sawireed aan sax ahayn.', - 'distinct' => 'Goobta :attribute waxay leedahay qiime nuqul ah', - 'email' => 'Qaabka :attribute waa mid aan sax ahayn', - 'exists' => 'Xulashada :attribute waa mid aan sax ahayn.', - 'file' => ' :attribute ku waa inuu noqdaa fayl', - 'filled' => 'Goobta :attribute waa in ay leedahay qiimo.', - 'image' => ' :attribute ku waa inuu noqdaa sawir', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Goobta :attribute waxay leedahay qiime nuqul ah', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Xulashada :attribute waa mid aan sax ahayn.', + 'exists' => 'Xulashada :attribute waa mid aan sax ahayn.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Goobta :attribute waa in ay leedahay qiimo.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Qiimaha :fieldname ma noqon karo waxba.', - 'in' => 'Xulashada :attribute waa mid aan sax ahayn.', - 'in_array' => 'Goobta :attribute kuma jirto gudaha :other.', - 'integer' => ' :attribute ku waa inuu noqdaa tiro', - 'ip' => ' :attribute ku waa inuu noqdaa ciwaanka IP sax ah', - 'ipv4' => ' :attribute ku waa inuu noqdaa ciwaanka IPv4 ansax ah.', - 'ipv6' => ' :attribute ku waa inuu noqdaa ciwaanka IPv6 ansax ah.', - 'is_unique_department' => ' :attribute ku waa inuu noqdaa mid u gaar ah Goobta Shirkadda', - 'json' => ' :attribute ku waa inuu noqdaa xadhig JSON sax ah.', - 'max' => [ - 'numeric' => ' :attribute waxaa laga yaabaa inuusan ka weyneyn :max.', - 'file' => ' :attribute waxa laga yaabaa in aanu ka badnayn :max kilobytes.', - 'string' => ' :attribute waxa laga yaabaa in aanu ka badnayn :max xaraf', - 'array' => ' :attribute waxa laga yaabaa in aanu ka badnayn :max shay.', + 'in' => 'Xulashada :attribute waa mid aan sax ahayn.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ' :attribute ku waa inuu noqdaa fayl nooca: :values.', - 'mimetypes' => ' :attribute ku waa inuu noqdaa fayl nooca: :values.', - 'min' => [ - 'numeric' => ' :attribute ku waa inuu ahaadaa ugu yaraan :min.', - 'file' => ' :attribute ku waa inuu ahaadaa ugu yaraan :min kilobytes.', - 'string' => ' :attribute ku waa inuu noqdaa ugu yaraan :min xaraf', - 'array' => ' :attribute ku waa inuu lahaadaa ugu yaraan :min walxood.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ' :attribute ku waa inuu ku bilaabmaa mid ka mid ah kuwan soo socda: :values.', - 'ends_with' => ' :attribute ku waa inuu ku dhamaadaa mid ka mid ah kuwan soo socda: :values.', - - 'not_in' => 'Xulashada :attribute waa mid aan sax ahayn.', - 'numeric' => ' :attribute ku waa inuu noqdaa tiro', - 'present' => 'Goobta :attribute waa inay jirtaa', - 'valid_regex' => 'Taasi ma aha regex sax ah. ', - 'regex' => 'Qaabka :attribute waa mid aan sax ahayn', - 'required' => 'Goobta :attribute waa loo baahan yahay', - 'required_if' => 'Goobta :attribute ayaa loo baahan yahay marka :other uu yahay :value.', - 'required_unless' => 'Goobta :attribute waa loo baahan yahay ilaa :other ku jiro :values.', - 'required_with' => 'Goobta :attribute ayaa loo baahan yahay marka :values uu joogo.', - 'required_with_all' => 'Goobta :attribute ayaa loo baahan yahay marka :values uu joogo.', - 'required_without' => 'Goobta :attribute ayaa loo baahan yahay marka :values aanu joogin.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Xulashada :attribute waa mid aan sax ahayn.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Goobta :attribute waa inay jirtaa', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Goobta :attribute waa loo baahan yahay', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Goobta :attribute ayaa loo baahan yahay marka :other uu yahay :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Goobta :attribute waa loo baahan yahay ilaa :other ku jiro :values.', + 'required_with' => 'Goobta :attribute ayaa loo baahan yahay marka :values uu joogo.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Goobta :attribute ayaa loo baahan yahay marka :values aanu joogin.', 'required_without_all' => 'Goobta :attribute ayaa loo baahan yahay marka midna :values aanu joogin.', - 'same' => ' :attribute iyo :other waa inay iswaafaqaan', - 'size' => [ - 'numeric' => ' :attribute ku waa inuu ahaadaa :size.', - 'file' => ' :attribute ku waa inuu ahaadaa :size kilobytes.', - 'string' => ' :attribute ku waa inuu noqdaa :size xaraf', - 'array' => ' :attribute ku waa inuu ka kooban yahay :size walxood.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ' :attribute ku waa inuu noqdaa xadhig', - 'timezone' => ' :attribute ku waa inuu noqdaa aag ansax ah.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ' :attribute waa la qaatay mar hore', - 'uploaded' => ' :attribute ku wuu ku guul daraystay inuu soo geliyo', - 'url' => 'Qaabka :attribute waa mid aan sax ahayn', 'unique_undeleted' => ' :attribute ku waa inuu noqdaa mid gaar ah', 'non_circular' => ' :attribute waa inaanu samayn tixraac wareeg ah.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Furaha waa in uu ka kooban yahay ugu yaraan hal lambar.', 'case_diff' => 'Furaha waa in uu isticmaalo kiis isku dhafan.', 'symbols' => 'Erayga sirta ah waa inuu ka kooban yahay calaamado.', - 'gte' => [ - 'numeric' => 'Qiimuhu ma noqon karo mid xun' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ' :attribute waa la qaatay mar hore', + 'uploaded' => ' :attribute ku wuu ku guul daraystay inuu soo geliyo', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ' :attribute ku waa inuu ahaado taariikh ansax ah oo qaabaysan YYY-MM-DD', 'last_audit_date.date_format' => ' :attribute ku waa inuu ahaado taariikh ansax ah oo qaabaysan YYY-MM-DD hh:mm:ss ', 'expiration_date.date_format' => ' :attribute ku waa inuu ahaado taariikh ansax ah oo qaabaysan YYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ' :attribute ku waa inuu ahaado taariikh ansax ah oo qaabaysan YYY-MM-DD', 'start_date.date_format' => ' :attribute ku waa inuu ahaado taariikh ansax ah oo qaabaysan YYY-MM-DD', 'end_date.date_format' => ' :attribute ku waa inuu ahaado taariikh ansax ah oo qaabaysan YYY-MM-DD', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/sq-AL/account/general.php b/resources/lang/sq-AL/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/sq-AL/account/general.php +++ b/resources/lang/sq-AL/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/sq-AL/admin/accessories/message.php b/resources/lang/sq-AL/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/sq-AL/admin/accessories/message.php +++ b/resources/lang/sq-AL/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/sq-AL/admin/consumables/general.php b/resources/lang/sq-AL/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/sq-AL/admin/consumables/general.php +++ b/resources/lang/sq-AL/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/sq-AL/admin/consumables/message.php b/resources/lang/sq-AL/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/sq-AL/admin/consumables/message.php +++ b/resources/lang/sq-AL/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/sq-AL/admin/custom_fields/message.php b/resources/lang/sq-AL/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/sq-AL/admin/custom_fields/message.php +++ b/resources/lang/sq-AL/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/sq-AL/admin/hardware/message.php b/resources/lang/sq-AL/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/sq-AL/admin/hardware/message.php +++ b/resources/lang/sq-AL/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/sq-AL/admin/licenses/general.php b/resources/lang/sq-AL/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/sq-AL/admin/licenses/general.php +++ b/resources/lang/sq-AL/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/sq-AL/admin/licenses/message.php b/resources/lang/sq-AL/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/sq-AL/admin/licenses/message.php +++ b/resources/lang/sq-AL/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/sq-AL/admin/models/message.php b/resources/lang/sq-AL/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/sq-AL/admin/models/message.php +++ b/resources/lang/sq-AL/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/sq-AL/admin/settings/general.php b/resources/lang/sq-AL/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/sq-AL/admin/settings/general.php +++ b/resources/lang/sq-AL/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/sq-AL/button.php b/resources/lang/sq-AL/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/sq-AL/button.php +++ b/resources/lang/sq-AL/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/sq-AL/general.php b/resources/lang/sq-AL/general.php index 5b1d0e9b3c..b3a6b34320 100644 --- a/resources/lang/sq-AL/general.php +++ b/resources/lang/sq-AL/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/sq-AL/mail.php b/resources/lang/sq-AL/mail.php index 759ff0f5e8..edb1683200 100644 --- a/resources/lang/sq-AL/mail.php +++ b/resources/lang/sq-AL/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/sq-AL/validation.php b/resources/lang/sq-AL/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/sq-AL/validation.php +++ b/resources/lang/sq-AL/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/sr-CS/account/general.php b/resources/lang/sr-CS/account/general.php index 3e24d0c4d6..f78fcafc0e 100644 --- a/resources/lang/sr-CS/account/general.php +++ b/resources/lang/sr-CS/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Lični API kključevi', + 'personal_access_token' => 'Lični token za pristup', + 'personal_api_keys_success' => 'Lični API ključ :key je uspešno napravljen', + 'here_is_api_key' => 'Evo ga vaš novi lični token za pristup. Ovo je jedini put kada će biti prikazan zato ga nemojte izgubiti! Sada možete da koristite ovaj token za slanje API zahteva.', 'api_key_warning' => 'Po generisanju API tokena, obavezno ga odmah iskopirajte jer vam neće biti ponovo vidljiv.', 'api_base_url' => 'Vaša osnovna adresa API-ja se nalazi u:', 'api_base_url_endpoint' => '<endpoint>', 'api_token_expiration_time' => 'API tokeni će isteći za:', 'api_reference' => 'Molim vas konsultujte API podsetnik da bi ste pronašli određene API krajnje tačke i dodatnu API dokumentaciju.', 'profile_updated' => 'Nalog je uspešno izmenjen', + 'no_tokens' => 'Još uvek niste napravili nijedan lični token za pristup.', ); diff --git a/resources/lang/sr-CS/admin/accessories/message.php b/resources/lang/sr-CS/admin/accessories/message.php index 31b3e0d1a2..eb234e6b68 100644 --- a/resources/lang/sr-CS/admin/accessories/message.php +++ b/resources/lang/sr-CS/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Pribor nije potvrdjen, pokušajte ponovo', 'success' => 'Pribor je uspešno proveren.', 'unavailable' => 'Pribor nije dostupan za zaduživanje. Proverite dostupnu količinu', - 'user_does_not_exist' => 'Korisnik nevažeći. Molim pokušajte ponovo.' + 'user_does_not_exist' => 'Korisnik nevažeći. Molim pokušajte ponovo.', + 'checkout_qty' => array( + 'lte' => 'Trenutno ima samo jedna dostupna dodatna oprema ove vrste, a vi pokušavate da zadužite :checkout_qty. Molim vas prilagodite količinu za zaduživanje prema dostupnom stanju ove opreme i pokušajte ponovo.|Trenutno ima ukupno :number_currently_remaining dodatne opreme, a vi pokušavate da zadužite :checkout_qty. Molim vas prilagodite količinu za zaduživanje prema dostupnom stanju ove opreme i pokušajte ponovo.', + ), + ), 'checkin' => array( diff --git a/resources/lang/sr-CS/admin/consumables/general.php b/resources/lang/sr-CS/admin/consumables/general.php index 26e154ba22..b43005a0b3 100644 --- a/resources/lang/sr-CS/admin/consumables/general.php +++ b/resources/lang/sr-CS/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Preostalo', 'total' => 'Ukupno', 'update' => 'Ažuriraj potrošni materijal', + 'inventory_warning' => 'Stanje ove potrošne robe je ispod minimalne količine od :min_count', ); diff --git a/resources/lang/sr-CS/admin/consumables/message.php b/resources/lang/sr-CS/admin/consumables/message.php index 0e8c0fa9ba..07ff15b4fc 100644 --- a/resources/lang/sr-CS/admin/consumables/message.php +++ b/resources/lang/sr-CS/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'Kategorija mora biti kategorija potrošne robe.', 'does_not_exist' => 'Potrošni materijal ne postoji.', 'create' => array( diff --git a/resources/lang/sr-CS/admin/custom_fields/message.php b/resources/lang/sr-CS/admin/custom_fields/message.php index ddbe4a6e6e..7ee2bd3c5e 100644 --- a/resources/lang/sr-CS/admin/custom_fields/message.php +++ b/resources/lang/sr-CS/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Oznaka statusa ne postoji.', 'already_added' => 'Polje je već dodato', + 'none_selected' => 'Nijedno polje nije izabrano', 'create' => array( 'error' => 'Polje nije kreirano, pokušajte ponovo.', diff --git a/resources/lang/sr-CS/admin/hardware/message.php b/resources/lang/sr-CS/admin/hardware/message.php index 3f7ea019f8..c8fe277251 100644 --- a/resources/lang/sr-CS/admin/hardware/message.php +++ b/resources/lang/sr-CS/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Upozorenje: Ovaj resurs, imovina je označena kao trenutno nedeljiva. Ako se ovaj status promenio, ažurirajte status imovine.', + 'undeployable' => 'Upozorenje: Ova imovina je trenutno označena kao nezaduživa. Ukoliko je status drugačiji, molim vas ažurirajte status imovine.', 'does_not_exist' => 'Imovina ne postoji.', 'does_not_exist_var'=> 'Nije pronađena imovina za oznakom :asset_tag.', 'no_tag' => 'Nije navedena oznaka imovine.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Izvrši uvoz', 'error' => 'Neke stavke nisu pravilno uvezene.', 'errorDetail' => 'Sledeće stavke nisu uvezene zbog grešaka.', 'success' => 'Vaš fajl je importovan', diff --git a/resources/lang/sr-CS/admin/licenses/general.php b/resources/lang/sr-CS/admin/licenses/general.php index 2ab4c027d4..4eb98cc1dd 100644 --- a/resources/lang/sr-CS/admin/licenses/general.php +++ b/resources/lang/sr-CS/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Informacije o licenci', 'license_seats' => 'Broj licenciranih mesta', 'seat' => 'Mesto', + 'seat_count' => 'Mesta :count', 'seats' => 'Mesta', 'software_licenses' => 'Licence za softver', 'user' => 'Korisnik', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Razduži sva mesta', - 'modal' => 'Ova radnja će razdužiti jedno mesto. | Ova radnja će razdužiti svih :checkedout_seats_count mesta za ovu licencu.', + 'modal' => 'Ova radnja će razdužiti jedno mesto. | Ova radnja će razdužiti svih :checkedout_seats_count mesta ove licence.', 'enabled_tooltip' => 'Razduži SVA mesta za ovu licencu od korisnika i imovine', 'disabled_tooltip' => 'Ovo je onemogućeno jer trenutno nema zaduženih mesta', 'disabled_tooltip_reassignable' => 'Ovo je onemogućeno jer Licenca nije premestiva', 'success' => 'Licenca je uspešno razdužena! | Sve licence su uspešno razdužene!', - 'log_msg' => 'Razduženo grupnim razduživanjem u ekranu licenci', + 'log_msg' => 'Razduži putem grupnog razduživanja u interfejsu licence', ], 'checkout_all' => [ diff --git a/resources/lang/sr-CS/admin/licenses/message.php b/resources/lang/sr-CS/admin/licenses/message.php index 2eb89f1325..815f86ae97 100644 --- a/resources/lang/sr-CS/admin/licenses/message.php +++ b/resources/lang/sr-CS/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Došlo je do problema prilikom provere licence. Molim pokušajte ponovo.', 'success' => 'Licenca je uspešno proverena', 'not_enough_seats' => 'Nema dovoljno dostupnih licenci za zaduživanje', + 'mismatch' => 'Dostavljeno mesto licence se ne poklapa sa licencom', + 'unavailable' => 'Ovo mesto nije dostupno za zaduživanje.', ), 'checkin' => array( diff --git a/resources/lang/sr-CS/admin/models/message.php b/resources/lang/sr-CS/admin/models/message.php index e688d2b397..33d1f4b9bf 100644 --- a/resources/lang/sr-CS/admin/models/message.php +++ b/resources/lang/sr-CS/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'UPOZORENJE! Model za ovu stavku je ili pogrešan ili nedostaje!', 'no_association_fix' => 'Ovo će polomiti stvari na čudne i užasne načine. Uredite odmah ovu imovinu da bi ste je povezali sa modelom.', 'assoc_users' => 'Ovaj je model trenutno povezan s jednom ili više imovina i ne može se izbrisati. Izbrišite imovinu pa pokušajte ponovo. ', - + 'invalid_category_type' => 'Kategorija mora biti kategorija imovine.', 'create' => array( 'error' => 'Model nije kreiran, pokušajte ponovo.', diff --git a/resources/lang/sr-CS/admin/settings/general.php b/resources/lang/sr-CS/admin/settings/general.php index 7dea809b82..ce9fe2224d 100644 --- a/resources/lang/sr-CS/admin/settings/general.php +++ b/resources/lang/sr-CS/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ovo samo testira da LDAP može ispravno da se sinhronizuje. Ako vaš upit za LDAP autentifikaciju nije tačan, korisnici možda i dalje neće moći da se prijave. PRVO MORATE SAČUVATI VAŠA AŽURIRANA LDAP PODEŠAVANJA.', 'ldap_manager' => 'LDAP Menadžer', 'ldap_server' => 'LDAP Server', - 'ldap_server_help' => 'Ovo bi trebalo da počne sa ldap:// (za nešifrovani ili TLS) ili ldaps:// (za SSL)', + 'ldap_server_help' => 'Ovo bi trebalo da počne sa ldap:// (za neenkriptovanu) ili ldaps:// (za TLS ili SSL)', 'ldap_server_cert' => 'LDAP SSL validacija sertifikata', 'ldap_server_cert_ignore' => 'Dopusti neispravne SSL sertifikate', 'ldap_server_cert_help' => 'Označite ovo polje za potvrdu ako koristite samopotpisani SSL sertifikat i želite da prihvatite nevažeći SSL sertifikat.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP sinhronizaciju', 'license' => 'Licence za softver', - 'load_remote' => 'Koristi Gravatar', - 'load_remote_help_text' => 'Isključi ovo polje ako tvoja instalacija ne može da učita skripte izvan interneta. Ovo će sprečiti Snipe-IT od pokušaja da učita slike sa Gravatara.', + 'load_remote' => 'Učitaj udaljene avatare', + 'load_remote_help_text' => 'Isključi ovo polje ako tvoja instalacija ne može da učita skripte sa spoljnog interneta. Ovo će sprečiti Snipe-IT od pokušaja da učita slike sa Gravatara ili drugih spoljnih izvora.', 'login' => 'Pokušaj logovanja', 'login_attempt' => 'Pokušaj logovanja', 'login_ip' => 'IP adresa', @@ -150,7 +150,7 @@ return [ 'optional' => 'opciono', 'per_page' => 'Rezultati po stranici', 'php' => 'PHP verzija', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP informacije', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP sistem info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Vremenska zona', 'profile_edit' => 'Izmeni profil', 'profile_edit_help' => 'Dozvoli korisnicima da izmene svoje profile.', + 'default_avatar' => 'Postavi prilagođenu podrazumevanu sličicu', + 'default_avatar_help' => 'Ova slika će se prikazivati kao profilna ako korisnik nema svoju sliku profila.', + 'restore_default_avatar' => 'Vrati originalnu podrazumevanu sličicu', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/sr-CS/admin/users/message.php b/resources/lang/sr-CS/admin/users/message.php index fbd36dd480..27b29f7ada 100644 --- a/resources/lang/sr-CS/admin/users/message.php +++ b/resources/lang/sr-CS/admin/users/message.php @@ -37,16 +37,16 @@ return array( 'update' => 'Došlo je do problema s ažuriranjem korisnika. Molim pokušajte ponovo.', 'delete' => 'Došlo je do problema s brisanjem korisnika. Molim pokušajte ponovo.', 'delete_has_assets' => 'Ovaj korisnik ima dodeljene stavke i ne može biti obrisan.', - 'delete_has_assets_var' => 'This user still has an asset assigned. Please check it in first.|This user still has :count assets assigned. Please check their assets in first.', - 'delete_has_licenses_var' => 'This user still has a license seats assigned. Please check it in first.|This user still has :count license seats assigned. Please check them in first.', - 'delete_has_accessories_var' => 'This user still has an accessory assigned. Please check it in first.|This user still has :count accessories assigned. Please check their assets in first.', - 'delete_has_locations_var' => 'This user still manages a location. Please select another manager first.|This user still manages :count locations. Please select another manager first.', - 'delete_has_users_var' => 'This user still manages another user. Please select another manager for that user first.|This user still manages :count users. Please select another manager for them first.', + 'delete_has_assets_var' => 'Ovaj korisnik još uvek ima zaduženu imovinu. Molim vas prvo je razdužite.|Ovaj korisnik još uvek ima :count imovine zadužene. Molim vas prvo ih razdužite.', + 'delete_has_licenses_var' => 'Ovaj korisnik još uvek ima zaduženu licencu. Molim vas prvo je razdužite.|Ovaj korisnik još uvek ima :count licence zadužene. Molim vas prvo ih razdužite.', + 'delete_has_accessories_var' => 'Ovaj korisnik još uvek ima zaduženu dodatnu opremu. Molim vas prvo je razdužite.|Ovaj korisnik još uvek ima :count zadužene dodatne opreme. Molim vas prvo ih razdužite.', + 'delete_has_locations_var' => 'Ovaj korisnik još uvek upravlja lokacijom. Molim vas prvo izaberite drugog rukovodioca.|Ovaj korisnik još uvek upravlja :count lokacijama. Molim vas prvo izaberite drugog rukovodioca.', + 'delete_has_users_var' => 'Ovaj korisnik još uvek upravlja drugim korisnikom. Molim vas prvo izaberite drugog rukovodioca tom korisniku.|Ovaj korisnik još uvek upravlja :count korisnicima. Molim vas prvo im izaberite drugog rukovodioca.', 'unsuspend' => 'There was an issue unsuspending the user. Please try again.', 'import' => 'Došlo je do problema s importom korisnika. Molim pokušajte ponovo.', 'asset_already_accepted' => 'Ova je imovina već prihvaćena.', 'accept_or_decline' => 'Morate prihvatiti ili odbaciti ovaj resurs, imovinu.', - 'cannot_delete_yourself' => 'We would feel really bad if you deleted yourself, please reconsider.', + 'cannot_delete_yourself' => 'Osećali bi smo se veoma loše kada bi ste obrisali samog sebe. Razmotrite šta pokušavate.', 'incorrect_user_accepted' => 'The asset you have attempted to accept was not checked out to you.', 'ldap_could_not_connect' => 'Povezivanje s LDAP serverom nije uspelo. Proverite konfiguraciju LDAP servera u LDAP konfig datoteci.
Greška sa LDAP servera:', 'ldap_could_not_bind' => 'Nije moguće povezati se sa LDAP serverom. Provjerite konfiguraciju LDAP servera.
Greška sa LDAP servera: ', diff --git a/resources/lang/sr-CS/button.php b/resources/lang/sr-CS/button.php index 0b8e70801b..0875dfa7df 100644 --- a/resources/lang/sr-CS/button.php +++ b/resources/lang/sr-CS/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Prijava i brisanje korisnika', 'delete' => 'Izbrisati', 'edit' => 'Uredi', + 'clone' => 'Dupliraj', 'restore' => 'Vratiti', 'remove' => 'Ukloni', 'request' => 'Zahtev', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Dodaj održavanje', 'append' => 'Nadoveži', 'new' => 'Novo', + 'var' => [ + 'clone' => 'Dupliraj :item_type', + 'edit' => 'Izmeni :item_type', + 'delete' => 'Obriši :item_type', + 'restore' => 'Obriši :item_type', + 'create' => 'Napravi novu :item_type', + 'checkout' => 'Zaduži :item_type', + 'checkin' => 'Razduži :item_type', + ] ]; diff --git a/resources/lang/sr-CS/general.php b/resources/lang/sr-CS/general.php index dcc189d21b..b8d7e0d6c2 100644 --- a/resources/lang/sr-CS/general.php +++ b/resources/lang/sr-CS/general.php @@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => 'Ovlašćenje je odbijeno. Ne možete da izmenite podatke o superadmin korisniku u ovoj demostraciji.', 'pwd_reset_not_sent' => 'Korisnik nije aktiviran, nije sinhronizovan sa LDAP-om, ili nema navedenu adresu e-pošte', 'error_sending_email' => 'Greška prilikom slanja e-poruke', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Tužni panda. Niste ovlašćeni da uradite tu stvar. Možda da se vratite na kontrolnu tablu, ili kontaktirajte vašeg administratora.', 'bulk' => [ 'delete' => [ @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count licencnih mesta|:count licencnih mesta', 'consumables' => ':count potrošni materijal|:count potrošnih materijala', 'components' => ':count komponenta|:count komponenti', - ] + ], + 'more_info' => 'Više informacija', + 'quickscan_bulk_help' => 'Potvrđivanjem ovog polja će izmeniti zapis imovine kako bi se ažurirala ova nova lokacija. Ukoliko ostane nepotvrđeno lokacija će se evidentirati samo u zapisu popisa. Imajte na umu da, ukoliko je imovina zadužena, neće promeniti lokaciju osobe, imovine ili lokacije za koju je zadužena.', + 'whoops' => 'Ups!', + 'something_went_wrong' => 'Nešto je pošlo po zlu sa vašim zahtevom.', + 'close' => 'Zatvori', + 'expires' => 'Ističe', + 'map_fields'=> 'Mapiraj polje :item_type', + 'remaining_var' => ':count preostalo', ]; diff --git a/resources/lang/sr-CS/mail.php b/resources/lang/sr-CS/mail.php index 05b2a997ca..2cc442c360 100644 --- a/resources/lang/sr-CS/mail.php +++ b/resources/lang/sr-CS/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Pročitao sam i prihvatam uvete korištenja i primio sam ovu stavku.', 'inventory_report' => 'Izveštaj o zalihama', 'item' => 'Artikal:', + 'item_checked_reminder' => 'Ovo je podsetnik da trenutno imate :count stavki koje su zadužene vama koje niste prihvatili ili odbili. Molim vas kliknite na vezu ispod da bi ste potvrdili vašu odluku.', 'license_expiring_alert' => 'Postoji :count licenci koja/e ističe u narednih treshold dana.|Postoje :count licencei koje ističu u narednih :treshold dana.', 'link_to_update_password' => 'Kliknite na sledeću vezu kako biste obnovili svoju :web lozinku:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Ima :count imovina kojoj je vreme za popis za :threshold dana.|Ima :count imovine kojoj je vreme za popis za :threshold dana.', 'user' => 'Korisnik', 'username' => 'Korisničko ime', + 'unaccepted_asset_reminder' => 'Odlučili ste da ne prihvatite imovinu.', 'welcome' => 'Dobrodošli :name', 'welcome_to' => 'Dobrodošli na :web!', 'your_assets' => 'Pregledaj svoju imovinu', 'your_credentials' => 'Vaši Snipe-IT kredencijali', + 'mail_sent' => 'E-poruka je uspešno poslata!', ]; diff --git a/resources/lang/sr-CS/validation.php b/resources/lang/sr-CS/validation.php index eacadee0f2..7b50cfbcf5 100644 --- a/resources/lang/sr-CS/validation.php +++ b/resources/lang/sr-CS/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute mora biti prihvaćen.', - 'active_url' => ':attribute nije važeći URL.', - 'after' => ':attribute mora biti datum nakon :datum.', - 'after_or_equal' => ':attribute mora biti datum nakon ili jednak :date.', - 'alpha' => ':attribute može sadržavati samo slova.', - 'alpha_dash' => ':attribute može sadržavati samo slova, brojeve i crtice.', - 'alpha_num' => ':attribute može sadržavati samo slova i brojeve.', - 'array' => ':attribute mora biti niz.', - 'before' => ':attribute mora biti datum pre :date.', - 'before_or_equal' => ':attribute mora biti datum pre ili jednak :date.', - 'between' => [ - 'numeric' => ':attribute mora biti između :min - :max.', - 'file' => ':attribute mora biti između :min i :max kilobajta.', - 'string' => ':attribute mora biti između :min i :max znakova.', - 'array' => ':attribute mora imati između :min i :max stavki.', + 'accepted' => 'Polje :attribute mora biti prihvaćeno.', + 'accepted_if' => 'Polje :attribute je mora biti prihvaćeno kada polje :other sadrži :value.', + 'active_url' => 'Polje :attribute mora biti ispravna URL adresa.', + 'after' => 'Polje :attribute mora biti datum kasniji od :date.', + 'after_or_equal' => 'Polje :attribute mora biti datum kasniji ili jednak od :date.', + 'alpha' => 'Polje :attribute mora da sadrži samo slova.', + 'alpha_dash' => 'Polje :attribute mora da sadrži jedino slova, brojeve, crtice i donje crtice.', + 'alpha_num' => 'Polje :attribute mora da sadrži samo slova i brojeve.', + 'array' => 'Polje :attribute mora biti niz.', + 'ascii' => 'Polje :attribute mora da sadrži samo alfanumeričke karaktere i simbole od jednog bajta.', + 'before' => 'Polje :attribute mora biti datum raniji od :date.', + 'before_or_equal' => 'Polje :attribute mora biti datum raniji ili jednak od :date.', + 'between' => [ + 'array' => 'Polje :attribute mora sadržati između :min i :max stavki.', + 'file' => 'Polje :attribute mora biti između :min i :max kilobajta.', + 'numeric' => 'Polje :attribute mora biti između :min i :max.', + 'string' => 'Polje :attribute mora biti između :min i :max karaktera.', ], - 'boolean' => ':attribute mora biti true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => ':attribute nije ispravan datum.', - 'date_format' => ':attribute ne odgovara formatu :format.', - 'different' => ':attributei i :other moraju biti različiti.', - 'digits' => ':attribute mora biti :digits brojevi.', - 'digits_between' => ':attribute mora biti između :min i :max cifara.', - 'dimensions' => ':attribute ima pogrešnu dimenzije slike.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => ':attribute format pogrešan.', - 'exists' => 'Odabrani :attribute nije korektan.', - 'file' => ':attribute mora biti datoteka.', - 'filled' => ':attribute mora imati vrednost.', - 'image' => ':attribute mora biti slika.', + 'boolean' => 'Polje :attribute mora biti tačno ili netačno.', + 'can' => 'Polje :attribute mora da sadrži neovlašćenu vrednost.', + 'confirmed' => 'Potvrda polja :attribute se ne poklapa.', + 'contains' => 'Polju :attribute nedostaje neophodna vrednost.', + 'current_password' => 'Lozinka nije ispravna.', + 'date' => 'Polje :attribute mora biti ispravan datum.', + 'date_equals' => 'Polje :attribute mora biti datum jednak :data.', + 'date_format' => 'Polje :attribute mora da se poklapa sa formatom :format.', + 'decimal' => 'Polje :attribute mora da sadrži :decimal decimalnih mesta.', + 'declined' => 'Polje :attribute mora biti odbijeno.', + 'declined_if' => 'Polje :attribute mora biti odbijeno kada :other sadrži :value.', + 'different' => 'Polje :attribute i :other moraju da se razlikuju.', + 'digits' => 'Polje :attribute mora da sadrži :digits cifara.', + 'digits_between' => 'Polje :attribute mora da sadrži između :min i :max cifara.', + 'dimensions' => 'Polje :attribute sadrži neispravne dimenzije slike.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'Polje :attribute ne sme da se završi sa jednim od sledećih: :values.', + 'doesnt_start_with' => 'Polje :attribute ne sme da počen sa jednim od sledećih: :values.', + 'email' => 'Polje :attribute mora biti ispravna adresa e-pošte.', + 'ends_with' => 'Polje :attribute mora se završiti sa jednim od sledećih: :values.', + 'enum' => 'Odabrani :attribute nije ispravan.', + 'exists' => 'Odabrani :attribute nije korektan.', + 'extensions' => 'Polje :attribute mora da sadrži jednu od sledećih ekstenzija: :values.', + 'file' => 'Polje :attribute mora biti datoteka.', + 'filled' => ':attribute mora imati vrednost.', + 'gt' => [ + 'array' => 'Polje :attribute mora sa sadrži više od :values stavki.', + 'file' => 'Polje :attribute mora biti veće od :value kilobajta.', + 'numeric' => 'Polje :attribute mora biti veće od :value.', + 'string' => 'Polje :attribute mora biti veće od :value karaktera.', + ], + 'gte' => [ + 'array' => 'Polje :attribute mora da sadrži :value ili više stavki.', + 'file' => 'Polje :attribute mora biti veće ili jednako sa :value kilobajta.', + 'numeric' => 'Polje :attribute mora biti veće od ili jednako sa :value.', + 'string' => 'Polje :attribute mora da sadrži više ili jednako :value karaktera.', + ], + 'hex_color' => 'Polje :attribute mora biti ispravna heksadecimalna boja.', + 'image' => 'Polje :attribute mora biti slika.', 'import_field_empty' => 'Vrednost za :fieldname ne može biti prazna.', - 'in' => 'Odabrani :attribute nije korektan.', - 'in_array' => ':attribute polje ne postoji u :other.', - 'integer' => ':attribute mora biti ceo broj.', - 'ip' => ':attribute mora biti važeća IP adresa.', - 'ipv4' => ':attribute mora biti važeća IPv4 adresa.', - 'ipv6' => ':attribute mora biti važeća IPv6 adresa.', - 'is_unique_department' => ':attribute mora biti jedinstven za ovu Kompanijsku lokaciju', - 'json' => ':attribute mora biti ispravan JSON niz.', - 'max' => [ - 'numeric' => ':attribute ne sme biti veći od :max.', - 'file' => ':attribute ne sme biti veći od : max. kilobajta.', - 'string' => ':attribute ne sme biti veći od :max znakova.', - 'array' => ':attribute ne sme imati više od :max stavki.', + 'in' => 'Odabrani :attribute nije korektan.', + 'in_array' => 'Polje :attribute mora da postoji u :other.', + 'integer' => 'Polje :attribute mora biti celobrojna vrednost.', + 'ip' => 'Polje :attribute mora biti ispravna IP adresa.', + 'ipv4' => 'Polje :attribute mora biti ispravna IPv4 adresa.', + 'ipv6' => 'Polje :attribute mora biti ispravna IPv6 adresa.', + 'json' => 'Polje :attribute mora biti ispravan JSON tekst.', + 'list' => 'Polje :attribute mora biti spisak.', + 'lowercase' => 'Polje :attribute mora da sadrži sve mala slova.', + 'lt' => [ + 'array' => 'Polje :attribute mora da sadrži manje od :value stavki.', + 'file' => 'Polje :attribute mora biti manje od :value kilobajta.', + 'numeric' => 'Polje :attribute mora biti manje od :value.', + 'string' => 'Polje :attribute mora da sadrži manje od :value karaktera.', ], - 'mimes' => ':attribute mora biti datoteka tipa: :values.', - 'mimetypes' => ':attribute mora biti datoteka tipa: :values.', - 'min' => [ - 'numeric' => ':attribute mora biti najmanje :min.', - 'file' => ':attribute mora biti najmanje :min kilobajta.', - 'string' => ':attribute mora biti najmanje :min znakova.', - 'array' => ':attribute mora imati barem :min stavke.', + 'lte' => [ + 'array' => 'Polje :attribute ne sme da sadrži više od :value stavki.', + 'file' => 'Polje :attribute mora biti manje od ili jednako :value kilobajta.', + 'numeric' => 'Polje :attribute mora biti manje ili jednako sa :value.', + 'string' => 'Polje :attribute mora da sadrži manje ili jednako :value karaktera.', ], - 'starts_with' => ':attribute mora da počne sa jednom od sledećih vrednosti: :values.', - 'ends_with' => ':attribute mora da se završi sa jednim od sledećih: :values.', - - 'not_in' => 'Odabrani :attribute nije ispravan.', - 'numeric' => ':attribute mora biti broj.', - 'present' => ':attribute polje mora biti prisutno.', - 'valid_regex' => 'To nije valjani regex. ', - 'regex' => ':attribute format nije ispravan.', - 'required' => ':attribute polje je obavezno.', - 'required_if' => ':attribute polje je obavezno kada je :other :value.', - 'required_unless' => ':attribute polje je obavezno unless :other is in :values.', - 'required_with' => ':attribute polje je obavezno kada postoji :values.', - 'required_with_all' => ':attribute polje je obavezno kada :values postoji.', - 'required_without' => ':attribute polje je obavezno kada :values ne postoji.', + 'mac_address' => 'Polje :attribute mora biti ispravna MAC adresa.', + 'max' => [ + 'array' => 'Polje :attribute ne sme da sadrži više od :max stavki.', + 'file' => 'Polje :attribute ne sme biti veće od :max kilobajta.', + 'numeric' => 'Polje :attribute ne sme biti veće od :max.', + 'string' => 'Polje :attribute ne sme da sadrži više od :max karaktera.', + ], + 'max_digits' => 'Polje :attribute ne sme da sadrži više od :max cifara.', + 'mimes' => 'Polje :attribute mora biti datoteka tipa: :values.', + 'mimetypes' => 'Polje :attribute mora biti datoteka tipa: :values.', + 'min' => [ + 'array' => 'Polje :attribute mora da sdarži najmanje :min stavki.', + 'file' => 'Polje :attribute mora biti najmanje :min kilobajta.', + 'numeric' => 'Polje :attribute mora biti najmanje :min.', + 'string' => 'Polje :attribute mora da sadrži najmanje :min karaktera.', + ], + 'min_digits' => 'Polje :attribute mora da sadrži najmanje :min cifara.', + 'missing' => 'Polje :attribute mora biti nedostajuće.', + 'missing_if' => 'Polje :attribute mora biti nedostajuće kada :other sadrži :value.', + 'missing_unless' => 'Polje :attribute mora biti nedostajuće osim ako :other sadrži :value.', + 'missing_with' => 'Polje :attribute mora biti nedostajuće kada je :values izabrano.', + 'missing_with_all' => 'Polje :attribute mora biti nedostajuće kada je :values izabrano.', + 'multiple_of' => 'Polje :attribute mora biti proizvod množenja sa :value.', + 'not_in' => 'Odabrani :attribute nije ispravan.', + 'not_regex' => 'Format polja :attribute nije ispravan.', + 'numeric' => 'Polje :attribute mora biti broj.', + 'password' => [ + 'letters' => 'Polje :attribute mora da sadrži najmanje jedno slovo.', + 'mixed' => 'Polje :attribute mora da sadrži najmanje jedno veliko i jedno malo slovo.', + 'numbers' => 'Polje :attribute mora da sadrži najmanje jedan broj.', + 'symbols' => 'Polje :attribute mora da sadrži najmanje jedan simbol.', + 'uncompromised' => 'Uneto :attribute se pojavilo među procurelim podacima. Molim vas unesite drugo :attribute.', + ], + 'present' => ':attribute polje mora biti prisutno.', + 'present_if' => 'Polje :attribute mora imati vrednost kada :other sadrži :value.', + 'present_unless' => 'Polje :attribute mora imati vrednost osim ako :other sadrži :value.', + 'present_with' => 'Polje :attribute mora imati vrednost kada je :values izabrano.', + 'present_with_all' => 'Polje :attribute mora imati vrednost kada je :values izabrano.', + 'prohibited' => 'Polje :attribute je zabranjeno.', + 'prohibited_if' => 'Polje :attribute je zabranjeno kada :other sadrži :value.', + 'prohibited_unless' => 'Polje :attribute je zabranjeno osim ako :other sadrži :values.', + 'prohibits' => 'Polje :attribute zabranjuje da :other bude izabrano.', + 'regex' => 'Format polja :attribute nije ispravan.', + 'required' => ':attribute polje je obavezno.', + 'required_array_keys' => 'Polje :attribute mora da sadrži unose za : :values.', + 'required_if' => ':attribute polje je obavezno kada je :other :value.', + 'required_if_accepted' => 'Polje :attribute je obavezno kada je :other prihvaćeno.', + 'required_if_declined' => 'Polje :attribute je neophodno kada je :other odbijeno.', + 'required_unless' => ':attribute polje je obavezno unless :other is in :values.', + 'required_with' => ':attribute polje je obavezno kada postoji :values.', + 'required_with_all' => 'Polje :attribute je neophodno kada je :values izabrano.', + 'required_without' => ':attribute polje je obavezno kada :values ne postoji.', 'required_without_all' => ':attribute polje je obavezno ako nijedna od :values nije prisutna.', - 'same' => ':attribute i :other moraju da su isti.', - 'size' => [ - 'numeric' => ':attribute mora biti :size.', - 'file' => ':attribute mora biti :size kilobajta.', - 'string' => ':attribute mora biti :size znakova.', - 'array' => ':attribute mora sadržavati :size stavki.', + 'same' => 'Polje :attribute se mora poklapati sa :other.', + 'size' => [ + 'array' => 'Polje :attribute mora da sadrži :size stavki.', + 'file' => 'Polje :attribute mora biti :size kilobajta.', + 'numeric' => 'Polje :attribute mora biti :size.', + 'string' => 'Polje :attribute mora da sadrži :size karaktera.', ], + 'starts_with' => 'Polje :attribute mora da počne sa jednim od sledećih: :values.', 'string' => ':attribute mora biti :string.', - 'timezone' => ':attribute mora biti ispravna zona.', 'two_column_unique_undeleted' => ':attribute mora biti jedinstven kako u :table1 tako i u :table2. ', - 'unique' => ':attribute je već zauzet.', - 'uploaded' => ':attribute nije prenet.', - 'url' => ':attribute format je neispravan.', 'unique_undeleted' => ':attribute mora biti jedinstven.', 'non_circular' => ':attribute ne sme da kreira cirkularnu referencu.', 'not_array' => ':attribute ne može biti niz.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Lozinka mora da sadrži barem jednu cifru.', 'case_diff' => 'Lozinka mora da sadrži malo i veliko slovo.', 'symbols' => 'Lozinka mora da sadrži simbole.', - 'gte' => [ - 'numeric' => 'Vrednost ne može biti negativna' - ], - 'checkboxes' => ':attribute sadrži neispravne opcije.', - 'radio_buttons' => ':attribute je neispravan.', - + 'timezone' => 'Polje :attribute mora biti ispravna vremenska zona.', + 'unique' => ':attribute je već zauzet.', + 'uploaded' => ':attribute nije prenet.', + 'uppercase' => 'Polje :attribute mora da sadrži sve velika slova.', + 'url' => 'Polje :attribute mora biti ispravna URL adresa.', + 'ulid' => 'Polje :attribute mora biti ispravan ULID.', + 'uuid' => 'Polje :attribute mora biti ispravan UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute mora biti ispravan datum u YYYY-MM-DD formatu', 'last_audit_date.date_format' => ':attribute mora biti ispravan datum u YYYY-MM-DD hh:mm:ss formatu', 'expiration_date.date_format' => ':attribute mora biti ispravan datum u YYYY-MM-DD formatu', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute mora biti ispravan datum u YYYY-MM-DD formatu', 'start_date.date_format' => ':attribute mora biti ispravan datum u YYYY-MM-DD formatu', 'end_date.date_format' => ':attribute mora biti ispravan datum u YYYY-MM-DD formatu', - - ], - + 'checkboxes' => ':attribute sadrži neispravne opcije.', + 'radio_buttons' => ':attribute je neispravan.', + 'invalid_value_in_field' => 'Neispravna vrednost je sadržana u ovom polju', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Neispravna vrednost je sadržana u ovom polju', + + 'generic' => [ + 'invalid_value_in_field' => 'Neispravna vrednost je sadržana u ovom polju', + 'required' => 'Ovo polje je obavezno', + 'email' => 'Molim vas unesite ispravnu adresu e-pošte', + ], + + ]; diff --git a/resources/lang/sv-SE/account/general.php b/resources/lang/sv-SE/account/general.php index b1de0f7ce0..92579db160 100644 --- a/resources/lang/sv-SE/account/general.php +++ b/resources/lang/sv-SE/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personliga API-nycklar', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Din API-bas-url finns på:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API-tokens är inställda på att gå ut om:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/sv-SE/admin/accessories/message.php b/resources/lang/sv-SE/admin/accessories/message.php index d537bfba42..b5b762e90e 100644 --- a/resources/lang/sv-SE/admin/accessories/message.php +++ b/resources/lang/sv-SE/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Tillbehöret checkades inte ut. Vänligen försök igen', 'success' => 'Tillbehöret checkades ut.', 'unavailable' => 'Tillbehöret är inte tillgängligt för utcheckning. Kontrollera antal tillgängligt', - 'user_does_not_exist' => 'Användaren är ogiltig. Försök igen.' + 'user_does_not_exist' => 'Användaren är ogiltig. Försök igen.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/sv-SE/admin/consumables/general.php b/resources/lang/sv-SE/admin/consumables/general.php index c053250e91..a98942e43c 100644 --- a/resources/lang/sv-SE/admin/consumables/general.php +++ b/resources/lang/sv-SE/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Återstående', 'total' => 'Totalt', 'update' => 'Uppdatera förbrukningsvara', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/sv-SE/admin/consumables/message.php b/resources/lang/sv-SE/admin/consumables/message.php index 5858e376fc..37e387db5c 100644 --- a/resources/lang/sv-SE/admin/consumables/message.php +++ b/resources/lang/sv-SE/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Förbrukningsartiklar existerar inte.', 'create' => array( diff --git a/resources/lang/sv-SE/admin/custom_fields/message.php b/resources/lang/sv-SE/admin/custom_fields/message.php index 28ec085b02..91db3a2ef3 100644 --- a/resources/lang/sv-SE/admin/custom_fields/message.php +++ b/resources/lang/sv-SE/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Det fältet existerar inte.', 'already_added' => 'Fält som redan lagts till', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Fältet skapades inte, var vänlig försök igen.', diff --git a/resources/lang/sv-SE/admin/hardware/message.php b/resources/lang/sv-SE/admin/hardware/message.php index cee5b0304b..9b3e2080e6 100644 --- a/resources/lang/sv-SE/admin/hardware/message.php +++ b/resources/lang/sv-SE/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Varning: Den här tillgången har markerats som omöjlig för närvarande. Om denna status har ändrats uppdaterar du tillgångsstatusen.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Tillgång existerar inte.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Vissa objekt importerades inte korrekt.', 'errorDetail' => 'Följande objekt importerades inte på grund av fel.', 'success' => 'Din fil har importerats', diff --git a/resources/lang/sv-SE/admin/licenses/general.php b/resources/lang/sv-SE/admin/licenses/general.php index e1a318b0ab..5fa4f10dd6 100644 --- a/resources/lang/sv-SE/admin/licenses/general.php +++ b/resources/lang/sv-SE/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Licensinfo', 'license_seats' => 'Licenssäten', 'seat' => 'Sittplats', + 'seat_count' => 'Seat :count', 'seats' => 'Säten', 'software_licenses' => 'Programvarulicenser', 'user' => 'Användare', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Checka in alla platser', - 'modal' => 'Detta kommer att checka in en plats.|Denna åtgärd kommer att checka in alla :checkedout_seats_count platser för denna licens.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Checka in ALLA platser för denna licens från både användare och tillgångar', 'disabled_tooltip' => 'Detta är inaktiverat eftersom det för närvarande inte finns några platser utcheckade', 'disabled_tooltip_reassignable' => 'Detta är inaktiverat eftersom licensen inte är omtilldelbar', 'success' => 'Licensen har checkats in! | Alla licenser har checkats in!', - 'log_msg' => 'Incheckad via bulk licens checkout i licens GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/sv-SE/admin/licenses/message.php b/resources/lang/sv-SE/admin/licenses/message.php index 103bff3a2f..735b720b74 100644 --- a/resources/lang/sv-SE/admin/licenses/message.php +++ b/resources/lang/sv-SE/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Det gick inte att kontrollera licensen. Var god försök igen.', 'success' => 'Licensen utcheckades framgångsrikt', 'not_enough_seats' => 'Inte tillräckligt med licensplatser tillgängliga för utcheckning', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/sv-SE/admin/models/message.php b/resources/lang/sv-SE/admin/models/message.php index dfd40864db..4450e95021 100644 --- a/resources/lang/sv-SE/admin/models/message.php +++ b/resources/lang/sv-SE/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'VARNING! Modellen för detta objekt är ogiltigt eller saknas!', 'no_association_fix' => 'Detta kommer att bryta saker på konstiga och hemska sätt. Redigera denna tillgång nu för att tilldela det en modell.', 'assoc_users' => 'Denna modell är redan associerad med en eller flera tillgångar och kan inte tas bort. Ta bort tillgången och försök sedan igen. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Modellen skapades inte, försök igen.', diff --git a/resources/lang/sv-SE/admin/settings/general.php b/resources/lang/sv-SE/admin/settings/general.php index ddd70aa9d7..4e8bb9cc6c 100644 --- a/resources/lang/sv-SE/admin/settings/general.php +++ b/resources/lang/sv-SE/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Detta testar bara att LDAP kan synkroniseras korrekt. Om din LDAP-autentiseringsfråga inte är korrekt kan användarna fortfarande inte logga in. DU MÅSTE SPARA DINA UPPDATERADE LDAPINSTÄLLNINGAR FÖRST.', 'ldap_manager' => 'LDAP-hanterare', 'ldap_server' => 'LDAP-server', - 'ldap_server_help' => 'Detta bör börja med ldap: // (för okrypterad eller TLS) eller ldaps: // (för SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Validering av LDAP SSL-certifikat', 'ldap_server_cert_ignore' => 'Tillåt ogiltigt SSL-certifikat', 'ldap_server_cert_help' => 'Markera den här kryssrutan om du använder en självtecknad SSL-cert och vill acceptera ett ogiltigt SSL-certifikat.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Testa LDAP', 'ldap_test_sync' => 'Testa LDAP-synkronisering', 'license' => 'Mjukvarulicens', - 'load_remote' => 'Använd Gravatar', - 'load_remote_help_text' => 'Avmarkera den här rutan om din installation inte kan ladda skript från utsidan Internet. Detta kommer att förhindra Snipe-IT från att försöka ladda bilder från Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Inloggningsförsök', 'login_attempt' => 'Inloggningsförsök', 'login_ip' => 'IP-adress', @@ -150,7 +150,7 @@ return [ 'optional' => 'frivillig', 'per_page' => 'Resultat per sida', 'php' => 'PHP-versionen', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP-system info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Tidszon', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/sv-SE/button.php b/resources/lang/sv-SE/button.php index 506f4ad1ad..090504b79b 100644 --- a/resources/lang/sv-SE/button.php +++ b/resources/lang/sv-SE/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checka in alla / ta bort användare', 'delete' => 'Radera', 'edit' => 'Ändra', + 'clone' => 'Clone', 'restore' => 'Återställ', 'remove' => 'Ta bort', 'request' => 'Begäran', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Inventarieunderhåll', 'append' => 'Lägg till', 'new' => 'Ny', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/sv-SE/general.php b/resources/lang/sv-SE/general.php index d688e2f4b2..1cd297d4d4 100644 --- a/resources/lang/sv-SE/general.php +++ b/resources/lang/sv-SE/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat :count License Seats', 'consumables' => ':count Förbrukningsmedel :count Förbrukningsvaror', 'components' => ':count Component|:count Komponenter', - ] + ], + 'more_info' => 'Mer information', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Utgår', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/sv-SE/mail.php b/resources/lang/sv-SE/mail.php index 18dc11bf23..b56d110774 100644 --- a/resources/lang/sv-SE/mail.php +++ b/resources/lang/sv-SE/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Jag har läst och godkänt användarvillkoren och har fått den här produkten.', 'inventory_report' => 'Inventarierapport', 'item' => 'Artikel:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => ':count licens löper ut inom :threshold dagar.|:count licenser löper ut inom :threshold days.', 'link_to_update_password' => 'Vänligen klicka på följande länk för att uppdatera ditt: webblösenord:', 'login' => 'Logga in:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Det finns :count tillgång som kommer upp för revision inom :threshold days.|Det finns :count tillgångar som kommer upp för revision inom :threshold dagar.', 'user' => 'Användare', 'username' => 'Användarnamn', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Välkommen: namn', 'welcome_to' => 'Välkommen till: web!', 'your_assets' => 'Visa dina tillgångar', 'your_credentials' => 'Dina Snipe-IT användaruppgifter', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/sv-SE/validation.php b/resources/lang/sv-SE/validation.php index f7ca0a6b41..6be759c15d 100644 --- a/resources/lang/sv-SE/validation.php +++ b/resources/lang/sv-SE/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute måste accepteras.', - 'active_url' => ':attribute är inte en giltig URL.', - 'after' => ':attribute måste vara ett datum efter :date.', - 'after_or_equal' => ':attribute måste vara ett datum efter eller lika med :date.', - 'alpha' => ':attribute får bara innehålla bokstäver.', - 'alpha_dash' => ':attribute får bara innehålla bokstäver, siffror och bindestreck.', - 'alpha_num' => ':attribute får bara innehålla bokstäver och siffror.', - 'array' => ':attribute måste vara en tabell.', - 'before' => ':attribute måste vara ett datum före :date.', - 'before_or_equal' => ':attribute måste vara ett datum före eller lika med :date.', - 'between' => [ - 'numeric' => ':attribute måste vara mellan :min och :max.', - 'file' => ':attribute måste vara mellan :min och :max kilobytes.', - 'string' => ':attribute måste vara mellan :min och :max tecken.', - 'array' => ':attribute måste ha mellan :min och :max objekt.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute måste vara sant eller falskt.', - 'confirmed' => ':attribute matchar inte.', - 'date' => ':attribute är inte ett giltigt datum.', - 'date_format' => ':attribute matchar inte formatet :format.', - 'different' => ':attribute och :other kan inte vara samma.', - 'digits' => ':attributet måste vara :digits siffror.', - 'digits_between' => ':attribute måste vara mellan :min och :max siffror.', - 'dimensions' => ':attribute har ogiltigt bildmått.', - 'distinct' => ':attribute fältet har samma värde.', - 'email' => ':attribute måste vara en giltig e-postadress.', - 'exists' => 'Det valda :attribute är ogiltigt.', - 'file' => ':attribute måste vara en fil.', - 'filled' => ':attribute fältet måste ha ett värde.', - 'image' => ':attribute måste vara en bild.', + 'boolean' => 'Attributfältet måste vara sant eller felaktigt.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ':attribute fältet har samma värde.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Det valda :attribute är ogiltigt.', + 'exists' => 'Det valda :attribute är ogiltigt.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ':attribute fältet måste ha ett värde.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Värdet för :fieldname kan inte vara noll.', - 'in' => 'Det valda :attribute är ogiltigt.', - 'in_array' => ':attribute fältet existerar inte i :other.', - 'integer' => ':attribute måste vara ett heltal.', - 'ip' => ':attribute måste vara en giltig IP-adress.', - 'ipv4' => ':attribute måste vara en giltig IPv4-adress.', - 'ipv6' => ':attribute måste vara en giltig IPv6-adress.', - 'is_unique_department' => ':attribute måste vara unikt för detta företag', - 'json' => ':attribute måste vara en giltig JSON-sträng.', - 'max' => [ - 'numeric' => ':attribute får inte vara större än :max.', - 'file' => ':attribute får inte vara större än :max kilobytes.', - 'string' => ':attribute får inte vara större än :max tecken.', - 'array' => ':attribute får inte ha mer än :max objekt.', + 'in' => 'Det valda :attribute är ogiltigt.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute måste vara en fil av typen: :values.', - 'mimetypes' => ':attribute måste vara en fil av typen: :values.', - 'min' => [ - 'numeric' => ':attribute måste vara minst :min.', - 'file' => ':attribute måste vara minst :min kilobytes.', - 'string' => ':attribute måste vara minst :min tecken.', - 'array' => ':attribute måste innehålla minst :min saker.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute måste börja med något av följande: :values.', - 'ends_with' => ':attribute måste sluta med en eller flera av följande värden: :values.', - - 'not_in' => 'Det valda :attribute är ogiltigt.', - 'numeric' => ':attribute måste vara ett nummer.', - 'present' => ':attribute fältet måste finnas.', - 'valid_regex' => 'Ogiltig regex. ', - 'regex' => ':attribute formatet är ogiltigt.', - 'required' => 'Fältet: :attribute är obligatoriskt.', - 'required_if' => 'Fältet :attribute krävs när :other är :value.', - 'required_unless' => 'Fältet :attribute krävs om inte :other anges i :values.', - 'required_with' => 'Fältet :attribute krävs när :values angivits.', - 'required_with_all' => 'Fältet :attribute krävs när :values angivits.', - 'required_without' => 'Fältet :attribute krävs när :values saknas.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Det valda :attribute är ogiltigt.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ':attribute fältet måste finnas.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Fältet: :attribute är obligatoriskt.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Fältet :attribute krävs när :other är :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Fältet :attribute krävs om inte :other anges i :values.', + 'required_with' => 'Fältet :attribute krävs när :values angivits.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Fältet :attribute krävs när :values saknas.', 'required_without_all' => 'Fältet :attribute krävs när inga :values har angetts.', - 'same' => ':attribute och :other måste vara samma.', - 'size' => [ - 'numeric' => ':attribute måste vara :size.', - 'file' => ':attribute måste vara :size kilobytes.', - 'string' => ':attribute måste vara :size tecken.', - 'array' => ':attribute måste innehålla :size artiklar.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute måste vara en sträng.', - 'timezone' => ':attribute måste vara en giltig zon.', 'two_column_unique_undeleted' => ':attribute måste vara unikt i :table1 och :table2. ', - 'unique' => ':attribute är upptaget.', - 'uploaded' => 'Uppladdningen av :attribute misslyckades.', - 'url' => ':attribute Formatet är ogiltigt.', 'unique_undeleted' => ':attribute måste vara unikt.', 'non_circular' => ':attribute får inte skapa en cirkulär referens.', 'not_array' => ':attribute kan inte vara en array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Lösenord måste innehålla minst en siffra.', 'case_diff' => 'Lösenordet måste innehålla både versaler och gemener.', 'symbols' => 'Lösenordet måste innehålla symboler.', - 'gte' => [ - 'numeric' => 'Värdet kan inte vara negativ' - ], - 'checkboxes' => ':attribute innehåller ogiltiga alternativ.', - 'radio_buttons' => ':attribute är ogiltigt.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute är upptaget.', + 'uploaded' => 'Uppladdningen av :attribute misslyckades.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute måste vara ett giltigt datum i YYYY-MM-DD format', 'last_audit_date.date_format' => ':attribute måste vara ett giltigt datum i YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => ':attribute måste vara ett giltigt datum i YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute måste vara ett giltigt datum i YYYY-MM-DD format', 'start_date.date_format' => ':attribute måste vara ett giltigt datum i YYYY-MM-DD format', 'end_date.date_format' => ':attribute måste vara ett giltigt datum i YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute innehåller ogiltiga alternativ.', + 'radio_buttons' => ':attribute är ogiltigt.', + 'invalid_value_in_field' => 'Ogiltigt värde som ingår i detta fält', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Ogiltigt värde som ingår i detta fält', + + 'generic' => [ + 'invalid_value_in_field' => 'Ogiltigt värde som ingår i detta fält', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ta-IN/account/general.php b/resources/lang/ta-IN/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/ta-IN/account/general.php +++ b/resources/lang/ta-IN/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ta-IN/admin/accessories/message.php b/resources/lang/ta-IN/admin/accessories/message.php index 8e4d4dc1e9..9cf89c1e31 100644 --- a/resources/lang/ta-IN/admin/accessories/message.php +++ b/resources/lang/ta-IN/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'அசெஸரி அவுட் சரிபார்க்கப்படவில்லை, மீண்டும் முயற்சிக்கவும்', 'success' => 'அசெஸரி வெற்றிகரமாக சோதிக்கப்பட்டது.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'அந்த பயனர் தவறானது. தயவு செய்து மீண்டும் முயற்சிக்கவும்.' + 'user_does_not_exist' => 'அந்த பயனர் தவறானது. தயவு செய்து மீண்டும் முயற்சிக்கவும்.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ta-IN/admin/consumables/general.php b/resources/lang/ta-IN/admin/consumables/general.php index e134d0b918..e0f663d28e 100644 --- a/resources/lang/ta-IN/admin/consumables/general.php +++ b/resources/lang/ta-IN/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'மீதமுள்ள', 'total' => 'மொத்த', 'update' => 'நுகர்வோர் புதுப்பிக்கவும்', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ta-IN/admin/consumables/message.php b/resources/lang/ta-IN/admin/consumables/message.php index df08773648..38ffe4b60a 100644 --- a/resources/lang/ta-IN/admin/consumables/message.php +++ b/resources/lang/ta-IN/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'நுகர்வோர் இல்லை.', 'create' => array( diff --git a/resources/lang/ta-IN/admin/custom_fields/message.php b/resources/lang/ta-IN/admin/custom_fields/message.php index 93366a986d..5a8830bbc1 100644 --- a/resources/lang/ta-IN/admin/custom_fields/message.php +++ b/resources/lang/ta-IN/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'அந்த புலம் இல்லை.', 'already_added' => 'புலம் ஏற்கனவே சேர்க்கப்பட்டது', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'புலம் உருவாக்கப்படவில்லை, மீண்டும் முயற்சிக்கவும்.', diff --git a/resources/lang/ta-IN/admin/hardware/message.php b/resources/lang/ta-IN/admin/hardware/message.php index c051190f0a..cd016584c5 100644 --- a/resources/lang/ta-IN/admin/hardware/message.php +++ b/resources/lang/ta-IN/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => ' எச்சரிக்கை: இந்த சொத்து தற்போது undeployable என குறிக்கப்பட்டுள்ளது. இந்த நிலை மாறியிருந்தால், சொத்து நிலையை புதுப்பிக்கவும்.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'சொத்து இல்லை.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'சில உருப்படிகளை சரியாக இறக்குமதி செய்யவில்லை.', 'errorDetail' => 'பிழைகள் காரணமாக பின்வரும் உருப்படிகளை இறக்குமதி செய்யப்படவில்லை.', 'success' => 'உங்கள் கோப்பு இறக்குமதி செய்யப்பட்டது', diff --git a/resources/lang/ta-IN/admin/licenses/general.php b/resources/lang/ta-IN/admin/licenses/general.php index 50632d752a..5015e6f72c 100644 --- a/resources/lang/ta-IN/admin/licenses/general.php +++ b/resources/lang/ta-IN/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'உரிமம் தகவல்', 'license_seats' => 'உரிமம் இருக்கைகள்', 'seat' => 'இருக்கை', + 'seat_count' => 'Seat :count', 'seats' => 'இருக்கைகள்', 'software_licenses' => 'மென்பொருள் உரிமங்கள்', 'user' => 'பயனர்', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ta-IN/admin/licenses/message.php b/resources/lang/ta-IN/admin/licenses/message.php index b95f37bbd5..d1e492c49a 100644 --- a/resources/lang/ta-IN/admin/licenses/message.php +++ b/resources/lang/ta-IN/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'உரிமத்தை சரிபார்க்க ஒரு சிக்கல் இருந்தது. தயவு செய்து மீண்டும் முயற்சிக்கவும்.', 'success' => 'உரிமம் வெற்றிகரமாக சரிபார்க்கப்பட்டது', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ta-IN/admin/models/message.php b/resources/lang/ta-IN/admin/models/message.php index 8c68944510..46702bd592 100644 --- a/resources/lang/ta-IN/admin/models/message.php +++ b/resources/lang/ta-IN/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'தற்போது இந்த மாதிரி ஒன்று ஒன்று அல்லது அதற்கு மேற்பட்ட சொத்துக்களுடன் தொடர்புடையது மற்றும் நீக்கப்பட முடியாது. சொத்துக்களை நீக்கிவிட்டு மீண்டும் நீக்குவதற்கு முயற்சிக்கவும்.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'மாதிரி உருவாக்கப்பட்டது இல்லை, மீண்டும் முயற்சிக்கவும்.', diff --git a/resources/lang/ta-IN/admin/settings/general.php b/resources/lang/ta-IN/admin/settings/general.php index 4a1facac3b..7568f50873 100644 --- a/resources/lang/ta-IN/admin/settings/general.php +++ b/resources/lang/ta-IN/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP சேவையகம்', - 'ldap_server_help' => 'இது ldap: // (மறைகுறியாக்கப்பட்ட அல்லது TLS க்கு) அல்லது ldaps: // (SSL க்கு) தொடங்க வேண்டும்.', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL சான்றிதழ் சரிபார்ப்பு', 'ldap_server_cert_ignore' => 'தவறான SSL சான்றிதழை அனுமதி', 'ldap_server_cert_help' => 'நீங்கள் சுயமாக கையொப்பமிடப்பட்ட SSL சான்றிதழைப் பயன்படுத்துகிறீர்கள் என்றால், இந்த செல்லாத பெட்டியை தேர்வுசெய்து தவறான SSL சான்றிதழை ஏற்றுக்கொள்ள விரும்புகிறேன்.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'விருப்ப', 'per_page' => 'பக்கம் ஒன்றுக்கு முடிவு', 'php' => 'PHP பதிப்பு', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ta-IN/button.php b/resources/lang/ta-IN/button.php index ecc7bf0f90..7098eaf7f1 100644 --- a/resources/lang/ta-IN/button.php +++ b/resources/lang/ta-IN/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'அனைத்தையும் பெற்றுக்கொள் / பயனரை நீக்கு', 'delete' => 'அழி', 'edit' => 'தொகு', + 'clone' => 'Clone', 'restore' => 'மீட்டமை', 'remove' => 'நீக்கு', 'request' => 'வேண்டுகோள்', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'பராமரிப்பைச் சேர்', 'append' => 'இணைக்கவும்', 'new' => 'புதிய', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ta-IN/general.php b/resources/lang/ta-IN/general.php index e61411ab58..a6689be76e 100644 --- a/resources/lang/ta-IN/general.php +++ b/resources/lang/ta-IN/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'மேலும் தகவல்', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'காலாவதியாகிறது', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ta-IN/mail.php b/resources/lang/ta-IN/mail.php index a0176d351e..36269c9bbe 100644 --- a/resources/lang/ta-IN/mail.php +++ b/resources/lang/ta-IN/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'நான் பயன்பாட்டு விதிமுறைகளைப் படித்து ஒப்புக்கொள்கிறேன், இந்த உருப்படியைப் பெற்றுள்ளேன்.', 'inventory_report' => 'Inventory Report', 'item' => 'பொருள்:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'தயவுசெய்து புதுப்பிக்க பின்வரும் இணைப்பை கிளிக் செய்யவும்: உங்கள் இணைய கடவுச்சொல்:', 'login' => 'உள் நுழை:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'பயனர்', 'username' => 'பயனர்பெயர்', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'வரவேற்பு: பெயர்', 'welcome_to' => 'வரவேற்கிறோம்: வலை!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'உங்கள் கத்தரி-ஐடி சான்றுகள்', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ta-IN/validation.php b/resources/lang/ta-IN/validation.php index 714504cbb9..504768b060 100644 --- a/resources/lang/ta-IN/validation.php +++ b/resources/lang/ta-IN/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ': பண்புக்கூறு ஏற்றுக்கொள்ளப்பட வேண்டும்.', - 'active_url' => 'பண்புக்கூறு: செல்லுபடியாகாத URL அல்ல.', - 'after' => 'பின்: பண்புக்கூறு: தேதி தேதி.', - 'after_or_equal' => 'தேதி: தேதி அல்லது அதற்கு சமமாக தேதி இருக்க வேண்டும்: தேதி.', - 'alpha' => 'பண்புக்கூறு: கடிதங்கள் மட்டுமே கொண்டிருக்கும்.', - 'alpha_dash' => 'பண்புக்கூறு, எண்கள், கோடுகள் ஆகியவற்றைக் கொண்டிருக்கும்.', - 'alpha_num' => ': பண்புக்கூறுகள் மற்றும் எண்களை மட்டும் கொண்டிருக்கும்.', - 'array' => ': பண்புக்கூறாக ஒரு வரிசை இருக்க வேண்டும்.', - 'before' => ': பண்புக்கூறு முன் தேதி இருக்க வேண்டும்: தேதி.', - 'before_or_equal' => 'தேதி: தேதி முன் அல்லது சமமாக தேதி இருக்க வேண்டும்: தேதி.', - 'between' => [ - 'numeric' => ': பண்புக்கூறு: நிமிடம் மற்றும் அதிகபட்சம்.', - 'file' => 'தி: பண்புக்கூறு: நிமிடம் மற்றும்: அதிகபட்ச கிலோபைட்.', - 'string' => 'The: பண்புக்கூறு: min மற்றும்: max characters.', - 'array' => ': பண்புக்கூறு: நிமிடம் மற்றும்: அதிகபட்சம் உருப்படிகள்', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'கற்பனை புலம் உண்மையாகவோ தவறாகவோ இருக்க வேண்டும்.', - 'confirmed' => 'பண்புக்கூறு உறுதிப்படுத்தல் பொருந்தவில்லை.', - 'date' => ': பண்புக்கூறு சரியான தேதி அல்ல.', - 'date_format' => 'வடிவமைப்பு: வடிவம் பொருந்தவில்லை வடிவமைப்பு.', - 'different' => 'பண்புக்கூறு: மற்றொன்று வித்தியாசமாக இருக்க வேண்டும்.', - 'digits' => 'பண்புக்கூறு: எண் இலக்கங்கள் இருக்க வேண்டும்.', - 'digits_between' => ': பண்புக்கூறு: நிமிடம் மற்றும்: அதிகபட்ச இலக்கங்கள்.', - 'dimensions' => 'பண்புக்கூறு: தவறான பட பரிமாணங்களை கொண்டுள்ளது.', - 'distinct' => ': பண்புக்கூறு துறையில் ஒரு போலி மதிப்பு உள்ளது.', - 'email' => 'பண்புக்கூறு: செல்லுபடியாகும் மின்னஞ்சல் முகவரி இருக்க வேண்டும்.', - 'exists' => 'தேர்ந்தெடுக்கப்பட்ட: பண்பு தவறானது.', - 'file' => 'பண்புக்கூறு ஒரு கோப்பாக இருக்க வேண்டும்.', - 'filled' => 'பண்புக்கூறு துறையில் ஒரு மதிப்பு இருக்க வேண்டும்.', - 'image' => 'பண்புக்கூறு: ஒரு படம் இருக்க வேண்டும்.', + 'boolean' => 'கற்பனை புலம் உண்மையாகவோ தவறாகவோ இருக்க வேண்டும்.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ': பண்புக்கூறு துறையில் ஒரு போலி மதிப்பு உள்ளது.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'தேர்ந்தெடுக்கப்பட்ட: பண்பு தவறானது.', + 'exists' => 'தேர்ந்தெடுக்கப்பட்ட: பண்பு தவறானது.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'பண்புக்கூறு துறையில் ஒரு மதிப்பு இருக்க வேண்டும்.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'தேர்ந்தெடுக்கப்பட்ட: பண்பு தவறானது.', - 'in_array' => ': பண்புக்கூறு புலம் இல்லை: மற்றவை.', - 'integer' => 'பண்புக்கூறு: ஒரு முழு எண்ணாக இருக்க வேண்டும்.', - 'ip' => 'பண்புக்கூறு: செல்லுபடியாகும் IP முகவரி இருக்க வேண்டும்.', - 'ipv4' => 'பண்புக்கூறு: செல்லுபடியாகும் IPv4 முகவரி இருக்க வேண்டும்.', - 'ipv6' => 'பண்புக்கூறு: செல்லுபடியாகும் IPv6 முகவரி இருக்க வேண்டும்.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'பண்புக்கூறு செல்லுபடியான JSON சரமாக இருக்க வேண்டும்.', - 'max' => [ - 'numeric' => ': பண்புக்கூறு அதிகமாக இருக்கலாம்: அதிகபட்சம்.', - 'file' => 'உருக்கு: பண்பு அதிகமாக இருக்கலாம்: அதிகபட்ச கிலோபைட்.', - 'string' => ': பண்புக்கூறு அதிகமாக இருக்கலாம்: அதிக எழுத்துகள்.', - 'array' => ': பண்புக்கூறு அதிகமாக இல்லை: அதிகபட்சம் பொருட்களை.', + 'in' => 'தேர்ந்தெடுக்கப்பட்ட: பண்பு தவறானது.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'வகை: வகை ஒரு கோப்பு இருக்க வேண்டும்:: மதிப்புகள்.', - 'mimetypes' => 'வகை: வகை ஒரு கோப்பு இருக்க வேண்டும்:: மதிப்புகள்.', - 'min' => [ - 'numeric' => ': பண்புக்கூறு குறைந்தது: நிமிடம்.', - 'file' => ': பண்புக்கூறு குறைந்தது: நிமிட கிலோபைட்.', - 'string' => ': பண்புக்கூறு குறைந்தது: குறைந்த எழுத்துகள்.', - 'array' => ': பண்புக்கூறு குறைந்தபட்சம்: நிமிடம் உருப்படிகள் வேண்டும்.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'தேர்ந்தெடுக்கப்பட்ட: பண்பு தவறானது.', - 'numeric' => 'பண்புக்கூறு: ஒரு எண் இருக்க வேண்டும்.', - 'present' => ': பண்புக்கூறு களஞ்சியம் இருக்க வேண்டும்.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'பண்புக்கூறு வடிவமைப்பு தவறானது.', - 'required' => ': பண்புக்கூறு தேவைப்படுகிறது.', - 'required_if' => ': பண்புக்கூறு புலம் தேவை: மற்றது: மதிப்பு.', - 'required_unless' => ': பண்புக்கூறு தேவைப்படுகிறது: மற்றது: மதிப்புகள்.', - 'required_with' => ': பண்புக்கூறு: போது மதிப்புகள் உள்ளது.', - 'required_with_all' => ': பண்புக்கூறு: போது மதிப்புகள் உள்ளது.', - 'required_without' => ': பண்புக்கூறு புலம் தேவை: மதிப்புகள் இல்லை.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'தேர்ந்தெடுக்கப்பட்ட: பண்பு தவறானது.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ': பண்புக்கூறு களஞ்சியம் இருக்க வேண்டும்.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ': பண்புக்கூறு தேவைப்படுகிறது.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ': பண்புக்கூறு புலம் தேவை: மற்றது: மதிப்பு.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => ': பண்புக்கூறு தேவைப்படுகிறது: மற்றது: மதிப்புகள்.', + 'required_with' => ': பண்புக்கூறு: போது மதிப்புகள் உள்ளது.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ': பண்புக்கூறு புலம் தேவை: மதிப்புகள் இல்லை.', 'required_without_all' => ': மதிப்புகள் இல்லை போது பண்பு துறையில் தேவைப்படுகிறது.', - 'same' => 'பண்புக்கூறு: மற்றொன்று பொருந்த வேண்டும்.', - 'size' => [ - 'numeric' => 'பண்புக்கூறு: அளவு இருக்க வேண்டும்.', - 'file' => 'பண்புக்கூறு: அளவு கிலோபைட்டுகள்.', - 'string' => 'பண்புக்கூறு: அளவுருக்கள் இருக்க வேண்டும்.', - 'array' => ': பண்புக்கூறு: அளவு உருப்படிகளைக் கொண்டிருக்க வேண்டும்.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'பண்புக்கூறு ஒரு சரம் இருக்க வேண்டும்.', - 'timezone' => 'பண்புக்கூறு: செல்லுபடியாகும் மண்டலம் இருக்க வேண்டும்.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ': பண்பு ஏற்கனவே ஏற்கப்பட்டுள்ளது.', - 'uploaded' => ': பண்புக்கூறு பதிவேற்றத் தவறியது.', - 'url' => 'பண்புக்கூறு வடிவமைப்பு தவறானது.', 'unique_undeleted' => 'பண்பு: பண்பு தனித்துவமானது.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ': பண்பு ஏற்கனவே ஏற்கப்பட்டுள்ளது.', + 'uploaded' => ': பண்புக்கூறு பதிவேற்றத் தவறியது.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/th-TH/account/general.php b/resources/lang/th-TH/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/th-TH/account/general.php +++ b/resources/lang/th-TH/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/th-TH/admin/accessories/message.php b/resources/lang/th-TH/admin/accessories/message.php index 87be141c92..b5f86c818a 100644 --- a/resources/lang/th-TH/admin/accessories/message.php +++ b/resources/lang/th-TH/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'อุปกรณ์เสริมยังไม่ถูกเช็คเอ้าท์ กรุณาลองอีกครั้ง', 'success' => 'อุปกรณ์เสริมเช็คเอ้าท์เรียบร้อยแล้ว', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'ผู้ใช้งานไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง' + 'user_does_not_exist' => 'ผู้ใช้งานไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/th-TH/admin/consumables/general.php b/resources/lang/th-TH/admin/consumables/general.php index 892abb6cc5..f67944b0b3 100644 --- a/resources/lang/th-TH/admin/consumables/general.php +++ b/resources/lang/th-TH/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'คงค้าง', 'total' => 'รวมทั้งหมด', 'update' => 'ปรับปรุงวัสดุสิ้นเปลือง', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/th-TH/admin/consumables/message.php b/resources/lang/th-TH/admin/consumables/message.php index 98f3d3e82b..8690922e8a 100644 --- a/resources/lang/th-TH/admin/consumables/message.php +++ b/resources/lang/th-TH/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'ไม่มีรายการวัสดุสิ้นเปลืองนี้', 'create' => array( diff --git a/resources/lang/th-TH/admin/custom_fields/message.php b/resources/lang/th-TH/admin/custom_fields/message.php index 5824244772..c2244df249 100644 --- a/resources/lang/th-TH/admin/custom_fields/message.php +++ b/resources/lang/th-TH/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'ฟิลด์นั้นไม่มีอยู่', 'already_added' => 'ฟิลด์ถูกเพิ่มแล้ว', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'ไม่ได้สร้างฟิลด์โปรดลองอีกครั้ง', diff --git a/resources/lang/th-TH/admin/hardware/message.php b/resources/lang/th-TH/admin/hardware/message.php index 3224c4966c..759fed3662 100644 --- a/resources/lang/th-TH/admin/hardware/message.php +++ b/resources/lang/th-TH/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'คำเตือน: สินทรัพย์นี้ถูกกำหนดสถานะให้ไม่สามารถใช้งานได้ หากสถานะนี้ถูกเปลี่ยน กรุณาอัพเดทสถานะสินทรัพย์ด้วย', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'ไม่มีสินทรัพย์', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'บางรายการไม่สามารถนำเข้าได้อย่างถูกต้อง', 'errorDetail' => 'รายการต่อไปนี้ไม่ได้นำเข้าเนื่องจากมีข้อผิดพลาด', 'success' => 'ไฟล์ของคุณถูกนำเข้าแล้ว', diff --git a/resources/lang/th-TH/admin/licenses/general.php b/resources/lang/th-TH/admin/licenses/general.php index 65576f6c05..bb84ed1016 100644 --- a/resources/lang/th-TH/admin/licenses/general.php +++ b/resources/lang/th-TH/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'ข้อมูลใบอนุญาต', 'license_seats' => 'ที่นั่งใบอนุญาต', 'seat' => 'ที่นั่ง', + 'seat_count' => 'Seat :count', 'seats' => 'ที่นั่ง', 'software_licenses' => 'ใบอนุญาตซอฟต์แวร์', 'user' => 'ผู้ใช้งาน', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/th-TH/admin/licenses/message.php b/resources/lang/th-TH/admin/licenses/message.php index d65ce02d9c..d06aee0f37 100644 --- a/resources/lang/th-TH/admin/licenses/message.php +++ b/resources/lang/th-TH/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'มีปัญหาในการตรวจสอบใบอนุญาต กรุณาลองอีกครั้ง.', 'success' => 'ออกใบอนุญาตแล้ว', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/th-TH/admin/models/message.php b/resources/lang/th-TH/admin/models/message.php index 55fc9e046b..9bbf636642 100644 --- a/resources/lang/th-TH/admin/models/message.php +++ b/resources/lang/th-TH/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'โมเดลนี้มีความสัมพันธ์กับสินทรัพย์หนึ่ง หรือมากกว่าในปัจจุบัน และจะไม่สามารถลบได้ กรุณาลบสินทรัพย์และลองอีกครั้ง ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'ยังไม่ได้สร้างโมเดล กรุณาลองใหม่อีกครั้ง', diff --git a/resources/lang/th-TH/admin/settings/general.php b/resources/lang/th-TH/admin/settings/general.php index 9b3b175c8e..05dde6ff62 100644 --- a/resources/lang/th-TH/admin/settings/general.php +++ b/resources/lang/th-TH/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'นี่เป็นการทดสอบว่า LDAP สามารถซิงค์ได้อย่างถูกต้อง หากแบบสอบถามการตรวจสอบสิทธิ์ LDAP ของคุณไม่ถูกต้องผู้ใช้อาจยังไม่สามารถเข้าสู่ระบบได้ คุณต้องบันทึกการตั้งค่า LDAP ที่อัปเดตก่อน', 'ldap_manager' => 'LDAP Manager', 'ldap_server' => 'เซิร์ฟเวอร์ LDAP', - 'ldap_server_help' => 'ซึ่งควรเริ่มต้นด้วย ldap: // (สำหรับ unencrypted หรือ TLS) หรือ ldaps: // (สำหรับ SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'การตรวจสอบใบรับรอง SSL LDAP', 'ldap_server_cert_ignore' => 'อนุญาตใบรับรอง SSL ที่ไม่ถูกต้อง', 'ldap_server_cert_help' => 'เลือกช่องทำเครื่องหมายนี้ถ้าคุณใช้ใบรับรอง SSL ที่ลงนามด้วยตนเองและต้องการยอมรับใบรับรอง SSL ที่ไม่ถูกต้อง', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'ไลเซนซ์ซอฟต์แวร์', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'ออฟชั่นเสริม', 'per_page' => 'ผลการค้นหาต่อหน้า', 'php' => 'เวอร์ชัน PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/th-TH/button.php b/resources/lang/th-TH/button.php index 063b7fdcf7..5fe43c81ac 100644 --- a/resources/lang/th-TH/button.php +++ b/resources/lang/th-TH/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'เลือกทั้งหมดและลบผู้ใช้', 'delete' => 'ลบ', 'edit' => 'แก้ไข', + 'clone' => 'Clone', 'restore' => 'นำกลับ', 'remove' => 'ลบออก', 'request' => 'ร้องขอ', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'เพิ่มรายการซ่อมบำรุง', 'append' => 'เพิ่ม', 'new' => 'สร้างใหม่', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/th-TH/general.php b/resources/lang/th-TH/general.php index 9ad71af728..382db65e2c 100644 --- a/resources/lang/th-TH/general.php +++ b/resources/lang/th-TH/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'ข้อมูลเพิ่มเติม', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'วันที่หมดอายุ', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/th-TH/mail.php b/resources/lang/th-TH/mail.php index 3af4071ec5..d8368bac99 100644 --- a/resources/lang/th-TH/mail.php +++ b/resources/lang/th-TH/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'ฉันได้อ่านและยอมรับข้อกำหนดในการให้บริการแล้วและได้รับสินค้านี้แล้ว', 'inventory_report' => 'Inventory Report', 'item' => 'รายการ:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'มี: ใบอนุญาตที่จะหมดอายุในวันถัดไป: วันที่กำหนด|มี: ใบอนุญาตที่จะหมดอายุในวันถัดไป: วันที่กำหนด', 'link_to_update_password' => 'โปรดคลิกลิงก์ต่อไปนี้เพื่ออัปเดต: รหัสผ่านเว็บ:', 'login' => 'เข้าสู่ระบบ:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'ผู้ใช้งาน', 'username' => 'ชื่อผู้ใช้', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'ยินดีต้อนรับ: ชื่อ', 'welcome_to' => 'ยินดีต้อนรับสู่: web!', 'your_assets' => 'ดูสินทรัพย์ที่มี', 'your_credentials' => 'ข้อมูลรับรอง Snipe-IT ของคุณ', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/th-TH/validation.php b/resources/lang/th-TH/validation.php index 9b7e7c2cf4..e92dff1269 100644 --- a/resources/lang/th-TH/validation.php +++ b/resources/lang/th-TH/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute ต้องได้รับการยอมรับ', - 'active_url' => ':attribute ไม่ใช่ URL ที่ถูกต้อง', - 'after' => ':attribute ต้องเป็นวันที่หลังจาก :date', - 'after_or_equal' => 'แอตทริบิวต์: ต้องเป็นวันที่หลังจากหรือเท่ากับ: date', - 'alpha' => ':attribute ต้องมีเฉพาะตัวอักษรเท่านั้น', - 'alpha_dash' => ':attribute ต้องมีเฉพาะตัวอักษร ตัวเลข หรือเครื่องหมายลบเท่านั้น', - 'alpha_num' => ':attribute ต้องมีเฉพาะตัวอักษรและตัวเลขเท่านั้น', - 'array' => 'แอตทริบิวต์: ต้องเป็นอาร์เรย์', - 'before' => ':attribute ต้องเป็นวันที่ก่อน :date', - 'before_or_equal' => 'แอตทริบิวต์: ต้องเป็นวันที่ก่อนหรือเท่ากับ: date', - 'between' => [ - 'numeric' => ':attribute ต้องอยู่ระหว่าง :min - :max', - 'file' => ':attribute ต้องมีขนาดระหว่าง :min - :max กิโลไบต์', - 'string' => ':attribute ต้องมีจำนวนระหว่าง :min - :max ตัวอักษร', - 'array' => 'แอตทริบิวต์: ต้องมีระหว่าง: min และ: max items', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'ฟิลด์แอ็ตทริบิวต์: ต้องเป็น true หรือ false', - 'confirmed' => ':attribute ไม่ตรงกัน', - 'date' => ':attribute เป็นรูปแบบวันที่ที่ไม่ถูกต้อง', - 'date_format' => ':attribute ไม่ตรงตามรูปแบบ :format', - 'different' => ':attribute และ :other ต้องไม่เหมือนกัน', - 'digits' => ':attribute ต้องเป็น :digits ตัวเลข', - 'digits_between' => ':attribute ต้องเป็นตัวเลขระหว่าง :min และ :max', - 'dimensions' => 'แอตทริบิวต์: มีมิติข้อมูลภาพที่ไม่ถูกต้อง', - 'distinct' => 'ฟิลด์แอ็ตทริบิวต์: มีค่าซ้ำกัน', - 'email' => 'รูปแบบของ :attribute ไม่ถูกต้อง', - 'exists' => ':attribute ที่เลือกไม่ถูกต้อง', - 'file' => 'แอตทริบิวต์: ต้องเป็นไฟล์', - 'filled' => 'ฟิลด์แอ็ตทริบิวต์ต้องมีค่า', - 'image' => ':attribute ต้องเป็นรูปภาพเท่านั้น', + 'boolean' => 'ฟิลด์แอ็ตทริบิวต์: ต้องเป็น true หรือ false', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'ฟิลด์แอ็ตทริบิวต์: มีค่าซ้ำกัน', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => ':attribute ที่เลือกไม่ถูกต้อง', + 'exists' => ':attribute ที่เลือกไม่ถูกต้อง', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'ฟิลด์แอ็ตทริบิวต์ต้องมีค่า', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => ':attribute ที่เลือกไม่ถูกต้อง', - 'in_array' => 'ฟิลด์แอ็ตทริบิวต์: ไม่มีใน: other', - 'integer' => ':attribute ต้องเป็นจำนวนเต็มเท่านั้น', - 'ip' => ':attribute ต้องเป็นรูปแบบไอพีแอดเดรสเท่านั้น', - 'ipv4' => 'แอตทริบิวต์: ต้องเป็นที่อยู่ IPv4 ที่ถูกต้อง', - 'ipv6' => 'แอตทริบิวต์: ต้องเป็นที่อยู่ IPv6 ที่ถูกต้อง', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'แอตทริบิวต์: ต้องเป็นสตริง JSON ที่ถูกต้อง', - 'max' => [ - 'numeric' => ':attribute ต้องไม่มากกว่า :max', - 'file' => ':attribute ต้องไม่มีขนาดมากกว่า :max กิโลไบต์', - 'string' => ':attribute ต้องไม่มีจำนวนตัวอักษรมากกว่า :max ตัวอักษร', - 'array' => 'แอตทริบิวต์: ไม่สามารถมีได้มากกว่า: รายการสูงสุด', + 'in' => ':attribute ที่เลือกไม่ถูกต้อง', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute ต้องเป็นรูปแบบไฟล์ดังนี้: :values', - 'mimetypes' => 'แอตทริบิวต์: ต้องเป็นไฟล์ประเภท:: values', - 'min' => [ - 'numeric' => ':attribute ต้องมีอย่างน้อย :min', - 'file' => ':attribute ต้องมีขนาดอย่างน้อย :min กิโลไบต์', - 'string' => ':attribute ต้องมีจำนวนอย่างน้อย :min ตัวอักษร', - 'array' => 'แอตทริบิวต์: ต้องมีอย่างน้อย: รายการต่ำสุด', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => ':attribute ที่เลือกไม่ถูกต้อง', - 'numeric' => ':attribute ต้องเป็นตัวเลขเท่านั้น', - 'present' => 'ฟิลด์แอ็ตทริบิวต์: ต้องมีอยู่', - 'valid_regex' => 'นั่นไม่ใช่ regex ที่ถูกต้อง ', - 'regex' => 'รูปแบบของ :attribute ไม่ถูกต้อง', - 'required' => 'กรุณากรอกข้อมูลในฟิลด์ :attribute', - 'required_if' => 'ฟิลด์ :attribute จำเป็นต้องมีข้อมูล เมื่อ :other เป็น :value', - 'required_unless' => 'ฟิลด์แอ็ตทริบิวต์: ต้องใช้เว้นแต่กรณี: อื่น ๆ อยู่ใน: values', - 'required_with' => 'ฟิลด์ :attribute จำเป็นต้องมีข้อมูล เมื่อ :value มีข้อมูลอยู่ด้วย', - 'required_with_all' => 'ฟิลด์แอ็ตทริบิวต์: ต้องระบุเมื่อ: มีค่าอยู่', - 'required_without' => 'ฟิลด์ :attribute จำเป็นต้องมีข้อมูล เมื่อ :value ไม่มีข้อมูล', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => ':attribute ที่เลือกไม่ถูกต้อง', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'ฟิลด์แอ็ตทริบิวต์: ต้องมีอยู่', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'กรุณากรอกข้อมูลในฟิลด์ :attribute', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'ฟิลด์ :attribute จำเป็นต้องมีข้อมูล เมื่อ :other เป็น :value', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'ฟิลด์แอ็ตทริบิวต์: ต้องใช้เว้นแต่กรณี: อื่น ๆ อยู่ใน: values', + 'required_with' => 'ฟิลด์ :attribute จำเป็นต้องมีข้อมูล เมื่อ :value มีข้อมูลอยู่ด้วย', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'ฟิลด์ :attribute จำเป็นต้องมีข้อมูล เมื่อ :value ไม่มีข้อมูล', 'required_without_all' => 'ฟิลด์แอ็ตทริบิวต์: ต้องระบุเมื่อไม่มี: มีค่าอยู่', - 'same' => ':attribute และ :other ต้องตรงกัน', - 'size' => [ - 'numeric' => ':attribute ต้องมีขนาด :size', - 'file' => ':attribute ต้องมีขนาด :size กิโลไบต์', - 'string' => ':attribute ต้องมีจำนวน :size ตัวอักษร', - 'array' => 'แอตทริบิวต์ต้องมี: รายการขนาด', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'แอตทริบิวต์: ต้องเป็นสตริง', - 'timezone' => 'แอตทริบิวต์: ต้องเป็นโซนที่ถูกต้อง', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute กำลังใช้งานอยู่', - 'uploaded' => 'แอตทริบิวต์: ล้มเหลวในการอัปโหลด', - 'url' => 'รูปแบบของ :attribute ไม่ถูกต้อง', 'unique_undeleted' => 'แอตทริบิวต์ต้องไม่ซ้ำกัน', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute กำลังใช้งานอยู่', + 'uploaded' => 'แอตทริบิวต์: ล้มเหลวในการอัปโหลด', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/tl-PH/account/general.php b/resources/lang/tl-PH/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/tl-PH/account/general.php +++ b/resources/lang/tl-PH/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/tl-PH/admin/accessories/message.php b/resources/lang/tl-PH/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/tl-PH/admin/accessories/message.php +++ b/resources/lang/tl-PH/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/tl-PH/admin/consumables/general.php b/resources/lang/tl-PH/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/tl-PH/admin/consumables/general.php +++ b/resources/lang/tl-PH/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/tl-PH/admin/consumables/message.php b/resources/lang/tl-PH/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/tl-PH/admin/consumables/message.php +++ b/resources/lang/tl-PH/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/tl-PH/admin/custom_fields/message.php b/resources/lang/tl-PH/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/tl-PH/admin/custom_fields/message.php +++ b/resources/lang/tl-PH/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/tl-PH/admin/hardware/message.php b/resources/lang/tl-PH/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/tl-PH/admin/hardware/message.php +++ b/resources/lang/tl-PH/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/tl-PH/admin/licenses/general.php b/resources/lang/tl-PH/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/tl-PH/admin/licenses/general.php +++ b/resources/lang/tl-PH/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/tl-PH/admin/licenses/message.php b/resources/lang/tl-PH/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/tl-PH/admin/licenses/message.php +++ b/resources/lang/tl-PH/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/tl-PH/admin/models/message.php b/resources/lang/tl-PH/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/tl-PH/admin/models/message.php +++ b/resources/lang/tl-PH/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/tl-PH/admin/settings/general.php b/resources/lang/tl-PH/admin/settings/general.php index 44fbc83feb..9bddb75ef6 100644 --- a/resources/lang/tl-PH/admin/settings/general.php +++ b/resources/lang/tl-PH/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/tl-PH/button.php b/resources/lang/tl-PH/button.php index fb8ea31b10..96c4a2b343 100644 --- a/resources/lang/tl-PH/button.php +++ b/resources/lang/tl-PH/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/tl-PH/general.php b/resources/lang/tl-PH/general.php index 763df63862..b49449224a 100644 --- a/resources/lang/tl-PH/general.php +++ b/resources/lang/tl-PH/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/tl-PH/mail.php b/resources/lang/tl-PH/mail.php index b7e7c5b895..d345ee6903 100644 --- a/resources/lang/tl-PH/mail.php +++ b/resources/lang/tl-PH/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Aytem:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/tl-PH/validation.php b/resources/lang/tl-PH/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/tl-PH/validation.php +++ b/resources/lang/tl-PH/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/tr-TR/account/general.php b/resources/lang/tr-TR/account/general.php index f04fa04799..4545d5a4bd 100644 --- a/resources/lang/tr-TR/account/general.php +++ b/resources/lang/tr-TR/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Kişisel API Anahtarları', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', + 'api_key_warning' => 'API token üretildiğinde hemen farklı bir yere kopyalayın. Sonra bir daha göremeyeceksiniz.', 'api_base_url' => 'API\'nizin temel URL\'si şurada bulunur:', 'api_base_url_endpoint' => '/<uçnokta>', 'api_token_expiration_time' => 'API jetonlarınız şu süre içinde sona erecek şekilde ayarlanmıştır:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/tr-TR/admin/accessories/message.php b/resources/lang/tr-TR/admin/accessories/message.php index 538b1d03e3..dccb04dc41 100644 --- a/resources/lang/tr-TR/admin/accessories/message.php +++ b/resources/lang/tr-TR/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Aksesuar çıkışı yapılamadı, lütfen tekrar deneyin', 'success' => 'Aksesuar çıkışı yapıldı.', 'unavailable' => 'Bu ürün zimmetlenemez. Ürün sayısını kontrol edin.', - 'user_does_not_exist' => 'Bu kullanıcı geçersiz. Lütfen tekrar deneyin.' + 'user_does_not_exist' => 'Bu kullanıcı geçersiz. Lütfen tekrar deneyin.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/tr-TR/admin/consumables/general.php b/resources/lang/tr-TR/admin/consumables/general.php index 51e10e4caf..4857916582 100644 --- a/resources/lang/tr-TR/admin/consumables/general.php +++ b/resources/lang/tr-TR/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Kalan', 'total' => 'Toplam', 'update' => 'Sarf malzemesini Güncelle', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/tr-TR/admin/consumables/message.php b/resources/lang/tr-TR/admin/consumables/message.php index e20aeb6931..b2e2de5c27 100644 --- a/resources/lang/tr-TR/admin/consumables/message.php +++ b/resources/lang/tr-TR/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Sarf malzemesi mevcut değil.', 'create' => array( diff --git a/resources/lang/tr-TR/admin/custom_fields/message.php b/resources/lang/tr-TR/admin/custom_fields/message.php index f7d6ab765b..1b06a55a95 100644 --- a/resources/lang/tr-TR/admin/custom_fields/message.php +++ b/resources/lang/tr-TR/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Bu alan geçersiz.', 'already_added' => 'Alan zaten mevcut', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Alan oluşturulamadı. Lütfen tekrar deneyin.', diff --git a/resources/lang/tr-TR/admin/hardware/general.php b/resources/lang/tr-TR/admin/hardware/general.php index 95b2c354f8..d5bbc9c3a8 100644 --- a/resources/lang/tr-TR/admin/hardware/general.php +++ b/resources/lang/tr-TR/admin/hardware/general.php @@ -15,7 +15,7 @@ return [ 'delete_confirm' => 'Bu ürünü silmek istediğinize eminmisiniz?', 'edit' => 'Demirbaşı Düzenle', 'model_deleted' => 'Bu varlık modeli silindi. Varlığı geri almak için modelini geri almalısınız.', - 'model_invalid' => 'This model for this asset is invalid.', + 'model_invalid' => 'Bu model bu varlık için değildir.', 'model_invalid_fix' => 'The asset must be updated use a valid asset model before attempting to check it in or out, or to audit it.', 'requestable' => 'Talep edilebilir', 'requested' => 'Talep edildi', diff --git a/resources/lang/tr-TR/admin/hardware/message.php b/resources/lang/tr-TR/admin/hardware/message.php index 54e230aaea..ea01703b93 100644 --- a/resources/lang/tr-TR/admin/hardware/message.php +++ b/resources/lang/tr-TR/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Uyarı: Bu demirbaş dağıtılamaz olarak işlaretlenmiş. - Eğer durumu değişti ise, lütfen Demirbaş Durumu\'nu güncelleyiniz.', + 'undeployable' => 'Uyarı: Bu demirbaş dağıtılamaz durumdadır. Eğer bu durum değişti ise demirbaş durumunu değiştiriniz.', 'does_not_exist' => 'Demirbaş mevcut değil.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'İçeri aktarma işlemi', 'error' => 'Bazı öğeler doğru şekilde içe aktarılamadı.', 'errorDetail' => 'Aşağıdaki öğeler hatalar nedeniyle alınamadı.', 'success' => 'Dosyanızı içe aktarıldı', diff --git a/resources/lang/tr-TR/admin/licenses/general.php b/resources/lang/tr-TR/admin/licenses/general.php index ae1cb5c74e..a4955bd828 100644 --- a/resources/lang/tr-TR/admin/licenses/general.php +++ b/resources/lang/tr-TR/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Lisans Bilgisi', 'license_seats' => 'Lisans Kullanıcıları', 'seat' => 'Kullanıcı', + 'seat_count' => 'Seat :count', 'seats' => 'Kullanıcılar', 'software_licenses' => 'Yazılım Lisansları', 'user' => 'Kullanıcı', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Tüm koltukları ayır', - 'modal' => 'Bu, bir koltukta kontrol işlemini gerçekleştirecektir. | Bu işlem, bu lisans için tüm :checkedout_seats_count koltukları kontrol edecektir.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Bu lisans için hem kullanıcılardan hem de varlıklardan TÜM lisansları kontrol edin', 'disabled_tooltip' => 'Şu anda teslim alınmış koltuk olmadığından bu devre dışı bırakıldı', 'disabled_tooltip_reassignable' => 'Lisans yeniden atanamadığı için bu devre dışı bırakıldı', 'success' => 'Lisans başarıyla kontrol edildi! | Tüm lisanslar başarıyla kontrol edildi!', - 'log_msg' => 'Lisans GUI\'sinde toplu lisans ödemesi yoluyla giriş yapıldı', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/tr-TR/admin/licenses/message.php b/resources/lang/tr-TR/admin/licenses/message.php index 2b417a85b4..9d4a40bc59 100644 --- a/resources/lang/tr-TR/admin/licenses/message.php +++ b/resources/lang/tr-TR/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Lisans çıkışı yapılırken hata oluştu. Lütfen tekrar deneyin.', 'success' => 'Lisans çıkışı yapıldı.', 'not_enough_seats' => 'Ödeme için yeterli sayıda lisans yeri yok', + 'mismatch' => 'Girdiğiniz bu lisans türü lisans ile eşleşmiyor.', + 'unavailable' => 'Bu varlığı atayamazsınız.', ), 'checkin' => array( diff --git a/resources/lang/tr-TR/admin/locations/message.php b/resources/lang/tr-TR/admin/locations/message.php index ff8b6cee9a..c3e6658c83 100644 --- a/resources/lang/tr-TR/admin/locations/message.php +++ b/resources/lang/tr-TR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Konum mevcut değil.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'Bu bölüm silinemez, çünkü herhangi bir varlığın yada kullanıcının bilgisi yazılmakta. Bu haneyi kullanan kayıtları ve şirket bilgilerini murakabe ederek tekrar deneyin.', 'assoc_assets' => 'Bu konum şu anda en az bir varlık ile ilişkili ve silinemez. Lütfen artık bu konumu kullanabilmek için varlık konumlarını güncelleştirin.', 'assoc_child_loc' => 'Bu konum şu anda en az bir alt konum üstüdür ve silinemez. Lütfen artık bu konuma ait alt konumları güncelleyin. ', 'assigned_assets' => 'Atanan Varlıklar', diff --git a/resources/lang/tr-TR/admin/models/message.php b/resources/lang/tr-TR/admin/models/message.php index 85c12dcc29..7874505c73 100644 --- a/resources/lang/tr-TR/admin/models/message.php +++ b/resources/lang/tr-TR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'UYARI! Bu öğeye ilişkin varlık modeli geçersiz veya eksik!', 'no_association_fix' => 'Bu değişiklik bazı şeylerin garip ve tuhaf bir şekilde bozulmasına yol açabilir. Bu varlığı bir modelle ilişkilendirmek için düzeltin.', 'assoc_users' => 'Model bir ya da daha çok demirbaş ile ilişkili ve silinemez. Lütfen demirbaşları silin ve tekrar deneyin. ', - + 'invalid_category_type' => 'Kategori, bir varlık kategorisi olmak zorunda.', 'create' => array( 'error' => 'Klasör oluşturulmadı, lütfen tekrar deneyin.', diff --git a/resources/lang/tr-TR/admin/settings/general.php b/resources/lang/tr-TR/admin/settings/general.php index a1d7d03d08..1cf10640a3 100644 --- a/resources/lang/tr-TR/admin/settings/general.php +++ b/resources/lang/tr-TR/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Bu sadece LDAP\'ın doğru şekilde senkron edilebildiğini test eder. Eğer LDAP Kimlik Doğrulama sorgunuz doğru değilse, kullanıcılar giriş yapamayabilirler. ÖNCE GÜNCEL LDAP AYARLARINI KAYDETMELİSİN.', 'ldap_manager' => 'LDAP Yöneticisi', 'ldap_server' => 'LDAP Sunucu', - 'ldap_server_help' => 'ldap:// (şifrelenmemiş veya TLS) veya ldaps:// (SSL için) ile başlamalıdır', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL sertifikası doğrulama', 'ldap_server_cert_ignore' => 'Geçersiz SSL sertifikası kabul et', 'ldap_server_cert_help' => 'Kendinden imzalı bir SSL sertifikası kullanıyorsanız ve geçersiz bir SSL sertifikası kabul etmek istiyorsanız bu onay kutusunu seçin.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'LDAP Senkronizasyonunu test et', 'license' => 'Yazılım Lisansı', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Giriş Denemesi', 'login_attempt' => 'Giriş Denemesi', 'login_ip' => 'İp adresi', @@ -150,7 +150,7 @@ return [ 'optional' => 'İsteğe bağlı', 'per_page' => 'Sayfa başına sonuç sayısı', 'php' => 'PHP Versiyonu', - 'php_info' => 'PHP Bilgisi', + 'php_info' => 'PHP bilgisi', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -376,5 +376,9 @@ return [ 'timezone' => 'Zaman Dilimi', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Varsayılan olarak kullanılacak avatarınızı yükleyin.', + 'default_avatar_help' => 'Kullanıcı profil fotoğrafı yüklememişse bu görsel profil fotoğrafı olacak.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/tr-TR/button.php b/resources/lang/tr-TR/button.php index 1b18fdfee9..58b4475b0a 100644 --- a/resources/lang/tr-TR/button.php +++ b/resources/lang/tr-TR/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Tümünü Kontrol Et / Kullanıcıyı Sil', 'delete' => 'Sil', 'edit' => 'Düzenle', + 'clone' => 'Clone', 'restore' => 'Geri yükle', 'remove' => 'Kaldır', 'request' => 'İstek', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Bakım ekle', 'append' => 'Ekle', 'new' => 'Yeni', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/tr-TR/general.php b/resources/lang/tr-TR/general.php index d11d58cb48..9b68f57a6d 100644 --- a/resources/lang/tr-TR/general.php +++ b/resources/lang/tr-TR/general.php @@ -552,6 +552,14 @@ Context | Request Context 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Daha Fazla Bilgi', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Bitiş', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/tr-TR/mail.php b/resources/lang/tr-TR/mail.php index a66e78bdb9..e4f9a1bf19 100644 --- a/resources/lang/tr-TR/mail.php +++ b/resources/lang/tr-TR/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Okudum ve kullanım şartlarını ve bu varlığı kabul ediyorum.', 'inventory_report' => 'Envanter Raporu', 'item' => 'Ürün:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Şu var: bir sonraki günlerde süren lisans sayımı: eşik günleri. | Şunlar var: bir sonraki günlerde süren sayım lisansları: eşik günleri.', 'link_to_update_password' => 'Şifrenizi güncellemek için aşağıdaki linke tıklayınız :web password:', 'login' => 'Giriş:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => ':count gün içinde denetime yaklaşan :count varlık var.|Eşik gün içinde denetime yaklaşan :count varlık var.', 'user' => 'Kullanıcı', 'username' => 'Kullanıcı Adı', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Hoşgeldiniz, :name', 'welcome_to' => 'Hoş geldiniz :web!', 'your_assets' => 'Varlıkları Görüntüleme', 'your_credentials' => 'Snipe-IT Bilgileriniz', + 'mail_sent' => 'E-posta başarılı şekilde gönderildi.', ]; diff --git a/resources/lang/tr-TR/validation.php b/resources/lang/tr-TR/validation.php index 7f3a648fa0..7923f8b742 100644 --- a/resources/lang/tr-TR/validation.php +++ b/resources/lang/tr-TR/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ': attribute benzersiz olması gerekir.', - 'active_url' => ':attribute geçersiz URL.', - 'after' => ':attribute :date sonra olmalı.', - 'after_or_equal' => ': Özniteliği, tarihten veya sonrasına ait bir tarih olmalıdır: date.', - 'alpha' => ':attribute sadece harf içermeli.', - 'alpha_dash' => ':attribute sadece harf, rakam ve noktalama işaretleri olabilir.', - 'alpha_num' => ':attribute sadece harf ve rakam olabilir.', - 'array' => ': Nitelik bir dizi olmalıdır.', - 'before' => ':attribute :date den önce olmalı.', - 'before_or_equal' => ': Özniteliği, tarihten önce veya ona eşit bir tarih olmalıdır: date.', - 'between' => [ - 'numeric' => ':attribute :min - :max arasında olmalı.', - 'file' => ':attribute :min - :max Kb arasında olmalı.', - 'string' => ':attribute :min - :max karakter arasında olmalı.', - 'array' => ': Özelliği,: min ve: max öğeleri arasında olmalıdır.', + 'accepted' => 'Nitelik hanesi kabul edilmelidir.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute doğru veya yanlış olabilir.', - 'confirmed' => ':attribute doğrulama uyuşmuyor.', - 'date' => ':attribute geçerli bir tarih değil.', - 'date_format' => ':attribute biçim geçersiz.', - 'different' => ':attribute ve :other farklı olmalı.', - 'digits' => ':attribute :digits numara olmalı.', - 'digits_between' => ':attribute :min ve :max numara.', - 'dimensions' => ': Özniteliği geçersiz görüntü boyutlarına sahip.', - 'distinct' => ': Öznitelik alanı yinelenen bir değere sahip.', - 'email' => ':attribute biçim geçersiz.', - 'exists' => ':attribute seçim geçersiz.', - 'file' => ': Özniteliği bir dosya olmalıdır.', - 'filled' => ': Attribute alanının bir değeri olmalıdır.', - 'image' => ':attribute bir görüntü olması gerekir.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ': Öznitelik alanı yinelenen bir değere sahip.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => ':attribute geçersiz.', + 'exists' => ':attribute seçim geçersiz.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ': Attribute alanının bir değeri olmalıdır.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Bu değer için :alan adı boş olamaz.', - 'in' => ':attribute geçersiz.', - 'in_array' => ': Attribute alanı yok diğeri.', - 'integer' => ':attribute bir tamsayı olmalıdır.', - 'ip' => ':attribute geçerli bir IP adresi olması gerekir.', - 'ipv4' => ': Özniteliği geçerli bir IPv4 adresi olmalıdır.', - 'ipv6' => ': Özniteliği geçerli bir IPv6 adresi olmalıdır.', - 'is_unique_department' => 'Öznitelik bu Şirket Konumuna özgü olmalıdır', - 'json' => ': Özniteliği geçerli bir JSON dizesi olmalıdır.', - 'max' => [ - 'numeric' => ':attribute :max dan büyük olmalı.', - 'file' => ':attribute :max Kb tan büyük olmalı.', - 'string' => ':attribute :max karakterden büyük olamaz.', - 'array' => ': Özniteliği, maksimum öğelerden fazla olamaz.', + 'in' => ':attribute geçersiz.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute :values türleri olmalı.', - 'mimetypes' => ': Özniteliği,:: değerleri türünde bir dosya olmalıdır.', - 'min' => [ - 'numeric' => ':attribute :min den küçük olmalı.', - 'file' => ':attribute :min Kb tan küçük olmalı.', - 'string' => ':attribute :min karakterden küçük olmalı.', - 'array' => ': Özelliği en az: dakika öğesine sahip olmalıdır.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'Özellik aşağıdaki değerlerden biriyle başlamalıdır.', - 'ends_with' => ':attribute aşağıdakilerden biriyle bitmelidir: :values.', - - 'not_in' => ':attribute geçersiz.', - 'numeric' => ':attribute sayı olmalıdır.', - 'present' => ': Attribute alanı bulunmalıdır.', - 'valid_regex' => 'Bu geçerli bir regex değildir.', - 'regex' => ':attribute formatı geçersiz.', - 'required' => ':attribute alanı zorunludur.', - 'required_if' => ':attribute :other :value geçersiz.', - 'required_unless' => ': Attribute alanı, aşağıdaki koşullar haricinde: other is in: values.', - 'required_with' => ':attribute :values geçersiz.', - 'required_with_all' => ': Öznitelik alanı, şu durumlarda gereklidir: değerler mevcut.', - 'required_without' => ':attribute :values geçersiz.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => ':attribute geçersiz.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ': Attribute alanı bulunmalıdır.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute alanı zorunludur.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute :other :value geçersiz.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => ': Attribute alanı, aşağıdaki koşullar haricinde: other is in: values.', + 'required_with' => ':attribute :values geçersiz.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => ':attribute :values geçersiz.', 'required_without_all' => ': Özellik alanının hiçbiri: değerleri mevcut değilse gereklidir.', - 'same' => ':attribute ve :other aynı olmalı.', - 'size' => [ - 'numeric' => ':attribute :size olmalı.', - 'file' => ':attribute :size Kb olmalı.', - 'string' => ':attribute :size karakter olmalı.', - 'array' => ': Özniteliği: boyut öğeleri içermelidir.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ': Özniteliği bir dize olmalıdır.', - 'timezone' => ': Özniteliği geçerli bir bölge olmalıdır.', 'two_column_unique_undeleted' => ':attribute :table1 ve :table2 genelinde benzersiz olmalıdır. ', - 'unique' => ':attribute zaten alınmış.', - 'uploaded' => ': Özniteliği yüklenemedi.', - 'url' => ':attribute biçim geçersiz.', 'unique_undeleted' => ':attribute benzersiz olmalıdır.', 'non_circular' => ':attribute döngüsel bir başvuru oluşturmamalıdır.', 'not_array' => ':attribute bir dizi olamaz.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Şifre en az bir rakam içermelidir.', 'case_diff' => 'Şifre hem büyük hem küçük harf içermelidir.', 'symbols' => 'Şifre sembol içermelidir.', - 'gte' => [ - 'numeric' => 'Değer negatif olamaz' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute zaten alınmış.', + 'uploaded' => ': Özniteliği yüklenemedi.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute YYYY-MM-DD tarih formatında olmalıdır', 'last_audit_date.date_format' => ':attribute YYYY-MM-DD hh:mm:ss tarih formatında olmalıdır', 'expiration_date.date_format' => ':attribute YYYY-MM-DD şeklinde geçerli bir tarih formatında olmalıdır', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute YYYY-MM-DD şeklinde geçerli bir tarih formatında olmalıdır', 'start_date.date_format' => ':attribute YYYY-MM-DD şeklinde geçerli bir tarih formatında olmalıdır', 'end_date.date_format' => ':attribute YYYY-MM-DD şeklinde geçerli bir tarih formatında olmalıdır', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/uk-UA/account/general.php b/resources/lang/uk-UA/account/general.php index eb5b534136..16e27eff7a 100644 --- a/resources/lang/uk-UA/account/general.php +++ b/resources/lang/uk-UA/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Особисті ключі API', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Ваша базова URL-адреса API:', 'api_base_url_endpoint' => '/<ресурс>', 'api_token_expiration_time' => 'API токени закінчуються:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/uk-UA/admin/accessories/message.php b/resources/lang/uk-UA/admin/accessories/message.php index 42f5f12f93..ccc8b59b2e 100644 --- a/resources/lang/uk-UA/admin/accessories/message.php +++ b/resources/lang/uk-UA/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Аксесуар не був відмічений, будь ласка, спробуйте ще раз', 'success' => 'Аксесуар успішно видано.', 'unavailable' => 'Аксесуар недоступний для оформлення замовлення. Перевірте кількість доступних', - 'user_does_not_exist' => 'Невірний користувач. Спробуйте ще раз.' + 'user_does_not_exist' => 'Невірний користувач. Спробуйте ще раз.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/uk-UA/admin/consumables/general.php b/resources/lang/uk-UA/admin/consumables/general.php index 2611a9a6b6..86fdeed119 100644 --- a/resources/lang/uk-UA/admin/consumables/general.php +++ b/resources/lang/uk-UA/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Залишилось', 'total' => 'Загалом', 'update' => 'Оновити витратний матеріал', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/uk-UA/admin/consumables/message.php b/resources/lang/uk-UA/admin/consumables/message.php index d875be1d66..6d4bbf236e 100644 --- a/resources/lang/uk-UA/admin/consumables/message.php +++ b/resources/lang/uk-UA/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Витратний матеріал не існує.', 'create' => array( diff --git a/resources/lang/uk-UA/admin/custom_fields/message.php b/resources/lang/uk-UA/admin/custom_fields/message.php index e9bc38383a..c7e6e7dd44 100644 --- a/resources/lang/uk-UA/admin/custom_fields/message.php +++ b/resources/lang/uk-UA/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Це поле не існує.', 'already_added' => 'Поле вже додане', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Поле не створено, будь ласка, спробуйте ще раз.', diff --git a/resources/lang/uk-UA/admin/hardware/message.php b/resources/lang/uk-UA/admin/hardware/message.php index 13172a9e01..6a639a0b59 100644 --- a/resources/lang/uk-UA/admin/hardware/message.php +++ b/resources/lang/uk-UA/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Попередження: цей актив позначено як такий, що наразі неможливо розгорнути. - Якщо цей статус змінився, оновіть статус активу.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Медіафайл не існує.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Деякі елементи не імпортовано належним чином.', 'errorDetail' => 'Наступні елементи не були імпортовані через помилки.', 'success' => 'Ваш файл імпортовано', diff --git a/resources/lang/uk-UA/admin/licenses/general.php b/resources/lang/uk-UA/admin/licenses/general.php index 50efbeffcb..8bfe1112c9 100644 --- a/resources/lang/uk-UA/admin/licenses/general.php +++ b/resources/lang/uk-UA/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Інформація про ліцензію', 'license_seats' => 'Місця ліцензії', 'seat' => 'Місце', + 'seat_count' => 'Seat :count', 'seats' => 'Кількість місць', 'software_licenses' => 'Ліцензії на програмне забезпечення', 'user' => 'Користувач', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Прийняти всі місця', - 'modal' => 'Це призведе до перевірки дій в одному місці. | Ця дія буде перевіряти всі :checkedout_seats_count місць для цієї ліцензії.', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => 'Прийняти ВСІ місця для цієї ліцензії від користувачів і активів', 'disabled_tooltip' => 'Це вимкнено, тому що наразі немає місць', 'disabled_tooltip_reassignable' => 'Це вимкнено, оскільки ліцензія не є розумною', 'success' => 'Ліцензія успішно перевірена! | Всі ліцензії успішно перевірені!', - 'log_msg' => 'Перевірено через масову ліцензію з використанням GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/uk-UA/admin/licenses/message.php b/resources/lang/uk-UA/admin/licenses/message.php index 97b3edcad7..62bde52397 100644 --- a/resources/lang/uk-UA/admin/licenses/message.php +++ b/resources/lang/uk-UA/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Виникла проблема з перевіркою ліцензії. Спробуйте ще раз.', 'success' => 'Ліцензію успішно перевірено', 'not_enough_seats' => 'Недостатньо вільних ліцензійних місць для оформлення замовлення', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/uk-UA/admin/models/message.php b/resources/lang/uk-UA/admin/models/message.php index a19a1d2f42..f3f60415eb 100644 --- a/resources/lang/uk-UA/admin/models/message.php +++ b/resources/lang/uk-UA/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'УВАГА! Модель активу для цього елемента невірна або відсутня!', 'no_association_fix' => 'Це може порушити речі дивним і жахливим способом. Відредагуйте цей актив щоб призначити йому модель.', 'assoc_users' => 'Ця модель пов\'язана в даний час з одним або більше активами і не може бути видалена. Будь ласка, видаліть активи, а потім спробуйте видалити їх. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Модель не було створено, спробуйте ще раз.', diff --git a/resources/lang/uk-UA/admin/settings/general.php b/resources/lang/uk-UA/admin/settings/general.php index e3ccb3ef87..17ad04660a 100644 --- a/resources/lang/uk-UA/admin/settings/general.php +++ b/resources/lang/uk-UA/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Це тільки тести, що LDAP може синхронізувати правильно. Якщо ваша запит автентифікації LDAP не правильна, користувачі все одно можуть увійти в систему. Ви ПОВИННІ ЗБЕРЕГТИ ВАШ ВИДАЛЕНО ДОДАТНО ДОСТУПНІ ПЕРШЕНЬ.', 'ldap_manager' => 'Менеджер LDAP', 'ldap_server' => 'Сервер LDAP', - 'ldap_server_help' => 'Це має починатися з ldap:// (для незашифрованих або TLS) або ldaps:// (для SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Перевірка SSL сертифікату LDAP', 'ldap_server_cert_ignore' => 'Дозволити недійсний SSL сертифікат', 'ldap_server_cert_help' => 'Виберіть цей прапорець, якщо ви використовуєте самостійно підписаний SSL сертифікат і хотіли б прийняти неприпустимий SSL сертифікат.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Тестувати LDAP', 'ldap_test_sync' => 'Тестувати синхронізацію LDAP', 'license' => 'Ліцензія програмного забезпечення', - 'load_remote' => 'Використовувати Gravatar', - 'load_remote_help_text' => 'Зніміть цей прапорець, якщо інсталяція не може завантажити скрипти з зовнішнього Інтернету. Це дозволить Snipe-IT завантажити зображення з Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Спроби входу в систему', 'login_attempt' => 'Спроби входу в систему', 'login_ip' => 'IP-адреса', @@ -150,7 +150,7 @@ return [ 'optional' => 'необов\'язково', 'per_page' => 'Результатів на стор', 'php' => 'Версія PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, система, інформація', 'php_overview_help' => 'Інформація про систему PHP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/uk-UA/button.php b/resources/lang/uk-UA/button.php index 6476240a38..3d5e15a214 100644 --- a/resources/lang/uk-UA/button.php +++ b/resources/lang/uk-UA/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Прийняти все / Видалити користувача', 'delete' => 'Видалити', 'edit' => 'Редагувати', + 'clone' => 'Clone', 'restore' => 'Відновити', 'remove' => 'Видалити', 'request' => 'Запит', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Додати тех. обслуговування', 'append' => 'Додати', 'new' => 'Нове', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/uk-UA/general.php b/resources/lang/uk-UA/general.php index 7b4fa76d92..7a61d20e40 100644 --- a/resources/lang/uk-UA/general.php +++ b/resources/lang/uk-UA/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count реалізація|:count місця для ліцензії', 'consumables' => ':count витратно|:count витратних товарів', 'components' => ':count компонент|:count компонентів', - ] + ], + 'more_info' => 'Детальніше', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Термін закінчується', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/uk-UA/mail.php b/resources/lang/uk-UA/mail.php index fb1de21071..7d5f210ffe 100644 --- a/resources/lang/uk-UA/mail.php +++ b/resources/lang/uk-UA/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Я прочитав і згоден з умовами використання даного товару.', 'inventory_report' => 'Звіт про запаси', 'item' => 'Елемент:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'В наступні :threshold днів закінчується :count термін дії ліцензії для наступних :threshold днів.|В наступному :threshold строк дії ліцензії.', 'link_to_update_password' => 'Будь-ласка, натисніть на це посилання, щоб оновити свій пароль:', 'login' => 'Логін:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Знайдено :count актив, що наближається до аудиту в :threshold днів.|Є :count активів, які йдуть до аудиту в :threshold днів.', 'user' => 'Користувач', 'username' => 'Ім\'я кристувача', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Ласкаво просимо, :name', 'welcome_to' => 'Ласкаво просимо до :web!', 'your_assets' => 'Переглянути Ваші Активи', 'your_credentials' => 'Ваші облікові дані Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/uk-UA/validation.php b/resources/lang/uk-UA/validation.php index c758303444..27c20c9a93 100644 --- a/resources/lang/uk-UA/validation.php +++ b/resources/lang/uk-UA/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'Ви повинні прийняти :attribute.', - 'active_url' => 'Поле :attribute не є правильним URL.', - 'after' => 'Поле :attribute має містити дату не раніше :date.', - 'after_or_equal' => 'Поле :attribute має містити дату не раніше або дорівнювати :date.', - 'alpha' => 'Поле :attribute має містити лише літери.', - 'alpha_dash' => 'Поле :attribute має містити лише літери, цифри та тире.', - 'alpha_num' => 'Поле :attribute має містити лише літери та цифри.', - 'array' => 'Поле :attribute має бути масивом.', - 'before' => 'Поле :attribute має містити дату не пізніше :date.', - 'before_or_equal' => 'Поле :attribute має містити дату не пізніше або дорівнювати :date.', - 'between' => [ - 'numeric' => 'Поле :attribute має бути між :min - :max.', - 'file' => 'Розмір :attribute має бути в межах від :min - :max кілобайт.', - 'string' => 'Текст в полі :attribute має бути не менше :min - :max символів.', - 'array' => 'Поле :attribute має бути між :min та :max елементами.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Поле :attribute повинне містити значення true або false.', - 'confirmed' => 'Підтвердження для :attribute не співпадає.', - 'date' => 'Поле :attribute не є датою.', - 'date_format' => 'Поле :attribute не відповідає формату :format.', - 'different' => 'Поля :attribute та :other повинні бути різними.', - 'digits' => 'Довжина цифрового поля :attribute повинна дорівнювати :digits.', - 'digits_between' => 'Довжина цифрового поля :attribute повинна бути в межах від :min до :max.', - 'dimensions' => 'Поле :attribute міщує неприпустимі розміри зображення.', - 'distinct' => 'Значення поля :attribute вже існує.', - 'email' => 'Формат поля :attribute неправильний.', - 'exists' => 'Обрана валюта недійсна.', - 'file' => 'Поле :attribute має містити файл.', - 'filled' => 'Поле :attribute повинно бути заповнене.', - 'image' => ':attribute має бути зображенням.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Значення поля :attribute вже існує.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Обрана валюта недійсна.', + 'exists' => 'Обрана валюта недійсна.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Поле :attribute повинно бути заповнене.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Значення для :fieldname не може бути null.', - 'in' => 'Обрана валюта недійсна.', - 'in_array' => 'Значення поля :attribute не існує в :other.', - 'integer' => 'Поле :attribute має містити ціле число.', - 'ip' => 'Поле :attribute має містити IP адресу.', - 'ipv4' => 'Поле :attribute має бути коректною адресою IPv4.', - 'ipv6' => ':attribute має бути коректною адресою IPv6.', - 'is_unique_department' => 'Поле :attribute має бути унікальним для даного розташування компанії', - 'json' => 'Дані поля :attribute мають бути в форматі JSON.', - 'max' => [ - 'numeric' => 'Поле :attribute має бути не більше :max.', - 'file' => ':attribute має бути не більше :max кілобайт.', - 'string' => 'Текст в полі :attribute повинен містити не більше, ніж :max символів.', - 'array' => 'Поле :attribute повинне містити не більше :max елементів.', + 'in' => 'Обрана валюта недійсна.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'Поле :attribute повинне містити файл одного з типів: :values.', - 'mimetypes' => 'Поле :attribute повинне містити файл одного з типів: :values.', - 'min' => [ - 'numeric' => 'Поле :attribute повинне бути не менше :min.', - 'file' => 'Розмір файлу в полі :attribute має бути не меншим :min кілобайт.', - 'string' => 'Текст в полі :attribute повинен містити не менше :min символів.', - 'array' => 'Поле :attribute повинне містити не менше :min елементів.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'Поле :attribute повинне починатися з одного з наступних :values.', - 'ends_with' => 'Поле :attribute повинне закінчуватися одним з наступних: :values.', - - 'not_in' => 'Обрана валюта недійсна.', - 'numeric' => 'Поле :attribute має містити число.', - 'present' => 'Поле :attribute повинне бути присутнім.', - 'valid_regex' => 'Це не коректний регулярний вираз. ', - 'regex' => 'Формат поля :attribute неправильний.', - 'required' => 'Поле :attribute є обов\'язковим для заповнення.', - 'required_if' => 'Поле :attribute є обов\'язковим для заповнення, коли :other є :value.', - 'required_unless' => 'Поле :attribute обов\'язкове, якщо :other не з :values.', - 'required_with' => 'Поле :attribute є обов\'язковим для заповнення, коли :values вказано.', - 'required_with_all' => 'Поле :attribute є обов\'язковим для заповнення, коли :values вказано.', - 'required_without' => 'Поле :attribute є обов\'язковим для заповнення, коли :values не вказано.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Обрана валюта недійсна.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Поле :attribute повинне бути присутнім.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Поле :attribute є обов\'язковим для заповнення.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Поле :attribute є обов\'язковим для заповнення, коли :other є :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Поле :attribute обов\'язкове, якщо :other не з :values.', + 'required_with' => 'Поле :attribute є обов\'язковим для заповнення, коли :values вказано.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Поле :attribute є обов\'язковим для заповнення, коли :values не вказано.', 'required_without_all' => 'Поле :attribute є обов\'язковим для заповнення, коли :values не вказано.', - 'same' => 'Поля :attribute та :other мають співпадати.', - 'size' => [ - 'numeric' => 'Поле :attribute має бути довжиною :size.', - 'file' => ':attribute має бути :size кілобайт.', - 'string' => ':attribute має бути довжиною :size символів.', - 'array' => 'Поле :attribute має містити :size елементів.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Поле :attribute повинне містити текст.', - 'timezone' => 'Поле :attribute повинне містити коректну часову зону.', 'two_column_unique_undeleted' => 'Поле :attribute має бути унікальним для :table1 і :table2. ', - 'unique' => ':attribute вже зайнятий.', - 'uploaded' => 'Завантаження поля :attribute не вдалося.', - 'url' => 'Формат поля :attribute неправильний.', 'unique_undeleted' => 'Поле :attribute має бути унікальним.', 'non_circular' => 'Поле :attribute не повинне створювати круглие посилання.', 'not_array' => ':attribute не може бути масивом.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Пароль має містити принаймні одну цифру.', 'case_diff' => 'Пароль повинен використовувати змішаний випадок.', 'symbols' => 'Пароль має містити символи.', - 'gte' => [ - 'numeric' => 'Значення не може бути від’ємним' - ], - 'checkboxes' => ':attribute містить неприпустимі параметри.', - 'radio_buttons' => ':attribute є неприпустимим.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute вже зайнятий.', + 'uploaded' => 'Завантаження поля :attribute не вдалося.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'Поле :attribute має містити коректну дату в форматі YYYY-MM-DD', 'last_audit_date.date_format' => 'Поле :attribute має містити коректну дату в форматі YYYY-MM-DD hh:mm:ss', 'expiration_date.date_format' => 'Поле :attribute має містити коректну дату в форматі YYYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'Поле :attribute має містити коректну дату в форматі YYYY-MM-DD', 'start_date.date_format' => 'Поле :attribute має містити коректну дату в форматі YYYY-MM-DD', 'end_date.date_format' => 'Поле :attribute має містити коректну дату в форматі YYYY-MM-DD', - - ], - + 'checkboxes' => ':attribute містить неприпустимі параметри.', + 'radio_buttons' => ':attribute є неприпустимим.', + 'invalid_value_in_field' => 'Невірне значення включене в це поле', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Невірне значення включене в це поле', + + 'generic' => [ + 'invalid_value_in_field' => 'Невірне значення включене в це поле', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/ur-PK/account/general.php b/resources/lang/ur-PK/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/ur-PK/account/general.php +++ b/resources/lang/ur-PK/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/ur-PK/admin/accessories/message.php b/resources/lang/ur-PK/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/ur-PK/admin/accessories/message.php +++ b/resources/lang/ur-PK/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/ur-PK/admin/consumables/general.php b/resources/lang/ur-PK/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/ur-PK/admin/consumables/general.php +++ b/resources/lang/ur-PK/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/ur-PK/admin/consumables/message.php b/resources/lang/ur-PK/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/ur-PK/admin/consumables/message.php +++ b/resources/lang/ur-PK/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/ur-PK/admin/custom_fields/message.php b/resources/lang/ur-PK/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/ur-PK/admin/custom_fields/message.php +++ b/resources/lang/ur-PK/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/ur-PK/admin/hardware/message.php b/resources/lang/ur-PK/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/ur-PK/admin/hardware/message.php +++ b/resources/lang/ur-PK/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/ur-PK/admin/licenses/general.php b/resources/lang/ur-PK/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/ur-PK/admin/licenses/general.php +++ b/resources/lang/ur-PK/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/ur-PK/admin/licenses/message.php b/resources/lang/ur-PK/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/ur-PK/admin/licenses/message.php +++ b/resources/lang/ur-PK/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/ur-PK/admin/models/message.php b/resources/lang/ur-PK/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/ur-PK/admin/models/message.php +++ b/resources/lang/ur-PK/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/ur-PK/admin/settings/general.php b/resources/lang/ur-PK/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/ur-PK/admin/settings/general.php +++ b/resources/lang/ur-PK/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/ur-PK/button.php b/resources/lang/ur-PK/button.php index 22821b8157..51c54bb9b5 100644 --- a/resources/lang/ur-PK/button.php +++ b/resources/lang/ur-PK/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/ur-PK/general.php b/resources/lang/ur-PK/general.php index 5b1d0e9b3c..b3a6b34320 100644 --- a/resources/lang/ur-PK/general.php +++ b/resources/lang/ur-PK/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/ur-PK/mail.php b/resources/lang/ur-PK/mail.php index 759ff0f5e8..edb1683200 100644 --- a/resources/lang/ur-PK/mail.php +++ b/resources/lang/ur-PK/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => 'Item:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/ur-PK/validation.php b/resources/lang/ur-PK/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/ur-PK/validation.php +++ b/resources/lang/ur-PK/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/vi-VN/account/general.php b/resources/lang/vi-VN/account/general.php index 530a887f63..ecabb19c7a 100644 --- a/resources/lang/vi-VN/account/general.php +++ b/resources/lang/vi-VN/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Khóa API cá nhân', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Địa chỉ URL gốc API của bạn được đặt tại:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Khóa API được thiết lập có thời hạn đến:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Đã cập nhật tài khoản thành công', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/vi-VN/admin/accessories/message.php b/resources/lang/vi-VN/admin/accessories/message.php index fb50f7feda..8498d45360 100644 --- a/resources/lang/vi-VN/admin/accessories/message.php +++ b/resources/lang/vi-VN/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Phụ kiện chưa được xuất kho. Bạn hãy thử lại', 'success' => 'Phụ kiện được xuất kho thành công.', 'unavailable' => 'Không có sẵn phụ kiện để xuất. Hãy kiểm tra số lượng có sẵn', - 'user_does_not_exist' => 'Người dùng này không tồn tại. Bạn hãy thử lại.' + 'user_does_not_exist' => 'Người dùng này không tồn tại. Bạn hãy thử lại.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/vi-VN/admin/consumables/general.php b/resources/lang/vi-VN/admin/consumables/general.php index f8e4cc0d3d..1358b3d6a9 100644 --- a/resources/lang/vi-VN/admin/consumables/general.php +++ b/resources/lang/vi-VN/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Còn lại', 'total' => 'Tổng số', 'update' => 'Cập nhật vật tư phụ', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/vi-VN/admin/consumables/message.php b/resources/lang/vi-VN/admin/consumables/message.php index 722314ff49..fb6ff91208 100644 --- a/resources/lang/vi-VN/admin/consumables/message.php +++ b/resources/lang/vi-VN/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Vật tư phụ không tồn tại.', 'create' => array( diff --git a/resources/lang/vi-VN/admin/custom_fields/message.php b/resources/lang/vi-VN/admin/custom_fields/message.php index 283cf1f754..c76ebec7ae 100644 --- a/resources/lang/vi-VN/admin/custom_fields/message.php +++ b/resources/lang/vi-VN/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Lĩnh vực đó không tồn tại.', 'already_added' => 'Trường đã được thêm', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Trường không được tạo, vui lòng thử lại.', diff --git a/resources/lang/vi-VN/admin/hardware/message.php b/resources/lang/vi-VN/admin/hardware/message.php index 51891c53c5..d854a10fdf 100644 --- a/resources/lang/vi-VN/admin/hardware/message.php +++ b/resources/lang/vi-VN/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Cảnh báo: Tài sản này hiện tại đang được đánh dấu là không cho phép cấp phát. - Nếu tình trạng này đã được thay đổi, xin vui lòng cập nhật tình trạng tài sản.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Tài sản không tồn tại.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Một số mặt hàng không nhập chính xác.', 'errorDetail' => 'Các mục sau đây không được nhập khẩu vì lỗi.', 'success' => 'Tệp của bạn đã được nhập', diff --git a/resources/lang/vi-VN/admin/licenses/general.php b/resources/lang/vi-VN/admin/licenses/general.php index 56c6ea77f6..3f8d2b5a78 100644 --- a/resources/lang/vi-VN/admin/licenses/general.php +++ b/resources/lang/vi-VN/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Thông tin bản quyền', 'license_seats' => 'Số lượng chỗ cấp phép', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Bản quyền phần mềm', 'user' => 'Người dùng', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/vi-VN/admin/licenses/message.php b/resources/lang/vi-VN/admin/licenses/message.php index 467b4c017d..b78d67db63 100644 --- a/resources/lang/vi-VN/admin/licenses/message.php +++ b/resources/lang/vi-VN/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Có vấn đề xảy ra khi checkout bản quyền. Xin vui lòng thử lại.', 'success' => 'Bản quyền đã được checkout thành công', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/vi-VN/admin/models/message.php b/resources/lang/vi-VN/admin/models/message.php index 1232f0363c..0972b6ea76 100644 --- a/resources/lang/vi-VN/admin/models/message.php +++ b/resources/lang/vi-VN/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'CẢNH BÁO! Model tài sản cho cho thiết bị này không hợp lệ hoặc bị thiếu!', 'no_association_fix' => 'Điều này sẽ phá vỡ mọi thứ theo những cách kỳ lạ và khủng khiếp. Hãy chỉnh sửa tài sản này ngay bây giờ để gán cho nó một model.', 'assoc_users' => 'Tài sản này hiện tại đang liên kết với ít nhất một hoặc nhiều tài sản và không thể xóa. Xin vui lòng xóa tài sản, và cố gắng thử lại lần nữa. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Kiểu tài sản chưa được tạo, xin thử lại.', diff --git a/resources/lang/vi-VN/admin/settings/general.php b/resources/lang/vi-VN/admin/settings/general.php index b0f174c4c7..69e428ee28 100644 --- a/resources/lang/vi-VN/admin/settings/general.php +++ b/resources/lang/vi-VN/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Này chỉ kiểm tra LDAP có thể đồng bộ một cách chính xác. Nếu truy vấn xác thực LDAP của bạn không đúng, người sử dụng vẫn không thể đăng nhập. BẠN PHẢI LƯU THIẾT ĐẶT CẬP NHẬT LDAP CỦA BẠN ĐẦU TIÊN.', 'ldap_manager' => 'Quản lý LDAP', 'ldap_server' => 'Máy chủ LDAP', - 'ldap_server_help' => 'Điều này sẽ bắt đầu với ldap: // (cho không mã hóa hoặc TLS) hoặc ldaps: // (cho SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Xác thực giấy chứng nhận LDAP SSL', 'ldap_server_cert_ignore' => 'Cho phép Chứng chỉ SSL không hợp lệ', 'ldap_server_cert_help' => 'Chọn hộp kiểm này nếu bạn đang sử dụng chứng chỉ SSL ký tự và muốn chấp nhận chứng chỉ SSL không hợp lệ.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Kiểm tra LDAP', 'ldap_test_sync' => 'Kiểm tra đồng bộ LDAP', 'license' => 'Bản quyền phần mềm', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'Địa chỉ IP', @@ -150,7 +150,7 @@ return [ 'optional' => 'tùy ý', 'per_page' => 'Kết quả trên trang', 'php' => 'Phiên bản PHP', - 'php_info' => 'Thông tin PHP', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'Thông tin Hệ thống PHP', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/vi-VN/button.php b/resources/lang/vi-VN/button.php index 2a86c6b240..aa01f1e3b1 100644 --- a/resources/lang/vi-VN/button.php +++ b/resources/lang/vi-VN/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Xóa', 'edit' => 'Sửa', + 'clone' => 'Clone', 'restore' => 'Khôi phục', 'remove' => 'Xóa', 'request' => 'Yêu cầu', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Mới', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/vi-VN/general.php b/resources/lang/vi-VN/general.php index 7385b52d95..b1945cf424 100644 --- a/resources/lang/vi-VN/general.php +++ b/resources/lang/vi-VN/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Xem thêm thông tin', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Hết hạn', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/vi-VN/mail.php b/resources/lang/vi-VN/mail.php index e27bbce021..b1edbbdf0b 100644 --- a/resources/lang/vi-VN/mail.php +++ b/resources/lang/vi-VN/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Tôi đã đọc và đồng ý với các điều khoản sử dụng và đã nhận được mục này.', 'inventory_report' => 'Báo cáo kho', 'item' => 'Mục:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'Có: giấy phép bản quyền sắp hết hạn trong ngày mai:threshold days. | Có nhiều: giấy phép bản quyên sắp hết hạn trong lần tiếp theo: threshold days.', 'link_to_update_password' => 'Vui lòng nhấp vào liên kết sau để cập nhật: mật khẩu web:', 'login' => 'Đăng nhập:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'Hiện có :count tài sản sẽ được xem xét trong :threshold này nữa.', 'user' => 'Người dùng', 'username' => 'Tên đăng nhập', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Chào mừng: tên', 'welcome_to' => 'Chào mừng đến với: web!', 'your_assets' => 'Xen qua tài sản của bạn', 'your_credentials' => 'Thông tin về Snipe-IT của bạn', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/vi-VN/validation.php b/resources/lang/vi-VN/validation.php index c6f30d7cbf..ebfc380c02 100644 --- a/resources/lang/vi-VN/validation.php +++ b/resources/lang/vi-VN/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute phải được chấp nhận.', - 'active_url' => ':attribute thì không phải URL hợp lệ.', - 'after' => ':attribute phải có ngày sau ngày :date.', - 'after_or_equal' => 'Thuộc tính: phải là một ngày sau hoặc bằng: date.', - 'alpha' => ':attribute có thể chỉ chứa chữ.', - 'alpha_dash' => ':attribute có thể chỉ chứa chữ, số và dấu phẩy.', - 'alpha_num' => ':attribute có thể chỉ chứa chữ và số.', - 'array' => 'Thuộc tính: phải là một mảng.', - 'before' => ':attribute phải có ngày trước ngày :date.', - 'before_or_equal' => 'Thuộc tính: phải là ngày trước hoặc bằng: ngày.', - 'between' => [ - 'numeric' => ':attribute phải nằm giữa :min - :max.', - 'file' => ':attribute phải nằm giữa :min - :max kilobytes.', - 'string' => ':attribute phải nằm :min - :max ký tự.', - 'array' => 'Thuộc tính: phải có từ: min và: max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Trường thuộc tính: phải là đúng hoặc sai.', - 'confirmed' => ':attribute xác nhận không đúng.', - 'date' => ':attribute có ngày không hợp lý.', - 'date_format' => ':attribute không phù hợp định dạng :format.', - 'different' => ':attribute và :other phải khác nhau.', - 'digits' => ':attribute phải có :digits số.', - 'digits_between' => ':attribute phải ở giữa :min và :max số.', - 'dimensions' => 'Thuộc tính: có kích thước hình ảnh không hợp lệ.', - 'distinct' => 'Trường thuộc tính: có một giá trị trùng lặp.', - 'email' => 'Định dạng :attribute thì không phù hợp.', - 'exists' => ':attribute đã chọn không phù hợp.', - 'file' => 'Thuộc tính: phải là một tệp.', - 'filled' => 'Trường: attribute phải có giá trị.', - 'image' => ':attribute phải là một hình.', + 'boolean' => 'Trường thuộc tính: phải là đúng hoặc sai.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'Trường thuộc tính: có một giá trị trùng lặp.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => ':attribute đã chọn không hợp lý.', + 'exists' => ':attribute đã chọn không phù hợp.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'Trường: attribute phải có giá trị.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'Giá trị của :fieldname không thể trống.', - 'in' => ':attribute đã lựa chọn không hợp lý.', - 'in_array' => 'Trường thuộc tính: không tồn tại trong: other.', - 'integer' => ':attribute phải là một số nguyên.', - 'ip' => ':attribute phải là một địa chỉ IP.', - 'ipv4' => 'Thuộc tính: phải là địa chỉ IPv4 hợp lệ', - 'ipv6' => 'Thuộc tính: phải là địa chỉ IPv6 hợp lệ', - 'is_unique_department' => 'Thuộc tính :attribute phải là duy nhất cho Địa điểm công ty này', - 'json' => 'Thuộc tính: phải là một chuỗi JSON hợp lệ', - 'max' => [ - 'numeric' => ':attribute có thể không lớn hơn :max.', - 'file' => ':attribute có thể không lớn hơn :max kilobytes.', - 'string' => ':attribute có thể không lớn hơn :max ký tự.', - 'array' => 'Thuộc tính: không có nhiều hơn: các mục tối đa.', + 'in' => ':attribute đã lựa chọn không hợp lý.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute phải là một tập tin có phần mở rộng là: :values.', - 'mimetypes' => 'Thuộc tính: phải là tệp kiểu:: values.', - 'min' => [ - 'numeric' => ':attribute phải có ít nhất :min.', - 'file' => ':attribute phải ít nhất :min kilobytes.', - 'string' => ':attribute phải ít nhất :min ký tự.', - 'array' => 'Thuộc tính: phải có ít nhất: min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'Trường :attribute phải kết thúc bằng một trong những giá trị sau: :values', - 'ends_with' => 'Thuộc tính :attribute phải kết thúc bằng một trong các giá trị sau: :values.', - - 'not_in' => ':attribute đã chọn không hợp lý.', - 'numeric' => ':attribute phải là một số.', - 'present' => 'Trường thuộc tính: phải có mặt.', - 'valid_regex' => 'Đây không phải là một đơn hàng hợp lệ.', - 'regex' => 'Định dạng :attribute thì không hợp lý.', - 'required' => 'Trường :attribute thì bắt buộc.', - 'required_if' => 'Trường :attribute thì bắt buộc khi :other là :value.', - 'required_unless' => 'Trường thuộc tính: required required trừ khi: other is in: values.', - 'required_with' => 'Trường :attribute thì bắt buộc khi :values là hiện hành.', - 'required_with_all' => 'Lĩnh vực thuộc tính: được yêu cầu khi: các giá trị hiện diện.', - 'required_without' => 'Trường :attribute thì bắt buộc khi :values không hiện hành.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => ':attribute đã chọn không hợp lý.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'Trường thuộc tính: phải có mặt.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'Trường :attribute thì bắt buộc.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'Trường :attribute thì bắt buộc khi :other là :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'Trường thuộc tính: required required trừ khi: other is in: values.', + 'required_with' => 'Trường :attribute thì bắt buộc khi :values là hiện hành.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'Trường :attribute thì bắt buộc khi :values không hiện hành.', 'required_without_all' => 'Lĩnh vực thuộc tính: được yêu cầu khi không có: giá trị hiện diện.', - 'same' => ':attribute và :other phải giống nhau.', - 'size' => [ - 'numeric' => ':attribute phải có cỡ :size.', - 'file' => ':attribute phải có cỡ :size kilobytes.', - 'string' => ':attribute phải có :size ký tự.', - 'array' => 'Thuộc tính: phải chứa: các mục kích thước.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'Thuộc tính: phải là một chuỗi.', - 'timezone' => 'Thuộc tính: phải là một vùng hợp lệ.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute đã sẵn sàng.', - 'uploaded' => 'Thuộc tính: không thể tải lên.', - 'url' => 'Định dạng :attribute thì không hợp lý.', 'unique_undeleted' => 'Thuộc tính: phải là duy nhất.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Mật khẩu phải chứa ít nhất một chữ số.', 'case_diff' => 'Mật khẩu phải sử dụng chữ hoa chữ thường.', 'symbols' => 'Mật khẩu phải chứa các ký tự đặc biệt.', - 'gte' => [ - 'numeric' => 'Giá trị không thể âm' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute đã sẵn sàng.', + 'uploaded' => 'Thuộc tính: không thể tải lên.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute phải là ngày hợp lệ ở định dạng YYYY-MM-DD', 'last_audit_date.date_format' => ':attribute phải là ngày hợp lệ ở định dạng YYYY-MM-DD hh:mm:ss', 'expiration_date.date_format' => ':attribute phải là ngày hợp lệ ở định dạng YYYY-MM-DD', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute phải là ngày hợp lệ ở định dạng YYYY-MM-DD', 'start_date.date_format' => ':attribute phải là ngày hợp lệ ở định dạng YYYY-MM-DD', 'end_date.date_format' => ':attribute phải là ngày hợp lệ ở định dạng YYYY-MM-DD', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/zh-CN/account/general.php b/resources/lang/zh-CN/account/general.php index 2000bc5414..dadfe6e03c 100644 --- a/resources/lang/zh-CN/account/general.php +++ b/resources/lang/zh-CN/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => '个人API密钥', + 'personal_access_token' => '个人访问令牌', + 'personal_api_keys_success' => '个人API密钥 :key已成功创建', + 'here_is_api_key' => '这是您新的个人访问令牌。这是唯一一次展示,所以别弄丢了!您现在可以使用此令牌进行API请求。', 'api_key_warning' => '当生成 API 令牌时,请务必立即将其复制下来,因为它们将不会对您再次可见。', 'api_base_url' => '您的 API 基础url 位于:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => '设定 API 令牌过期时间为:', 'api_reference' => '请检查 API 参考 以找到特定的 API 端点和额外的 API 文档。', 'profile_updated' => '帐户已成功更新', + 'no_tokens' => '您还没有创建任何个人访问令牌。', ); diff --git a/resources/lang/zh-CN/admin/accessories/message.php b/resources/lang/zh-CN/admin/accessories/message.php index 2d8ab448da..41f6b15c0b 100644 --- a/resources/lang/zh-CN/admin/accessories/message.php +++ b/resources/lang/zh-CN/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => '配件不能被预订,请重试。', 'success' => '配件成功预订。', 'unavailable' => '配件不可被借出。检查可用数量', - 'user_does_not_exist' => '无效用户,请重试。' + 'user_does_not_exist' => '无效用户,请重试。', + 'checkout_qty' => array( + 'lte' => '目前只有一个可用的此类型的配件,您正在试图借出 :checkout_qty 个。 请调整借出数量或该配件的总库存,然后重试。|有 :num_currently_restotal 个可用配件,您正在尝试借出 :checkout_qty 个。 请调整借出数量或该配件的总库存,然后重试。', + ), + ), 'checkin' => array( diff --git a/resources/lang/zh-CN/admin/consumables/general.php b/resources/lang/zh-CN/admin/consumables/general.php index 44c0a95ed7..58a4c21eec 100644 --- a/resources/lang/zh-CN/admin/consumables/general.php +++ b/resources/lang/zh-CN/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => '剩余', 'total' => '总计', 'update' => '更新耗材', + 'inventory_warning' => '该耗材的库存低于最低数量 :min_count', ); diff --git a/resources/lang/zh-CN/admin/consumables/message.php b/resources/lang/zh-CN/admin/consumables/message.php index 7c1e4fd6e9..94dcf171f6 100644 --- a/resources/lang/zh-CN/admin/consumables/message.php +++ b/resources/lang/zh-CN/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => '该类别必须是一个耗材类别。', 'does_not_exist' => '耗材不存在。', 'create' => array( diff --git a/resources/lang/zh-CN/admin/custom_fields/message.php b/resources/lang/zh-CN/admin/custom_fields/message.php index 9ee6b7ae15..ec8a01b5f5 100644 --- a/resources/lang/zh-CN/admin/custom_fields/message.php +++ b/resources/lang/zh-CN/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => '字段不存在', 'already_added' => '已经新增字段', + 'none_selected' => '未选择字段', 'create' => array( 'error' => '新增字段失败,请重试', diff --git a/resources/lang/zh-CN/admin/hardware/form.php b/resources/lang/zh-CN/admin/hardware/form.php index e38609ebf0..6d1a664793 100644 --- a/resources/lang/zh-CN/admin/hardware/form.php +++ b/resources/lang/zh-CN/admin/hardware/form.php @@ -10,7 +10,7 @@ return [ 'bulk_update' => '批量更新', 'bulk_update_help' => '该表格允许你同时修改多项资产。请仅填写需要修改的字段,留空的字段不会做任何修改。 ', 'bulk_update_warn' => '您将要编辑单个资产的属性。 |您将要编辑:asset_count个资产的属性。', - 'bulk_update_with_custom_field' => '请注意,资产是 :asset_model_count 不同类型的型号。', + 'bulk_update_with_custom_field' => '请注意,资产是 :asset_model_count 种不同类型的型号。', 'bulk_update_model_prefix' => '', 'bulk_update_custom_field_unique' => '这是一个唯一的字段,不能进行批量编辑。', 'checkedout_to' => '借出至', diff --git a/resources/lang/zh-CN/admin/hardware/message.php b/resources/lang/zh-CN/admin/hardware/message.php index fad7a68375..e7debc483e 100644 --- a/resources/lang/zh-CN/admin/hardware/message.php +++ b/resources/lang/zh-CN/admin/hardware/message.php @@ -2,13 +2,13 @@ return [ - 'undeployable' => '警告: 该资产目前已经被标记为不可被分配,如果该资产状态已经改变,请刷新。', + 'undeployable' => '警告: 此资产已被标记为当前不可借出。如果此状态已经改变,请更新资产状态。', 'does_not_exist' => '资产不存在', 'does_not_exist_var'=> '找不到标签为 :asset_tag 的资产', 'no_tag' => '未提供资产标签。', 'does_not_exist_or_not_requestable' => '该资产不存在或不可申领。', 'assoc_users' => '这个资产目前已经借给某个用户,不能被删除,请检查资产信息,然后再尝试删除。', - 'warning_audit_date_mismatch' => '此资产的下一个盘点日期 (:next_audit_date) 早于上一个盘点日期 (:last_audit_date)。请更新下一个盘点日期', + 'warning_audit_date_mismatch' => '此资产的下一个盘点日期 (:next_audit_date) 早于上一个盘点日期 (:last_audit_date)。请更新下一个盘点日期。', 'create' => [ 'error' => '资产创建失败,请重试。:(', @@ -33,7 +33,7 @@ return [ ], 'audit' => [ - 'error' => '资产盘点失败 :error ', + 'error' => '资产盘点失败::error ', 'success' => '资产审计已成功记录。', ], @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => '流程导入', 'error' => '某些字段没有正确导入', 'errorDetail' => '以下项由于错误未被导入', 'success' => '您的文件已被导入', diff --git a/resources/lang/zh-CN/admin/licenses/general.php b/resources/lang/zh-CN/admin/licenses/general.php index 5ac9d12bca..b7262df6cc 100644 --- a/resources/lang/zh-CN/admin/licenses/general.php +++ b/resources/lang/zh-CN/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => '授权信息', 'license_seats' => '授权数量', 'seat' => '次数', + 'seat_count' => '席位数:count', 'seats' => '允许使用次数', 'software_licenses' => '软件许可证', 'user' => '用户', @@ -23,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => '归还所有席位', - 'modal' => '此操作将归还一个席位。| 此操作将归还此许可证的所有 :checkedout_seas_count 个座位。', + 'modal' => '此操作将归还一个席位。| 此操作将归还此许可的所有 :checkedout_seas_count 个席位。', 'enabled_tooltip' => '从用户和资产中归还此许可证的所有席位', 'disabled_tooltip' => '此功能已禁用,因为当前没有借出的席位', 'disabled_tooltip_reassignable' => '此功能已禁用,因为许可证不可重新分配。', 'success' => '许可证归还成功!| 所有许可证都已归还成功!', - 'log_msg' => '通过批量许可证签出在许可证GUI中签入', + 'log_msg' => '通过许可证GUI中的批量归还许可证进行归还', ], 'checkout_all' => [ diff --git a/resources/lang/zh-CN/admin/licenses/message.php b/resources/lang/zh-CN/admin/licenses/message.php index 5d18a1d7d4..5fcdbf8b3f 100644 --- a/resources/lang/zh-CN/admin/licenses/message.php +++ b/resources/lang/zh-CN/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => '分配(借出)许可证的过程中出现了一些问题,请重试。', 'success' => '许可证已经成功借出', 'not_enough_seats' => '没有足够的许可证座位可供结账', + 'mismatch' => '提供的许可证席位与许可证不匹配', + 'unavailable' => '这个席位不能借出。', ), 'checkin' => array( diff --git a/resources/lang/zh-CN/admin/models/message.php b/resources/lang/zh-CN/admin/models/message.php index a0fd169655..b9c9db8485 100644 --- a/resources/lang/zh-CN/admin/models/message.php +++ b/resources/lang/zh-CN/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => '警告!此物品的资产型号无效或丢失!', 'no_association_fix' => '这将以怪异且可怕的方式破坏一切。立即编辑此资产并为其指定一个型号。', 'assoc_users' => '本模板下目前还有相关的资产,不能被删除,请删除资产以后,再重试。', - + 'invalid_category_type' => '类别必须是一个资产类别。', 'create' => array( 'error' => '模板没有被创建,请重试。', diff --git a/resources/lang/zh-CN/admin/settings/general.php b/resources/lang/zh-CN/admin/settings/general.php index fb8387dcd6..9da1bd96d4 100644 --- a/resources/lang/zh-CN/admin/settings/general.php +++ b/resources/lang/zh-CN/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => '这只证明了LDAP同步正确。如果您的LDAP身份验证查询设置不正确,用户可能仍然无法登录。当然您必须先保存您的LDAP设置。', 'ldap_manager' => 'LDAP 领导(Manager)', 'ldap_server' => 'LDAP 服务器', - 'ldap_server_help' => '这应以ldap:// (for unencrypted or TLS)或 ldaps:// (for SSL)开头', + 'ldap_server_help' => '此处应该以 ldap:// (对于未加密的) 或 ldaps:// (对于TLS 或 SSL) 开始', 'ldap_server_cert' => '检验LDAP的SSL证书', 'ldap_server_cert_ignore' => '允许未通过校验的SSL证书', 'ldap_server_cert_help' => '如果你使用了自签发证书,请勾选', @@ -122,8 +122,8 @@ return [ 'ldap_test' => '测试 LDAP', 'ldap_test_sync' => '测试 LDAP 同步', 'license' => '软件许可证', - 'load_remote' => '使用 Gravatar头像', - 'load_remote_help_text' => '如果您的安装不能从外部网络加载脚本,请取消选中此框。这将防止Snipe-IT尝试从 Gravatar 加载图像。', + 'load_remote' => '加载远程头像', + 'load_remote_help_text' => '如果您的安装不能从外部网络加载脚本,请取消选中此项。 这将防止Snipe-IT 尝试从 Gravatar 或其他外部来源加载头像。', 'login' => '登录尝试', 'login_attempt' => '登录尝试', 'login_ip' => 'IP 地址', @@ -375,5 +375,9 @@ return [ 'timezone' => '时区', 'profile_edit' => '编辑个人资料', 'profile_edit_help' => '允许用户编辑自己的个人资料。', + 'default_avatar' => '上传自定义默认头像', + 'default_avatar_help' => '如果用户没有个人资料照片,此图像将作为个人资料显示。', + 'restore_default_avatar' => '恢复 原始系统默认头像', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/zh-CN/button.php b/resources/lang/zh-CN/button.php index 95283ba3c6..a44f2ad048 100644 --- a/resources/lang/zh-CN/button.php +++ b/resources/lang/zh-CN/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => '归还全部并删除用户', 'delete' => '刪除', 'edit' => '编辑', + 'clone' => '克隆...', 'restore' => '恢复', 'remove' => '移除', 'request' => '申请', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => '添加维护', 'append' => '追加', 'new' => '新建', + 'var' => [ + 'clone' => '克隆 :item_type', + 'edit' => '编辑 :item_type', + 'delete' => '删除 :item_type', + 'restore' => '删除 :item_type', + 'create' => '创建新的 :item_type', + 'checkout' => '借出 :item_type', + 'checkin' => '归还 :item_type', + ] ]; diff --git a/resources/lang/zh-CN/general.php b/resources/lang/zh-CN/general.php index 51bf143105..38ea6f2bac 100644 --- a/resources/lang/zh-CN/general.php +++ b/resources/lang/zh-CN/general.php @@ -27,7 +27,7 @@ return [ 'asset_tag' => '资产标签', 'asset_tags' => '资产标签', 'assets_available' => '可用资产', - 'accept_assets' => '接受资产:名称', + 'accept_assets' => '接受资产 :name', 'accept_assets_menu' => '接受资产', 'audit' => '审计', 'audit_report' => '审核日志', @@ -357,7 +357,7 @@ return [ 'last_checkout' => '上次借出', 'due_to_checkin' => '以下:count 件物品将很快归还:', 'expected_checkin' => '预计归还日期', - 'reminder_checked_out_items' => '这是当前借出给您的物品的提醒。 如果你觉得这个列表不准确(有些东西缺失,或者你认为你从未收到的东西),请给:reply_to_name发送电子邮件,邮箱地址为::reply_to_address_address。', + 'reminder_checked_out_items' => '这是当前借给您的物品的提醒。如果你觉得这个列表不准确(有些东西缺失,或者此处出现了你认为从未收到的东西),请给:reply_to_name发送电子邮件,邮箱地址为::reply_to_address。', 'changed' => '已修改', 'to' => '至', 'report_fields_info' => '

选择您想要在自定义报告中包含的字段,然后单击生成. 该文件(custom-asset-report-YYYY-mm-dd.csv)将自动下载,您可以使用 Excel打开它。

@@ -528,7 +528,7 @@ return [ 'permission_denied_superuser_demo' => '权限被拒绝。您不能更新演示上超级管理员的用户信息。', 'pwd_reset_not_sent' => '用户未激活,LDAP同步,或没有电子邮件地址', 'error_sending_email' => '发送邮件时出错', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => '不好意思,您没有权限做这件事。或许 返回到仪表板或联系您的管理员。', 'bulk' => [ 'delete' => [ @@ -543,12 +543,20 @@ return [ 'no_requestable' => '没有可申领的资产或资产型号。', 'countable' => [ - 'accessories' => ':count 配件|:count 配件', + 'accessories' => ':count 个配件|:count 个配件', 'assets' => ':count 资产|:count 资产', - 'licenses' => ':count 许可证|:count 许可证', - 'license_seats' => ':count 许可证席位|:count 许可证席位', - 'consumables' => ':count 耗材|:count 耗材', + 'licenses' => ':count 个许可证|:count 个许可证', + 'license_seats' => ':count 个许可证席位|:count 许可证席位', + 'consumables' => ':count 个耗材|:count 个耗材', 'components' => ':count 组件|:count 组件', - ] + ], + 'more_info' => '更多信息', + 'quickscan_bulk_help' => '勾选此框将编辑资产记录以反映其新的位置。不勾选则只会在盘点日志中记录该位置。注意,如果此资产已被借出,则不会更改其借出到的人员、资产或位置的位置。', + 'whoops' => '哎呀!', + 'something_went_wrong' => '您的请求出了点问题。', + 'close' => '关闭', + 'expires' => '过期', + 'map_fields'=> '映射 :item_type 字段', + 'remaining_var' => '剩余:count个', ]; diff --git a/resources/lang/zh-CN/mail.php b/resources/lang/zh-CN/mail.php index 3963d9d0e6..8b698e4d44 100644 --- a/resources/lang/zh-CN/mail.php +++ b/resources/lang/zh-CN/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => '我同意使用条款并确认已收到物品。', 'inventory_report' => '库存报告', 'item' => '项目:', + 'item_checked_reminder' => '提醒,当前借出给您 :count 件物品,您还没有签收或拒绝。 请点击下面的链接以确认您的决定。', 'license_expiring_alert' => '有:个许可将在:天后到期。|有:个许可将在:天后到期。', 'link_to_update_password' => '请点击以下链接以更新 :web 的密码:', 'login' => '登录:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => '有:count 项资产将在:threshold 天内进行审计.|有:count 项资产将在:threshold 天内进行审计。', 'user' => '用户', 'username' => '用户名', + 'unaccepted_asset_reminder' => '您有未接受的资产。', 'welcome' => '欢迎您,:name', 'welcome_to' => '欢迎来到 :web!', 'your_assets' => '查看您的资产', 'your_credentials' => '您的 Snipe-IT 登录凭据', + 'mail_sent' => '邮件发送成功!', ]; diff --git a/resources/lang/zh-CN/validation.php b/resources/lang/zh-CN/validation.php index a87a53ec0e..bf1601eae5 100644 --- a/resources/lang/zh-CN/validation.php +++ b/resources/lang/zh-CN/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ' :attribute 必须接受', - 'active_url' => ':attribute 不是正确的网址', - 'after' => ' :attribute 必须在 :date 之后', - 'after_or_equal' => 'the:属性必须是以下或之后的日期:date。', - 'alpha' => ':attribute 只能包含字母', - 'alpha_dash' => ':attribute 只能包含字母,数字和\'-\'', - 'alpha_num' => ':attribute 只允许字母和数字', - 'array' => ':属性必须是数组。', - 'before' => ':attribute 必须在 :date 之前', - 'before_or_equal' => ':属性必须是之前或之前的日期:date。', - 'between' => [ - 'numeric' => ':attribute 必须在 :min - :max 之间', - 'file' => ':attribute 必须在 :min - :max kb 之间', - 'string' => ':attribute 必须在 :min - :max 字符之间', - 'array' => 'the:属性必须有:min和:max items之间。', + 'accepted' => '必须接受 :attribute 字段。', + 'accepted_if' => '当 :other 是 :value 时必须接受 :attribute 字段。', + 'active_url' => ':attribute 字段必须是一个有效的 URL。', + 'after' => ':attribute 字段必须在 :date 之后。', + 'after_or_equal' => ':attribute 字段必须是晚于或等于 :date 的日期。', + 'alpha' => ':attribute 字段只能包含字母', + 'alpha_dash' => ':attribute 字段只能包含字母、数字、破折号和下划线。', + 'alpha_num' => ':attribute 字段只能包含字母和数字。', + 'array' => ':attribute 字段必须是一个数组。', + 'ascii' => ':attribute 字段只能包含单字节字母和符号。', + 'before' => ':attribute 字段必须在 :date 之前。', + 'before_or_equal' => ':attribute 字段必须早于或等于 :date 的日期。', + 'between' => [ + 'array' => ':attribute 字段必须在 :min 与 :max 之间。', + 'file' => ':attribute 字段必须介于 :min 到 :max kb 之间。', + 'numeric' => ':attribute 字段必须在 :min 到 :max 之间。', + 'string' => ':attribute 字段必须在 :min 和 :max 字符之间。', ], - 'boolean' => ':属性字段必须为true或false。', - 'confirmed' => ':attribute 属性不匹配', - 'date' => ':attribute 不是有效日期', - 'date_format' => ':attribute 不符合 :format 的格式', - 'different' => ' :attribute 和 :other 不能相同', - 'digits' => ':attribute 必须是 :digits 数字', - 'digits_between' => ':attribute 必须在 :min 和 :max 数字之间', - 'dimensions' => 'the:属性具有无效的图像尺寸。', - 'distinct' => ':属性字段具有重复值。', - 'email' => ':attribute 格式不对', - 'exists' => '选择的 :attribute 无效', - 'file' => ':属性必须是一个文件。', - 'filled' => ':属性字段必须有一个值。', - 'image' => ':attribute 必须是图片格式', + 'boolean' => ':属性字段必须为true或false。', + 'can' => ':attribute 字段包含一个未授权的值。', + 'confirmed' => ':attribute 字段确认不匹配。', + 'contains' => ':attribute 字段缺少必需的值。', + 'current_password' => '密码不正确。', + 'date' => ':attribute 字段必须是一个有效的日期。', + 'date_equals' => ':attribute 字段必须等于 :date 的日期。', + 'date_format' => ':attribute 字段必须与格式 :format 匹配。', + 'decimal' => ':attribute 字段必须有 :decimal 十进制小数位。', + 'declined' => ':attribute 字段必须被拒绝。', + 'declined_if' => '当 :other 是 :value 时必须拒绝 :attribute 字段。', + 'different' => ':attribute 字段和 :other 必须不同。', + 'digits' => ':attribute 字段必须是 :digits 数字', + 'digits_between' => ':attribute 字段必须介于 :min 到 :max 位数字之间。', + 'dimensions' => ':attribute 字段的图像尺寸无效。', + 'distinct' => ':属性字段具有重复值。', + 'doesnt_end_with' => ':attribute 字段不能以下列之一结尾::values 。', + 'doesnt_start_with' => ':attribute 字段不能以下列之一开始::values 。', + 'email' => ':attribute 字段必须是一个有效的电子邮件地址。', + 'ends_with' => ':attribute 字段必须以下列之一结尾::values 。', + 'enum' => '选择的 :attribute 无效', + 'exists' => '选择的 :attribute 无效', + 'extensions' => ':attribute 字段必须有以下扩展之一: :values 。', + 'file' => ':attribute 字段必须是一个文件。', + 'filled' => ':属性字段必须有一个值。', + 'gt' => [ + 'array' => ':attribute 字段必须超过 :value 项。', + 'file' => ':attribute 字段必须大于 :value kb。', + 'numeric' => ':attribute 字段必须大于 :value 。', + 'string' => ':attribute 字段必须大于 :value 字符。', + ], + 'gte' => [ + 'array' => ':attribute 字段必须包含 :value 项或更多项。', + 'file' => ':attribute 字段必须大于或等于 :value kb。', + 'numeric' => ':attribute 字段必须大于或等于 :value 。', + 'string' => ':attribute 必须大于或等于 :value 字符。', + ], + 'hex_color' => ':attribute 必须是一个有效的十六进制颜色。', + 'image' => ':attribute 字段必须是一个图像。', 'import_field_empty' => ':fieldname 的值不能为空。', - 'in' => '选择的 :attribute 无效', - 'in_array' => ':属性字段不存在于:其他。', - 'integer' => ':attribute 必须是整数', - 'ip' => ':attribute 必须是有效IP', - 'ipv4' => ':属性必须是有效的IPv4地址。', - 'ipv6' => ':属性必须是有效的IPv6地址。', - 'is_unique_department' => ':attribute 必须是唯一的公司地理位置', - 'json' => ':属性必须是有效的JSON字符串。', - 'max' => [ - 'numeric' => ':attribute 不大于 :max', - 'file' => ':attribute 不大于 :max kb', - 'string' => ':attribute 不大于 :max 字符', - 'array' => ':属性可能不超过:max项。', + 'in' => '选择的 :attribute 无效', + 'in_array' => ':attribute 字段必须在 :other 中存在。', + 'integer' => ':attribute 字段必须是整数。', + 'ip' => ':attribute 字段必须是一个有效的 IP 地址。', + 'ipv4' => ':attribute 字段必须是有效的 IPv4 地址。', + 'ipv6' => ':attribute 字段必须是有效的 IPv6 地址。', + 'json' => ':attribute 字段必须是有效的 JSON 字符串。', + 'list' => ':attribute 字段必须是一个列表。', + 'lowercase' => ':attribute 字段必须是小写。', + 'lt' => [ + 'array' => ':attribute 字段必须小于 :value 项。', + 'file' => ':attribute 字段必须小于 :value kb。', + 'numeric' => ':attribute 字段必须小于 :value 。', + 'string' => ':attribute 字段必须小于 :value 个字符。', ], - 'mimes' => ':attribute 文件类型必须是 :values', - 'mimetypes' => ':属性必须是一个类型为:的值的文件。', - 'min' => [ - 'numeric' => ':attribute 最少 :min', - 'file' => ':attribute 最小 :min kb', - 'string' => ':attribute 最少 :min个字符', - 'array' => ':属性必须至少有:最小项。', + 'lte' => [ + 'array' => ':attribute 字段不能超过 :value 项。', + 'file' => ':attribute 字段必须小于或等于 :value kb。', + 'numeric' => ':attribute 字段必须小于或等于 :value。', + 'string' => ':attribute 字段必须小于或等于 :value 个字符。', ], - 'starts_with' => ':attribute 必须以以下一个开始::values', - 'ends_with' => ':attribute 必须以: :values 其中一个结尾。', - - 'not_in' => '选择的 :attribute 无效', - 'numeric' => ':attribute 必须是数字', - 'present' => ':属性字段必须存在。', - 'valid_regex' => '这不是一个有效的正则表达式。 ', - 'regex' => ':attribute 格式不对', - 'required' => ':attribute 字段必填', - 'required_if' => ':attribute 字段在 :other 是 :value 时是必须的', - 'required_unless' => '需要:属性字段,除非:other is in:values。', - 'required_with' => ' 当:values 是现在 :attribute 是必需的', - 'required_with_all' => '当:值存在时,需要:属性字段。', - 'required_without' => '当:values 是现在 :attribute 是必需的', + 'mac_address' => ':attribute 字段必须是一个有效的 MAC 地址。', + 'max' => [ + 'array' => ':attribute 字段不能超过 :max 项。', + 'file' => ':attribute 字段不能大于 :max kb。', + 'numeric' => ':attribute 字段不能大于 :max 。', + 'string' => ':attribute 字段不能大于 :max 个字符。', + ], + 'max_digits' => ':attribute 字段不能超过 :max 位数。', + 'mimes' => ':attribute 字段必须是类型为: :values 的文件。', + 'mimetypes' => ':attribute 字段必须是类型为: :values 的文件。', + 'min' => [ + 'array' => ':attribute 字段必须至少包含 :min 项。', + 'file' => ':attribute 字段必须至少 :min kb。', + 'numeric' => ':attribute 字段必须至少 :min。', + 'string' => ':attribute 字段必须至少 :min 字符。', + ], + 'min_digits' => ':attribute 字段必须至少有 :min 个数字。', + 'missing' => ':attribute 字段必须缺失。', + 'missing_if' => '当 :other 是 :value 时 :attribute 字段必须缺失。', + 'missing_unless' => ':attribute 字段必须确实,除非 :other 是 :value 。', + 'missing_with' => '当 :values 存在时,:attribute 字段必须缺失。', + 'missing_with_all' => '当 :values 存在时,:attribute 字段必须缺失。', + 'multiple_of' => ':attribute 字段必须是 :value 的倍数。', + 'not_in' => '选择的 :attribute 无效', + 'not_regex' => ':attribute 字段格式无效。', + 'numeric' => ':attribute 字段必须是一个数字。', + 'password' => [ + 'letters' => ':attribute 字段必须包含至少一个字母。', + 'mixed' => ':attribute 字段必须至少包含一个大写字母和一个小写字母。', + 'numbers' => ':attribute 字段必须包含至少一个数字。', + 'symbols' => ':attribute 字段必须至少包含一个符号。', + 'uncompromised' => '给定的 :attribute 字段出现在数据泄漏中。请选择一个不同的 :attribute 。', + ], + 'present' => ':属性字段必须存在。', + 'present_if' => '当 :other 为 :value 时,:attribute 字段必须存在。', + 'present_unless' => ':attribute 字段必须存在,除非 :other 是 :value 。', + 'present_with' => '当 :values 存在时,:attribute 字段必须存在。', + 'present_with_all' => '当 :values 存在时,:attribute 字段必须存在。', + 'prohibited' => ':attribute 字段被禁止。', + 'prohibited_if' => '当:other 是 :value 时,:attribute 字段被禁止。', + 'prohibited_unless' => ':attribute 字段被禁止,除非 :other 在 :values 。', + 'prohibits' => ':attribute 字段禁止 :other 出现。', + 'regex' => ':attribute 字段格式无效。', + 'required' => ':attribute 字段必填', + 'required_array_keys' => ':attribute 字段必须包含::values 。', + 'required_if' => ':attribute 字段在 :other 是 :value 时是必须的', + 'required_if_accepted' => '当 :other 被接受时,:attribute 字段是必需的。', + 'required_if_declined' => '当 :other 被拒绝时,:attribute 字段是必需的。', + 'required_unless' => '需要:属性字段,除非:other is in:values。', + 'required_with' => ' 当:values 是现在 :attribute 是必需的', + 'required_with_all' => '当 :values 存在时 :attribute 字段是必需的。', + 'required_without' => '当:values 是现在 :attribute 是必需的', 'required_without_all' => '当不存在:值时,需要:属性字段。', - 'same' => ':attribute 和 :other 必需匹配', - 'size' => [ - 'numeric' => ':attribute 必需是 :size', - 'file' => ':attribute 必需是 :size kb', - 'string' => ':attribute 必需是 :size 个字符', - 'array' => ':属性必须包含:size项。', + 'same' => ':attribute 字段必须匹配 :other 。', + 'size' => [ + 'array' => ':attribute 字段必须包含 :size 项。', + 'file' => ':attribute 字段必须是 :size kb。', + 'numeric' => ':attribute 字段必须是 :size 。', + 'string' => ':attribute 字段必须是 :size 个字符。', ], + 'starts_with' => ':attribute 字段必须以下列之一开始::values 。', 'string' => ':属性必须是字符串。', - 'timezone' => ':属性必须是有效区域。', 'two_column_unique_undeleted' => ':attribute 在 :table1 和 :table2 中必须是唯一的。 ', - 'unique' => ':attribute 已经被采用', - 'uploaded' => ':属性无法上传。', - 'url' => ':attribute 格式无效', 'unique_undeleted' => ':attribute 属性必须唯一。', 'non_circular' => ':attribute 不能创建循环引用。', 'not_array' => ':attribute 不能是一个数组。', @@ -102,12 +163,13 @@ return [ 'numbers' => '密码必须包含至少一个数字。', 'case_diff' => '密码必须使用混合大小写。', 'symbols' => '密码必须包含符号。', - 'gte' => [ - 'numeric' => '数值不能为负数' - ], - 'checkboxes' => ':attribute 包含无效的选项。', - 'radio_buttons' => ':attribute 无效。', - + 'timezone' => ':attribute 字段必须是一个有效的时区。', + 'unique' => ':attribute 已经被采用', + 'uploaded' => ':属性无法上传。', + 'uppercase' => ':attribute 字段必须是大写。', + 'url' => ':attribute 字段必须是一个有效的 URL。', + 'ulid' => ':attribute 字段必须是个有效的 ULID。', + 'uuid' => ':attribute 字段必须是一个有效的 UUID。', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute 必须是 YYYY-MM-DD 格式的有效日期', 'last_audit_date.date_format' => ':attribute 必须是 YYYY-MM-DD hh:mm:ss 格式的有效日期', 'expiration_date.date_format' => ':attribute 必须是 YYYY-MM-DD 格式的有效日期', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute 必须是 YYYY-MM-DD 格式的有效日期', 'start_date.date_format' => ':attribute 必须是 YYYY-MM-DD 格式的有效日期', 'end_date.date_format' => ':attribute 必须是 YYYY-MM-DD 格式的有效日期', - - ], - + 'checkboxes' => ':attribute 包含无效的选项。', + 'radio_buttons' => ':attribute 无效。', + 'invalid_value_in_field' => '此字段中包含的值无效', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => '此字段中包含的值无效', + + 'generic' => [ + 'invalid_value_in_field' => '此字段中包含的值无效', + 'required' => '此字段是必填项', + 'email' => '请输入一个有效的电子邮件地址', + ], + + ]; diff --git a/resources/lang/zh-HK/account/general.php b/resources/lang/zh-HK/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/zh-HK/account/general.php +++ b/resources/lang/zh-HK/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/zh-HK/admin/accessories/message.php b/resources/lang/zh-HK/admin/accessories/message.php index c688d5e03d..f60d41957b 100644 --- a/resources/lang/zh-HK/admin/accessories/message.php +++ b/resources/lang/zh-HK/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Accessory was not checked out, please try again', 'success' => 'Accessory checked out successfully.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/zh-HK/admin/consumables/general.php b/resources/lang/zh-HK/admin/consumables/general.php index 7c6bb32968..29acfedc1b 100644 --- a/resources/lang/zh-HK/admin/consumables/general.php +++ b/resources/lang/zh-HK/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Consumable', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/zh-HK/admin/consumables/message.php b/resources/lang/zh-HK/admin/consumables/message.php index c0d0aa7f68..e2591503bf 100644 --- a/resources/lang/zh-HK/admin/consumables/message.php +++ b/resources/lang/zh-HK/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Consumable does not exist.', 'create' => array( diff --git a/resources/lang/zh-HK/admin/custom_fields/message.php b/resources/lang/zh-HK/admin/custom_fields/message.php index 43ba821821..6442359b7f 100644 --- a/resources/lang/zh-HK/admin/custom_fields/message.php +++ b/resources/lang/zh-HK/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'That field does not exist.', 'already_added' => 'Field already added', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Field was not created, please try again.', diff --git a/resources/lang/zh-HK/admin/hardware/message.php b/resources/lang/zh-HK/admin/hardware/message.php index 32698b1c07..d06bf4a0e0 100644 --- a/resources/lang/zh-HK/admin/hardware/message.php +++ b/resources/lang/zh-HK/admin/hardware/message.php @@ -2,8 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Asset does not exist.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -52,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Some items did not import correctly.', 'errorDetail' => 'The following Items were not imported because of errors.', 'success' => 'Your file has been imported', diff --git a/resources/lang/zh-HK/admin/licenses/general.php b/resources/lang/zh-HK/admin/licenses/general.php index 79b69a3d94..b39030afd4 100644 --- a/resources/lang/zh-HK/admin/licenses/general.php +++ b/resources/lang/zh-HK/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'License Info', 'license_seats' => 'License Seats', 'seat' => 'Seat', + 'seat_count' => 'Seat :count', 'seats' => 'Seats', 'software_licenses' => 'Software Licenses', 'user' => 'User', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/zh-HK/admin/licenses/message.php b/resources/lang/zh-HK/admin/licenses/message.php index 27fbfe38a9..7f5981aa05 100644 --- a/resources/lang/zh-HK/admin/licenses/message.php +++ b/resources/lang/zh-HK/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'There was an issue checking out the license. Please try again.', 'success' => 'The license was checked out successfully', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/zh-HK/admin/models/message.php b/resources/lang/zh-HK/admin/models/message.php index cc38c54530..f61a2c535f 100644 --- a/resources/lang/zh-HK/admin/models/message.php +++ b/resources/lang/zh-HK/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/zh-HK/admin/settings/general.php b/resources/lang/zh-HK/admin/settings/general.php index 8074f5082e..9ba69ef22a 100644 --- a/resources/lang/zh-HK/admin/settings/general.php +++ b/resources/lang/zh-HK/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'LDAP Server', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'LDAP SSL certificate validation', 'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate', 'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'optional', 'per_page' => 'Results Per Page', 'php' => 'PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/zh-HK/button.php b/resources/lang/zh-HK/button.php index 5037d00640..fead420b27 100644 --- a/resources/lang/zh-HK/button.php +++ b/resources/lang/zh-HK/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Delete', 'edit' => 'Edit', + 'clone' => 'Clone', 'restore' => 'Restore', 'remove' => 'Remove', 'request' => 'Request', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'New', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/zh-HK/general.php b/resources/lang/zh-HK/general.php index 47a1ba33e5..3a63ca97e0 100644 --- a/resources/lang/zh-HK/general.php +++ b/resources/lang/zh-HK/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'More Info', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Expires', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/zh-HK/mail.php b/resources/lang/zh-HK/mail.php index 91fbca47db..ec57192486 100644 --- a/resources/lang/zh-HK/mail.php +++ b/resources/lang/zh-HK/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'I have read and agree to the terms of use, and have received this item.', 'inventory_report' => 'Inventory Report', 'item' => '項目:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Please click on the following link to update your :web password:', 'login' => 'Login:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'User', 'username' => 'Username', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Welcome :name', 'welcome_to' => 'Welcome to :web!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Your Snipe-IT credentials', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/zh-HK/validation.php b/resources/lang/zh-HK/validation.php index 05374e23af..b33548e2ff 100644 --- a/resources/lang/zh-HK/validation.php +++ b/resources/lang/zh-HK/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/zh-TW/account/general.php b/resources/lang/zh-TW/account/general.php index a29c8ac3a8..c87a924085 100644 --- a/resources/lang/zh-TW/account/general.php +++ b/resources/lang/zh-TW/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => '個人 API 金鑰', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => '您的 API 基礎 URL 位於:', 'api_base_url_endpoint' => '/<端點>', 'api_token_expiration_time' => 'API tokens 設定為在以下時間過期:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/zh-TW/admin/accessories/message.php b/resources/lang/zh-TW/admin/accessories/message.php index d00f0daee7..c9f947f0d2 100644 --- a/resources/lang/zh-TW/admin/accessories/message.php +++ b/resources/lang/zh-TW/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => '配件借出失敗。請再試一次。', 'success' => '借出配件成功。', 'unavailable' => '配件不足無法借出, 檢查可用數量.', - 'user_does_not_exist' => '使用者不正確。請再試一次。' + 'user_does_not_exist' => '使用者不正確。請再試一次。', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/zh-TW/admin/consumables/general.php b/resources/lang/zh-TW/admin/consumables/general.php index 9337216db2..e5ea635438 100644 --- a/resources/lang/zh-TW/admin/consumables/general.php +++ b/resources/lang/zh-TW/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => '剩餘', 'total' => '總計', 'update' => '更新耗材', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/zh-TW/admin/consumables/message.php b/resources/lang/zh-TW/admin/consumables/message.php index eb48449aa2..fa333e65ac 100644 --- a/resources/lang/zh-TW/admin/consumables/message.php +++ b/resources/lang/zh-TW/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => '耗材不存在。', 'create' => array( diff --git a/resources/lang/zh-TW/admin/custom_fields/message.php b/resources/lang/zh-TW/admin/custom_fields/message.php index 0d2b86aa8a..4a52aef714 100644 --- a/resources/lang/zh-TW/admin/custom_fields/message.php +++ b/resources/lang/zh-TW/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => '欄位不存在。', 'already_added' => '已新增欄位。', + 'none_selected' => 'No field selected', 'create' => array( 'error' => '新增欄位失敗,請重試。', diff --git a/resources/lang/zh-TW/admin/hardware/message.php b/resources/lang/zh-TW/admin/hardware/message.php index 3671de4a3f..666de34cc4 100644 --- a/resources/lang/zh-TW/admin/hardware/message.php +++ b/resources/lang/zh-TW/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => '警告: 此資產目前已標記為不可佈署,如果資產狀態已改變,請更新狀態。', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => '資產不存在', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => '某些項目沒有被正確匯入。', 'errorDetail' => '以下項目由於錯誤未被匯入。', 'success' => '您的檔案已被匯入。', diff --git a/resources/lang/zh-TW/admin/licenses/general.php b/resources/lang/zh-TW/admin/licenses/general.php index fb7303955f..f50955a874 100644 --- a/resources/lang/zh-TW/admin/licenses/general.php +++ b/resources/lang/zh-TW/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => '授權訊息', 'license_seats' => '授權數量', 'seat' => '數量', + 'seat_count' => 'Seat :count', 'seats' => '數量', 'software_licenses' => '軟體授權', 'user' => '使用者 @@ -24,12 +25,12 @@ return array( [ 'checkin_all' => [ 'button' => '歸還所有名額', - 'modal' => '此操作將歸還一個名額。| 此操作將歸還所有 :checkedout_seats_count 名額的此授權。', + 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', 'enabled_tooltip' => '從使用者和資產中歸還此授權的所有名額', 'disabled_tooltip' => '此功能已停用,因為目前沒有名額在借出中', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => '授權成功歸還!| 所有授權都成功歸還!', - 'log_msg' => '透過授權 GUI 的大量歸還功能歸還', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/zh-TW/admin/licenses/message.php b/resources/lang/zh-TW/admin/licenses/message.php index 3bf3790c23..9909eebe8d 100644 --- a/resources/lang/zh-TW/admin/licenses/message.php +++ b/resources/lang/zh-TW/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => '借出授權時發生問題,請重試。', 'success' => '借出授權成功。', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/zh-TW/admin/models/message.php b/resources/lang/zh-TW/admin/models/message.php index cc20b76eab..3473fb8336 100644 --- a/resources/lang/zh-TW/admin/models/message.php +++ b/resources/lang/zh-TW/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => '警告!此項目的資產型號無效或遺失!', 'no_association_fix' => '這將以奇怪和可怕的方式損壞事物。立即編輯此資產以分配型號。', 'assoc_users' => '至少還有一個資產與此樣板關聯,目前不能被删除,請在刪除資產後重試。 ', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => '新增樣板失敗,請重試。', diff --git a/resources/lang/zh-TW/admin/settings/general.php b/resources/lang/zh-TW/admin/settings/general.php index 836c9aa4bc..db6ff97f2f 100644 --- a/resources/lang/zh-TW/admin/settings/general.php +++ b/resources/lang/zh-TW/admin/settings/general.php @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => '這僅測試 LDAP 可以正確同步。如果 LDAP 身份驗證查詢不正確, 使用者可能仍無法登錄。您必須先保存更新的 LDAP 設置。', 'ldap_manager' => 'LDAP 管理者', 'ldap_server' => 'LDAP伺服器', - 'ldap_server_help' => '這應以 ldap:// (未加密或TLS加密) 或 ldaps:// (SSL加密) 開頭', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => '檢查LDAP的SSL憑證', 'ldap_server_cert_ignore' => '允許未通過校驗旳SSL憑證', 'ldap_server_cert_help' => '如果您使用了自簽署憑證,請勾選', @@ -123,8 +123,8 @@ return [ 'ldap_test' => '測試 LDAP', 'ldap_test_sync' => '測試 LDAP 同步', 'license' => '軟體授權', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => '登入嘗試', 'login_attempt' => '登入嘗試', 'login_ip' => 'IP 位址', @@ -151,7 +151,7 @@ return [ 'optional' => '可選', 'per_page' => '每頁呈現結果', 'php' => 'PHP 版本', - 'php_info' => 'PHP 資訊', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP 系統資訊', @@ -376,5 +376,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/zh-TW/button.php b/resources/lang/zh-TW/button.php index a425c0f276..20c6b43abd 100644 --- a/resources/lang/zh-TW/button.php +++ b/resources/lang/zh-TW/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => '全部繳回 / 刪除使用者', 'delete' => '刪除', 'edit' => '編輯', + 'clone' => 'Clone', 'restore' => '還原', 'remove' => '移除', 'request' => '申請', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => '新增維護', 'append' => '追加', 'new' => '新增', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/zh-TW/general.php b/resources/lang/zh-TW/general.php index 11e36a24d8..e8936ec4db 100644 --- a/resources/lang/zh-TW/general.php +++ b/resources/lang/zh-TW/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => '更多資訊', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => '過期', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/zh-TW/mail.php b/resources/lang/zh-TW/mail.php index 46bf60a455..b0e9d63d4d 100644 --- a/resources/lang/zh-TW/mail.php +++ b/resources/lang/zh-TW/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => '我同意使用條款,並且已經收到物品。', 'inventory_report' => '庫存報告', 'item' => '項目:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => '有 :count 個授權將在 :threshold 天後到期。|有 :count 個授權將在 :threshold 天後到期。', 'link_to_update_password' => '請點擊以下鏈結以更新 :web 的密碼:', 'login' => '登入', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => '有 :count 項資產將在接下來的 :threshold 天內進行稽核。|有 :count 項資產將在接下來的 :threshold 天內進行稽核。', 'user' => '使用者', 'username' => '使用者名稱', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => '歡迎您 :name', 'welcome_to' => '歡迎來到 :web!', 'your_assets' => '查看您的資產', 'your_credentials' => '您的 Snipe-IT 憑證', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/zh-TW/validation.php b/resources/lang/zh-TW/validation.php index 432e9d2817..4711c8e0be 100644 --- a/resources/lang/zh-TW/validation.php +++ b/resources/lang/zh-TW/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => ':attribute 必須接受', - 'active_url' => '屬性不是有效的URL', - 'after' => ':attribute 必須在 :date 之後', - 'after_or_equal' => ':attribute 必須在 :date 之後', - 'alpha' => ':attribute 只能包含字母', - 'alpha_dash' => ':attribute 只能包含字母,數字和\'-\'', - 'alpha_num' => ':attribute 只允許字母和數字', - 'array' => ':attribute 必須是陣列', - 'before' => ':attribute 必須在 :date 之前', - 'before_or_equal' => ':attribute 必須在 :date 之前', - 'between' => [ - 'numeric' => ':attribute 必須在 :min - :max 之間', - 'file' => ':attribute 必須在 :min - :max KB 之間', - 'string' => ':attribute 必須在 :min - :max 字元之間', - 'array' => ':attribute 必須在 :min 和 :max 之間', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => ':attribute 必須是 true 或 false', - 'confirmed' => ':attribute 屬性不相符', - 'date' => ':attribute 不是有效日期', - 'date_format' => ':attribute 不符合 :format 的格式', - 'different' => ':attribute 和 :other 不能相同', - 'digits' => ':attribute 必須是 :digits 數字', - 'digits_between' => ':attribute 必須在 :min 和 :max 之间', - 'dimensions' => ':attribute 屬性具有不正確圖像尺寸。', - 'distinct' => ':attribute 具有重複值', - 'email' => ':attribute 格式不正確', - 'exists' => '選擇的 :attribute 無效', - 'file' => ':attribute 必須是檔案', - 'filled' => ':attribute 欄位必須有值。', - 'image' => ':attribute 必須是圖片格式', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => ':attribute 具有重複值', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => '選擇的 :attribute 無效', + 'exists' => '選擇的 :attribute 無效', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => ':attribute 欄位必須有值。', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => ':fieldname 的值不能為空。', - 'in' => '選擇的 :attribute 無效', - 'in_array' => ':attribute 屬性欄位不存在 :other。', - 'integer' => ':attribute 必須是整數', - 'ip' => ':attribute 必須是有效 IP', - 'ipv4' => ':attribute 必須是有效的 IPv4 位址', - 'ipv6' => ':attribute 必須是有效的 IPv6 位址', - 'is_unique_department' => ':attribute 必須對此公司位置具有唯一性', - 'json' => ':attribute 必須是有效的 JSON 字串', - 'max' => [ - 'numeric' => ':attribute 不可大於 :max', - 'file' => ':attribute 不可大於 :max KB', - 'string' => ':attribute 不可大於 :max 個字元', - 'array' => ':attribute 不可大於 :max 個項目', + 'in' => '選擇的 :attribute 無效', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => ':attribute 檔案類型必須是 :values', - 'mimetypes' => ':attribute 檔案類型必須是 :values', - 'min' => [ - 'numeric' => ':attribute 最少 :min', - 'file' => ':attribute 最小 :min KB', - 'string' => ':attribute 最少要有 :min 個字元', - 'array' => ':attribute 最少要有 :min 個項目', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => ':attribute 必須以下列之一做為開頭: :values.', - 'ends_with' => ':attribute 必須以以下之一做為結尾: :values。', - - 'not_in' => '選擇的 :attribute 無效', - 'numeric' => ':attribute 必須是數字', - 'present' => ':屬性字段必須存在。', - 'valid_regex' => '這不是一個有效的正則表達式。', - 'regex' => ':attribute 格式不正確', - 'required' => ':attribute 欄位必填', - 'required_if' => ':attribute 欄位在 :other 是 :value 時是必填的', - 'required_unless' => '需要:屬性字段,除非:other is in:values。', - 'required_with' => '當設定 :value 時,:attribute 欄位必填', - 'required_with_all' => '當:值存在時,需要:屬性字段。', - 'required_without' => '當設定非 :value 時,:attribute 欄位必填', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => '選擇的 :attribute 無效', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => ':屬性字段必須存在。', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => ':attribute 欄位必填', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => ':attribute 欄位在 :other 是 :value 時是必填的', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => '需要:屬性字段,除非:other is in:values。', + 'required_with' => '當設定 :value 時,:attribute 欄位必填', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => '當設定非 :value 時,:attribute 欄位必填', 'required_without_all' => '當不存在:值時,需要:屬性字段。', - 'same' => ':attribute 和 :other 必需相符', - 'size' => [ - 'numeric' => ':attribute 必須是 :size', - 'file' => ':attribute 必須是 :size KB', - 'string' => ':attribute 必須是 :size 個字元', - 'array' => ':attribute 必須包含 :size 個項目', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => ':attribute 必須是字串', - 'timezone' => ':屬性必須是有效區域。', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => ':attribute 已被採用', - 'uploaded' => ':attribute 上傳失敗', - 'url' => ':attribute 格式不正確', 'unique_undeleted' => ':attribute 必須是唯一值', 'non_circular' => ':attribule 屬性不能建立一個循環參考', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => '密碼至少必須包含 1 個數字。', 'case_diff' => '密碼必須使用大小寫混合', 'symbols' => '密碼必須包含符號', - 'gte' => [ - 'numeric' => '值不能為負' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => ':attribute 已被採用', + 'uploaded' => ':attribute 上傳失敗', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => ':attribute 必須是 YYYY-MM-DD 格式的有效日期', 'last_audit_date.date_format' => ':attribute 必須是 YYYY-MM-DD hh:mm:ss 格式的有效日期', 'expiration_date.date_format' => ':attribute 必須是 YYYY-MM-DD 格式的有效日期', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => ':attribute 必須是 YYYY-MM-DD 格式的有效日期', 'start_date.date_format' => ':attribute 必須是 YYYY-MM-DD 格式的有效日期', 'end_date.date_format' => ':attribute 必須是 YYYY-MM-DD 格式的有效日期', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/lang/zu-ZA/account/general.php b/resources/lang/zu-ZA/account/general.php index 1a9e2c03b8..d99e36df82 100644 --- a/resources/lang/zu-ZA/account/general.php +++ b/resources/lang/zu-ZA/account/general.php @@ -2,10 +2,14 @@ return array( 'personal_api_keys' => 'Personal API Keys', + 'personal_access_token' => 'Personal Access Token', + 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Your API base url is located at:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', + 'no_tokens' => 'You have not created any personal access tokens.', ); diff --git a/resources/lang/zu-ZA/admin/accessories/message.php b/resources/lang/zu-ZA/admin/accessories/message.php index 02e944eaba..ad45465495 100644 --- a/resources/lang/zu-ZA/admin/accessories/message.php +++ b/resources/lang/zu-ZA/admin/accessories/message.php @@ -26,7 +26,11 @@ return array( 'error' => 'Ukufinyelela akuzange kuhlolwe, sicela uzame futhi', 'success' => 'Ukufinyelela kufakwe ngempumelelo.', 'unavailable' => 'Accessory is not available for checkout. Check quantity available', - 'user_does_not_exist' => 'Lo msebenzisi awuvumelekile. Ngicela uzame futhi.' + 'user_does_not_exist' => 'Lo msebenzisi awuvumelekile. Ngicela uzame futhi.', + 'checkout_qty' => array( + 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + ), + ), 'checkin' => array( diff --git a/resources/lang/zu-ZA/admin/consumables/general.php b/resources/lang/zu-ZA/admin/consumables/general.php index 2261d166db..18a09c2bca 100644 --- a/resources/lang/zu-ZA/admin/consumables/general.php +++ b/resources/lang/zu-ZA/admin/consumables/general.php @@ -8,4 +8,5 @@ return array( 'remaining' => 'Ukuhlala', 'total' => 'Inani', 'update' => 'Ukuvuselelwa okudliwe', + 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', ); diff --git a/resources/lang/zu-ZA/admin/consumables/message.php b/resources/lang/zu-ZA/admin/consumables/message.php index 8e6d4846de..63a8c80c49 100644 --- a/resources/lang/zu-ZA/admin/consumables/message.php +++ b/resources/lang/zu-ZA/admin/consumables/message.php @@ -2,6 +2,7 @@ return array( + 'invalid_category_type' => 'The category must be a consumable category.', 'does_not_exist' => 'Ukuthengwa akukho.', 'create' => array( diff --git a/resources/lang/zu-ZA/admin/custom_fields/message.php b/resources/lang/zu-ZA/admin/custom_fields/message.php index 1d3080bf95..cc6f52df1a 100644 --- a/resources/lang/zu-ZA/admin/custom_fields/message.php +++ b/resources/lang/zu-ZA/admin/custom_fields/message.php @@ -5,6 +5,7 @@ return array( 'field' => array( 'invalid' => 'Leyo nsiyo ayikho.', 'already_added' => 'Inkambu isivele iseziwe', + 'none_selected' => 'No field selected', 'create' => array( 'error' => 'Inkundla ayidalwanga, sicela uzame futhi.', diff --git a/resources/lang/zu-ZA/admin/hardware/message.php b/resources/lang/zu-ZA/admin/hardware/message.php index a3fea93b5e..371846edda 100644 --- a/resources/lang/zu-ZA/admin/hardware/message.php +++ b/resources/lang/zu-ZA/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Thola: Lelifa limakwe njengamanje elingenakutholakali. Uma lesi simo sesishintshile, sicela ubuyekeze isimo sesifa.', + 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', 'does_not_exist' => 'Impahla ayikho.', 'does_not_exist_var'=> 'Asset with tag :asset_tag not found.', 'no_tag' => 'No asset tag provided.', @@ -51,6 +51,7 @@ return [ ], 'import' => [ + 'import_button' => 'Process Import', 'error' => 'Ezinye izinto azange zingenise ngendlela efanele.', 'errorDetail' => 'Izinto ezilandelayo azange zingeniswe ngenxa yamaphutha.', 'success' => 'Ifayela lakho lifakiwe', diff --git a/resources/lang/zu-ZA/admin/licenses/general.php b/resources/lang/zu-ZA/admin/licenses/general.php index 8ccd36c984..8046cc6a5f 100644 --- a/resources/lang/zu-ZA/admin/licenses/general.php +++ b/resources/lang/zu-ZA/admin/licenses/general.php @@ -14,6 +14,7 @@ return array( 'info' => 'Ulwazi lwelayisense', 'license_seats' => 'Izihlalo zelayisense', 'seat' => 'Isihlalo', + 'seat_count' => 'Seat :count', 'seats' => 'Izihlalo', 'software_licenses' => 'Ilayisense Yezinhlelo', 'user' => 'Umsebenzisi', @@ -23,12 +24,12 @@ return array( [ '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.', + 'modal' => 'This action will 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', 'disabled_tooltip_reassignable' => 'This is disabled because the License is not reassignable', 'success' => 'License successfully checked in! | All licenses were successfully checked in!', - 'log_msg' => 'Checked in via bulk license checkout in license GUI', + 'log_msg' => 'Checked in via bulk license checkin in license GUI', ], 'checkout_all' => [ diff --git a/resources/lang/zu-ZA/admin/licenses/message.php b/resources/lang/zu-ZA/admin/licenses/message.php index 58b3cb914b..c541a68ad8 100644 --- a/resources/lang/zu-ZA/admin/licenses/message.php +++ b/resources/lang/zu-ZA/admin/licenses/message.php @@ -44,6 +44,8 @@ return array( 'error' => 'Kube nenkinga yokuhlola ilayisense. Ngicela uzame futhi.', 'success' => 'Ilayisensi yahlolwa ngokuphumelelayo', 'not_enough_seats' => 'Not enough license seats available for checkout', + 'mismatch' => 'The license seat provided does not match the license', + 'unavailable' => 'This seat is not available for checkout.', ), 'checkin' => array( diff --git a/resources/lang/zu-ZA/admin/models/message.php b/resources/lang/zu-ZA/admin/models/message.php index ddaea5441b..c46254f284 100644 --- a/resources/lang/zu-ZA/admin/models/message.php +++ b/resources/lang/zu-ZA/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Lo modeli okwamanje uhlotshaniswa nefa elilodwa noma ngaphezulu futhi alinakususwa. Sicela ususe amafa, bese uzama ukususa futhi.', - + 'invalid_category_type' => 'The category must be an asset category.', 'create' => array( 'error' => 'Isibonelo asizange sidalwe, sicela uzame futhi.', diff --git a/resources/lang/zu-ZA/admin/settings/general.php b/resources/lang/zu-ZA/admin/settings/general.php index 5acdf5a453..6cc497fe90 100644 --- a/resources/lang/zu-ZA/admin/settings/general.php +++ b/resources/lang/zu-ZA/admin/settings/general.php @@ -94,7 +94,7 @@ return [ '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_server' => 'Iseva ye-LDAP', - 'ldap_server_help' => 'Lokhu kufanele kuqale nge-ldap: // (for uncrypted or TLS) noma ldaps: // (for SSL)', + 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', 'ldap_server_cert' => 'Ukuqinisekiswa kwesitifiketi se-LDAP SSL', 'ldap_server_cert_ignore' => 'Vumela isitifikedi se-SSL esingavumelekile', 'ldap_server_cert_help' => 'Khetha leli bhokisi lokuhlola uma usebenzisa isitifiketi se-SSL esayiniwe futhi ungathanda ukwamukela isitifiketi esingavumelekile se-SSL.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Test LDAP', 'ldap_test_sync' => 'Test LDAP Synchronization', 'license' => 'Software License', - 'load_remote' => 'Use Gravatar', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load images from Gravatar.', + 'load_remote' => 'Load Remote Avatars', + 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', 'login' => 'Login Attempts', 'login_attempt' => 'Login Attempt', 'login_ip' => 'IP Address', @@ -150,7 +150,7 @@ return [ 'optional' => 'ukuzikhethela', 'per_page' => 'Imiphumela Ngayo Ikhasi', 'php' => 'I-PHP Version', - 'php_info' => 'PHP Info', + 'php_info' => 'PHP info', 'php_overview' => 'PHP', 'php_overview_keywords' => 'phpinfo, system, info', 'php_overview_help' => 'PHP System info', @@ -375,5 +375,9 @@ return [ 'timezone' => 'Timezone', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', + 'default_avatar' => 'Upload custom default avatar', + 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', + 'restore_default_avatar' => 'Restore original system default avatar', + 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/zu-ZA/button.php b/resources/lang/zu-ZA/button.php index f040bfda03..d57de8065f 100644 --- a/resources/lang/zu-ZA/button.php +++ b/resources/lang/zu-ZA/button.php @@ -7,6 +7,7 @@ return [ 'checkin_and_delete' => 'Checkin All / Delete User', 'delete' => 'Susa', 'edit' => 'Hlela', + 'clone' => 'Clone', 'restore' => 'Buyisela', 'remove' => 'Remove', 'request' => 'Isicelo', @@ -21,4 +22,13 @@ return [ 'add_maintenance' => 'Add Maintenance', 'append' => 'Append', 'new' => 'Okusha', + 'var' => [ + 'clone' => 'Clone :item_type', + 'edit' => 'Edit :item_type', + 'delete' => 'Delete :item_type', + 'restore' => 'Delete :item_type', + 'create' => 'Create New :item_type', + 'checkout' => 'Checkout :item_type', + 'checkin' => 'Checkin :item_type', + ] ]; diff --git a/resources/lang/zu-ZA/general.php b/resources/lang/zu-ZA/general.php index 1cae6031b9..abafc9f1bf 100644 --- a/resources/lang/zu-ZA/general.php +++ b/resources/lang/zu-ZA/general.php @@ -549,6 +549,14 @@ return [ 'license_seats' => ':count License Seat|:count License Seats', 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', - ] + ], + 'more_info' => 'Ulwazi oluningi', + 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'whoops' => 'Whoops!', + 'something_went_wrong' => 'Something went wrong with your request.', + 'close' => 'Close', + 'expires' => 'Iphelelwa yisikhathi', + 'map_fields'=> 'Map :item_type Field', + 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/zu-ZA/mail.php b/resources/lang/zu-ZA/mail.php index 5ce920eb6f..cbe5598fd5 100644 --- a/resources/lang/zu-ZA/mail.php +++ b/resources/lang/zu-ZA/mail.php @@ -56,6 +56,7 @@ return [ 'i_have_read' => 'Ngifunde futhi ngiyavumelana nemigomo yokusetshenziswa, futhi ngithole le nto.', 'inventory_report' => 'Inventory Report', 'item' => 'Into:', + 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', 'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.', 'link_to_update_password' => 'Sicela uchofoze kusixhumanisi esilandelayo ukuze ubuyekeze: iphasiwedi yakho yewebhu:', 'login' => 'Ngena ngemvume:', @@ -86,8 +87,10 @@ return [ 'upcoming-audits' => 'There is :count asset that is coming up for audit within :threshold days.|There are :count assets that are coming up for audit within :threshold days.', 'user' => 'Umsebenzisi', 'username' => 'Igama lomsebenzisi', + 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', 'welcome' => 'Siyakwamukela: igama', 'welcome_to' => 'Siyakwamukela ku: iwebhu!', 'your_assets' => 'View Your Assets', 'your_credentials' => 'Izimpawu zakho ze-Snipe-IT', + 'mail_sent' => 'Mail sent successfully!', ]; diff --git a/resources/lang/zu-ZA/validation.php b/resources/lang/zu-ZA/validation.php index 6aaea0d2a3..56df18fff8 100644 --- a/resources/lang/zu-ZA/validation.php +++ b/resources/lang/zu-ZA/validation.php @@ -13,87 +13,148 @@ return [ | */ - 'accepted' => 'I: izimfanelo kufanele zamukelwe.', - 'active_url' => 'I: imfanelo ayiyona i-URL evumelekile.', - 'after' => 'I: imfanelo kufanele ibe usuku emva: idethi.', - 'after_or_equal' => 'I: imfanelo kufanele ibe usuku olulandelayo noma olulingana nalokhu: usuku.', - 'alpha' => 'I: imfanelo ingase ibe nezinhlamvu kuphela.', - 'alpha_dash' => 'I: i-attribute ingaqukatha kuphela izinhlamvu, izinombolo, kanye nokudonswa.', - 'alpha_num' => 'I: Imfanelo ingase ibe nezinhlamvu nezinombolo kuphela.', - 'array' => 'I: imfanelo kufanele ibe i-array.', - 'before' => 'I: Imfanelo kufanele ibe usuku ngaphambi: idethi.', - 'before_or_equal' => 'I: imfanelo kufanele ibe usuku ngaphambi noma elilingana nalokhu: usuku.', - 'between' => [ - 'numeric' => 'I: imfanelo kufanele ibe phakathi: min futhi: max.', - 'file' => 'I: imfanelo kufanele ibe phakathi: min futhi: max kilobyte.', - 'string' => 'I: imfanelo kufanele ibe phakathi: min futhi: max izinhlamvu.', - 'array' => 'I: imfanelo kufanele ibe phakathi kwe: min kanye: izinto eziningi.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'I: Insimu yemfanelo kufanele ibe yikho noma ingamanga.', - 'confirmed' => 'I: imfanelo yokuqinisekisa ayifani.', - 'date' => 'I: imfanelo akuyona idethi evumelekile.', - 'date_format' => 'I: imfanelo ayihambisani nefomethi: ifomethi.', - 'different' => 'I: i-attribut futhi: enye kumele ihluke.', - 'digits' => 'I: imfanelo kufanele ibe: amadijithi amadijithali.', - 'digits_between' => 'I: imfanelo kufanele ibe phakathi: iminithi kanye: amadijithi amaningi.', - 'dimensions' => 'I: imfanelo inezinhlobo zesithombe ezingavumelekile.', - 'distinct' => 'I: insimu yemfanelo inenani eliphindwe kabili.', - 'email' => 'I: imfanelo kufanele ibe ikheli le-imeyili elivumelekile.', - 'exists' => 'Okukhethiwe: imfanelo ayivumelekile.', - 'file' => 'I: imfanelo kufanele ibe ifayela.', - 'filled' => 'I: insimu yemfanelo kufanele ibe nenani.', - 'image' => 'I: imfanelo kufanele ibe isithombe.', + 'boolean' => 'I: Insimu yemfanelo kufanele ibe yikho noma ingamanga.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'I: insimu yemfanelo inenani eliphindwe kabili.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'Okukhethiwe: imfanelo ayivumelekile.', + 'exists' => 'Okukhethiwe: imfanelo ayivumelekile.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'I: insimu yemfanelo kufanele ibe nenani.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - 'in' => 'Okukhethiwe: imfanelo ayivumelekile.', - 'in_array' => 'I: inkambu yokwazisa ayikho: enye.', - 'integer' => 'I: imfanelo kufanele ibe inamba.', - 'ip' => 'I: imfanelo kufanele ibe ikheli le-IP elivumelekile.', - 'ipv4' => 'I: imfanelo kufanele ibe ikheli le-IPv4 elivumelekile.', - 'ipv6' => 'I: imfanelo kufanele ibe ikheli le-IPv6 elivumelekile.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'I: imfanelo kufanele ibe yocingo oluvumelekile le-JSON.', - 'max' => [ - 'numeric' => 'I: umqondo kungenzeka ukuthi awukhulu kun: max.', - 'file' => 'I: I-attribute ingase ingabi mkhulu kune: ama-kilobytes amaningi.', - 'string' => 'I: I-attribute ingase ingabi mkhulu kune: izinhlamvu eziphezulu.', - 'array' => 'I: i-attribute ingase ingabi nalokhu: izinto eziningi.', + 'in' => 'Okukhethiwe: imfanelo ayivumelekile.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'I: imfanelo kufanele ibe ifayela lohlobo:: amanani.', - 'mimetypes' => 'I: imfanelo kufanele ibe ifayela lohlobo:: amanani.', - 'min' => [ - 'numeric' => 'I: imfanelo kumele ibe okungenani: min.', - 'file' => 'I: imfanelo kufanele ibe okungenani: min kilobytes.', - 'string' => 'I: imfanelo kufanele ibe okungenani: izinhlamvu ezincane.', - 'array' => 'I: i-attribut kumele ibe okungenani: min min.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'Okukhethiwe: imfanelo ayivumelekile.', - 'numeric' => 'I: imfanelo kufanele ibe inombolo.', - 'present' => 'I: insimu yemfanelo kufanele ibe khona.', - 'valid_regex' => 'That is not a valid regex. ', - 'regex' => 'I: ifomethi yokwaziswa ayivumelekile.', - 'required' => 'I: insimu yemfanelo iyadingeka.', - 'required_if' => 'I: Insimu yemfanelo iyadingeka uma: enye ingukuthi: inani.', - 'required_unless' => 'I: insimu yemfanelo iyadingeka ngaphandle: enye ikhona: amanani.', - 'required_with' => 'I: Insimu yemfanelo iyadingeka lapho: amanani ekhona.', - 'required_with_all' => 'I: Insimu yemfanelo iyadingeka lapho: amanani ekhona.', - 'required_without' => 'I: Insimu yemfanelo iyadingeka lapho: amanani engekho.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'Okukhethiwe: imfanelo ayivumelekile.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'I: insimu yemfanelo kufanele ibe khona.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'I: insimu yemfanelo iyadingeka.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'I: Insimu yemfanelo iyadingeka uma: enye ingukuthi: inani.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'I: insimu yemfanelo iyadingeka ngaphandle: enye ikhona: amanani.', + 'required_with' => 'I: Insimu yemfanelo iyadingeka lapho: amanani ekhona.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'I: Insimu yemfanelo iyadingeka lapho: amanani engekho.', 'required_without_all' => 'I: Insimu yemfanelo iyadingeka lapho kungekho namunye: amanani akhona.', - 'same' => 'I: i-attribut futhi: enye kufanele ifane.', - 'size' => [ - 'numeric' => 'I: imfanelo kufanele ibe: usayizi.', - 'file' => 'I: imfanelo kufanele ibe: ama-kilobytes wesayizi.', - 'string' => 'I: imfanelo kufanele ibe: izinhlamvu zesayizi.', - 'array' => 'I: imfanelo kufanele ibe nalokhu: izinto ezisayizi.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'I: imfanelo kufanele ibe yocingo.', - 'timezone' => 'I: imfanelo kufanele ibe yindawo evumelekile.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'I: imfanelo isivele ithathwe.', - 'uploaded' => 'I: imfanelo ayihlulekile ukulayisha.', - 'url' => 'I: ifomethi yokwaziswa ayivumelekile.', 'unique_undeleted' => 'I: imfanelo kufanele ibe eyingqayizivele.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -102,12 +163,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'I: imfanelo isivele ithathwe.', + 'uploaded' => 'I: imfanelo ayihlulekile ukulayisha.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -129,7 +191,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -137,9 +199,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -155,8 +218,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; diff --git a/resources/views/accessories/checkout.blade.php b/resources/views/accessories/checkout.blade.php index fc69d4655b..71035a87c1 100755 --- a/resources/views/accessories/checkout.blade.php +++ b/resources/views/accessories/checkout.blade.php @@ -49,9 +49,35 @@
@endif + +
+ +
+

{{ $accessory->qty }}

+
+
+ + +
+ +
+

{{ $accessory->numRemaining() }}

+
+
- @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.select_user'), 'fieldname' => 'assigned_to']) + @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.select_user'), 'fieldname' => 'assigned_to', 'required'=> 'true']) + + +
+ +
+
+ +
+
+ {!! $errors->first('checkout_qty', '
') !!} +
@if ($accessory->requireAcceptance() || $accessory->getEula() || ($snipeSettings->webhook_endpoint!='')) diff --git a/resources/views/accessories/view.blade.php b/resources/views/accessories/view.blade.php index f1a98cf4bd..e42439bd86 100644 --- a/resources/views/accessories/view.blade.php +++ b/resources/views/accessories/view.blade.php @@ -209,7 +209,7 @@ {{ $file->note }} @endif -
+ + + + + + + + +
+ @if ($file->filename) @@ -330,7 +330,7 @@ {{ trans('admin/accessories/general.edit') }} @endcan - @can('update', \App\Models\Accessory::class) + @can('create', \App\Models\Accessory::class) diff --git a/resources/views/consumables/checkout.blade.php b/resources/views/consumables/checkout.blade.php index bde94bc6f4..29b68b6ce7 100644 --- a/resources/views/consumables/checkout.blade.php +++ b/resources/views/consumables/checkout.blade.php @@ -37,6 +37,25 @@ @endif + +
+ +
+

{{ $consumable->qty }}

+
+
+ + +
+ +
+

{{ $consumable->numRemaining() }}

+
+
+ + + + @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.select_user'), 'fieldname' => 'assigned_to', 'required'=> 'true']) diff --git a/resources/views/consumables/view.blade.php b/resources/views/consumables/view.blade.php index 80987335ff..f6ea14042e 100644 --- a/resources/views/consumables/view.blade.php +++ b/resources/views/consumables/view.blade.php @@ -2,300 +2,587 @@ {{-- Page title --}} @section('title') - {{ $consumable->name }} - {{ trans('general.consumable') }} -@parent -@stop + {{ $consumable->name }} + {{ trans('general.consumable') }} - + ({{ trans('general.remaining_var', ['count' => $consumable->numRemaining()]) }}) + @parent +@endsection @section('header_right') - - {{ trans('general.back') }} -@stop - + + {{ trans('general.back') }} +@endsection {{-- Page content --}} @section('content') -
-
- -
{{ trans('general.image') }}{{ trans('general.user') }} + {{ trans('general.date') }} + {{ trans('general.notes') }}{{ trans('general.admin') }}
+ +
- @can('consumables.files', $consumable)
+
-
- name) }}-{{ date('Y-m-d') }}", "ignoreColumn": ["actions","image","change","checkbox","checkincheckout","delete","download","icon"] }'> + + + + + + + + + + + + + + @if ($consumable->uploads->count() > 0) + @foreach ($consumable->uploads as $file) + + + + + + + + + + + + @endforeach + @else + + + + @endif + +
{{trans('general.file_type')}}{{ trans('general.image') }}{{ trans('general.file_name') }}{{ trans('general.filesize') }}{{ trans('general.notes') }}{{ trans('general.download') }}{{ trans('general.created_at') }}{{ trans('table.actions') }}
+ + {{ Helper::filetype_icon($file->filename) }} + + + @if ($file->filename) + @if ( Helper::checkUploadIsImage($file->get_src('consumables'))) + + @endif + @endif + + {{ $file->filename }} + + {{ @Helper::formatFilesizeUnits(Storage::exists('private_uploads/consumables/'.$file->filename) ? Storage::size('private_uploads/consumables/'.$file->filename) : '') }} + + @if ($file->note) + {!! nl2br(Helper::parseEscapedMarkedownInline($file->note)) !!} + @endif + + @if ($file->filename) + + + {{ trans('general.download') }} + + + + + + @endif + {{ $file->created_at }} + + + {{ trans('general.delete') }} + + +
{{ trans('general.no_results') }}
+
+
+
+
+ +
+
+ + - - - - - - - - + + + + + + + + + + + + + + - - @if ($consumable->uploads->count() > 0) - @foreach ($consumable->uploads as $file) - - - - - - - - - - - - @endforeach - @else - - - - @endif -
{{trans('general.file_type')}}{{ trans('general.image') }}{{ trans('general.file_name') }}{{ trans('general.filesize') }}{{ trans('general.notes') }}{{ trans('general.download') }}{{ trans('general.created_at') }}{{ trans('table.actions') }}{{ trans('general.date') }}{{ trans('general.admin') }}{{ trans('general.action') }}{{ trans('general.file_name') }}{{ trans('general.item') }}{{ trans('general.target') }}{{ trans('general.notes') }}{{ trans('general.signature') }}{{ trans('general.download') }}{{ trans('admin/hardware/table.changed')}}{{ trans('admin/settings/general.login_ip') }}{{ trans('admin/settings/general.login_user_agent') }}{{ trans('general.action_source') }}
- - {{ Helper::filetype_icon($file->filename) }} - - - @if ($file->filename) - @if ( Helper::checkUploadIsImage($file->get_src('consumables'))) - - @endif - @endif - - {{ $file->filename }} - - {{ @Helper::formatFilesizeUnits(Storage::exists('private_uploads/consumables/'.$file->filename) ? Storage::size('private_uploads/consumables/'.$file->filename) : '') }} - - @if ($file->note) - {!! nl2br(Helper::parseEscapedMarkedownInline($file->note)) !!} - @endif - - @if ($file->filename) - - - {{ trans('general.download') }} - - - - - - @endif - {{ $file->created_at }} - - - {{ trans('general.delete') }} - -
{{ trans('general.no_results') }}
-
- @endcan - -
-
- + + + - -
- -
-
-
-
- - - @if ($consumable->image!='') -
- - {{ $consumable->name }} -
- @endif - - @if ($consumable->purchase_date) -
- {{ trans('general.purchase_date') }}: - {{ Helper::getFormattedDateObject($consumable->purchase_date, 'date', false) }} -
- @endif - - @if ($consumable->purchase_cost) -
- {{ trans('general.purchase_cost') }}: - {{ $snipeSettings->default_currency }} - {{ Helper::formatCurrencyOutput($consumable->purchase_cost) }} -
- @endif - - @if ($consumable->item_no) -
- {{ trans('admin/consumables/general.item_no') }}: - {{ $consumable->item_no }} -
- @endif - - @if ($consumable->model_number) -
- {{ trans('general.model_no') }}: - {{ $consumable->model_number }} -
- @endif - - @if ($consumable->manufacturer) -
- {{ trans('general.manufacturer') }}: - {{ $consumable->manufacturer->name }} -
- @endif - - @if ($consumable->order_number) -
- {{ trans('general.order_number') }}: - {{ $consumable->order_number }} -
- @endif - - @can('checkout', \App\Models\Consumable::class) - -
-

- @if ($consumable->numRemaining() > 0) - - {{ trans('general.checkout') }} - - @else - - @endif -
- - @endcan - - @if ($consumable->notes) - -
- - {{ trans('general.notes') }}: - -
-
- {!! nl2br(Helper::parseEscapedMarkedownInline($consumable->notes)) !!} -
-
- @endif - -
- -
-
+ @can('update', \App\Models\User::class) + @include ('modals.upload-file', ['item_type' => 'consumable', 'item_id' => $consumable->id]) + @endcan -@can('consumables.files', \App\Models\Consumable::class) - @include ('modals.upload-file', ['item_type' => 'consumable', 'item_id' => $consumable->id]) -@endcan @stop @section('moar_scripts') -@include ('partials.bootstrap-table', ['exportFile' => 'consumable' . $consumable->name . '-export', 'search' => false]) -@stop + + + + + @include ('partials.bootstrap-table', ['simple_view' => true]) +@endsection \ No newline at end of file diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index 2abe47b860..4a1cdf5749 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -42,7 +42,7 @@

diff --git a/resources/views/hardware/quickscan.blade.php b/resources/views/hardware/quickscan.blade.php index e042a6b5d8..6124489f7b 100644 --- a/resources/views/hardware/quickscan.blade.php +++ b/resources/views/hardware/quickscan.blade.php @@ -52,7 +52,7 @@ {{ trans('admin/hardware/form.asset_location') }} - +

diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php index 179db4a0b1..c1a0a7d9f4 100755 --- a/resources/views/hardware/view.blade.php +++ b/resources/views/hardware/view.blade.php @@ -299,31 +299,32 @@
  • {{ $asset->model->manufacturer->name }}
  • @endcan - @if (($asset->model) && ($asset->model->manufacturer->url)) + @if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->url!=''))
  • - - {{ $asset->model->manufacturer->url }} + + {{ $asset->present()->dynamicUrl($asset->model->manufacturer->url) }}
  • @endif - @if (($asset->model) && ($asset->model->manufacturer->support_url)) + @if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->support_url!=''))
  • - - {{ $asset->model->manufacturer->support_url }} + + {{ $asset->present()->dynamicUrl($asset->model->manufacturer->support_url) }}
  • @endif - @if (($asset->model->manufacturer) && ($asset->model->manufacturer->warranty_lookup_url!='')) + @if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->warranty_lookup_url!=''))
  • - - - {{ $asset->present()->dynamicWarrantyUrl() }} + + + {{ $asset->present()->dynamicUrl($asset->model->manufacturer->warranty_lookup_url) }} +
  • @@ -598,7 +599,7 @@ {{ trans('admin/hardware/form.months') }} @if (($asset->model) && ($asset->model->manufacturer) && ($asset->model->manufacturer->warranty_lookup_url!='')) - + @endif @@ -962,11 +963,13 @@ @if (($asset->assignedTo) && ($asset->deleted_at==''))
    -

    {{ trans('admin/hardware/form.checkedout_to') }}

    +

    + {{ trans('admin/hardware/form.checkedout_to') }} +

    - @if($asset->checkedOutToUser()) + @if (($asset->checkedOutToUser()) && ($asset->assignedTo->present()->gravatar())) {{ $asset->assignedTo->present()->fullName() }} - @endif + @endif

    {!! $asset->assignedTo->present()->glyph() . ' ' .$asset->assignedTo->present()->nameUrl() !!}

    diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php index 5b23db7b80..ee235d358e 100644 --- a/resources/views/layouts/default.blade.php +++ b/resources/views/layouts/default.blade.php @@ -1,6 +1,6 @@ +dir="{{ Helper::determineLanguageDirection() }}"> @@ -24,6 +24,8 @@ dir="{{ in_array(app()->getLocale(),['ar-SA','fa-IR', 'he-IL']) ? 'rtl' : 'ltr' + + + @@ -974,9 +979,9 @@ dir="{{ in_array(app()->getLocale(),['ar-SA','fa-IR', 'he-IL']) ? 'rtl' : 'ltr' }); // Reference: https://jqueryvalidation.org/validate/ - $('#create-form').validate({ + var validator = $('#create-form').validate({ ignore: 'input[type=hidden]', - errorClass: 'help-block form-error', + errorClass: 'alert-msg', errorElement: 'span', errorPlacement: function(error, element) { $(element).hasClass('select2') || $(element).hasClass('js-data-ajax') @@ -992,6 +997,12 @@ dir="{{ in_array(app()->getLocale(),['ar-SA','fa-IR', 'he-IL']) ? 'rtl' : 'ltr' onfocusout: function(element) { return $(element).valid(); }, + + }); + + $.extend($.validator.messages, { + required: "{{ trans('validation.generic.required') }}", + email: "{{ trans('validation.generic.email') }}" }); diff --git a/resources/views/licenses/edit.blade.php b/resources/views/licenses/edit.blade.php index 347826eb7d..450e4357a4 100755 --- a/resources/views/licenses/edit.blade.php +++ b/resources/views/licenses/edit.blade.php @@ -11,30 +11,30 @@ @include ('partials.forms.edit.category-select', ['translated_name' => trans('admin/categories/general.category_name'), 'fieldname' => 'category_id', 'required' => 'true', 'category_type' => 'license']) - -@can('viewKeys', $item) -
    - -
    - - {!! $errors->first('serial', '') !!} -
    -
    -@endcan -
    -
    - +
    +
    {!! $errors->first('seats', '
    ') !!}
    @include ('partials.forms.edit.minimum_quantity') + +@can('viewKeys', $item) +
    + +
    + + {!! $errors->first('serial', '') !!} +
    +
    +@endcan + @include ('partials.forms.edit.company-select', ['translated_name' => trans('general.company'), 'fieldname' => 'company_id']) @include ('partials.forms.edit.manufacturer-select', ['translated_name' => trans('general.manufacturer'), 'fieldname' => 'manufacturer_id',]) @@ -51,7 +51,7 @@
    - + {!! $errors->first('license_email', '') !!}
    diff --git a/resources/views/licenses/view.blade.php b/resources/views/licenses/view.blade.php index 4f47055c27..aabbdb2608 100755 --- a/resources/views/licenses/view.blade.php +++ b/resources/views/licenses/view.blade.php @@ -175,11 +175,13 @@ @if ($license->supplier) +
    {{ trans('general.supplier') }}
    - @else - {{ trans('general.deleted') }} @endif @@ -288,12 +290,14 @@
    - @if ($license->time_until_depreciated()->y > 0) - {{ $license->time_until_depreciated()->y }} - {{ trans('admin/hardware/form.years') }}, - @endif - {{ $license->time_until_depreciated()->m }} - {{ trans('admin/hardware/form.months') }} + @if ($license->time_until_depreciated()) + @if ($license->time_until_depreciated()->y > 0) + {{ $license->time_until_depreciated()->y }} + {{ trans('admin/hardware/form.years') }}, + @endif + {{ $license->time_until_depreciated()->m }} + {{ trans('admin/hardware/form.months') }} + @endif
    @endif diff --git a/resources/views/livewire/importer.blade.php b/resources/views/livewire/importer.blade.php index b1164990be..ab4646041b 100644 --- a/resources/views/livewire/importer.blade.php +++ b/resources/views/livewire/importer.blade.php @@ -75,7 +75,7 @@
    @endif -
    + diff --git a/resources/views/livewire/oauth-clients.blade.php b/resources/views/livewire/oauth-clients.blade.php index 27a76b623f..7caf5f6a2f 100644 --- a/resources/views/livewire/oauth-clients.blade.php +++ b/resources/views/livewire/oauth-clients.blade.php @@ -32,14 +32,27 @@ @endif @if ($clients->count() > 0) - +
    - - - - + + + + + + @@ -57,7 +70,7 @@ @@ -65,20 +78,33 @@ {{ $client->secret }} + + + + @@ -96,19 +122,34 @@
    -

    +

    {{ trans('admin/settings/general.oauth_authorized_apps') }}

    -
    {{ trans('general.id') }}{{ trans('general.name') }}{{ trans('admin/settings/general.oauth_redirect_url') }}{{ trans('admin/settings/general.oauth_secret') }}{{ trans('general.actions') }}{{ trans('general.name') }}{{ trans('admin/settings/general.oauth_redirect_url') }}{{ trans('admin/settings/general.oauth_secret') }}{{ trans('general.created_at') }}{{ trans('general.updated_at') }} + + {{ trans('general.actions') }} + +
    - {{ $client->redirect }} + {{ $client->redirect }} + {{ $client->created_at ? Helper::getFormattedDateObject($client->created_at, 'datetime', false) : '' }} + + @if ($client->created_at != $client->updated_at) + {{ $client->updated_at ? Helper::getFormattedDateObject($client->updated_at, 'datetime', false) : '' }} + @endif + - {{ trans('general.update') }} + + + {{ trans('general.update') }} + - {{ trans('general.delete') }} - + {{ trans('general.delete') }} +
    +
    - - - + + + + + + @@ -120,6 +161,10 @@ {{ $token->client->name }} + + + + +
    {{ trans('general.name') }}{{ trans('admin/settings/general.oauth_scopes') }}{{ trans('general.name') }} {{ trans('account/general.personal_access_token') }}{{ trans('admin/settings/general.oauth_scopes') }}{{ trans('general.created_at') }}{{ trans('general.expires') }} + + {{ trans('general.actions') }} + +
    + {{ $token->name }} + @if(!$token->scopes) @@ -129,6 +174,13 @@ @endif + {{ $token->created_at ? Helper::getFormattedDateObject($token->created_at, 'datetime', false) : '' }} + + {{ $token->expires_at ? Helper::getFormattedDateObject($token->expires_at, 'datetime', false) : '' }} + +@section('moar_scripts') + @include ('partials.bootstrap-table') +@endsection + diff --git a/resources/views/livewire/personal-access-tokens.blade.php b/resources/views/livewire/personal-access-tokens.blade.php index 848e4ca499..d4242c7a35 100644 --- a/resources/views/livewire/personal-access-tokens.blade.php +++ b/resources/views/livewire/personal-access-tokens.blade.php @@ -1,61 +1,65 @@
    -
    -
    -
    - + -
    +
    @if($tokens->count() === 0) -

    - You have not created any personal access tokens. +

    + {{ trans('account/general.no_tokens') }}

    @endif - +
    +
    @if($tokens->count() > 0) - - - - + + + + + @endif @foreach($tokens as $token) - + - - - - - - - + @endforeach +
    NameCreatedExpiresDelete{{ trans('general.name') }}{{ trans('general.created_at') }}{{ trans('general.expires') }}{{ trans('general.delete') }}
    + {{ $token->name }} + {{ $token->created_at }} + {{ $token->expires_at }} - - + + + + + {{ trans('general.delete') }} +
    +
    @@ -73,22 +77,23 @@ diff --git a/resources/views/notifications/markdown/asset-reminder.blade.php b/resources/views/notifications/markdown/asset-reminder.blade.php new file mode 100644 index 0000000000..408c3847f4 --- /dev/null +++ b/resources/views/notifications/markdown/asset-reminder.blade.php @@ -0,0 +1,11 @@ +@component('mail::message') + # {{ trans('mail.hello') }} {{ $assigned_to}}, + + {{trans('mail.item_checked_reminder', ['count' => $count])}} + [{{ trans('general.click_here')}}]({{$accept_url}}) + + {{ trans('mail.best_regards') }} + + {{ $snipeSettings->site_name }} + +@endcomponent diff --git a/resources/views/notifications/markdown/checkout-accessory.blade.php b/resources/views/notifications/markdown/checkout-accessory.blade.php index a3126f7aae..836f574133 100644 --- a/resources/views/notifications/markdown/checkout-accessory.blade.php +++ b/resources/views/notifications/markdown/checkout-accessory.blade.php @@ -20,6 +20,9 @@ @if (isset($item->model_no)) | **{{ trans('general.model_no') }}** | {{ $item->model_no }} | @endif +@if (isset($checkout_qty)) +| **{{ trans('general.qty') }}** | {{ $checkout_qty }} | +@endif @if ($note) | **{{ trans('mail.additional_notes') }}** | {{ $note }} | @endif diff --git a/resources/views/partials/bootstrap-table.blade.php b/resources/views/partials/bootstrap-table.blade.php index c908adcaae..837a95b3be 100644 --- a/resources/views/partials/bootstrap-table.blade.php +++ b/resources/views/partials/bootstrap-table.blade.php @@ -5,11 +5,14 @@ @push('js') + + + + - -@push('css') - -@endpush - -@push('js') - -@endpush - diff --git a/routes/api.php b/routes/api.php index f18aa41c33..b5311aa982 100644 --- a/routes/api.php +++ b/routes/api.php @@ -543,34 +543,33 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'throttle:api']], functi 'restore' ] )->name('api.assets.restore'); - Route::post('{asset_id}/files', - [ - Api\AssetFilesController::class, - 'store' - ] - )->name('api.assets.files'); + Route::post('{asset_id}/files', + [ + Api\AssetFilesController::class, + 'store' + ] + )->name('api.assets.files.store'); - Route::get('{asset_id}/files', - [ - Api\AssetFilesController::class, - 'list' - ] - )->name('api.assets.files'); + Route::get('{asset_id}/files', + [ + Api\AssetFilesController::class, + 'list' + ] + )->name('api.assets.files.index'); - Route::get('{asset_id}/file/{file_id}', - [ - Api\AssetFilesController::class, - 'show' - ] - )->name('api.assets.file'); - - Route::delete('{asset_id}/file/{file_id}', - [ - Api\AssetFilesController::class, - 'destroy' - ] - )->name('api.assets.file'); + Route::get('{asset_id}/file/{file_id}', + [ + Api\AssetFilesController::class, + 'show' + ] + )->name('api.assets.files.show'); + Route::delete('{asset_id}/file/{file_id}', + [ + Api\AssetFilesController::class, + 'destroy' + ] + )->name('api.assets.files.destroy'); }); // pulling this out of resource route group to begin normalizing for route-model binding. diff --git a/routes/web/accessories.php b/routes/web/accessories.php index 35ec73e7df..1f28892a0e 100644 --- a/routes/web/accessories.php +++ b/routes/web/accessories.php @@ -13,7 +13,7 @@ Route::group(['prefix' => 'accessories', 'middleware' => ['auth']], function () )->name('accessories.checkout.show'); Route::post( - '{accessoryID}/checkout', + '{accessory}/checkout', [Accessories\AccessoryCheckoutController::class, 'store'] )->name('accessories.checkout.store'); diff --git a/routes/web/consumables.php b/routes/web/consumables.php index 4e2472d30c..8e6c94d863 100644 --- a/routes/web/consumables.php +++ b/routes/web/consumables.php @@ -31,6 +31,10 @@ Route::group(['prefix' => 'consumables', 'middleware' => ['auth']], function () [Consumables\ConsumablesFilesController::class, 'show'] )->name('show.consumablefile'); + Route::get('{consumable}/clone', + [Consumables\ConsumablesController::class, 'clone'] + )->name('consumables.clone.create'); + }); diff --git a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php new file mode 100644 index 0000000000..a0b1c27b73 --- /dev/null +++ b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php @@ -0,0 +1,61 @@ +actingAsForApi(User::factory()->create()) + ->postJson(route('api.models.store')) + ->assertForbidden(); + } + + public function testCanCreateAssetModelWithAssetModelType() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.models.store'), [ + 'name' => 'Test AssetModel', + 'category_id' => Category::factory()->create()->id + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(AssetModel::where('name', 'Test AssetModel')->exists()); + + $model = AssetModel::find($response['payload']['id']); + $this->assertEquals('Test AssetModel', $model->name); + } + + public function testCannotCreateAssetModelWithoutCategory() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.models.store'), [ + 'name' => 'Test AssetModel', + ]) + ->assertStatus(200) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertJson([ + 'messages' => [ + 'category_id' => ['The category id field is required.'], + ], + ]) + ->json(); + + // dd($response); + $this->assertFalse(AssetModel::where('name', 'Test AssetModel')->exists()); + + } + +} diff --git a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php new file mode 100644 index 0000000000..26e4dd75b1 --- /dev/null +++ b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php @@ -0,0 +1,67 @@ +getJson(route('api.models.index'))->assertRedirect(); + } + + public function testViewingAssetModelIndexRequiresPermission() + { + $this->actingAsForApi(User::factory()->create()) + ->getJson(route('api.models.index')) + ->assertForbidden(); + } + + public function testAssetModelIndexReturnsExpectedAssetModels() + { + AssetModel::factory()->count(3)->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->getJson( + route('api.models.index', [ + 'sort' => 'name', + 'order' => 'asc', + 'offset' => '0', + 'limit' => '20', + ])) + ->assertOk() + ->assertJsonStructure([ + 'total', + 'rows', + ]) + ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); + } + + public function testAssetModelIndexSearchReturnsExpectedAssetModels() + { + AssetModel::factory()->count(3)->create(); + AssetModel::factory()->count(1)->create(['name' => 'Test Model']); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->getJson( + route('api.models.index', [ + 'search' => 'Test Model', + 'sort' => 'id', + 'order' => 'asc', + 'offset' => '0', + 'limit' => '20', + ])) + ->assertOk() + ->assertJsonStructure([ + 'total', + 'rows', + ]) + ->assertJson(fn(AssertableJson $json) => $json->has('rows', 1)->etc()); + } + +} diff --git a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php new file mode 100644 index 0000000000..c5ec212650 --- /dev/null +++ b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php @@ -0,0 +1,120 @@ +create(); + $this->actingAsForApi(User::factory()->create()) + ->patchJson(route('api.models.update', $model)) + ->assertForbidden(); + } + + public function testCanUpdateAssetModelViaPatch() + { + $model = AssetModel::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.models.update', $model), [ + 'name' => 'Test Model', + 'category_id' => Category::factory()->forAssets()->create()->id, + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $model->refresh(); + $this->assertEquals('Test Model', $model->name, 'Name was not updated'); + + } + + public function testCannotUpdateAssetModelViaPatchWithAccessoryCategory() + { + $category = Category::factory()->forAccessories()->create(); + $model = AssetModel::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.models.update', $model), [ + 'name' => 'Test Model', + 'category_id' => $category->id, + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); + + $category->refresh(); + $this->assertNotEquals('Test Model', $model->name, 'Name was not updated'); + $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); + } + + public function testCannotUpdateAssetModelViaPatchWithLicenseCategory() + { + $category = Category::factory()->forLicenses()->create(); + $model = AssetModel::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.models.update', $model), [ + 'name' => 'Test Model', + 'category_id' => $category->id, + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); + + $category->refresh(); + $this->assertNotEquals('Test Model', $model->name, 'Name was not updated'); + $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); + } + + public function testCannotUpdateAssetModelViaPatchWithConsumableCategory() + { + $category = Category::factory()->forConsumables()->create(); + $model = AssetModel::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.models.update', $model), [ + 'name' => 'Test Model', + 'category_id' => $category->id, + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); + + $category->refresh(); + $this->assertNotEquals('Test Model', $model->name, 'Name was not updated'); + $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); + } + + public function testCannotUpdateAssetModelViaPatchWithComponentCategory() + { + $category = Category::factory()->forComponents()->create(); + $model = AssetModel::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.models.update', $model), [ + 'name' => 'Test Model', + 'category_id' => $category->id, + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); + + $category->refresh(); + $this->assertNotEquals('Test Model', $model->name, 'Name was not updated'); + $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); + } + +} diff --git a/tests/Feature/AssetModels/Ui/AssetModelStoreTest.php b/tests/Feature/AssetModels/Ui/AssetModelStoreTest.php deleted file mode 100644 index 81b07237c0..0000000000 --- a/tests/Feature/AssetModels/Ui/AssetModelStoreTest.php +++ /dev/null @@ -1,35 +0,0 @@ -actingAs(User::factory()->create()) - ->post(route('models.store'), [ - 'name' => 'Test Model', - 'category_id' => Category::factory()->create()->id - ]) - ->assertForbidden(); - } - - public function testUserCanCreateAssetModels() - { - $this->assertFalse(AssetModel::where('name', 'Test Model')->exists()); - - $this->actingAs(User::factory()->superuser()->create()) - ->post(route('models.store'), [ - 'name' => 'Test Model', - 'category_id' => Category::factory()->create()->id - ]) - ->assertRedirect(route('models.index')); - - $this->assertTrue(AssetModel::where('name', 'Test Model')->exists()); - } -} diff --git a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php new file mode 100644 index 0000000000..ef35aa5f6c --- /dev/null +++ b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php @@ -0,0 +1,54 @@ +actingAs(User::factory()->create()) + ->post(route('models.store'), [ + 'name' => 'Test Model', + 'category_id' => Category::factory()->create()->id + ]) + ->assertForbidden(); + } + + public function testUserCanCreateAssetModels() + { + $this->assertFalse(AssetModel::where('name', 'Test Model')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('models.store'), [ + 'name' => 'Test Model', + 'category_id' => Category::factory()->create()->id + ]) + ->assertRedirect(route('models.index')); + + $this->assertTrue(AssetModel::where('name', 'Test Model')->exists()); + } + + public function testUserCannotUseAccessoryCategoryTypeAsAssetModelCategoryType() + { + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('models.create')) + ->post(route('models.store'), [ + 'name' => 'Test Invalid Model Category', + 'category_id' => Category::factory()->forAccessories()->create()->id + ]); + $response->assertStatus(302); + $response->assertRedirect(route('models.create')); + $response->assertInvalid(['category_type']); + $response->assertSessionHasErrors(['category_type']); + $this->followRedirects($response)->assertSee(trans('general.error')); + $this->assertFalse(AssetModel::where('name', 'Test Invalid Model Category')->exists()); + + } + +} diff --git a/tests/Feature/AssetModels/Ui/AssetModelIndexTest.php b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php similarity index 91% rename from tests/Feature/AssetModels/Ui/AssetModelIndexTest.php rename to tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php index a73d425723..495de30f0a 100644 --- a/tests/Feature/AssetModels/Ui/AssetModelIndexTest.php +++ b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\AssetModels\Ui; use App\Models\User; use Tests\TestCase; -class AssetModelIndexTest extends TestCase +class IndexAssetModelsTest extends TestCase { public function testPermissionRequiredToViewAssetModelList() { diff --git a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php new file mode 100644 index 0000000000..423eaad574 --- /dev/null +++ b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php @@ -0,0 +1,65 @@ +actingAs(User::factory()->create()) + ->post(route('models.store'), [ + 'name' => 'Test Model', + 'category_id' => Category::factory()->create()->id + ]) + ->assertStatus(403) + ->assertForbidden(); + } + + public function testUserCanEditAssetModels() + { + $category = Category::factory()->forAssets()->create(); + $model = AssetModel::factory()->create(['name' => 'Test Model', 'category_id' => $category->id]); + $this->assertTrue(AssetModel::where('name', 'Test Model')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('models.update', ['model' => $model]), [ + 'name' => 'Test Model Edited', + 'category_id' => $model->category_id, + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('models.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(AssetModel::where('name', 'Test Model Edited')->exists()); + + } + + public function testUserCannotChangeAssetModelCategoryType() + { + $category = Category::factory()->forAssets()->create(); + $model = AssetModel::factory()->create(['name' => 'Test Model', 'category_id' => $category->id]); + $this->assertTrue(AssetModel::where('name', 'Test Model')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('models.edit', ['model' => $model->id])) + ->put(route('models.update', ['model' => $model]), [ + 'name' => 'Test Model Edited', + 'category_id' => Category::factory()->forAccessories()->create()->id, + ]) + ->assertSessionHasErrors(['category_type']) + ->assertInvalid(['category_type']) + ->assertStatus(302) + ->assertRedirect(route('models.edit', ['model' => $model->id])); + + $this->followRedirects($response)->assertSee(trans('general.error')); + $this->assertFalse(AssetModel::where('name', 'Test Model Edited')->exists()); + + } + +} diff --git a/tests/Feature/Assets/Api/AssetFilesTest.php b/tests/Feature/Assets/Api/AssetFilesTest.php index 199c67e118..bc5b6043e4 100644 --- a/tests/Feature/Assets/Api/AssetFilesTest.php +++ b/tests/Feature/Assets/Api/AssetFilesTest.php @@ -22,7 +22,7 @@ class AssetFilesTest extends TestCase //Upload a file $this->actingAsForApi($user) ->post( - route('api.assets.files', ['asset_id' => $asset[0]["id"]]), [ + route('api.assets.files.store', ['asset_id' => $asset[0]["id"]]), [ 'file' => [UploadedFile::fake()->create("test.jpg", 100)] ]) ->assertOk(); @@ -41,7 +41,7 @@ class AssetFilesTest extends TestCase // List the files $this->actingAsForApi($user) ->getJson( - route('api.assets.files', ['asset_id' => $asset[0]["id"]])) + route('api.assets.files.index', ['asset_id' => $asset[0]["id"]])) ->assertOk() ->assertJsonStructure([ 'status', @@ -63,7 +63,7 @@ class AssetFilesTest extends TestCase //Upload a file $this->actingAsForApi($user) ->post( - route('api.assets.files', ['asset_id' => $asset[0]["id"]]), [ + route('api.assets.files.store', ['asset_id' => $asset[0]["id"]]), [ 'file' => [UploadedFile::fake()->create("test.jpg", 100)] ]) ->assertOk(); @@ -71,13 +71,13 @@ class AssetFilesTest extends TestCase // List the files to get the file ID $result = $this->actingAsForApi($user) ->getJson( - route('api.assets.files', ['asset_id' => $asset[0]["id"]])) + route('api.assets.files.index', ['asset_id' => $asset[0]["id"]])) ->assertOk(); // Get the file $this->actingAsForApi($user) ->get( - route('api.assets.file', [ + route('api.assets.files.show', [ 'asset_id' => $asset[0]["id"], 'file_id' => $result->decodeResponseJson()->json()["payload"][0]["id"], ])) @@ -97,7 +97,7 @@ class AssetFilesTest extends TestCase //Upload a file $this->actingAsForApi($user) ->post( - route('api.assets.files', ['asset_id' => $asset[0]["id"]]), [ + route('api.assets.files.store', ['asset_id' => $asset[0]["id"]]), [ 'file' => [UploadedFile::fake()->create("test.jpg", 100)] ]) ->assertOk(); @@ -105,13 +105,13 @@ class AssetFilesTest extends TestCase // List the files to get the file ID $result = $this->actingAsForApi($user) ->getJson( - route('api.assets.files', ['asset_id' => $asset[0]["id"]])) + route('api.assets.files.index', ['asset_id' => $asset[0]["id"]])) ->assertOk(); // Delete the file $this->actingAsForApi($user) ->delete( - route('api.assets.file', [ + route('api.assets.files.destroy', [ 'asset_id' => $asset[0]["id"], 'file_id' => $result->decodeResponseJson()->json()["payload"][0]["id"], ])) diff --git a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php new file mode 100644 index 0000000000..d1375c5393 --- /dev/null +++ b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php @@ -0,0 +1,166 @@ +viewAssets()->deleteAssets()->editAssets()->create(); + $assets = Asset::factory()->count(2)->create(); + + $id_array = $assets->pluck('id')->toArray(); + + $this->actingAs($user)->post('/hardware/bulkedit', [ + 'ids' => $id_array, + 'order' => 'asc', + 'bulk_actions' => 'delete', + 'sort' => 'id' + ])->assertStatus(200); + } + + public function testStandardUserCannotAccessPage() + { + $user = User::factory()->create(); + $assets = Asset::factory()->count(2)->create(); + + $id_array = $assets->pluck('id')->toArray(); + + $this->actingAs($user)->post('/hardware/bulkdelete', [ + 'ids' => $id_array, + 'bulk_actions' => 'delete', + ])->assertStatus(403); + } + + public function testPageRedirectFromInterstitialIfNoAssetsSelectedToDelete() + { + $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); + $response = $this->actingAs($user) + ->post('/hardware/bulkdelete', [ + 'ids' => null, + 'bulk_actions' => 'delete', + ]) + ->assertStatus(302) + ->assertRedirect(route('hardware.index')); + + $this->followRedirects($response)->assertSee('alert-danger'); + } + + public function testPageRedirectFromInterstitialIfNoAssetsSelectedToRestore() + { + $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); + $response = $this->actingAs($user) + ->from(route('hardware.index')) + ->post('/hardware/bulkrestore', [ + 'ids' => null, + 'bulk_actions' => 'delete', + ]) + ->assertStatus(302) + ->assertRedirect(route('hardware.index')); + + $this->followRedirects($response)->assertSee('alert-danger'); + } + + + public function testBulkDeleteSelectedAssetsFromInterstitial() + { + $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); + $assets = Asset::factory()->count(2)->create(); + + $id_array = $assets->pluck('id')->toArray(); + + $response = $this->actingAs($user) + ->from(route('hardware/bulkedit')) + ->post('/hardware/bulkdelete', [ + 'ids' => $id_array, + 'bulk_actions' => 'delete', + ])->assertStatus(302); + + Asset::findMany($id_array)->each(function (Asset $asset) { + $this->assertNotNull($asset->deleted_at); + }); + + $this->followRedirects($response)->assertSee('alert-success'); + } + + public function testBulkRestoreSelectedAssetsFromInterstitial() + { + $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); + $asset = Asset::factory()->deleted()->create(); + + $asset->refresh(); + $id_array = $asset->pluck('id')->toArray(); + + // Check that the assets are deleted + Asset::findMany($id_array)->each(function (Asset $asset) { + $this->assertNull($asset->deleted_at); + }); + + $response = $this->actingAs($user) + ->from(route('hardware/bulkedit')) + ->post(route('hardware/bulkrestore'), [ + 'ids' => [$asset->id], + ])->assertStatus(302); + + $this->followRedirects($response)->assertSee('alert-success'); + + Asset::findMany($id_array)->each(function (Asset $asset) { + $this->assertNull($asset->deleted_at); + }); + } + + + public function testActionLogCreatedUponBulkDelete() + { + $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); + $asset = Asset::factory()->create(); + + $this->actingAs($user) + ->from(route('hardware/bulkedit')) + ->post('/hardware/bulkdelete', [ + 'ids' => [$asset->id], + 'bulk_actions' => 'delete', + ]); + + $this->assertDatabaseHas('action_logs', + [ + 'action_type' => 'delete', + 'target_id' => null, + 'target_type' => null, + 'item_id' => $asset->id, + 'item_type' => Asset::class, + ] + ); + } + + public function testActionLogCreatedUponBulkRestore() + { + $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); + $asset = Asset::factory()->deleted()->create(); + + $this->actingAs($user) + ->from(route('hardware/bulkedit')) + ->post(route('hardware/bulkrestore'), [ + 'ids' => [$asset->id], + 'bulk_actions' => 'restore', + ]); + + $this->assertDatabaseHas('action_logs', + [ + 'action_type' => 'restore', + 'target_id' => null, + 'target_type' => null, + 'item_id' => $asset->id, + 'item_type' => Asset::class, + ] + ); + } + + +} diff --git a/tests/Feature/Categories/Api/CreateCategoriesTest.php b/tests/Feature/Categories/Api/CreateCategoriesTest.php new file mode 100644 index 0000000000..fc464242af --- /dev/null +++ b/tests/Feature/Categories/Api/CreateCategoriesTest.php @@ -0,0 +1,83 @@ +actingAsForApi(User::factory()->create()) + ->postJson(route('api.categories.store')) + ->assertForbidden(); + } + + public function testCanCreateCategoryWithValidCategoryType() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.categories.store'), [ + 'name' => 'Test Category', + 'eula_text' => 'Test EULA', + 'category_type' => 'accessory', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(Category::where('name', 'Test Category')->exists()); + + $category = Category::find($response['payload']['id']); + $this->assertEquals('Test Category', $category->name); + $this->assertEquals('Test EULA', $category->eula_text); + $this->assertEquals('accessory', $category->category_type); + } + + public function testCannotCreateCategoryWithoutCategoryType() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.categories.store'), [ + 'name' => 'Test Category', + ]) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->assertJson([ + 'messages' => [ + 'category_type' => ['The category type field is required.'], + ], + ]); + $this->assertFalse(Category::where('name', 'Test Category')->exists()); + + } + + public function testCannotCreateCategoryWithInvalidCategoryType() + { + $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.categories.store'), [ + 'name' => 'Test Category', + 'eula_text' => 'Test EULA', + 'category_type' => 'invalid', + ]) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->assertJson([ + 'messages' => [ + 'category_type' => ['The selected category type is invalid.'], + ], + ]); + + $this->assertFalse(Category::where('name', 'Test Category')->exists()); + + } + +} diff --git a/tests/Feature/Categories/Api/IndexCategoriesTest.php b/tests/Feature/Categories/Api/IndexCategoriesTest.php new file mode 100644 index 0000000000..d27bfbb068 --- /dev/null +++ b/tests/Feature/Categories/Api/IndexCategoriesTest.php @@ -0,0 +1,70 @@ +actingAsForApi(User::factory()->create()) + ->getJson(route('api.departments.index')) + ->assertForbidden(); + } + + public function testCategoryIndexReturnsExpectedSearchResults() + { + Category::factory()->count(10)->create(); + Category::factory()->count(1)->forAssets()->create(['name' => 'My Test Category']); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->getJson( + route('api.categories.index', [ + 'search' => 'My Test Category', + 'sort' => 'name', + 'order' => 'asc', + 'offset' => '0', + 'limit' => '20', + ])) + ->assertOk() + ->assertJsonStructure([ + 'total', + 'rows', + ]) + ->assertJson([ + 'total' => 1, + ]); + + } + + + public function testCategoryIndexReturnsExpectedCategories() + { + $this->markTestIncomplete('Not sure why the category factory is generating one more than expected here.'); + Category::factory()->count(3)->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->getJson( + route('api.categories.index', [ + 'sort' => 'id', + 'order' => 'asc', + 'offset' => '0', + 'limit' => '20', + ])) + ->assertOk() + ->assertJsonStructure([ + 'total', + 'rows', + ]) + ->assertJson([ + 'total' => 3, + ]); + + } + +} diff --git a/tests/Feature/Categories/Api/UpdateCategoriesTest.php b/tests/Feature/Categories/Api/UpdateCategoriesTest.php new file mode 100644 index 0000000000..1a784c1179 --- /dev/null +++ b/tests/Feature/Categories/Api/UpdateCategoriesTest.php @@ -0,0 +1,55 @@ +create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.categories.update', $category), [ + 'name' => 'Test Category', + 'eula_text' => 'Test EULA', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + //dd($response); + $category->refresh(); + $this->assertEquals('Test Category', $category->name, 'Name was not updated'); + $this->assertEquals('Test EULA', $category->eula_text, 'EULA was not updated'); + + } + + public function testCannotUpdateCategoryViaPatchWithCategoryType() + { + $category = Category::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.categories.update', $category), [ + 'name' => 'Test Category', + 'eula_text' => 'Test EULA', + 'category_type' => 'accessory', + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); + + $category->refresh(); + $this->assertNotEquals('Test Category', $category->name, 'Name was not updated'); + $this->assertNotEquals('Test EULA', $category->eula_text, 'EULA was not updated'); + $this->assertNotEquals('accessory', $category->category_type, 'EULA was not updated'); + + } + +} diff --git a/tests/Feature/Categories/Ui/CreateCategoriesTest.php b/tests/Feature/Categories/Ui/CreateCategoriesTest.php new file mode 100644 index 0000000000..87312ad257 --- /dev/null +++ b/tests/Feature/Categories/Ui/CreateCategoriesTest.php @@ -0,0 +1,51 @@ +actingAs(User::factory()->create()) + ->post(route('categories.store'), [ + 'name' => 'Test Category', + 'category_type' => 'asset', + ]) + ->assertForbidden(); + } + + public function testUserCanCreateCategories() + { + $this->assertFalse(Category::where('name', 'Test Category')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('categories.store'), [ + 'name' => 'Test Category', + 'category_type' => 'asset' + ]) + ->assertRedirect(route('categories.index')); + + $this->assertTrue(Category::where('name', 'Test Category')->exists()); + } + + public function testUserCannotCreateCategoriesWithInvalidType() + { + $this->assertFalse(Category::where('name', 'Test Category')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->from(route('categories.create')) + ->post(route('categories.store'), [ + 'name' => 'Test Category', + 'category_type' => 'invalid' + ]) + ->assertRedirect(route('categories.create')); + + $this->assertFalse(Category::where('name', 'Test Category')->exists()); + } + +} diff --git a/tests/Feature/Categories/Ui/IndexCategoriesTest.php b/tests/Feature/Categories/Ui/IndexCategoriesTest.php new file mode 100644 index 0000000000..caacba99a9 --- /dev/null +++ b/tests/Feature/Categories/Ui/IndexCategoriesTest.php @@ -0,0 +1,23 @@ +actingAs(User::factory()->create()) + ->get(route('categories.index')) + ->assertForbidden(); + } + + public function testUserCanListCategories() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('categories.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php new file mode 100644 index 0000000000..98b67c7d32 --- /dev/null +++ b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php @@ -0,0 +1,96 @@ +actingAs(User::factory()->create()) + ->post(route('categories.store'), [ + 'name' => 'Test Category', + 'category_type' => 'asset' + ]) + ->assertStatus(403) + ->assertForbidden(); + } + + public function testUserCanCreateCategories() + { + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('categories.store'), [ + 'name' => 'Test Category', + 'category_type' => 'asset' + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('categories.index')); + + $this->assertTrue(Category::where('name', 'Test Category')->exists()); + } + + public function testUserCanEditAssetCategory() + { + $category = Category::factory()->forAssets()->create(['name' => 'Test Category']); + $this->assertTrue(Category::where('name', 'Test Category')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('categories.update', ['category' => $category]), [ + 'name' => 'Test Category Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('categories.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Category::where('name', 'Test Category Edited')->exists()); + + } + + public function testUserCanChangeCategoryTypeIfNoAssetsAssociated() + { + $category = Category::factory()->forAssets()->create(['name' => 'Test Category']); + $this->assertTrue(Category::where('name', 'Test Category')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('categories.edit', ['category' => $category->id])) + ->put(route('categories.update', ['category' => $category]), [ + 'name' => 'Test Category Edited', + 'category_type' => 'accessory', + ]) + ->assertSessionHasNoErrors() + ->assertStatus(302) + ->assertRedirect(route('categories.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Category::where('name', 'Test Category Edited')->exists()); + + } + + public function testUserCannotChangeCategoryTypeIfAssetsAreAssociated() + { + Asset::factory()->count(5)->laptopMbp()->create(); + $category = Category::where('name', 'Laptops')->first(); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('categories.edit', ['category' => $category->id])) + ->put(route('categories.update', ['category' => $category]), [ + 'name' => 'Test Category Edited', + 'category_type' => 'accessory', + ]) + ->assertSessionHasErrors(['category_type']) + ->assertInvalid(['category_type']) + ->assertStatus(302) + ->assertRedirect(route('categories.edit', ['category' => $category->id])); + + $this->followRedirects($response)->assertSee(trans('general.error')); + $this->assertFalse(Category::where('name', 'Test Category Edited')->exists()); + + } + +} diff --git a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php index 83ec916cb4..fef38623f8 100644 --- a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php +++ b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php @@ -3,10 +3,12 @@ namespace Tests\Feature\CheckoutAcceptances\Ui; use App\Models\Accessory; +use App\Models\Asset; use App\Models\CheckoutAcceptance; +use App\Models\User; use App\Notifications\AcceptanceAssetAcceptedNotification; use App\Notifications\AcceptanceAssetDeclinedNotification; -use Notification; +use Illuminate\Support\Facades\Notification; use Tests\TestCase; class AccessoryAcceptanceTest extends TestCase @@ -76,4 +78,22 @@ class AccessoryAcceptanceTest extends TestCase } ); } + + public function testUserIsNotAbleToAcceptAnAssetAssignedToADifferentUser() + { + Notification::fake(); + + $otherUser = User::factory()->create(); + + $acceptance = CheckoutAcceptance::factory() + ->pending() + ->for(Asset::factory()->laptopMbp(), 'checkoutable') + ->create(); + + $this->actingAs($otherUser) + ->post(route('account.store-acceptance', $acceptance), ['asset_acceptance' => 'accepted']) + ->assertSessionHas(['error' => trans('admin/users/message.error.incorrect_user_accepted')]); + + $this->assertNull($acceptance->fresh()->accepted_at); + } } diff --git a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php index e6128aa78c..3f99f67ebf 100644 --- a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php @@ -33,20 +33,110 @@ class AccessoryCheckoutTest extends TestCase ->postJson(route('api.accessories.checkout', Accessory::factory()->withoutItemsRemaining()->create()), [ 'assigned_to' => User::factory()->create()->id, ]) - ->assertStatusMessageIs('error'); + ->assertOk() + ->assertStatusMessageIs('error') + ->assertJson( + [ + 'status' => 'error', + 'messages' => + [ + 'checkout_qty' => + [ + trans_choice('admin/accessories/message.checkout.checkout_qty.lte', 0, + [ + 'number_currently_remaining' => 0, + 'checkout_qty' => 1, + 'number_remaining_after_checkout' => 0 + ]) + ], + + ], + 'payload' => null, + ]) + ->assertStatus(200) + ->json(); } - public function testAccessoryCanBeCheckedOut() + public function testAccessoryCanBeCheckedOutWithoutQty() + { + $accessory = Accessory::factory()->create(); + $user = User::factory()->create(); + $admin = User::factory()->checkoutAccessories()->create(); + + $this->actingAsForApi($admin) + ->postJson(route('api.accessories.checkout', $accessory), [ + 'assigned_to' => $user->id, + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->assertJson(['messages' => trans('admin/accessories/message.checkout.success')]) + ->json(); + + $this->assertTrue($accessory->users->contains($user)); + + $this->assertEquals( + 1, + Actionlog::where([ + 'action_type' => 'checkout', + 'target_id' => $user->id, + 'target_type' => User::class, + 'item_id' => $accessory->id, + 'item_type' => Accessory::class, + 'user_id' => $admin->id, + ])->count(),'Log entry either does not exist or there are more than expected' + ); + } + + public function testAccessoryCanBeCheckedOutWithQty() + { + $accessory = Accessory::factory()->create(['qty' => 20]); + $user = User::factory()->create(); + $admin = User::factory()->checkoutAccessories()->create(); + + $this->actingAsForApi($admin) + ->postJson(route('api.accessories.checkout', $accessory), [ + 'assigned_to' => $user->id, + 'checkout_qty' => 2, + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->assertJson(['messages' => trans('admin/accessories/message.checkout.success')]) + ->json(); + + $this->assertTrue($accessory->users->contains($user)); + + $this->assertEquals( + 1, + Actionlog::where([ + 'action_type' => 'checkout', + 'target_id' => $user->id, + 'target_type' => User::class, + 'item_id' => $accessory->id, + 'item_type' => Accessory::class, + 'user_id' => $admin->id, + ])->count(), + 'Log entry either does not exist or there are more than expected' + ); + } + + public function testAccessoryCannotBeCheckedOutToInvalidUser() { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) ->postJson(route('api.accessories.checkout', $accessory), [ - 'assigned_to' => $user->id, - ]); + 'assigned_to' => 'invalid-user-id', + 'note' => 'oh hi there', + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); - $this->assertTrue($accessory->users->contains($user)); + $this->assertFalse($accessory->users->contains($user)); } public function testUserSentNotificationUponCheckout() diff --git a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php index 8f97a48315..e0af379db0 100644 --- a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php @@ -20,23 +20,36 @@ class AccessoryCheckoutTest extends TestCase public function testValidationWhenCheckingOutAccessory() { - $this->actingAs(User::factory()->checkoutAccessories()->create()) - ->post(route('accessories.checkout.store', Accessory::factory()->create()), [ + $accessory = Accessory::factory()->create(); + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('accessories.checkout.show', $accessory)) + ->post(route('accessories.checkout.store', $accessory), [ // missing assigned_to ]) - ->assertSessionHas('error'); + ->assertStatus(302) + ->assertSessionHas('errors') + ->assertRedirect(route('accessories.checkout.store', $accessory)); + + $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testAccessoryMustBeAvailableWhenCheckingOut() + public function testAccessoryMustHaveAvailableItemsForCheckoutWhenCheckingOut() { - $this->actingAs(User::factory()->checkoutAccessories()->create()) - ->post(route('accessories.checkout.store', Accessory::factory()->withoutItemsRemaining()->create()), [ + + $accessory = Accessory::factory()->withoutItemsRemaining()->create(); + $response = $this->actingAs(User::factory()->viewAccessories()->checkoutAccessories()->create()) + ->from(route('accessories.checkout.show', $accessory)) + ->post(route('accessories.checkout.store', $accessory), [ 'assigned_to' => User::factory()->create()->id, ]) - ->assertSessionHas('error'); + ->assertStatus(302) + ->assertSessionHas('errors') + ->assertRedirect(route('accessories.checkout.store', $accessory)); + $response->assertInvalid(['checkout_qty']); + $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testAccessoryCanBeCheckedOut() + public function testAccessoryCanBeCheckedOutWithoutQuantity() { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); @@ -44,9 +57,44 @@ class AccessoryCheckoutTest extends TestCase $this->actingAs(User::factory()->checkoutAccessories()->create()) ->post(route('accessories.checkout.store', $accessory), [ 'assigned_to' => $user->id, + 'note' => 'oh hi there', ]); $this->assertTrue($accessory->users->contains($user)); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkout', + 'target_id' => $user->id, + 'target_type' => User::class, + 'item_id' => $accessory->id, + 'item_type' => Accessory::class, + 'note' => 'oh hi there', + ]); + } + + public function testAccessoryCanBeCheckedOutWithQuantity() + { + $accessory = Accessory::factory()->create(['qty'=>5]); + $user = User::factory()->create(); + + $this->actingAs(User::factory()->checkoutAccessories()->create()) + ->from(route('accessories.checkout.show', $accessory)) + ->post(route('accessories.checkout.store', $accessory), [ + 'assigned_to' => $user->id, + 'checkout_qty' => 3, + 'note' => 'oh hi there', + ]); + + $this->assertTrue($accessory->users->contains($user)); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkout', + 'target_id' => $user->id, + 'target_type' => User::class, + 'item_id' => $accessory->id, + 'item_type' => Accessory::class, + 'note' => 'oh hi there', + ]); } public function testUserSentNotificationUponCheckout() @@ -57,6 +105,7 @@ class AccessoryCheckoutTest extends TestCase $user = User::factory()->create(); $this->actingAs(User::factory()->checkoutAccessories()->create()) + ->from(route('accessories.checkout.show', $accessory)) ->post(route('accessories.checkout.store', $accessory), [ 'assigned_to' => $user->id, ]); @@ -71,6 +120,7 @@ class AccessoryCheckoutTest extends TestCase $user = User::factory()->create(); $this->actingAs($actor) + ->from(route('accessories.checkout.show', $accessory)) ->post(route('accessories.checkout.store', $accessory), [ 'assigned_to' => $user->id, 'note' => 'oh hi there', diff --git a/tests/Feature/Components/Ui/ComponentIndexTest.php b/tests/Feature/Components/Ui/ComponentIndexTest.php new file mode 100644 index 0000000000..41b733e046 --- /dev/null +++ b/tests/Feature/Components/Ui/ComponentIndexTest.php @@ -0,0 +1,23 @@ +actingAs(User::factory()->create()) + ->get(route('components.index')) + ->assertForbidden(); + } + + public function testUserCanListComponents() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('components.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Console/MergeUsersTest.php b/tests/Feature/Console/MergeUsersTest.php new file mode 100644 index 0000000000..4c43e6293d --- /dev/null +++ b/tests/Feature/Console/MergeUsersTest.php @@ -0,0 +1,135 @@ +create(['username' => 'user1']); + $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); + + Asset::factory()->count(3)->assignedToUser($user1)->create(); + Asset::factory()->count(3)->assignedToUser($user_to_merge_into)->create(); + + $this->artisan('snipeit:merge-users')->assertExitCode(0); + + $this->assertEquals(6, $user_to_merge_into->refresh()->assets->count()); + $this->assertEquals(0, $user1->refresh()->assets->count()); + + } + + public function testLicensesAreTransferredOnUserMerge(): void + { + $user1 = User::factory()->create(['username' => 'user1']); + $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); + + LicenseSeat::factory()->count(3)->create(['assigned_to' => $user1->id]); + LicenseSeat::factory()->count(3)->create(['assigned_to' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->licenses->count()); + + $this->artisan('snipeit:merge-users')->assertExitCode(0); + + $this->assertEquals(6, $user_to_merge_into->refresh()->licenses->count()); + $this->assertEquals(0, $user1->refresh()->licenses->count()); + + } + + public function testAccessoriesTransferredOnUserMerge(): void + { + $user1 = User::factory()->create(['username' => 'user1']); + $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); + + Accessory::factory()->count(3)->checkedOutToUser($user1)->create(); + Accessory::factory()->count(3)->checkedOutToUser($user_to_merge_into)->create(); + + $this->assertEquals(3, $user_to_merge_into->refresh()->accessories->count()); + + $this->artisan('snipeit:merge-users')->assertExitCode(0); + + $this->assertEquals(6, $user_to_merge_into->refresh()->accessories->count()); + $this->assertEquals(0, $user1->refresh()->accessories->count()); + + } + + public function testConsumablesTransferredOnUserMerge(): void + { + $user1 = User::factory()->create(['username' => 'user1']); + $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); + + Consumable::factory()->count(3)->checkedOutToUser($user1)->create(); + Consumable::factory()->count(3)->checkedOutToUser($user_to_merge_into)->create(); + + $this->assertEquals(3, $user_to_merge_into->refresh()->consumables->count()); + + $this->artisan('snipeit:merge-users')->assertExitCode(0); + + $this->assertEquals(6, $user_to_merge_into->refresh()->consumables->count()); + $this->assertEquals(0, $user1->refresh()->consumables->count()); + + } + + public function testFilesAreTransferredOnUserMerge(): void + { + $user1 = User::factory()->create(['username' => 'user1']); + $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); + + Actionlog::factory()->count(3)->filesUploaded()->create(['item_id' => $user1->id]); + Actionlog::factory()->count(3)->filesUploaded()->create(['item_id' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->uploads->count()); + + $this->artisan('snipeit:merge-users')->assertExitCode(0); + + $this->assertEquals(6, $user_to_merge_into->refresh()->uploads->count()); + $this->assertEquals(0, $user1->refresh()->uploads->count()); + + } + + public function testAcceptancesAreTransferredOnUserMerge(): void + { + $user1 = User::factory()->create(['username' => 'user1']); + $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); + + Actionlog::factory()->count(3)->acceptedSignature()->create(['target_id' => $user1->id]); + Actionlog::factory()->count(3)->acceptedSignature()->create(['target_id' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->acceptances->count()); + + $this->artisan('snipeit:merge-users')->assertExitCode(0); + + $this->assertEquals(6, $user_to_merge_into->refresh()->acceptances->count()); + $this->assertEquals(0, $user1->refresh()->acceptances->count()); + + } + + public function testUserUpdateHistoryIsTransferredOnUserMerge(): void + { + $user1 = User::factory()->create(['username' => 'user1']); + $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); + + Actionlog::factory()->count(3)->userUpdated()->create(['target_id' => $user1->id, 'item_id' => $user1->id]); + Actionlog::factory()->count(3)->userUpdated()->create(['target_id' => $user_to_merge_into->id, 'item_id' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->userlog->count()); + + $this->artisan('snipeit:merge-users')->assertExitCode(0); + + // This needs to be more than the otherwise expected because the merge action itself is logged for the two merging users + $this->assertEquals(7, $user_to_merge_into->refresh()->userlog->count()); + $this->assertEquals(1, $user1->refresh()->userlog->count()); + + } + + +} diff --git a/tests/Feature/Console/OptimizeTest.php b/tests/Feature/Console/OptimizeTest.php new file mode 100644 index 0000000000..8dd6f270f9 --- /dev/null +++ b/tests/Feature/Console/OptimizeTest.php @@ -0,0 +1,18 @@ +beforeApplicationDestroyed(function () { + $this->artisan('config:clear'); + $this->artisan('route:clear'); + }); + + $this->artisan('optimize')->assertSuccessful(); + } +} diff --git a/tests/Feature/Consumables/Api/ConsumableIndexTest.php b/tests/Feature/Consumables/Api/ConsumableIndexTest.php index b16dfdfa53..f1d3ad7f0b 100644 --- a/tests/Feature/Consumables/Api/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Api/ConsumableIndexTest.php @@ -54,4 +54,29 @@ class ConsumableIndexTest extends TestCase ->assertResponseDoesNotContainInRows($consumableA) ->assertResponseContainsInRows($consumableB); } + + public function testConsumableIndexReturnsExpectedSearchResults() + { + Consumable::factory()->count(10)->create(); + Consumable::factory()->count(1)->create(['name' => 'My Test Consumable']); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->getJson( + route('api.consumables.index', [ + 'search' => 'My Test Consumable', + 'sort' => 'name', + 'order' => 'asc', + 'offset' => '0', + 'limit' => '20', + ])) + ->assertOk() + ->assertJsonStructure([ + 'total', + 'rows', + ]) + ->assertJson([ + 'total' => 1, + ]); + + } } diff --git a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php new file mode 100644 index 0000000000..1c1e05d4d4 --- /dev/null +++ b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php @@ -0,0 +1,52 @@ +create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.consumables.update', $consumable), [ + 'name' => 'Test Consumable', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $consumable->refresh(); + $this->assertEquals('Test Consumable', $consumable->name, 'Name was not updated'); + + } + + public function testCannotUpdateConsumableViaPatchWithInvalidCategoryType() + { + $category = Category::factory()->create(['category_type' => 'asset']); + $consumable = Consumable::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.consumables.update', $consumable), [ + 'name' => 'Test Consumable', + 'category_id' => $category->id, + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); + + $category->refresh(); + $this->assertNotEquals('Test Consumable', $consumable->name, 'Name was not updated'); + $this->assertNotEquals('consumable', $consumable->category_id, 'Category was not updated'); + + } + +} diff --git a/tests/Feature/Consumables/Api/ConsumableViewTest.php b/tests/Feature/Consumables/Api/ConsumableViewTest.php new file mode 100644 index 0000000000..c6410216e1 --- /dev/null +++ b/tests/Feature/Consumables/Api/ConsumableViewTest.php @@ -0,0 +1,51 @@ +count(2)->create(); + + $consumableA = Consumable::factory()->for($companyA)->create(); + $consumableB = Consumable::factory()->for($companyB)->create(); + + $superUser = $companyA->users()->save(User::factory()->superuser()->make()); + $userInCompanyA = $companyA->users()->save(User::factory()->viewConsumables()->make()); + $userInCompanyB = $companyB->users()->save(User::factory()->viewConsumables()->make()); + + $this->settings->disableMultipleFullCompanySupport(); + + $this->actingAsForApi($superUser) + ->getJson(route('api.consumables.show', $consumableA)) + ->assertOk(); + + $this->actingAsForApi($userInCompanyA) + ->getJson(route('api.consumables.show', $consumableA)) + ->assertOk(); + + $this->actingAsForApi($userInCompanyB) + ->getJson(route('api.consumables.show', $consumableB)) + ->assertOk(); + + $this->settings->enableMultipleFullCompanySupport(); + + $this->actingAsForApi($superUser) + ->getJson(route('api.consumables.show', $consumableA)) + ->assertOk(); + + $this->actingAsForApi($userInCompanyA) + ->getJson(route('api.consumables.index')) + ->assertOk(); + + $this->actingAsForApi($userInCompanyB) + ->getJson(route('api.consumables.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php new file mode 100644 index 0000000000..3c438187ca --- /dev/null +++ b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php @@ -0,0 +1,23 @@ +actingAs(User::factory()->create()) + ->get(route('consumables.index')) + ->assertForbidden(); + } + + public function testUserCanListConsumables() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('consumables.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Consumables/Ui/ConsumableViewTest.php b/tests/Feature/Consumables/Ui/ConsumableViewTest.php new file mode 100644 index 0000000000..9633896c2d --- /dev/null +++ b/tests/Feature/Consumables/Ui/ConsumableViewTest.php @@ -0,0 +1,26 @@ +create(); + $this->actingAs(User::factory()->create()) + ->get(route('consumables.show', $consumable)) + ->assertForbidden(); + } + + public function testUserCanListConsumables() + { + $consumable = Consumable::factory()->create(); + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('consumables.show', $consumable)) + ->assertOk(); + } +} diff --git a/tests/Feature/Departments/Api/CreateDepartmentsTest.php b/tests/Feature/Departments/Api/CreateDepartmentsTest.php new file mode 100644 index 0000000000..a8725c5ff2 --- /dev/null +++ b/tests/Feature/Departments/Api/CreateDepartmentsTest.php @@ -0,0 +1,23 @@ +actingAsForApi(User::factory()->create()) + ->postJson(route('api.departments.store')) + ->assertForbidden(); + } + +} diff --git a/tests/Feature/Departments/Api/DepartmentIndexTest.php b/tests/Feature/Departments/Api/DepartmentsIndexTest.php similarity index 98% rename from tests/Feature/Departments/Api/DepartmentIndexTest.php rename to tests/Feature/Departments/Api/DepartmentsIndexTest.php index 462c0dc8e8..e3616e2491 100644 --- a/tests/Feature/Departments/Api/DepartmentIndexTest.php +++ b/tests/Feature/Departments/Api/DepartmentsIndexTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class DepartmentIndexTest extends TestCase +class DepartmentsIndexTest extends TestCase { public function testViewingDepartmentIndexRequiresAuthentication() { diff --git a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php new file mode 100644 index 0000000000..2a6401e7f1 --- /dev/null +++ b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php @@ -0,0 +1,41 @@ +create(); + $this->actingAsForApi(User::factory()->create()) + ->patchJson(route('api.departments.update', $department)) + ->assertForbidden(); + } + + public function testCanUpdateDepartmentViaPatch() + { + $department = Department::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.departments.update', $department), [ + 'name' => 'Test Department', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $department->refresh(); + $this->assertEquals('Test Department', $department->name, 'Name was not updated'); + + } + + + +} diff --git a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php new file mode 100644 index 0000000000..17045cbc0b --- /dev/null +++ b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php @@ -0,0 +1,37 @@ +actingAs(User::factory()->create()) + ->post(route('departments.store'), [ + 'name' => 'Test Department', + 'company_id' => Company::factory()->create()->id + ]) + ->assertForbidden(); + } + + public function testUserCanCreateDepartments() + { + $this->assertFalse(Department::where('name', 'Test Department')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('departments.store'), [ + 'name' => 'Test Department', + 'company_id' => Company::factory()->create()->id + ]) + ->assertRedirect(route('departments.index')); + + $this->assertTrue(Department::where('name', 'Test Department')->exists()); + } + + +} diff --git a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php new file mode 100644 index 0000000000..461ec8fffb --- /dev/null +++ b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php @@ -0,0 +1,23 @@ +actingAs(User::factory()->create()) + ->get(route('departments.index')) + ->assertForbidden(); + } + + public function testUserCanListDepartments() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('departments.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php new file mode 100644 index 0000000000..e6e614d32c --- /dev/null +++ b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php @@ -0,0 +1,43 @@ +actingAs(User::factory()->create()) + ->post(route('departments.store'), [ + 'name' => 'Test Department', + ]) + ->assertStatus(403) + ->assertForbidden(); + } + + + public function testUserCanEditDepartments() + { + $department = Department::factory()->create(['name' => 'Test Department']); + $this->assertTrue(Department::where('name', 'Test Department')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('departments.update', ['department' => $department]), [ + 'name' => 'Test Department Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('departments.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Department::where('name', 'Test Department Edited')->exists()); + + } + + + +} diff --git a/tests/Feature/Groups/Ui/IndexGroupTest.php b/tests/Feature/Groups/Ui/IndexGroupTest.php new file mode 100644 index 0000000000..a2d67f903c --- /dev/null +++ b/tests/Feature/Groups/Ui/IndexGroupTest.php @@ -0,0 +1,25 @@ +actingAs(User::factory()->create()) + ->get(route('groups.index')) + ->assertForbidden(); + + //$this->followRedirects($response)->assertSee('sad-panda.png'); + } + + public function testUserCanListGroups() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('groups.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Licenses/Ui/LicenseIndexTest.php b/tests/Feature/Licenses/Ui/LicenseIndexTest.php new file mode 100644 index 0000000000..3eb33e5ee4 --- /dev/null +++ b/tests/Feature/Licenses/Ui/LicenseIndexTest.php @@ -0,0 +1,23 @@ +actingAs(User::factory()->create()) + ->get(route('licenses.index')) + ->assertForbidden(); + } + + public function testUserCanListLicenses() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('licenses.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Locations/Api/CreateLocationsTest.php b/tests/Feature/Locations/Api/CreateLocationsTest.php new file mode 100644 index 0000000000..171508b725 --- /dev/null +++ b/tests/Feature/Locations/Api/CreateLocationsTest.php @@ -0,0 +1,56 @@ +actingAsForApi(User::factory()->create()) + ->postJson(route('api.departments.store')) + ->assertForbidden(); + } + + public function testCannotCreateNewLocationsWithTheSameName() + { + $location = Location::factory()->create(); + $location2 = Location::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.locations.update', $location2), [ + 'name' => $location->name, + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertStatus(200) + ->json(); + + + } + + public function testUserCannotCreateLocationsThatAreTheirOwnParent() + { + $location = Location::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.locations.update', $location), [ + 'parent_id' => $location->id, + ]) + ->assertOk() + ->assertStatusMessageIs('error') + ->assertJson([ + 'messages' => [ + 'parent_id' => ['The parent id must not create a circular reference.'], + ], + ]) + ->json(); + + + } + +} diff --git a/tests/Feature/Locations/Api/DeleteLocationsTest.php b/tests/Feature/Locations/Api/DeleteLocationsTest.php new file mode 100644 index 0000000000..270582c901 --- /dev/null +++ b/tests/Feature/Locations/Api/DeleteLocationsTest.php @@ -0,0 +1,93 @@ +actingAsForApi(User::factory()->superuser()->create()) + ->deleteJson(route('api.users.destroy', 'invalid-id')) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->json(); + } + + public function testErrorReturnedViaApiIfLocationIsAlreadyDeleted() + { + $location = Location::factory()->deletedLocation()->create(); + $this->actingAsForApi(User::factory()->superuser()->create()) + ->deleteJson(route('api.locations.destroy', $location->id)) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->json(); + } + + public function testDisallowLocationDeletionViaApiIfStillHasPeople() + { + $location = Location::factory()->create(); + User::factory()->count(5)->create(['location_id' => $location->id]); + + $this->assertFalse($location->isDeletable()); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->deleteJson(route('api.locations.destroy', $location->id)) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->json(); + } + + public function testDisallowUserDeletionViaApiIfStillHasChildLocations() + { + $parent = Location::factory()->create(); + Location::factory()->count(5)->create(['parent_id' => $parent->id]); + $this->assertFalse($parent->isDeletable()); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->deleteJson(route('api.locations.destroy', $parent->id)) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->json(); + } + + public function testDisallowUserDeletionViaApiIfStillHasAssetsAssigned() + { + $location = Location::factory()->create(); + Asset::factory()->count(5)->assignedToLocation($location)->create(); + + $this->assertFalse($location->isDeletable()); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->deleteJson(route('api.locations.destroy', $location->id)) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->json(); + } + + public function testDisallowUserDeletionViaApiIfStillHasAssetsAsLocation() + { + $location = Location::factory()->create(); + Asset::factory()->count(5)->create(['location_id' => $location->id]); + + $this->assertFalse($location->isDeletable()); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->deleteJson(route('api.locations.destroy', $location->id)) + ->assertOk() + ->assertStatus(200) + ->assertStatusMessageIs('error') + ->json(); + } + +} diff --git a/tests/Feature/Locations/Api/IndexLocationsTest.php b/tests/Feature/Locations/Api/IndexLocationsTest.php new file mode 100644 index 0000000000..7b3b104638 --- /dev/null +++ b/tests/Feature/Locations/Api/IndexLocationsTest.php @@ -0,0 +1,45 @@ +getJson(route('api.locations.index'))->assertRedirect(); + } + + public function testViewingLocationIndexRequiresPermission() + { + $this->actingAsForApi(User::factory()->create()) + ->getJson(route('api.locations.index')) + ->assertForbidden(); + } + + public function testLocationIndexReturnsExpectedLocations() + { + Location::factory()->count(3)->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->getJson( + route('api.locations.index', [ + 'sort' => 'name', + 'order' => 'asc', + 'offset' => '0', + 'limit' => '20', + ])) + ->assertOk() + ->assertJsonStructure([ + 'total', + 'rows', + ]) + ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); + } + +} diff --git a/tests/Feature/Locations/Api/UpdateLocationsTest.php b/tests/Feature/Locations/Api/UpdateLocationsTest.php new file mode 100644 index 0000000000..a3dd8c228c --- /dev/null +++ b/tests/Feature/Locations/Api/UpdateLocationsTest.php @@ -0,0 +1,38 @@ +actingAsForApi(User::factory()->create()) + ->postJson(route('api.locations.store', Location::factory()->create())) + ->assertForbidden(); + } + + public function testCanUpdateLocationViaPatch() + { + $location = Location::factory()->create(); + + $this->actingAsForApi(User::factory()->superuser()->create()) + ->patchJson(route('api.locations.update', $location), [ + 'name' => 'Test Location', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $location->refresh(); + $this->assertEquals('Test Location', $location->name, 'Name was not updated'); + + } + + +} diff --git a/tests/Feature/Locations/Ui/CreateLocationsTest.php b/tests/Feature/Locations/Ui/CreateLocationsTest.php new file mode 100644 index 0000000000..5e229f1043 --- /dev/null +++ b/tests/Feature/Locations/Ui/CreateLocationsTest.php @@ -0,0 +1,37 @@ +actingAs(User::factory()->create()) + ->post(route('locations.store'), [ + 'name' => 'Test Location', + 'company_id' => Company::factory()->create()->id + ]) + ->assertForbidden(); + } + + public function testUserCanCreateLocations() + { + $this->assertFalse(Location::where('name', 'Test Location')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('locations.store'), [ + 'name' => 'Test Location', + 'company_id' => Company::factory()->create()->id + ]) + ->assertRedirect(route('locations.index')); + + $this->assertTrue(Location::where('name', 'Test Location')->exists()); + } + + +} diff --git a/tests/Feature/Locations/Ui/IndexLocationsTest.php b/tests/Feature/Locations/Ui/IndexLocationsTest.php new file mode 100644 index 0000000000..43f117cb64 --- /dev/null +++ b/tests/Feature/Locations/Ui/IndexLocationsTest.php @@ -0,0 +1,23 @@ +actingAs(User::factory()->create()) + ->get(route('locations.index')) + ->assertForbidden(); + } + + public function testUserCanListLocations() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('locations.index')) + ->assertOk(); + } +} diff --git a/tests/Feature/Locations/Ui/UpdateLocationsTest.php b/tests/Feature/Locations/Ui/UpdateLocationsTest.php new file mode 100644 index 0000000000..5359cd1b71 --- /dev/null +++ b/tests/Feature/Locations/Ui/UpdateLocationsTest.php @@ -0,0 +1,57 @@ +actingAs(User::factory()->create()) + ->post(route('locations.store'), [ + 'name' => 'Test Location', + ]) + ->assertStatus(403) + ->assertForbidden(); + } + + + public function testUserCanEditLocations() + { + $location = Location::factory()->create(['name' => 'Test Location']); + $this->assertTrue(Location::where('name', 'Test Location')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('locations.update', ['location' => $location]), [ + 'name' => 'Test Location Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('locations.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Location::where('name', 'Test Location Edited')->exists()); + } + + public function testUserCannotEditLocationsToMakeThemTheirOwnParent() + { + $location = Location::factory()->create(); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('locations.edit', ['location' => $location->id])) + ->put(route('locations.update', ['location' => $location]), [ + 'name' => 'Test Location', + 'parent_id' => $location->id, + ]) + ->assertRedirect(route('locations.edit', ['location' => $location])); + + $this->followRedirects($response)->assertSee(trans('general.error')); + $this->assertFalse(Location::where('name', 'Test Location')->exists()); + } + + + +} diff --git a/tests/Feature/Reporting/UnacceptedAssetReportTest.php b/tests/Feature/Reporting/UnacceptedAssetReportTest.php new file mode 100644 index 0000000000..b3ec0b2e0b --- /dev/null +++ b/tests/Feature/Reporting/UnacceptedAssetReportTest.php @@ -0,0 +1,61 @@ +streamedContent())->getRecords()) + ->pluck(0) + ->contains($needle) + ); + + return $this; + } + ); + + TestResponse::macro( + 'assertDontSeeTextInStreamedResponse', + function (string $needle) { + Assert::assertFalse( + collect(Reader::createFromString($this->streamedContent())->getRecords()) + ->pluck(0) + ->contains($needle) + ); + + return $this; + } + ); + } + + + public function testPermissionRequiredToViewUnacceptedAssetReport() + { + $this->actingAs(User::factory()->create()) + ->get(route('reports/unaccepted_assets')) + ->assertForbidden(); + } + + public function testUserCanListUnacceptedAssets() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('reports/unaccepted_assets')) + ->assertOk(); + } + +} diff --git a/tests/Feature/Settings/BrandingSettingsTest.php b/tests/Feature/Settings/BrandingSettingsTest.php index a27a5d1ef8..03e2b013f6 100644 --- a/tests/Feature/Settings/BrandingSettingsTest.php +++ b/tests/Feature/Settings/BrandingSettingsTest.php @@ -2,15 +2,315 @@ namespace Tests\Feature\Settings; -use App\Models\User; +use App\Models\Asset; use Tests\TestCase; +use Illuminate\Http\UploadedFile; +use Illuminate\Support\Facades\Storage; +use App\Models\User; +use App\Models\Setting; + class BrandingSettingsTest extends TestCase { public function testSiteNameIsRequired() { - $this->actingAs(User::factory()->superuser()->create()) + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) ->post(route('settings.branding.save', ['site_name' => ''])) - ->assertInvalid('site_name'); + ->assertSessionHasErrors(['site_name']) + ->assertInvalid(['site_name']) + ->assertStatus(302) + ->assertRedirect(route('settings.branding.index')); + + $this->followRedirects($response)->assertSee(trans('general.error')); } + + public function testSiteNameCanBeSaved() + { + $response = $this->actingAs(User::factory()->superuser()->create()) + ->post(route('settings.branding.save', ['site_name' => 'My Awesome Site'])) + ->assertStatus(302) + ->assertValid('site_name') + ->assertRedirect(route('settings.index')) + ->assertSessionHasNoErrors(); + + $this->followRedirects($response)->assertSee('alert-success'); + } + + + public function testLogoCanBeUploaded() + { + Storage::fake('public'); + $setting = Setting::factory()->create(['logo' => null]); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->post(route('settings.branding.save', + ['logo' => UploadedFile::fake()->image('test_logo.png')->storeAs('', 'test_logo.png', 'public')] + )) + ->assertValid('logo') + ->assertStatus(302) + ->assertRedirect(route('settings.index')) + ->assertSessionHasNoErrors(); + + $this->followRedirects($response)->assertSee('alert-success'); + + $setting->refresh(); + Storage::disk('public')->assertExists($setting->logo); + } + + public function testLogoCanBeDeleted() + { + Storage::fake('public'); + + $setting = Setting::factory()->create(['logo' => 'new_test_logo.png']); + $original_file = UploadedFile::fake()->image('new_test_logo.png')->storeAs('uploads', 'new_test_logo.png', 'public'); + Storage::disk('public')->assertExists($original_file); + + $this->assertNotNull($setting->logo); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + ['clear_logo' => '1'] + )) + ->assertValid('logo') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + + $this->followRedirects($response)->assertSee(trans('alert-success')); + $this->assertDatabaseHas('settings', ['logo' => null]); + //Storage::disk('public')->assertMissing($original_file); + } + + public function testEmailLogoCanBeUploaded() + { + Storage::fake('public'); + + $original_file = UploadedFile::fake()->image('before_test_email_logo.png')->storeAs('', 'before_test_email_logo.png', 'public'); + + Storage::disk('public')->assertExists($original_file); + Setting::factory()->create(['email_logo' => $original_file]); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + [ + 'email_logo' => UploadedFile::fake()->image('new_test_email_logo.png')->storeAs('', 'new_test_email_logo.png', 'public') + ] + )) + ->assertValid('email_logo') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + + $this->followRedirects($response)->assertSee(trans('alert-success')); + + Storage::disk('public')->assertExists('new_test_email_logo.png'); + // Storage::disk('public')->assertMissing($original_file); + } + + public function testEmailLogoCanBeDeleted() + { + Storage::fake('public'); + + $setting = Setting::factory()->create(['email_logo' => 'new_test_email_logo.png']); + $original_file = UploadedFile::fake()->image('new_test_email_logo.png')->storeAs('', 'new_test_email_logo.png', 'public'); + Storage::disk('public')->assertExists($original_file); + + $this->assertNotNull($setting->email_logo); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + ['clear_email_logo' => '1'] + )) + ->assertValid('email_logo') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + $setting->refresh(); + $this->followRedirects($response)->assertSee(trans('alert-success')); + $this->assertDatabaseHas('settings', ['email_logo' => null]); + + //Storage::disk('public')->assertMissing('new_test_email_logo.png'); + + } + + + public function testLabelLogoCanBeUploaded() + { + + Storage::fake('public'); + + $original_file = UploadedFile::fake()->image('before_test_label_logo.png')->storeAs('', 'before_test_label_logo.png', 'public'); + + Storage::disk('public')->assertExists($original_file); + Setting::factory()->create(['label_logo' => $original_file]); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + [ + 'label_logo' => UploadedFile::fake()->image('new_test_label_logo.png')->storeAs('', 'new_test_label_logo.png', 'public') + ] + )) + ->assertValid('label_logo') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + + $this->followRedirects($response)->assertSee(trans('alert-success')); + + Storage::disk('public')->assertExists('new_test_label_logo.png'); + // Storage::disk('public')->assertMissing($original_file); + + + } + + public function testLabelLogoCanBeDeleted() + { + + Storage::fake('public'); + + $setting = Setting::factory()->create(['label_logo' => 'new_test_label_logo.png']); + $original_file = UploadedFile::fake()->image('new_test_label_logo.png')->storeAs('', 'new_test_label_logo.png', 'public'); + Storage::disk('public')->assertExists($original_file); + + $this->assertNotNull($setting->label_logo); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + ['label_logo' => '1'] + )) + ->assertValid('label_logo') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + + $setting->refresh(); + $this->followRedirects($response)->assertSee(trans('alert-success')); + // $this->assertNull($setting->refresh()->logo); + // Storage::disk('public')->assertMissing($original_file); + + } + + public function testDefaultAvatarCanBeUploaded() + { + Storage::fake('public'); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + [ + 'default_avatar' => UploadedFile::fake()->image('default_avatar.png')->storeAs('', 'default_avatar.png', 'public') + ] + )) + ->assertValid('default_avatar') + ->assertStatus(302) + ->assertRedirect(route('settings.index')) + ->assertSessionHasNoErrors(); + + $this->followRedirects($response)->assertSee(trans('alert-success')); + + Storage::disk('public')->assertExists('default_avatar.png'); + // Storage::disk('public')->assertMissing($original_file); + } + + public function testDefaultAvatarCanBeDeleted() + { + Storage::fake('public'); + + $setting = Setting::factory()->create(['default_avatar' => 'new_test_label_logo.png']); + $original_file = UploadedFile::fake()->image('default_avatar.png')->storeAs('', 'default_avatar.png', 'public'); + Storage::disk('public')->assertExists($original_file); + + $this->assertNotNull($setting->default_avatar); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + ['clear_default_avatar' => '1'] + )) + ->assertValid('default_avatar') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + + $setting->refresh(); + $this->followRedirects($response)->assertSee(trans('alert-success')); + // $this->assertNull($setting->refresh()->default_avatar); + // Storage::disk('public')->assertMissing($original_file); + } + + public function testSnipeDefaultAvatarCanBeDeleted() + { + + $setting = Setting::getSettings()->first(); + Storage::fake('public'); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('settings.branding.save', + ['default_avatar' => UploadedFile::fake()->image('default.png')->storeAs('avatars', 'default.png', 'public')] + )); + + Storage::disk('public')->assertExists('avatars/default.png'); + + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('settings.branding.save', + ['clear_default_avatar' => '1'] + )); + + $this->assertNull($setting->refresh()->default_avatar); + $this->assertDatabaseHas('settings', ['default_avatar' => null]); + Storage::disk('public')->assertExists('avatars/default.png'); + + } + + public function testFaviconCanBeUploaded() + { + $this->markTestIncomplete('This fails mimetype validation on the mock'); + Storage::fake('public'); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + [ + 'favicon' =>UploadedFile::fake()->image('favicon.svg')->storeAs('', 'favicon.svg', 'public') + ] + )) + ->assertValid('favicon') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + + $this->followRedirects($response)->assertSee(trans('alert-success')); + + Storage::disk('public')->assertExists('favicon.png'); + } + + public function testFaviconCanBeDeleted() + { + $this->markTestIncomplete('This fails mimetype validation on the mock'); + Storage::fake('public'); + + $setting = Setting::factory()->create(['favicon' => 'favicon.png']); + $original_file = UploadedFile::fake()->image('favicon.png')->storeAs('', 'favicon.png', 'public'); + Storage::disk('public')->assertExists($original_file); + + $this->assertNotNull($setting->favicon); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->from(route('settings.branding.index')) + ->post(route('settings.branding.save', + ['clear_favicon' => '1'] + )) + ->assertValid('favicon') + ->assertStatus(302) + ->assertRedirect(route('settings.index')); + $setting->refresh(); + $this->followRedirects($response)->assertSee(trans('alert-success')); + $this->assertDatabaseHas('settings', ['favicon' => null]); + + // This fails for some reason - the file is not being deleted, or at least the test doesn't think it is + // Storage::disk('public')->assertMissing('favicon.png'); + } + + + } diff --git a/tests/Feature/Users/Api/DeleteUserTest.php b/tests/Feature/Users/Api/DeleteUserTest.php index e8da98fe31..49625daac3 100644 --- a/tests/Feature/Users/Api/DeleteUserTest.php +++ b/tests/Feature/Users/Api/DeleteUserTest.php @@ -152,9 +152,4 @@ class DeleteUserTest extends TestCase } - - - - - } diff --git a/tests/Feature/Users/Api/UserSearchTest.php b/tests/Feature/Users/Api/UserSearchTest.php index 2b1d557970..dc0ffdc803 100644 --- a/tests/Feature/Users/Api/UserSearchTest.php +++ b/tests/Feature/Users/Api/UserSearchTest.php @@ -144,4 +144,17 @@ class UserSearchTest extends TestCase 'User index contains unexpected user from another company' ); } + + public function testUsersIndexWhenInvalidSortFieldIsPassed() + { + $this->markIncompleteIfSqlite('This test is not compatible with SQLite'); + + $this->actingAsForApi(User::factory()->viewUsers()->create()) + ->getJson(route('api.users.index', [ + 'sort' => 'assets', + ])) + ->assertOk() + ->assertStatus(200) + ->json(); + } } diff --git a/tests/Feature/Users/Ui/MergeUsersTest.php b/tests/Feature/Users/Ui/MergeUsersTest.php new file mode 100644 index 0000000000..a9ae11171b --- /dev/null +++ b/tests/Feature/Users/Ui/MergeUsersTest.php @@ -0,0 +1,213 @@ +create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Asset::factory()->count(3)->assignedToUser($user1)->create(); + Asset::factory()->count(3)->assignedToUser($user2)->create(); + Asset::factory()->count(3)->assignedToUser($user_to_merge_into)->create(); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertEquals(9, $user_to_merge_into->refresh()->assets->count()); + $this->assertEquals(0, $user1->refresh()->assets->count()); + $this->assertEquals(0, $user2->refresh()->assets->count()); + + } + + public function testLicensesAreTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + LicenseSeat::factory()->count(3)->create(['assigned_to' => $user1->id]); + LicenseSeat::factory()->count(3)->create(['assigned_to' => $user2->id]); + LicenseSeat::factory()->count(3)->create(['assigned_to' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->licenses->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertEquals(9, $user_to_merge_into->refresh()->licenses->count()); + $this->assertEquals(0, $user1->refresh()->licenses->count()); + $this->assertEquals(0, $user2->refresh()->licenses->count()); + + } + + public function testAccessoriesTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Accessory::factory()->count(3)->checkedOutToUser($user1)->create(); + Accessory::factory()->count(3)->checkedOutToUser($user2)->create(); + Accessory::factory()->count(3)->checkedOutToUser($user_to_merge_into)->create(); + + $this->assertEquals(3, $user_to_merge_into->refresh()->accessories->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertEquals(9, $user_to_merge_into->refresh()->accessories->count()); + $this->assertEquals(0, $user1->refresh()->accessories->count()); + $this->assertEquals(0, $user2->refresh()->accessories->count()); + + } + + public function testConsumablesTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Consumable::factory()->count(3)->checkedOutToUser($user1)->create(); + Consumable::factory()->count(3)->checkedOutToUser($user2)->create(); + Consumable::factory()->count(3)->checkedOutToUser($user_to_merge_into)->create(); + + $this->assertEquals(3, $user_to_merge_into->refresh()->consumables->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertEquals(9, $user_to_merge_into->refresh()->consumables->count()); + $this->assertEquals(0, $user1->refresh()->consumables->count()); + $this->assertEquals(0, $user2->refresh()->consumables->count()); + + } + + public function testFilesAreTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Actionlog::factory()->count(3)->filesUploaded()->create(['item_id' => $user1->id]); + Actionlog::factory()->count(3)->filesUploaded()->create(['item_id' => $user2->id]); + Actionlog::factory()->count(3)->filesUploaded()->create(['item_id' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->uploads->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertEquals(9, $user_to_merge_into->refresh()->uploads->count()); + $this->assertEquals(0, $user1->refresh()->uploads->count()); + $this->assertEquals(0, $user2->refresh()->uploads->count()); + + } + + public function testAcceptancesAreTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Actionlog::factory()->count(3)->acceptedSignature()->create(['target_id' => $user1->id]); + Actionlog::factory()->count(3)->acceptedSignature()->create(['target_id' => $user2->id]); + Actionlog::factory()->count(3)->acceptedSignature()->create(['target_id' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->acceptances->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertEquals(9, $user_to_merge_into->refresh()->acceptances->count()); + $this->assertEquals(0, $user1->refresh()->acceptances->count()); + $this->assertEquals(0, $user2->refresh()->acceptances->count()); + + } + + public function testUserUpdateHistoryIsTransferredOnUserMerge() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user_to_merge_into = User::factory()->create(); + + Actionlog::factory()->count(3)->userUpdated()->create(['target_id' => $user1->id, 'item_id' => $user1->id]); + Actionlog::factory()->count(3)->userUpdated()->create(['target_id' => $user2->id, 'item_id' => $user2->id]); + Actionlog::factory()->count(3)->userUpdated()->create(['target_id' => $user_to_merge_into->id, 'item_id' => $user_to_merge_into->id]); + + $this->assertEquals(3, $user_to_merge_into->refresh()->userlog->count()); + + $response = $this->actingAs(User::factory()->editUsers()->viewUsers()->create()) + ->post(route('users.merge.save', $user1->id), + [ + 'ids_to_merge' => [$user1->id, $user2->id], + 'merge_into_id' => $user_to_merge_into->id + ]) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Success'); + + // This needs to be 2 more than the otherwise expected because the merge action itself is logged for the two merging users + $this->assertEquals(11, $user_to_merge_into->refresh()->userlog->count()); + $this->assertEquals(2, $user1->refresh()->userlog->count()); + $this->assertEquals(2, $user2->refresh()->userlog->count()); + + } + + +} diff --git a/tests/Support/CanSkipTests.php b/tests/Support/CanSkipTests.php index 2a1eec10fc..b29fdf88cd 100644 --- a/tests/Support/CanSkipTests.php +++ b/tests/Support/CanSkipTests.php @@ -10,4 +10,11 @@ trait CanSkipTests $this->markTestIncomplete($message); } } + + public function markIncompleteIfSqlite($message = 'Test skipped due to database driver being sqlite.') + { + if (config('database.default') === 'sqlite') { + $this->markTestIncomplete($message); + } + } } diff --git a/tests/Unit/SnipeTranslatorTest.php b/tests/Unit/SnipeTranslatorTest.php index e492bdbf63..d374bf9134 100644 --- a/tests/Unit/SnipeTranslatorTest.php +++ b/tests/Unit/SnipeTranslatorTest.php @@ -34,7 +34,7 @@ class SnipeTranslatorTest extends TestCase { $this->assertEquals( 'Ingen sikkerhetskopier ble gjort ennå', - trans('backup::notifications.no_backups_info',[],'no-NO'), + trans('backup::notifications.no_backups_info',[],'nb-NO'), "Norwegian 'no backups info' message should be here" ); } diff --git a/upgrade.php b/upgrade.php index 0215c3937a..d08f7439e3 100644 --- a/upgrade.php +++ b/upgrade.php @@ -10,6 +10,12 @@ function url_get_contents ($Url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $Url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + // If we're on windows, make sure we can load intermediate certificates in + // weird corporate environments. + // See: https://github.com/curl/curl/commit/2d6333101a71129a6a802eb93f84a5ac89e34479 + if (PHP_OS == "WINNT"){ + curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); + } $output = curl_exec($ch); curl_close($ch); return $output; @@ -59,8 +65,8 @@ echo "- clear out old cache settings\n\n"; // Fetching most current upgrade requirements from github. Read more here: https://github.com/snipe/snipe-it/pull/14127 $remote_requirements_file = "https://raw.githubusercontent.com/snipe/snipe-it/$branch/.upgrade_requirements.json"; -$upgrade_requirements = json_decode(url_get_contents($remote_requirements_file), true); - +$upgrade_requirements_raw = url_get_contents($remote_requirements_file); +$upgrade_requirements = json_decode($upgrade_requirements_raw, true); if (! $upgrade_requirements) { if(!$skip_php_checks){ echo "\nERROR: Failed to retrieve remote requirements from $remote_requirements_file\n\n"; @@ -68,6 +74,14 @@ if (! $upgrade_requirements) { echo "NOTE: You passed a custom branch: $branch\n"; echo " If the above URL doesn't work, that may be why. Please check you branch spelling/extistance\n\n"; } + + if (json_last_error()) { + print "JSON DECODE ERROR DETECTED:\n"; + print json_last_error_msg() . "\n\n"; + print "Raw curl output:\n"; + print $upgrade_requirements_raw . "\n\n"; + } + echo "We suggest correcting this, but if you can't, please verify that your requirements conform to those at that url.\n\n"; echo " -- DANGER -- DO AT YOUR OWN RISK --\n"; echo " IF YOU ARE SURE, re-run this script with --skip-php-compatibility-checks to skip this check.\n"; diff --git a/webpack.mix.js b/webpack.mix.js index 469e26e584..cb5ac6eaef 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -40,11 +40,24 @@ mix .minify("./public/css/dist/signature-pad.css"); /** - * Copy, minify and version signature-pad.css + * Copy and version select2 + */ +mix + .copy("./node_modules/select2/dist/js/i18n", "./public/js/select2/i18n") + +/** + * Copy and version fontawesome */ mix .copy("./node_modules/@fortawesome/fontawesome-free/webfonts", "./public/css/webfonts") +/** + * Copy BS tables js file + */ +mix + .copy( './node_modules/bootstrap-table/dist/bootstrap-table-locale-all.min.js', 'public/js/dist' ) + .copy( './node_modules/bootstrap-table/dist/locale/bootstrap-table-en-US.min.js', 'public/js/dist' ) + // Combine main SnipeIT JS files mix .js(