diff --git a/.all-contributorsrc b/.all-contributorsrc index 547fd4539e..133e8849d2 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2837,6 +2837,121 @@ "contributions": [ "code" ] + }, + { + "login": "AndrewSav", + "name": "Andrew Savinykh", + "avatar_url": "https://avatars.githubusercontent.com/u/658865?v=4", + "profile": "https://github.com/AndrewSav", + "contributions": [ + "code" + ] + }, + { + "login": "kenchan0130", + "name": "Tadayuki Onishi", + "avatar_url": "https://avatars.githubusercontent.com/u/1155067?v=4", + "profile": "https://kenchan0130.github.io", + "contributions": [ + "code" + ] + }, + { + "login": "floschoepfer", + "name": "Florian", + "avatar_url": "https://avatars.githubusercontent.com/u/112496896?v=4", + "profile": "https://github.com/floschoepfer", + "contributions": [ + "code" + ] + }, + { + "login": "spencerrlongg", + "name": "Spencer Long", + "avatar_url": "https://avatars.githubusercontent.com/u/7305753?v=4", + "profile": "http://spencerlong.com", + "contributions": [ + "code" + ] + }, + { + "login": "marcusmoore", + "name": "Marcus Moore", + "avatar_url": "https://avatars.githubusercontent.com/u/1141514?v=4", + "profile": "https://github.com/marcusmoore", + "contributions": [ + "code" + ] + }, + { + "login": "Mezzle", + "name": "Martin Meredith", + "avatar_url": "https://avatars.githubusercontent.com/u/570639?v=4", + "profile": "https://github.com/Mezzle", + "contributions": [] + }, + { + "login": "dboth", + "name": "dboth", + "avatar_url": "https://avatars.githubusercontent.com/u/5731963?v=4", + "profile": "http://dboth.de", + "contributions": [ + "code" + ] + }, + { + "login": "zacharyfleck", + "name": "Zachary Fleck", + "avatar_url": "https://avatars.githubusercontent.com/u/87536651?v=4", + "profile": "https://github.com/zacharyfleck", + "contributions": [ + "code" + ] + }, + { + "login": "vikaas-cyper", + "name": "VIKAAS-A", + "avatar_url": "https://avatars.githubusercontent.com/u/74609912?v=4", + "profile": "https://github.com/vikaas-cyper", + "contributions": [ + "code" + ] + }, + { + "login": "ak-piracha", + "name": "Abdul Kareem", + "avatar_url": "https://avatars.githubusercontent.com/u/88882041?v=4", + "profile": "https://github.com/ak-piracha", + "contributions": [ + "code" + ] + }, + { + "login": "NojoudAlshehri", + "name": "NojoudAlshehri", + "avatar_url": "https://avatars.githubusercontent.com/u/111287779?v=4", + "profile": "https://github.com/NojoudAlshehri", + "contributions": [ + "code" + ] + }, + { + "login": "stefanstidlffg", + "name": "Stefan Stidl", + "avatar_url": "https://avatars.githubusercontent.com/u/54367449?v=4", + "profile": "https://github.com/stefanstidlffg", + "contributions": [ + "code" + ] + }, + { + "login": "qay21", + "name": "Quentin Aymard", + "avatar_url": "https://avatars.githubusercontent.com/u/87803479?v=4", + "profile": "https://github.com/qay21", + "contributions": [ + "code" + ] } ] } diff --git a/.chipperci.yml b/.chipperci.yml new file mode 100644 index 0000000000..0c1ad8ba15 --- /dev/null +++ b/.chipperci.yml @@ -0,0 +1,63 @@ +version: 1 + +environment: + php: 8.0 + node: 12 + +services: + - mysql: 5.7 + - dusk: + +on: + push: + branches: + - master + - develop + + pull_request: + branches: .* + +pipeline: + - name: Setup + cmd: | + cp -v .env.example .env +# This is simply to allow passing the guard in TestCase@setUp() +# https://chipperci.com/docs/builds/env + touch .env.testing + composer install --no-interaction --prefer-dist --optimize-autoloader + + - name: Generate Key + cmd: | + php artisan key:generate --force + + - name: Passport Keys + cmd: | + php artisan passport:keys + + - name: Run Migrations + cmd: | + # php artisan migrate --force + + - name: PHPUnit Unit Tests + cmd: | + # php artisan test --testsuite Unit + + - name: PHPUnit Feature Tests + cmd: | + # php artisan test --testsuite Feature + +# - name: Browser Tests +# cmd: | +# cp -v .env.dusk.example .env.dusk.ci +# sed -i "s@APP_ENV=.*@APP_ENV=ci@g" .env.dusk.ci +# sed -i "s@APP_URL=.*@APP_URL=http://$BUILD_HOST:8000@g" .env.dusk.ci +# #sed -i "s@DB_HOST=.*@DB_HOST=mysql@g" .env.dusk.ci +# sed -i "s@DB_HOST=.*@DB_HOST=$DB_HOST@g" .env.dusk.ci +# sed -i "s@DB_USERNAME=.*@DB_USERNAME=chipperci@g" .env.dusk.ci +# sed -i "s@DB_DATABASE=.*@DB_DATABASE=chipperci@g" .env.dusk.ci +# sed -i "s@DB_PASSWORD=.*@DB_PASSWORD=secret@g" .env.dusk.ci +# +# php -S [::0]:8000 -t public 2>server.log & +# sleep 2 +# php artisan dusk:chrome-driver $CHROME_DRIVER +# php artisan dusk --env=ci diff --git a/.env.dusk.local b/.env.dusk.example similarity index 94% rename from .env.dusk.local rename to .env.dusk.example index 33343ffc51..074f6fc3d7 100644 --- a/.env.dusk.local +++ b/.env.dusk.example @@ -20,13 +20,13 @@ PUBLIC_FILESYSTEM_DISK=local_public # REQUIRED: DATABASE SETTINGS # -------------------------------------------- DB_CONNECTION=mysql -DB_HOST=localhost +DB_HOST=127.0.0.1 DB_PORT=3306 -DB_DATABASE=snipeit-local -DB_USERNAME=snipeit-local -DB_PASSWORD=snipeit-local +DB_DATABASE=null +DB_USERNAME=null +DB_PASSWORD=null DB_PREFIX=null -DB_DUMP_PATH='/Applications/MAMP/Library/bin' +#DB_DUMP_PATH= # -------------------------------------------- # OPTIONAL: SSL DATABASE SETTINGS diff --git a/.env.example b/.env.example index c523ef0c04..a9563e6321 100644 --- a/.env.example +++ b/.env.example @@ -85,6 +85,7 @@ COOKIE_NAME=snipeit_session COOKIE_DOMAIN=null SECURE_COOKIES=false API_TOKEN_EXPIRATION_YEARS=15 +BS_TABLE_STORAGE=cookieStorage # -------------------------------------------- # OPTIONAL: SECURITY HEADER SETTINGS @@ -175,6 +176,15 @@ REQUIRE_SAML=false API_THROTTLE_PER_MINUTE=120 CSV_ESCAPE_FORMULAS=true +# -------------------------------------------- +# OPTIONAL: HASHING +# -------------------------------------------- +HASHING_DRIVER='bcrypt' +BCRYPT_ROUNDS=10 +ARGON_MEMORY=1024 +ARGON_THREADS=2 +ARGON_TIME=2 + # -------------------------------------------- # OPTIONAL: SCIM # -------------------------------------------- diff --git a/.env.testing b/.env.testing deleted file mode 100644 index a60fc4e09d..0000000000 --- a/.env.testing +++ /dev/null @@ -1,75 +0,0 @@ -# -------------------------------------------- -# REQUIRED: BASIC APP SETTINGS -# -------------------------------------------- -APP_ENV=testing -APP_DEBUG=true -APP_KEY=base64:glJpcM7BYwWiBggp3SQ/+NlRkqsBQMaGEOjemXqJzOU= -APP_URL=http://localhost:8000 -APP_TIMEZONE='US/Pacific' -APP_LOCALE=en -FILESYSTEM_DISK=local - -# -------------------------------------------- -# REQUIRED: DATABASE SETTINGS -# -------------------------------------------- -DB_CONNECTION=sqlite_testing -DB_HOST=localhost -DB_PORT=3306 -DB_DATABASE=testing.sqlite -DB_USERNAME=null -DB_PASSWORD=null - -# -------------------------------------------- -# REQUIRED: OUTGOING MAIL SERVER SETTINGS -# -------------------------------------------- -MAIL_DRIVER=log -MAIL_HOST=email-smtp.us-west-2.amazonaws.com -MAIL_PORT=587 -MAIL_USERNAME=YOURUSERNAME -MAIL_PASSWORD=YOURPASSWORD -MAIL_ENCRYPTION=null -MAIL_FROM_ADDR=you@example.com -MAIL_FROM_NAME=Snipe-IT - -# -------------------------------------------- -# REQUIRED: IMAGE LIBRARY -# This should be gd or imagick -# -------------------------------------------- -IMAGE_LIB=gd - - -# -------------------------------------------- -# OPTIONAL: AWS SETTINGS -# -------------------------------------------- -AWS_SECRET_ACCESS_KEY=null -AWS_ACCESS_KEY_ID=null -AWS_DEFAULT_REGION=null -AWS_BUCKET=null -AWS_BUCKET_ROOT=null -AWS_URL=null - - -# -------------------------------------------- -# OPTIONAL: CACHE SETTINGS -# -------------------------------------------- -CACHE_DRIVER=file -SESSION_DRIVER=file -QUEUE_DRIVER=sync - - -# -------------------------------------------- -# OPTIONAL: SESSION SETTINGS -# -------------------------------------------- -SESSION_LIFETIME=12000 -EXPIRE_ON_CLOSE=false -ENCRYPT=false -COOKIE_NAME=snipeittest_session -COOKIE_DOMAIN=null -SECURE_COOKIES=false - - -# -------------------------------------------- -# OPTIONAL: APP LOG FORMAT -# -------------------------------------------- -LOG_CHANNEL=single -LOG_LEVEL=debug diff --git a/.env.testing.example b/.env.testing.example new file mode 100644 index 0000000000..3391d62726 --- /dev/null +++ b/.env.testing.example @@ -0,0 +1,19 @@ +# -------------------------------------------- +# REQUIRED: BASIC APP SETTINGS +# -------------------------------------------- +APP_ENV=testing +APP_DEBUG=true +APP_KEY=base64:glJpcM7BYwWiBggp3SQ/+NlRkqsBQMaGEOjemXqJzOU= +APP_URL=http://localhost:8000 +APP_TIMEZONE='UTC' +APP_LOCALE=en + +# -------------------------------------------- +# REQUIRED: DATABASE SETTINGS +# -------------------------------------------- +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=null +DB_USERNAME=null +DB_PASSWORD=null diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 8f13e1f1b7..dec3a8fe08 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -2,8 +2,6 @@ name: Feature Request description: Suggest an idea for this project title: "[Feature Request]: " labels: ["feature request"] -assignees: - - snipe body: - type: textarea attributes: diff --git a/.github/autolabeler.yml b/.github/autolabeler.yml index 9320437c78..a27d5fe5fc 100644 --- a/.github/autolabeler.yml +++ b/.github/autolabeler.yml @@ -1,18 +1,22 @@ -frontend: ["*.js", "*.css", "*.vue", "*.scss", "*.less", "*.blade.*", "*livewire*"] +frontend: ["*.js", "*.css", "*.vue", "*.scss", "*.less", "*.blade.*", "resources/views/livewire/*"] skins: ["*.js", "*.css", "*.scss", "*.less"] css: ["*.css","*.scss", "*.less"] -backend: ["/app/*", "*.php"] +javascript: ["*.js", "package.json", "package.lock"] +backend: ["/app/*", "composer.json", "composer.lock"] +translations: ["/resources/lang"] +livewire: ["/app/Http/Livewire/*", "resources/views/livewire/*"] backups: ["*backup*"] restore: ["*restore*"] saml: ["*saml*"] scim: ["*scim*"] custom fields: ["*fields*", "*fieldsets*"] -dependencies: ["composer.json"] +dependencies: ["composer.json", "composer.lock", "package.json", "package.lock"] consumables: ["*consumables*"] -api: ["/app/Http/Controllers/api/*"] +api: ["/app/Http/Controllers/Api/*"] notifications: ["/app/Notifications/*"] -importer: ["/app/Importer/*"] +importer: ["/app/Importer/*","/app/Http/Livewire/Importer.php", "resources/views/livewire/importer.php"] cli / artisan: ["/app/Console/*"] -LDAP: ["*LDAP*", "/app/Console/Commands/Ldap*","/app/Models/Ldap.php"] +LDAP: ["*Ldap*", "/app/Console/Commands/Ldap*","/app/Models/Ldap.php"] docker: ["*docker/*", "Dockerfile", "Dockerfile.alpine", "Dockerfile.fpm-alpine", ".dockerignore", ".env.docker"] +tests: ["/tests/*", "/stubs"] config: .github diff --git a/.github/workflows/codacy-analysis.yml b/.github/workflows/codacy-analysis.yml index 0d77e1ae7c..758838307d 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.2.0 + uses: codacy/codacy-analysis-cli-action@v4.3.0 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/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml new file mode 100644 index 0000000000..c986accf37 --- /dev/null +++ b/.github/workflows/crowdin-upload.yml @@ -0,0 +1,21 @@ +name: Crowdin Action + +on: + push: + branches: [ develop ] + +jobs: + upload-sources-to-crowdin: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Crowdin push + uses: crowdin/github-action@v1 + with: + upload_sources: true + upload_translations: false + download_translations: false + project_id: ${{ secrets.CROWDIN_PROJECT_ID }} + token: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/.github/workflows/docker-alpine.yml b/.github/workflows/docker-alpine.yml index 3139763cbd..0a5c28ee53 100644 --- a/.github/workflows/docker-alpine.yml +++ b/.github/workflows/docker-alpine.yml @@ -72,11 +72,11 @@ jobs: # https://github.com/docker/build-push-action - name: Build and push 'snipe-it' image id: docker_build - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: ./Dockerfile.alpine - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 # For pull requests, we run the Docker build (to ensure no PR changes break the build), # but we ONLY do an image push to DockerHub if it's NOT a PR push: ${{ github.event_name != 'pull_request' }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index b261dd828b..5aa2758e79 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -72,11 +72,11 @@ jobs: # https://github.com/docker/build-push-action - name: Build and push 'snipe-it' image id: docker_build - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: ./Dockerfile - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 # For pull requests, we run the Docker build (to ensure no PR changes break the build), # but we ONLY do an image push to DockerHub if it's NOT a PR push: ${{ github.event_name != 'pull_request' }} diff --git a/.gitignore b/.gitignore index 37e9d3f68c..f0e9bfcec2 100755 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ .couscous .DS_Store .env +.env.dusk.* +!.env.dusk.example +.env.testing +phpstan.neon .idea /bin/ /bootstrap/compiled.php diff --git a/Dockerfile b/Dockerfile index b572ff6896..88de52858b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 +FROM ubuntu:22.04 LABEL maintainer="Brady Wetherington " # No need to add `apt-get clean` here, reference: @@ -14,16 +14,16 @@ RUN export DEBIAN_FRONTEND=noninteractive; \ apt-utils \ apache2 \ apache2-bin \ -libapache2-mod-php7.4 \ -php7.4-curl \ -php7.4-ldap \ -php7.4-mysql \ -php7.4-gd \ -php7.4-xml \ -php7.4-mbstring \ -php7.4-zip \ -php7.4-bcmath \ -php7.4-redis \ +libapache2-mod-php8.1 \ +php8.1-curl \ +php8.1-ldap \ +php8.1-mysql \ +php8.1-gd \ +php8.1-xml \ +php8.1-mbstring \ +php8.1-zip \ +php8.1-bcmath \ +php8.1-redis \ php-memcached \ patch \ curl \ @@ -38,9 +38,10 @@ gcc \ make \ autoconf \ libc-dev \ +libldap-common \ pkg-config \ libmcrypt-dev \ -php7.4-dev \ +php8.1-dev \ ca-certificates \ unzip \ dnsutils \ @@ -50,16 +51,16 @@ dnsutils \ RUN curl -L -O https://github.com/pear/pearweb_phars/raw/master/go-pear.phar RUN php go-pear.phar -RUN pecl install mcrypt-1.0.3 +RUN pecl install mcrypt -RUN bash -c "echo extension=/usr/lib/php/20190902/mcrypt.so > /etc/php/7.4/mods-available/mcrypt.ini" +RUN bash -c "echo extension=/usr/lib/php/20210902/mcrypt.so > /etc/php/8.1/mods-available/mcrypt.ini" RUN phpenmod mcrypt RUN phpenmod gd RUN phpenmod bcmath -RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.4/apache2/php.ini -RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.4/cli/php.ini +RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/8.1/apache2/php.ini +RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/8.1/cli/php.ini RUN useradd -m --uid 1000 --gid 50 docker diff --git a/Dockerfile.alpine b/Dockerfile.alpine index 93dba995a0..62a928f8ad 100644 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -1,34 +1,34 @@ -FROM alpine:3.14.2 +FROM alpine:3.17.3 # Apache + PHP RUN apk add --no-cache \ apache2 \ - php7 \ - php7-common \ - php7-apache2 \ - php7-curl \ - php7-ldap \ - php7-mysqli \ - php7-gd \ - php7-xml \ - php7-mbstring \ - php7-zip \ - php7-ctype \ - php7-tokenizer \ - php7-pdo_mysql \ - php7-openssl \ - php7-bcmath \ - php7-phar \ - php7-json \ - php7-iconv \ - php7-fileinfo \ - php7-simplexml \ - php7-session \ - php7-dom \ - php7-xmlwriter \ - php7-xmlreader \ - php7-sodium \ - php7-redis \ - php7-pecl-memcached \ + php81 \ + php81-common \ + php81-apache2 \ + php81-curl \ + php81-ldap \ + php81-mysqli \ + php81-gd \ + php81-xml \ + php81-mbstring \ + php81-zip \ + php81-ctype \ + php81-tokenizer \ + php81-pdo_mysql \ + php81-openssl \ + php81-bcmath \ + php81-phar \ + php81-json \ + php81-iconv \ + php81-fileinfo \ + php81-simplexml \ + php81-session \ + php81-dom \ + php81-xmlwriter \ + php81-xmlreader \ + php81-sodium \ + php81-redis \ + php81-pecl-memcached \ curl \ wget \ vim \ @@ -41,7 +41,7 @@ COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf # Where apache's PID lives RUN mkdir -p /run/apache2 && chown apache:apache /run/apache2 -RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php7/php.ini +RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php81/php.ini COPY docker/000-default-2.4.conf /etc/apache2/conf.d/default.conf # Enable mod_rewrite diff --git a/Dockerfile.fpm-alpine b/Dockerfile.fpm-alpine index 3bb4566ffa..77302524d4 100644 --- a/Dockerfile.fpm-alpine +++ b/Dockerfile.fpm-alpine @@ -1,8 +1,8 @@ ARG ENVIRONMENT=production -ARG SNIPEIT_RELEASE=5.1.3 -ARG PHP_VERSION=7.4.16 -ARG PHP_ALPINE_VERSION=3.13 -ARG COMPOSER_VERSION=2.0.11 +ARG SNIPEIT_RELEASE=6.1.0 +ARG PHP_VERSION=8.2 +ARG PHP_ALPINE_VERSION=3.17 +ARG COMPOSER_VERSION=2 # Cannot use arguments with 'COPY --from' workaround # https://github.com/moby/moby/issues/34482#issuecomment-454716952 @@ -52,7 +52,7 @@ RUN { \ # Install php extensions inside docker containers easily # https://github.com/mlocati/docker-php-extension-installer -COPY --from=mlocati/php-extension-installer:1.2.19 /usr/bin/install-php-extensions /usr/local/bin/ +COPY --from=mlocati/php-extension-installer:2.1.15 /usr/bin/install-php-extensions /usr/local/bin/ RUN set -eux; \ install-php-extensions \ bcmath \ diff --git a/README.md b/README.md index 1818aa1f82..19310b976b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Build Status](https://app.chipperci.com/projects/0e5f8979-31eb-4ee6-9abf-050b76ab0383/status/master) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/snipe-it/localized.svg)](https://crowdin.com/project/snipe-it) [![Docker Pulls](https://img.shields.io/docker/pulls/snipe/snipe-it.svg)](https://hub.docker.com/r/snipe/snipe-it/) [![Twitter Follow](https://img.shields.io/twitter/follow/snipeitapp.svg?style=social)](https://twitter.com/snipeitapp) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/553ce52037fc43ea99149785afcfe641)](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade) -[![All Contributors](https://img.shields.io/badge/all_contributors-312-orange.svg?style=flat-square)](#contributors) [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/yZFtShAcKk) [![huntr](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev) +[![All Contributors](https://img.shields.io/badge/all_contributors-325-orange.svg?style=flat-square)](#contributors) [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/yZFtShAcKk) [![huntr](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev) ## Snipe-IT - Open Source Asset Management System @@ -66,8 +66,11 @@ Since the release of the JSON REST API, several third-party developers have been - [Python 3 CSV importer](https://github.com/gastamper/snipeit-csvimporter) - allows importing assets into Snipe-IT based on Item Name rather than Asset Tag. - [Snipe-IT Kubernetes Helm Chart](https://github.com/t3n/helm-charts/tree/master/snipeit) - For more information, [click here](https://hub.helm.sh/charts/t3n/snipeit). - [Snipe-IT Bulk Edit](https://github.com/bricelabelle/snipe-it-bulkedit) - Google Script files to use Google Sheets as a bulk checkout/checkin/edit tool for Snipe-it. -- [MosyleSnipeSync](https://github.com/RodneyLeeBrands/MosyleSnipeSync) by [@RodneyLeeBrands](https://github.com/RodneyLeeBrands) - Python script to synchronize information between Mosyle and Snipe-IT +- [MosyleSnipeSync](https://github.com/RodneyLeeBrands/MosyleSnipeSync) by [@Karpadiem](https://github.com/Karpadiem) - Python script to synchronize information between Mosyle and Snipe-IT - [WWW::SnipeIT](https://github.com/SEDC/perl-www-snipeit) by [@SEDC](https://github.com/SEDC) - perl module for accessing the API +- [UniFi to Snipe-IT](https://github.com/RodneyLeeBrands/UnifiSnipeSync) by [@karpadiem](https://github.com/karpadiem) - Python script that synchronizes UniFi devices with Snipe-IT. +- [Kandji2Snipe](https://github.com/grokability/kandji2snipe) by [@briangoldstein](https://github.com/briangoldstein) - Python script that synchronizes Kandji with Snipe-IT. +- [SnipeAgent](https://github.com/ReticentRobot/SnipeAgent) by @ReticentRobot - Windows agent for Snipe-IT As these were created by third-parties, Snipe-IT cannot provide support for these project, and you should contact the developers directly if you need assistance. Additionally, Snipe-IT makes no guarantees as to the reliability, accuracy or maintainability of these libraries. Use at your own risk. :) @@ -140,7 +143,9 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken | [
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") | +| [
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") | 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 6624289758..3f0e588105 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1,65 +1,51 @@ -# Using the Test Suite +# Running the Test Suite -This document is targeted at developers looking to make modifications to -this application's code base and want to run the existing test suite. +This document is targeted at developers looking to make modifications to this application's code base and want to run the existing test suite. +Before starting, follow the [instructions](README.md#installation) for installing the application locally and ensure you can load it in a browser properly. -## Setup +## Unit and Feature Tests -Follow the instructions for installing the application locally, -making sure to have also run the [database migrations](link to db migrations). +Before attempting to run the test suite copy the example environment file for tests and update the values to match your environment: +`cp .env.testing.example .env.testing` +> Since the data in the database is flushed after each test it is recommended you create a separate mysql database for specifically for tests -## Unit Tests +Now you are ready to run the entire test suite from your terminal: -The application will use values in the `.env.testing` file located -in the root directory to override the -default settings and/or other values that exist in your `.env` files. +`php artisan test` -Make sure to modify the section in `.env.testing` that has the -database settings. In the example below, it is connecting to the -[MariaDB](link-to-maria-db) server that is used if you install the -application using [Docker](https://docker.com). +To run individual test files, you can pass the path to the test that you want to run: -```dotenv -# -------------------------------------------- -# REQUIRED: DATABASE SETTINGS -# -------------------------------------------- -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_DATABASE=snipeit -DB_USERNAME=root -DB_PASSWORD=changeme1234 -``` - -To run the entire unit test suite, use the following command from your terminal: - -`php artisan test --env=testing` - -To run individual test files, you can pass the path to the test that -you want to run. - -`php artisan test --env=testing tests/Unit/AccessoryTest.php` +`php artisan test tests/Unit/AccessoryTest.php` ## Browser Tests -The browser tests use [Dusk](https://laravel.com/docs/8.x/dusk) to run them. -When troubleshooting any problems, make sure that your `.env` file is configured -correctly to run the existing application. +Browser tests are run via [Laravel Dusk](https://laravel.com/docs/8.x/dusk) and require Google Chrome to be installed. -### Test Setup +Before attempting to run Dusk tests copy the example environment file for Dusk and update the values to match your environment: -Your application needs to be configued and up and running in order for the browser -tests to actually run. When running the tests locally, you can start the application -using the following command: +`cp .env.dusk.example .env.dusk.local` +> `local` refers to the value of `APP_ENV` in your `.env` so if you have it set to `dev` then the file should be named `.env.dusk.dev`. + +**Important**: Dusk tests cannot be run using an in-memory SQLite database. Additionally, the Dusk test suite uses the `DatabaseMigrations` trait which will leave the database in a fresh state after running. Therefore, it is recommended that you create a test database and point `DB_DATABASE` in `.env.dusk.local` to it. + +### Running Browser Tests + +Your application needs to be configured and up and running in order for the browser tests to actually run. When running the tests locally, you can start the application using the following command: `php artisan serve` - -To run the test suite use the following command from another terminal tab or window: +Now you are ready to run the test suite. Use the following command from another terminal tab or window: `php artisan dusk` -To run individual test files, you can pass the path to the test that you want to run. +To run individual test files, you can pass the path to the test that you want to run: `php artisan dusk tests/Browser/LoginTest.php` + +If you get an error when attempting to run Dusk tests that says `Couldn't connect to server` run: + +`php artisan dusk:chrome-driver --detect` + +This command will install the specific ChromeDriver Dusk needs for your operating system and Chrome version. diff --git a/app/Console/Commands/CheckoutLicenseToAllUsers.php b/app/Console/Commands/CheckoutLicenseToAllUsers.php index d655b5aceb..801b3d187a 100644 --- a/app/Console/Commands/CheckoutLicenseToAllUsers.php +++ b/app/Console/Commands/CheckoutLicenseToAllUsers.php @@ -56,7 +56,7 @@ class CheckoutLicenseToAllUsers extends Command return false; } - $users = User::whereNull('deleted_at')->with('licenses')->get(); + $users = User::whereNull('deleted_at')->where('autoassign_licenses', '=', 1)->with('licenses')->get(); if ($users->count() > $license->getAvailSeatsCountAttribute()) { $this->info('You do not have enough free seats to complete this task, so we will check out as many as we can. '); diff --git a/app/Console/Commands/CreateAdmin.php b/app/Console/Commands/CreateAdmin.php index a4b4b9e42c..114f92dae4 100644 --- a/app/Console/Commands/CreateAdmin.php +++ b/app/Console/Commands/CreateAdmin.php @@ -3,15 +3,31 @@ namespace App\Console\Commands; use Illuminate\Console\Command; +use \App\Models\User; + class CreateAdmin extends Command { + + /** @mixin User **/ /** - * The name and signature of the console command. - * - * @var string + * App\Console\CreateAdmin + * @property mixed $first_name + * @property string $last_name + * @property string $username + * @property string $email + * @property string $permissions + * @property string $password + * @property boolean $activated + * @property boolean $show_in_list + * @property boolean $autoassign_licenses + * @property \Illuminate\Support\Carbon|null $created_at + * @property mixed $created_by */ - protected $signature = 'snipeit:create-admin {--first_name=} {--last_name=} {--email=} {--username=} {--password=} {show_in_list?}'; + + + + protected $signature = 'snipeit:create-admin {--first_name=} {--last_name=} {--email=} {--username=} {--password=} {show_in_list?} {autoassign_licenses?}'; /** * The console command description. @@ -30,11 +46,7 @@ class CreateAdmin extends Command parent::__construct(); } - /** - * Execute the console command. - * - * @return mixed - */ + public function handle() { $first_name = $this->option('first_name'); @@ -43,11 +55,14 @@ class CreateAdmin extends Command $email = $this->option('email'); $password = $this->option('password'); $show_in_list = $this->argument('show_in_list'); + $autoassign_licenses = $this->argument('autoassign_licenses'); + + if (($first_name == '') || ($last_name == '') || ($username == '') || ($email == '') || ($password == '')) { $this->info('ERROR: All fields are required.'); } else { - $user = new \App\Models\User; + $user = new User; $user->first_name = $first_name; $user->last_name = $last_name; $user->username = $username; @@ -59,6 +74,11 @@ class CreateAdmin extends Command if ($show_in_list == 'false') { $user->show_in_list = 0; } + + if ($autoassign_licenses == 'false') { + $user->autoassign_licenses = 0; + } + if ($user->save()) { $this->info('New user created'); $user->groups()->attach(1); diff --git a/app/Console/Commands/LdapSync.php b/app/Console/Commands/LdapSync.php index c6f8dd379a..f77f5f8c48 100755 --- a/app/Console/Commands/LdapSync.php +++ b/app/Console/Commands/LdapSync.php @@ -44,18 +44,25 @@ class LdapSync extends Command */ public function handle() { + + // If LDAP enabled isn't set to 1 (ldap_enabled!=1) then we should cut this short immediately without going any further + if (Setting::getSettings()->ldap_enabled!='1') { + $this->error('LDAP is not enabled. Aborting. See Settings > LDAP to enable it.'); + exit(); + } + ini_set('max_execution_time', env('LDAP_TIME_LIM', 600)); //600 seconds = 10 minutes ini_set('memory_limit', env('LDAP_MEM_LIM', '500M')); $ldap_result_username = Setting::getSettings()->ldap_username_field; $ldap_result_last_name = Setting::getSettings()->ldap_lname_field; $ldap_result_first_name = Setting::getSettings()->ldap_fname_field; - $ldap_result_active_flag = Setting::getSettings()->ldap_active_flag; $ldap_result_emp_num = Setting::getSettings()->ldap_emp_num; $ldap_result_email = Setting::getSettings()->ldap_email; $ldap_result_phone = Setting::getSettings()->ldap_phone_field; $ldap_result_jobtitle = Setting::getSettings()->ldap_jobtitle; $ldap_result_country = Setting::getSettings()->ldap_country; + $ldap_result_location = Setting::getSettings()->ldap_location; $ldap_result_dept = Setting::getSettings()->ldap_dept; $ldap_result_manager = Setting::getSettings()->ldap_manager; $ldap_default_group = Setting::getSettings()->ldap_default_group; @@ -68,7 +75,7 @@ class LdapSync extends Command $json_summary = ['error' => true, 'error_message' => $e->getMessage(), 'summary' => []]; $this->info(json_encode($json_summary)); } - LOG::info($e); + Log::info($e); return []; } @@ -78,7 +85,7 @@ class LdapSync extends Command try { if ($this->option('base_dn') != '') { $search_base = $this->option('base_dn'); - LOG::debug('Importing users from specified base DN: \"'.$search_base.'\".'); + Log::debug('Importing users from specified base DN: \"'.$search_base.'\".'); } else { $search_base = null; } @@ -92,7 +99,7 @@ class LdapSync extends Command $json_summary = ['error' => true, 'error_message' => $e->getMessage(), 'summary' => []]; $this->info(json_encode($json_summary)); } - LOG::info($e); + Log::info($e); return []; } @@ -102,16 +109,16 @@ class LdapSync extends Command if ($this->option('location') != '') { $location = Location::where('name', '=', $this->option('location'))->first(); - LOG::debug('Location name '.$this->option('location').' passed'); - LOG::debug('Importing to '.$location->name.' ('.$location->id.')'); + Log::debug('Location name '.$this->option('location').' passed'); + Log::debug('Importing to '.$location->name.' ('.$location->id.')'); } elseif ($this->option('location_id') != '') { $location = Location::where('id', '=', $this->option('location_id'))->first(); - LOG::debug('Location ID '.$this->option('location_id').' passed'); - LOG::debug('Importing to '.$location->name.' ('.$location->id.')'); + Log::debug('Location ID '.$this->option('location_id').' passed'); + Log::debug('Importing to '.$location->name.' ('.$location->id.')'); } if (! isset($location)) { - LOG::debug('That location is invalid or a location was not provided, so no location will be assigned by default.'); + Log::debug('That location is invalid or a location was not provided, so no location will be assigned by default.'); } /* Process locations with explicitly defined OUs, if doing a full import. */ @@ -127,7 +134,7 @@ class LdapSync extends Command array_multisort($ldap_ou_lengths, SORT_ASC, $ldap_ou_locations); if (count($ldap_ou_locations) > 0) { - LOG::debug('Some locations have special OUs set. Locations will be automatically set for users in those OUs.'); + Log::debug('Some locations have special OUs set. Locations will be automatically set for users in those OUs.'); } // Inject location information fields @@ -145,7 +152,7 @@ class LdapSync extends Command $json_summary = ['error' => true, 'error_message' => trans('admin/users/message.error.ldap_could_not_search').' Location: '.$ldap_loc['name'].' (ID: '.$ldap_loc['id'].') cannot connect to "'.$ldap_loc['ldap_ou'].'" - '.$e->getMessage(), 'summary' => []]; $this->info(json_encode($json_summary)); } - LOG::info($e); + Log::info($e); return []; } @@ -191,20 +198,26 @@ class LdapSync extends Command for ($i = 0; $i < $results['count']; $i++) { $item = []; - $item['username'] = isset($results[$i][$ldap_result_username][0]) ? $results[$i][$ldap_result_username][0] : ''; - $item['employee_number'] = isset($results[$i][$ldap_result_emp_num][0]) ? $results[$i][$ldap_result_emp_num][0] : ''; - $item['lastname'] = isset($results[$i][$ldap_result_last_name][0]) ? $results[$i][$ldap_result_last_name][0] : ''; - $item['firstname'] = isset($results[$i][$ldap_result_first_name][0]) ? $results[$i][$ldap_result_first_name][0] : ''; - $item['email'] = isset($results[$i][$ldap_result_email][0]) ? $results[$i][$ldap_result_email][0] : ''; - $item['ldap_location_override'] = isset($results[$i]['ldap_location_override']) ? $results[$i]['ldap_location_override'] : ''; - $item['location_id'] = isset($results[$i]['location_id']) ? $results[$i]['location_id'] : ''; - $item['telephone'] = isset($results[$i][$ldap_result_phone][0]) ? $results[$i][$ldap_result_phone][0] : ''; - $item['jobtitle'] = isset($results[$i][$ldap_result_jobtitle][0]) ? $results[$i][$ldap_result_jobtitle][0] : ''; - $item['country'] = isset($results[$i][$ldap_result_country][0]) ? $results[$i][$ldap_result_country][0] : ''; - $item['department'] = isset($results[$i][$ldap_result_dept][0]) ? $results[$i][$ldap_result_dept][0] : ''; - $item['manager'] = isset($results[$i][$ldap_result_manager][0]) ? $results[$i][$ldap_result_manager][0] : ''; - + $item['username'] = $results[$i][$ldap_result_username][0] ?? ''; + $item['employee_number'] = $results[$i][$ldap_result_emp_num][0] ?? ''; + $item['lastname'] = $results[$i][$ldap_result_last_name][0] ?? ''; + $item['firstname'] = $results[$i][$ldap_result_first_name][0] ?? ''; + $item['email'] = $results[$i][$ldap_result_email][0] ?? ''; + $item['ldap_location_override'] = $results[$i]['ldap_location_override'] ?? ''; + $item['location_id'] = $results[$i]['location_id'] ?? ''; + $item['telephone'] = $results[$i][$ldap_result_phone][0] ?? ''; + $item['jobtitle'] = $results[$i][$ldap_result_jobtitle][0] ?? ''; + $item['country'] = $results[$i][$ldap_result_country][0] ?? ''; + $item['department'] = $results[$i][$ldap_result_dept][0] ?? ''; + $item['manager'] = $results[$i][$ldap_result_manager][0] ?? ''; + $item['location'] = $results[$i][$ldap_result_location][0] ?? ''; + // ONLY if you are using the "ldap_location" option *AND* you have an actual result + if ($ldap_result_location && $item['location']) { + $location = Location::firstOrCreate([ + 'name' => $item['location'], + ]); + } $department = Department::firstOrCreate([ 'name' => $item['department'], ]); @@ -230,6 +243,7 @@ class LdapSync extends Command $user->jobtitle = $item['jobtitle']; $user->country = $item['country']; $user->department_id = $department->id; + $user->location_id = $location->id; if($item['manager'] != null) { // Check Cache first @@ -303,17 +317,18 @@ class LdapSync extends Command $user->activated = 0; } */ $enabled_accounts = [ - '512', // 0x200 NORMAL_ACCOUNT - '544', // 0x220 NORMAL_ACCOUNT, PASSWD_NOTREQD - '66048', // 0x10200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD - '66080', // 0x10220 NORMAL_ACCOUNT, PASSWD_NOTREQD, DONT_EXPIRE_PASSWORD - '262656', // 0x40200 NORMAL_ACCOUNT, SMARTCARD_REQUIRED - '262688', // 0x40220 NORMAL_ACCOUNT, PASSWD_NOTREQD, SMARTCARD_REQUIRED - '328192', // 0x50200 NORMAL_ACCOUNT, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD - '328224', // 0x50220 NORMAL_ACCOUNT, PASSWD_NOT_REQD, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD - '4194816',// 0x400200 NORMAL_ACCOUNT, DONT_REQ_PREAUTH + '512', // 0x200 NORMAL_ACCOUNT + '544', // 0x220 NORMAL_ACCOUNT, PASSWD_NOTREQD + '66048', // 0x10200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD + '66080', // 0x10220 NORMAL_ACCOUNT, PASSWD_NOTREQD, DONT_EXPIRE_PASSWORD + '262656', // 0x40200 NORMAL_ACCOUNT, SMARTCARD_REQUIRED + '262688', // 0x40220 NORMAL_ACCOUNT, PASSWD_NOTREQD, SMARTCARD_REQUIRED + '328192', // 0x50200 NORMAL_ACCOUNT, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD + '328224', // 0x50220 NORMAL_ACCOUNT, PASSWD_NOT_REQD, SMARTCARD_REQUIRED, DONT_EXPIRE_PASSWORD + '4194816',// 0x400200 NORMAL_ACCOUNT, DONT_REQ_PREAUTH '4260352', // 0x410200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD, DONT_REQ_PREAUTH '1049088', // 0x100200 NORMAL_ACCOUNT, NOT_DELEGATED + '1114624', // 0x110200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD, NOT_DELEGATED, ]; $user->activated = (in_array($results[$i]['useraccountcontrol'][0], $enabled_accounts)) ? 1 : 0; diff --git a/app/Console/Commands/NormalizeUserNames.php b/app/Console/Commands/NormalizeUserNames.php new file mode 100644 index 0000000000..c3ea5e8ace --- /dev/null +++ b/app/Console/Commands/NormalizeUserNames.php @@ -0,0 +1,52 @@ +info($users->count() . ' users'); + + foreach ($users as $user) { + $user->first_name = ucwords(strtolower($user->first_name)); + $user->last_name = ucwords(strtolower($user->last_name)); + $user->email = strtolower($user->email); + $user->save(); + } + } +} diff --git a/app/Console/Commands/RestoreFromBackup.php b/app/Console/Commands/RestoreFromBackup.php index c5e3a4c790..b1f1753564 100644 --- a/app/Console/Commands/RestoreFromBackup.php +++ b/app/Console/Commands/RestoreFromBackup.php @@ -149,7 +149,7 @@ class RestoreFromBackup extends Command $boring_files[] = $raw_path; continue; } - if (@pathinfo($raw_path)['extension'] == 'sql') { + if (@pathinfo($raw_path, PATHINFO_EXTENSION) == 'sql') { \Log::debug("Found a sql file!"); $sqlfiles[] = $raw_path; $sqlfile_indices[] = $i; diff --git a/app/Console/Commands/SystemBackup.php b/app/Console/Commands/SystemBackup.php index b7ca526052..3b51bcc736 100644 --- a/app/Console/Commands/SystemBackup.php +++ b/app/Console/Commands/SystemBackup.php @@ -11,7 +11,7 @@ class SystemBackup extends Command * * @var string */ - protected $name = 'snipeit:backup'; + protected $signature = 'snipeit:backup {--filename=}'; /** * The console command description. @@ -37,7 +37,18 @@ class SystemBackup extends Command */ public function handle() { - // - $this->call('backup:run'); + if ($this->option('filename')) { + $filename = $this->option('filename'); + + // Make sure the filename ends in .zip + if (!ends_with($filename, '.zip')) { + $filename = $filename.'.zip'; + } + + $this->call('backup:run', ['--filename' => $filename]); + } else { + $this->call('backup:run'); + } + } } diff --git a/app/Events/UserMerged.php b/app/Events/UserMerged.php new file mode 100644 index 0000000000..b045fdef03 --- /dev/null +++ b/app/Events/UserMerged.php @@ -0,0 +1,24 @@ +merged_from = $from_user; + $this->merged_to = $to_user; + $this->admin = $admin; + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 5594d8e6b3..3d4db93452 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -6,10 +6,11 @@ use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use App\Helpers\Helper; use Illuminate\Validation\ValidationException; use Illuminate\Auth\AuthenticationException; +use ArieTimmerman\Laravel\SCIMServer\Exceptions\SCIMException; use Log; use Throwable; use JsonException; - +use Carbon\Exceptions\InvalidFormatException; class Handler extends ExceptionHandler { @@ -28,6 +29,8 @@ class Handler extends ExceptionHandler \Intervention\Image\Exception\NotSupportedException::class, \League\OAuth2\Server\Exception\OAuthServerException::class, JsonException::class, + SCIMException::class, //these generally don't need to be reported + InvalidFormatException::class, ]; /** @@ -41,7 +44,9 @@ class Handler extends ExceptionHandler public function report(Throwable $exception) { if ($this->shouldReport($exception)) { - \Log::error($exception); + if (class_exists(\Log::class)) { + \Log::error($exception); + } return parent::report($exception); } } @@ -51,7 +56,7 @@ class Handler extends ExceptionHandler * * @param \Illuminate\Http\Request $request * @param \Exception $e - * @return \Illuminate\Http\Response + * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Http\Response */ public function render($request, Throwable $e) { @@ -65,18 +70,39 @@ class Handler extends ExceptionHandler // Invalid JSON exception // TODO: don't understand why we have to do this when we have the invalidJson() method, below, but, well, whatever if ($e instanceof JsonException) { - return response()->json(Helper::formatStandardApiResponse('error', null, 'invalid JSON'), 422); + return response()->json(Helper::formatStandardApiResponse('error', null, 'Invalid JSON'), 422); } + // Handle SCIM exceptions + if ($e instanceof SCIMException) { + try { + $e->report(); // logs as 'debug', so shouldn't get too noisy + } catch(\Exception $reportException) { + //do nothing + } + return $e->render($request); // ALL SCIMExceptions have the 'render()' method + } - // Handle Ajax requests that fail because the model doesn't exist + // Handle standard requests that fail because Carbon cannot parse the date on validation (when a submitted date value is definitely not a date) + if ($e instanceof InvalidFormatException) { + return redirect()->back()->withInput()->with('error', trans('validation.date', ['attribute' => 'date'])); + } + + // Handle API requests that fail if ($request->ajax() || $request->wantsJson()) { + // Handle API requests that fail because Carbon cannot parse the date on validation (when a submitted date value is definitely not a date) + if ($e instanceof InvalidFormatException) { + return response()->json(Helper::formatStandardApiResponse('error', null, trans('validation.date', ['attribute' => 'date'])), 200); + } + + // Handle API requests that fail because the model doesn't exist if ($e instanceof \Illuminate\Database\Eloquent\ModelNotFoundException) { $className = last(explode('\\', $e->getModel())); return response()->json(Helper::formatStandardApiResponse('error', null, $className . ' not found'), 200); } + // Handle API requests that fail because of an HTTP status code and return a useful error message if ($this->isHttpException($e)) { $statusCode = $e->getStatusCode(); @@ -96,6 +122,8 @@ class Handler extends ExceptionHandler } + + if ($this->isHttpException($e) && (isset($statusCode)) && ($statusCode == '404' )) { return response()->view('layouts/basic', [ 'content' => view('errors/404') @@ -111,8 +139,8 @@ class Handler extends ExceptionHandler * * @param \Illuminate\Http\Request $request * @param \Illuminate\Auth\AuthenticationException $exception - * @return \Illuminate\Http\Response - */ + * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse + */ protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 83961ffd75..b4c8f5605d 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -33,6 +33,16 @@ class Helper } } + public static function parseEscapedMarkedownInline($str = null) + { + $Parsedown = new \Parsedown(); + $Parsedown->setSafeMode(true); + + if ($str) { + return $Parsedown->line($str); + } + } + /** * The importer has formatted number strings since v3, * so the value might be a string, or an integer. @@ -334,7 +344,11 @@ class Helper '#92896B', ]; + $total_colors = count($colors); + if ($index >= $total_colors) { + $index = $index - $total_colors; + } return $colors[$index]; } @@ -528,20 +542,23 @@ class Helper * @since [v2.5] * @return array */ - public static function categoryTypeList() + public static function categoryTypeList($selection=null) { $category_types = [ '' => '', - 'accessory' => 'Accessory', - 'asset' => 'Asset', - 'consumable' => 'Consumable', - 'component' => 'Component', - 'license' => 'License', + 'accessory' => trans('general.accessory'), + 'asset' => trans('general.asset'), + 'consumable' => trans('general.consumable'), + 'component' => trans('general.component'), + 'license' => trans('general.license'), ]; + if ($selection != null){ + return $category_types[strtolower($selection)]; + } + else return $category_types; } - /** * Get the list of custom fields in an array to make a dropdown menu * @@ -1092,6 +1109,15 @@ class Helper return $file_name; } + + /** + * Universal helper to show file size in human-readable formats + * + * @author A. Gianotto + * @since 5.0 + * + * @return string[] + */ public static function formatFilesizeUnits($bytes) { if ($bytes >= 1073741824) @@ -1121,32 +1147,84 @@ class Helper return $bytes; } + + /** + * This is weird but used by the side nav to determine which URL to point the user to + * + * @author A. Gianotto + * @since 5.0 + * + * @return string[] + */ public static function SettingUrls(){ $settings=['#','fields.index', 'statuslabels.index', 'models.index', 'categories.index', 'manufacturers.index', 'suppliers.index', 'departments.index', 'locations.index', 'companies.index', 'depreciations.index']; return $settings; } - public static function AgeFormat($date) { - $year = Carbon::parse($date) - ->diff(now())->y; - $month = Carbon::parse($date) - ->diff(now())->m; - $days = Carbon::parse($date) - ->diff(now())->d; - $age=''; - if ($year) { - $age .= $year.'y '; + + + /** + * Generic helper (largely used by livewire right now) that returns the font-awesome icon + * for the object type. + * + * @author A. Gianotto + * @since 6.1.0 + * + * @return string + */ + public static function iconTypeByItem($item) { + + switch ($item) { + case 'asset': + return 'fas fa-barcode'; + break; + case 'accessory': + return 'fas fa-keyboard'; + break; + case 'component': + return 'fas fa-hdd'; + break; + case 'consumable': + return 'fas fa-tint'; + break; + case 'license': + return 'far fa-save'; + break; + case 'location': + return 'fas fa-map-marker-alt'; + break; + case 'user': + return 'fas fa-user'; + break; } - if ($month) { - $age .= $month.'m '; - } - if ($days) { - $age .= $days.'d'; - } - - return $age; + } + + /* + * This is a shorter way to see if the app is in demo mode. + * + * This makes it cleanly available in blades and in controllers, e.g. + * + * Blade: + * {{ Helper::isDemoMode() ? ' disabled' : ''}} for form blades where we need to disable a form + * + * Controller: + * if (Helper::isDemoMode()) { + * // don't allow the thing + * } + * @todo - use this everywhere else in the app where we have very long if/else config('app.lock_passwords') stuff + */ + public static function isDemoMode() { + if (config('app.lock_passwords') === true) { + return true; + \Log::debug('app locked!'); + } + + return false; + } + + /** * Conversion between units of measurement * @@ -1164,7 +1242,7 @@ class Helper $output = $value * $srcFactor / $dstFactor; return ($round !== false) ? round($output, $round) : $output; } - + /** * Get conversion factor from unit of measurement to mm * @@ -1183,6 +1261,18 @@ class Helper case 'yd': return 3 * static::getUnitConversionFactor('ft'); case 'pt': return (1/72) * static::getUnitConversionFactor('in'); default: throw new \InvalidArgumentException('Unit: \''.$unit.'\' is not supported'); + + return false; + } + + + /* + * I know it's gauche to return a shitty HTML string, but this is just a helper and since it will be the same every single time, + * it seemed pretty safe to do here. Don't you judge me. + */ + public static function showDemoModeFieldWarning() { + if (Helper::isDemoMode()) { + return "

" . trans('general.feature_disabled') . "

"; } } } diff --git a/app/Http/Controllers/Accessories/AccessoriesController.php b/app/Http/Controllers/Accessories/AccessoriesController.php index d1af79adf1..111cbb3c8b 100755 --- a/app/Http/Controllers/Accessories/AccessoriesController.php +++ b/app/Http/Controllers/Accessories/AccessoriesController.php @@ -63,6 +63,7 @@ class AccessoriesController extends Controller public function store(ImageUploadRequest $request) { $this->authorize(Accessory::class); + // create a new model instance $accessory = new Accessory(); @@ -76,13 +77,12 @@ class AccessoriesController extends Controller $accessory->manufacturer_id = request('manufacturer_id'); $accessory->model_number = request('model_number'); $accessory->purchase_date = request('purchase_date'); - $accessory->purchase_cost = Helper::ParseCurrency(request('purchase_cost')); + $accessory->purchase_cost = request('purchase_cost'); $accessory->qty = request('qty'); $accessory->user_id = Auth::user()->id; $accessory->supplier_id = request('supplier_id'); $accessory->notes = request('notes'); - $accessory = $request->handleImages($accessory); // Was the accessory created? @@ -115,6 +115,33 @@ class AccessoriesController extends Controller } + /** + * Returns a view that presents a form to clone an accessory. + * + * @author [J. Vinsmoke] + * @param int $accessoryId + * @since [v6.0] + * @return View + */ + public function getClone($accessoryId = null) + { + + $this->authorize('create', Accesory::class); + + // Check if the asset exists + if (is_null($accessory_to_clone = Accessory::find($accessoryId))) { + // Redirect to the asset management page + return redirect()->route('accessory.index')->with('error', trans('admin/accessories/message.does_not_exist')); + } + + $accessory = clone $accessory_to_clone; + $accessory->id = null; + $accessory->location_id = null; + + return view('accessories/edit') + ->with('item', $accessory); + + } /** * Save edited Accessory from form post @@ -127,45 +154,47 @@ class AccessoriesController extends Controller */ public function update(ImageUploadRequest $request, $accessoryId = null) { - if (is_null($accessory = Accessory::find($accessoryId))) { + if ($accessory = Accessory::withCount('users as users_count')->find($accessoryId)) { + + $this->authorize($accessory); + + $validator = Validator::make($request->all(), [ + "qty" => "required|numeric|min:$accessory->users_count" + ]); + + if ($validator->fails()) { + return redirect()->back() + ->withErrors($validator) + ->withInput(); + } + + + + // Update the accessory data + $accessory->name = request('name'); + $accessory->location_id = request('location_id'); + $accessory->min_amt = request('min_amt'); + $accessory->category_id = request('category_id'); + $accessory->company_id = Company::getIdForCurrentUser(request('company_id')); + $accessory->manufacturer_id = request('manufacturer_id'); + $accessory->order_number = request('order_number'); + $accessory->model_number = request('model_number'); + $accessory->purchase_date = request('purchase_date'); + $accessory->purchase_cost = request('purchase_cost'); + $accessory->qty = request('qty'); + $accessory->supplier_id = request('supplier_id'); + $accessory->notes = request('notes'); + + $accessory = $request->handleImages($accessory); + + // Was the accessory updated? + if ($accessory->save()) { + return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.update.success')); + } + } else { return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist')); } - $min = $accessory->numCheckedOut(); - $validator = Validator::make($request->all(), [ - "qty" => "required|numeric|min:$min" - ]); - - if ($validator->fails()) { - return redirect()->back() - ->withErrors($validator) - ->withInput(); - } - - $this->authorize($accessory); - - // Update the accessory data - $accessory->name = request('name'); - $accessory->location_id = request('location_id'); - $accessory->min_amt = request('min_amt'); - $accessory->category_id = request('category_id'); - $accessory->company_id = Company::getIdForCurrentUser(request('company_id')); - $accessory->manufacturer_id = request('manufacturer_id'); - $accessory->order_number = request('order_number'); - $accessory->model_number = request('model_number'); - $accessory->purchase_date = request('purchase_date'); - $accessory->purchase_cost = Helper::ParseCurrency(request('purchase_cost')); - $accessory->qty = request('qty'); - $accessory->supplier_id = request('supplier_id'); - $accessory->notes = request('notes'); - - $accessory = $request->handleImages($accessory); - - // Was the accessory updated? - if ($accessory->save()) { - return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.update.success')); - } - return redirect()->back()->withInput()->withErrors($accessory->getErrors()); } @@ -217,7 +246,7 @@ class AccessoriesController extends Controller */ public function show($accessoryID = null) { - $accessory = Accessory::find($accessoryID); + $accessory = Accessory::withCount('users as users_count')->find($accessoryID); $this->authorize('view', $accessory); if (isset($accessory->id)) { return view('accessories/view', compact('accessory')); diff --git a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php index 6144bb6f92..1ea036e6ed 100644 --- a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php +++ b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php @@ -25,11 +25,16 @@ class AccessoryCheckoutController extends Controller public function create($accessoryId) { // Check if the accessory exists - if (is_null($accessory = Accessory::find($accessoryId))) { + 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.not_found')); } + // 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')); + } + if ($accessory->category) { $this->authorize('checkout', $accessory); @@ -55,17 +60,23 @@ class AccessoryCheckoutController extends Controller public function store(Request $request, $accessoryId) { // Check if the accessory exists - if (is_null($accessory = Accessory::find($accessoryId))) { + 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); - if (! $user = User::find($request->input('assigned_to'))) { + 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')); } + // 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')); diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 59c8f88430..645e2624b2 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -121,7 +121,6 @@ class AcceptanceController extends Controller $pdf_filename = 'accepted-eula-'.date('Y-m-d-h-i-s').'.pdf'; $sig_filename=''; - if ($request->input('asset_acceptance') == 'accepted') { /** @@ -153,12 +152,14 @@ class AcceptanceController extends Controller } } - // this is horrible switch($acceptance->checkoutable_type){ case 'App\Models\Asset': $pdf_view_route ='account.accept.accept-asset-eula'; $asset_model = AssetModel::find($item->model_id); + if (!$asset_model) { + return redirect()->back()->with('error', trans('admin/models/message.does_not_exist')); + } $display_model = $asset_model->name; $assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName; break; @@ -167,7 +168,7 @@ class AcceptanceController extends Controller $pdf_view_route ='account.accept.accept-accessory-eula'; $accessory = Accessory::find($item->id); $display_model = $accessory->name; - $assigned_to = User::find($item->assignedTo); + $assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName; break; case 'App\Models\LicenseSeat': @@ -222,8 +223,8 @@ class AcceptanceController extends Controller 'item_model' => $display_model, 'item_serial' => $item->serial, 'eula' => $item->getEula(), - 'check_out_date' => Carbon::parse($acceptance->created_at)->format($branding_settings->date_display_format), - 'accepted_date' => Carbon::parse($acceptance->accepted_at)->format($branding_settings->date_display_format), + 'check_out_date' => Carbon::parse($acceptance->created_at)->format('Y-m-d'), + 'accepted_date' => Carbon::parse($acceptance->accepted_at)->format('Y-m-d'), 'assigned_to' => $assigned_to, 'company_name' => $branding_settings->site_name, 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, @@ -250,11 +251,15 @@ class AcceptanceController extends Controller // This is the most horriblest switch($acceptance->checkoutable_type){ case 'App\Models\Asset': + $asset_model = AssetModel::find($item->model_id); + $display_model = $asset_model->name; $assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName; break; case 'App\Models\Accessory': - $assigned_to = User::find($item->assignedTo); + $accessory = Accessory::find($item->id); + $display_model = $accessory->name; + $assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName; break; case 'App\Models\LicenseSeat': @@ -266,6 +271,8 @@ class AcceptanceController extends Controller break; case 'App\Models\Consumable': + $consumable = Consumable::find($item->id); + $display_model = $consumable->name; $assigned_to = User::find($acceptance->assigned_to_id)->present()->fullName; break; } @@ -273,7 +280,7 @@ class AcceptanceController extends Controller 'item_tag' => $item->asset_tag, 'item_model' => $display_model, 'item_serial' => $item->serial, - 'declined_date' => Carbon::parse($acceptance->accepted_at)->format($branding_settings->date_display_format), + 'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'), 'assigned_to' => $assigned_to, 'company_name' => $branding_settings->site_name, 'date_settings' => $branding_settings->date_display_format, @@ -289,4 +296,4 @@ class AcceptanceController extends Controller return redirect()->to('account/accept')->with('success', $return_msg); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/Api/AccessoriesController.php b/app/Http/Controllers/Api/AccessoriesController.php index a894dc3760..263bd2086f 100644 --- a/app/Http/Controllers/Api/AccessoriesController.php +++ b/app/Http/Controllers/Api/AccessoriesController.php @@ -26,7 +26,10 @@ class AccessoriesController extends Controller */ public function index(Request $request) { - $this->authorize('view', Accessory::class); + if ($request->user()->cannot('reports.view')) { + $this->authorize('view', Accessory::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. @@ -41,10 +44,13 @@ class AccessoriesController extends Controller 'min_amt', 'company_id', 'notes', + 'users_count', + 'qty', ]; - $accessories = Accessory::select('accessories.*')->with('category', 'company', 'manufacturer', 'users', 'location', 'supplier'); + $accessories = Accessory::select('accessories.*')->with('category', 'company', 'manufacturer', 'users', 'location', 'supplier') + ->withCount('users as users_count'); if ($request->filled('search')) { $accessories = $accessories->TextSearch($request->input('search')); @@ -74,12 +80,9 @@ class AccessoriesController extends Controller $accessories->where('notes','=',$request->input('notes')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($accessories) && ($request->get('offset') > $accessories->count())) ? $accessories->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $accessories->count()) ? $accessories->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort_override = $request->input('sort'); @@ -147,7 +150,7 @@ class AccessoriesController extends Controller public function show($id) { $this->authorize('view', Accessory::class); - $accessory = Accessory::findOrFail($id); + $accessory = Accessory::withCount('users as users_count')->findOrFail($id); return (new AccessoriesTransformer)->transformAccessory($accessory); } diff --git a/app/Http/Controllers/Api/AssetMaintenancesController.php b/app/Http/Controllers/Api/AssetMaintenancesController.php index e38d5382fa..6da7ce23a1 100644 --- a/app/Http/Controllers/Api/AssetMaintenancesController.php +++ b/app/Http/Controllers/Api/AssetMaintenancesController.php @@ -36,7 +36,7 @@ class AssetMaintenancesController extends Controller { $this->authorize('view', Asset::class); - $maintenances = AssetMaintenance::select('asset_maintenances.*')->with('asset', 'asset.model', 'asset.location', 'supplier', 'asset.company', 'admin'); + $maintenances = AssetMaintenance::select('asset_maintenances.*')->with('asset', 'asset.model', 'asset.location', 'asset.defaultLoc', 'supplier', 'asset.company', 'admin'); if ($request->filled('search')) { $maintenances = $maintenances->TextSearch($request->input('search')); @@ -55,12 +55,9 @@ class AssetMaintenancesController extends Controller } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($maintenances) && ($request->get('offset') > $maintenances->count())) ? $maintenances->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $maintenances->count()) ? $maintenances->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $allowed_columns = [ 'id', @@ -74,7 +71,8 @@ class AssetMaintenancesController extends Controller 'asset_tag', 'asset_name', 'user_id', - 'supplier' + 'supplier', + 'is_warranty', ]; $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; @@ -121,7 +119,7 @@ class AssetMaintenancesController extends Controller $assetMaintenance = new AssetMaintenance(); $assetMaintenance->supplier_id = $request->input('supplier_id'); $assetMaintenance->is_warranty = $request->input('is_warranty'); - $assetMaintenance->cost = Helper::ParseCurrency($request->input('cost')); + $assetMaintenance->cost = $request->input('cost'); $assetMaintenance->notes = e($request->input('notes')); $asset = Asset::find(e($request->input('asset_id'))); @@ -178,7 +176,7 @@ class AssetMaintenancesController extends Controller $assetMaintenance->supplier_id = e($request->input('supplier_id')); $assetMaintenance->is_warranty = e($request->input('is_warranty')); - $assetMaintenance->cost = Helper::ParseCurrency($request->input('cost')); + $assetMaintenance->cost = $request->input('cost'); $assetMaintenance->notes = e($request->input('notes')); $asset = Asset::find(request('asset_id')); diff --git a/app/Http/Controllers/Api/AssetModelsController.php b/app/Http/Controllers/Api/AssetModelsController.php index 5e9b3ad78d..cf13d24fc4 100644 --- a/app/Http/Controllers/Api/AssetModelsController.php +++ b/app/Http/Controllers/Api/AssetModelsController.php @@ -63,7 +63,7 @@ class AssetModelsController extends Controller 'models.deleted_at', 'models.updated_at', ]) - ->with('category', 'depreciation', 'manufacturer', 'fieldset') + ->with('category', 'depreciation', 'manufacturer', 'fieldset.fields.defaultValues') ->withCount('assets as assets_count'); if ($request->input('status')=='deleted') { @@ -78,12 +78,9 @@ class AssetModelsController extends Controller $assetmodels->TextSearch($request->input('search')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($assetmodels) && ($request->get('offset') > $assetmodels->count())) ? $assetmodels->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $assetmodels->count()) ? $assetmodels->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'models.created_at'; diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index a843aa09db..e8f37d8574 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -101,6 +101,7 @@ class AssetsController extends Controller 'checkin_counter', 'requests_counter', 'byod', + 'asset_eol_date', ]; $filter = []; @@ -114,7 +115,7 @@ class AssetsController extends Controller $allowed_columns[] = $field->db_column_name(); } - $assets = Company::scopeCompanyables(Asset::select('assets.*'), 'company_id', 'assets') + $assets = Asset::select('assets.*') ->with('location', 'assetstatus', 'company', 'defaultLoc','assignedTo', 'model.category', 'model.manufacturer', 'model.fieldset','supplier'); //it might be tempting to add 'assetlog' here, but don't. It blows up update-heavy users. @@ -124,11 +125,12 @@ class AssetsController extends Controller $assets->InModelList($non_deprecable_models->toArray()); } + + // These are used by the API to query against specific ID numbers. // They are also used by the individual searches on detail pages like // locations, etc. - // Search custom fields by column name foreach ($all_custom_fields as $field) { if ($request->filled($field->db_column_name())) { @@ -136,76 +138,12 @@ class AssetsController extends Controller } } - - if ($request->filled('status_id')) { - $assets->where('assets.status_id', '=', $request->input('status_id')); + if ((! is_null($filter)) && (count($filter)) > 0) { + $assets->ByFilter($filter); + } elseif ($request->filled('search')) { + $assets->TextSearch($request->input('search')); } - if ($request->filled('asset_tag')) { - $assets->where('assets.asset_tag', '=', $request->input('asset_tag')); - } - - if ($request->filled('serial')) { - $assets->where('assets.serial', '=', $request->input('serial')); - } - - if ($request->input('requestable') == 'true') { - $assets->where('assets.requestable', '=', '1'); - } - - if ($request->filled('model_id')) { - $assets->InModelList([$request->input('model_id')]); - } - - if ($request->filled('category_id')) { - $assets->InCategory($request->input('category_id')); - } - - if ($request->filled('location_id')) { - $assets->where('assets.location_id', '=', $request->input('location_id')); - } - - if ($request->filled('rtd_location_id')) { - $assets->where('assets.rtd_location_id', '=', $request->input('rtd_location_id')); - } - - if ($request->filled('supplier_id')) { - $assets->where('assets.supplier_id', '=', $request->input('supplier_id')); - } - - if (($request->filled('assigned_to')) && ($request->filled('assigned_type'))) { - $assets->where('assets.assigned_to', '=', $request->input('assigned_to')) - ->where('assets.assigned_type', '=', $request->input('assigned_type')); - } - - if ($request->filled('company_id')) { - $assets->where('assets.company_id', '=', $request->input('company_id')); - } - - if ($request->filled('manufacturer_id')) { - $assets->ByManufacturer($request->input('manufacturer_id')); - } - - if ($request->filled('depreciation_id')) { - $assets->ByDepreciationId($request->input('depreciation_id')); - } - - if ($request->filled('byod')) { - $assets->where('assets.byod', '=', $request->input('byod')); - } - - $request->filled('order_number') ? $assets = $assets->where('assets.order_number', '=', e($request->get('order_number'))) : ''; - - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($assets) && ($request->get('offset') > $assets->count())) ? $assets->count() : $request->get('offset', 0); - - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); - - $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; - // This is used by the audit reporting routes if (Gate::allows('audit', Asset::class)) { switch ($audit) { @@ -219,7 +157,6 @@ class AssetsController extends Controller } - // This is used by the sidenav, mostly // We switched from using query scopes here because of a Laravel bug @@ -269,7 +206,7 @@ class AssetsController extends Controller break; case 'Deployed': // more sad, horrible workarounds for laravel bugs when doing full text searches - $assets->where('assets.assigned_to', '>', '0'); + $assets->whereNotNull('assets.assigned_to'); break; case 'byod': // This is kind of redundant, since we already check for byod=1 above, but this keeps the @@ -295,12 +232,71 @@ class AssetsController extends Controller } - if ((! is_null($filter)) && (count($filter)) > 0) { - $assets->ByFilter($filter); - } elseif ($request->filled('search')) { - $assets->TextSearch($request->input('search')); + // Leave these under the TextSearch scope, else the fuzziness will override the specific ID (status ID, etc) requested + if ($request->filled('status_id')) { + $assets->where('assets.status_id', '=', $request->input('status_id')); } + if ($request->filled('asset_tag')) { + $assets->where('assets.asset_tag', '=', $request->input('asset_tag')); + } + + if ($request->filled('serial')) { + $assets->where('assets.serial', '=', $request->input('serial')); + } + + if ($request->input('requestable') == 'true') { + $assets->where('assets.requestable', '=', '1'); + } + + if ($request->filled('model_id')) { + $assets->InModelList([$request->input('model_id')]); + } + + if ($request->filled('category_id')) { + $assets->InCategory($request->input('category_id')); + } + + if ($request->filled('location_id')) { + $assets->where('assets.location_id', '=', $request->input('location_id')); + } + + if ($request->filled('rtd_location_id')) { + $assets->where('assets.rtd_location_id', '=', $request->input('rtd_location_id')); + } + + if ($request->filled('supplier_id')) { + $assets->where('assets.supplier_id', '=', $request->input('supplier_id')); + } + + if ($request->filled('asset_eol_date')) { + $assets->where('assets.asset_eol_date', '=', $request->input('asset_eol_date')); + } + + if (($request->filled('assigned_to')) && ($request->filled('assigned_type'))) { + $assets->where('assets.assigned_to', '=', $request->input('assigned_to')) + ->where('assets.assigned_type', '=', $request->input('assigned_type')); + } + + if ($request->filled('company_id')) { + $assets->where('assets.company_id', '=', $request->input('company_id')); + } + + if ($request->filled('manufacturer_id')) { + $assets->ByManufacturer($request->input('manufacturer_id')); + } + + if ($request->filled('depreciation_id')) { + $assets->ByDepreciationId($request->input('depreciation_id')); + } + + if ($request->filled('byod')) { + $assets->where('assets.byod', '=', $request->input('byod')); + } + + if ($request->filled('order_number')) { + $assets->where('assets.order_number', '=', $request->get('order_number')); + } // This is kinda gross, but we need to do this because the Bootstrap Tables // API passes custom field ordering as custom_fields.fieldname, and we have to strip @@ -311,7 +307,8 @@ class AssetsController extends Controller // in the allowed_columns array) $column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'assets.created_at'; - + $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; + switch ($sort_override) { case 'model': $assets->OrderModels($order); @@ -348,6 +345,10 @@ class AssetsController extends Controller } + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $assets->count()) ? $assets->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); + $total = $assets->count(); $assets = $assets->skip($offset)->take($limit)->get(); @@ -460,7 +461,7 @@ class AssetsController extends Controller { $this->authorize('view', Asset::class); $this->authorize('view', License::class); - $asset = Asset::where('id', $id)->withTrashed()->first(); + $asset = Asset::where('id', $id)->withTrashed()->firstorfail(); $licenses = $asset->licenses()->get(); return (new LicensesTransformer())->transformLicenses($licenses, $licenses->count()); @@ -478,7 +479,7 @@ class AssetsController extends Controller public function selectlist(Request $request) { - $assets = Company::scopeCompanyables(Asset::select([ + $assets = Asset::select([ 'assets.id', 'assets.name', 'assets.asset_tag', @@ -486,7 +487,7 @@ class AssetsController extends Controller 'assets.assigned_to', 'assets.assigned_type', 'assets.status_id', - ])->with('model', 'assetstatus', 'assignedTo')->NotArchived(), 'company_id', 'assets'); + ])->with('model', 'assetstatus', 'assignedTo')->NotArchived(); if ($request->filled('assetStatusType') && $request->input('assetStatusType') === 'RTD') { $assets = $assets->RTD(); @@ -544,14 +545,16 @@ class AssetsController extends Controller $asset->model_id = $request->get('model_id'); $asset->order_number = $request->get('order_number'); $asset->notes = $request->get('notes'); - $asset->asset_tag = $request->get('asset_tag', Asset::autoincrement_asset()); + $asset->asset_tag = $request->get('asset_tag', Asset::autoincrement_asset()); //yup, problem :/ + // NO IT IS NOT!!! This is never firing; we SHOW the asset_tag you're going to get, so it *will* be filled in! $asset->user_id = Auth::id(); $asset->archived = '0'; $asset->physical = '1'; $asset->depreciate = '0'; $asset->status_id = $request->get('status_id', 0); $asset->warranty_months = $request->get('warranty_months', null); - $asset->purchase_cost = Helper::ParseCurrency($request->get('purchase_cost')); // this is the API's store method, so I don't know that I want to do this? Confusing. FIXME (or not?!) + $asset->purchase_cost = $request->get('purchase_cost'); + $asset->asset_eol_date = $request->get('asset_eol_date', $asset->present()->eol_date()); $asset->purchase_date = $request->get('purchase_date', null); $asset->assigned_to = $request->get('assigned_to', null); $asset->supplier_id = $request->get('supplier_id'); @@ -559,6 +562,7 @@ class AssetsController extends Controller $asset->rtd_location_id = $request->get('rtd_location_id', null); $asset->location_id = $request->get('rtd_location_id', null); + /** * this is here just legacy reasons. Api\AssetController * used image_source once to allow encoded image uploads. @@ -572,6 +576,7 @@ class AssetsController extends Controller // Update custom fields in the database. // Validation for these fields is handled through the AssetRequest form request $model = AssetModel::find($request->get('model_id')); + if (($model) && ($model->fieldset)) { foreach ($model->fieldset->fields as $field) { @@ -829,7 +834,6 @@ class AssetsController extends Controller } elseif (request('checkout_to_type') == 'asset') { $target = Asset::where('id', '!=', $asset_id)->find(request('assigned_asset')); - $asset->location_id = $target->rtd_location_id; // Override with the asset's location_id if it has one $asset->location_id = (($target) && (isset($target->location_id))) ? $target->location_id : ''; $error_payload['target_id'] = $request->input('assigned_asset'); @@ -857,7 +861,8 @@ class AssetsController extends Controller $checkout_at = request('checkout_at', date('Y-m-d H:i:s')); $expected_checkin = request('expected_checkin', null); $note = request('note', null); - $asset_name = request('name', null); + // Using `->has` preserves the asset name if the name parameter was not included in request. + $asset_name = request()->has('name') ? request('name') : $asset->name; // Set the location ID to the RTD location id if there is one // Wait, why are we doing this? This overrides the stuff we set further up, which makes no sense. @@ -937,18 +942,21 @@ class AssetsController extends Controller * @since [v6.0] * @return JsonResponse */ - public function checkinByTag(Request $request) + public function checkinByTag(Request $request, $tag = null) { $this->authorize('checkin', Asset::class); - $asset = Asset::where('asset_tag', $request->input('asset_tag'))->first(); + if(null == $tag && null !== ($request->input('asset_tag'))) { + $tag = $request->input('asset_tag'); + } + $asset = Asset::where('asset_tag', $tag)->first(); if ($asset) { return $this->checkin($request, $asset->id); } return response()->json(Helper::formatStandardApiResponse('error', [ - 'asset'=> e($request->input('asset_tag')) - ], 'Asset with tag '.e($request->input('asset_tag')).' not found')); + 'asset'=> e($tag) + ], 'Asset with tag '.e($tag).' not found')); } @@ -1025,9 +1033,10 @@ class AssetsController extends Controller { $this->authorize('viewRequestable', Asset::class); - $assets = Company::scopeCompanyables(Asset::select('assets.*'), 'company_id', 'assets') + $assets = Asset::select('assets.*') ->with('location', 'assetstatus', 'assetlog', 'company', 'defaultLoc','assignedTo', - 'model.category', 'model.manufacturer', 'model.fieldset', 'supplier')->requestableAssets(); + 'model.category', 'model.manufacturer', 'model.fieldset', 'supplier') + ->requestableAssets(); $offset = request('offset', 0); $limit = $request->input('limit', 50); diff --git a/app/Http/Controllers/Api/CategoriesController.php b/app/Http/Controllers/Api/CategoriesController.php index c518813405..2781fa101f 100644 --- a/app/Http/Controllers/Api/CategoriesController.php +++ b/app/Http/Controllers/Api/CategoriesController.php @@ -24,10 +24,48 @@ class CategoriesController extends Controller public function index(Request $request) { $this->authorize('view', Category::class); - $allowed_columns = ['id', 'name', 'category_type', 'category_type', 'use_default_eula', 'eula_text', 'require_acceptance', 'checkin_email', 'assets_count', 'accessories_count', 'consumables_count', 'components_count', 'licenses_count', 'image']; + $allowed_columns = [ + 'id', + 'name', + 'category_type', + 'category_type', + 'use_default_eula', + 'eula_text', + 'require_acceptance', + 'checkin_email', + 'assets_count', + 'accessories_count', + 'consumables_count', + 'components_count', + 'licenses_count', + 'image', + ]; - $categories = Category::select(['id', 'created_at', 'updated_at', 'name', 'category_type', 'use_default_eula', 'eula_text', 'require_acceptance', 'checkin_email', 'image']) - ->withCount('assets as assets_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count'); + $categories = Category::select([ + 'id', + 'created_at', + 'updated_at', + 'name', 'category_type', + 'use_default_eula', + 'eula_text', + 'require_acceptance', + 'checkin_email', + 'image' + ])->withCount('accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count'); + + + /* + * This checks to see if we should override the Admin Setting to show archived assets in list. + * We don't currently use it within the Snipe-IT GUI, but will be useful for API integrations where they + * may actually need to fetch assets that are archived. + * + * @see \App\Models\Category::showableAssets() + */ + if ($request->input('archived')=='true') { + $categories = $categories->withCount('assets as assets_count'); + } else { + $categories = $categories->withCount('showableAssets as assets_count'); + } if ($request->filled('search')) { $categories = $categories->TextSearch($request->input('search')); @@ -53,14 +91,9 @@ class CategoriesController extends Controller $categories->where('checkin_email', '=', $request->input('checkin_email')); } - - - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($categories) && ($request->get('offset') > $categories->count())) ? $categories->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $categories->count()) ? $categories->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'assets_count'; diff --git a/app/Http/Controllers/Api/CompaniesController.php b/app/Http/Controllers/Api/CompaniesController.php index 11f5845674..72297440dd 100644 --- a/app/Http/Controllers/Api/CompaniesController.php +++ b/app/Http/Controllers/Api/CompaniesController.php @@ -27,6 +27,8 @@ class CompaniesController extends Controller $allowed_columns = [ 'id', 'name', + 'phone', + 'fax', 'created_at', 'updated_at', 'users_count', @@ -48,12 +50,10 @@ class CompaniesController extends Controller } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($companies) && ($request->get('offset') > $companies->count())) ? $companies->count() : $request->get('offset', 0); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $companies->count()) ? $companies->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; diff --git a/app/Http/Controllers/Api/ComponentsController.php b/app/Http/Controllers/Api/ComponentsController.php index 473fbf1482..8b51344424 100644 --- a/app/Http/Controllers/Api/ComponentsController.php +++ b/app/Http/Controllers/Api/ComponentsController.php @@ -12,6 +12,7 @@ use App\Http\Requests\ImageUploadRequest; use App\Events\CheckoutableCheckedIn; use App\Events\ComponentCheckedIn; use App\Models\Asset; +use Illuminate\Support\Facades\Validator; class ComponentsController extends Controller { @@ -43,9 +44,8 @@ class ComponentsController extends Controller 'notes', ]; - - $components = Company::scopeCompanyables(Component::select('components.*') - ->with('company', 'location', 'category', 'assets')); + $components = Component::select('components.*') + ->with('company', 'location', 'category', 'assets', 'supplier'); if ($request->filled('search')) { $components = $components->TextSearch($request->input('search')); @@ -63,6 +63,10 @@ class ComponentsController extends Controller $components->where('category_id', '=', $request->input('category_id')); } + if ($request->filled('supplier_id')) { + $components->where('supplier_id', '=', $request->input('supplier_id')); + } + if ($request->filled('location_id')) { $components->where('location_id', '=', $request->input('location_id')); } @@ -71,14 +75,10 @@ class ComponentsController extends Controller $components->where('notes','=',$request->input('notes')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($components) && ($request->get('offset') > $components->count())) ? $components->count() : $request->get('offset', 0); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $components->count()) ? $components->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); - - $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort_override = $request->input('sort'); $column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at'; @@ -93,6 +93,9 @@ class ComponentsController extends Controller case 'company': $components = $components->OrderCompany($order); break; + case 'supplier': + $components = $components->OrderSupplier($order); + break; default: $components = $components->orderBy($column_sort, $order); break; @@ -225,20 +228,30 @@ class ComponentsController extends Controller public function checkout(Request $request, $componentId) { // Check if the component exists - if (is_null($component = Component::find($componentId))) { + if (!$component = Component::find($componentId)) { return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/components/message.does_not_exist'))); } $this->authorize('checkout', $component); + $validator = Validator::make($request->all(), [ + 'asset_id' => 'required|exists:assets,id', + 'assigned_qty' => "required|numeric|min:1|digits_between:1,".$component->numRemaining(), + ]); + + if ($validator->fails()) { + return response()->json(Helper::formatStandardApiResponse('error', $validator->errors())); + + } + + // Make sure there is at least one available to checkout + if ($component->numRemaining() <= $request->get('assigned_qty')) { + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/components/message.checkout.unavailable', ['remaining' => $component->numRemaining(), 'requested' => $request->get('assigned_qty')]))); + } if ($component->numRemaining() >= $request->get('assigned_qty')) { - if (!$asset = Asset::find($request->input('assigned_to'))) { - return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist'))); - } - - // Update the accessory data + $asset = Asset::find($request->input('assigned_to')); $component->assigned_to = $request->input('assigned_to'); $component->assets()->attach($component->id, [ @@ -255,7 +268,7 @@ class ComponentsController extends Controller return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/components/message.checkout.success'))); } - return response()->json(Helper::formatStandardApiResponse('error', null, 'Not enough components remaining: '.$component->numRemaining().' remaining, '.$request->get('assigned_qty').' requested.')); + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/components/message.checkout.unavailable', ['remaining' => $component->numRemaining(), 'requested' => $request->get('assigned_qty')]))); } /** diff --git a/app/Http/Controllers/Api/ConsumablesController.php b/app/Http/Controllers/Api/ConsumablesController.php index fc6620df48..ba7e6fb302 100644 --- a/app/Http/Controllers/Api/ConsumablesController.php +++ b/app/Http/Controllers/Api/ConsumablesController.php @@ -45,11 +45,8 @@ class ConsumablesController extends Controller 'notes', ]; - - $consumables = Company::scopeCompanyables( - Consumable::select('consumables.*') - ->with('company', 'location', 'category', 'users', 'manufacturer') - ); + $consumables = Consumable::select('consumables.*') + ->with('company', 'location', 'category', 'users', 'manufacturer'); if ($request->filled('search')) { $consumables = $consumables->TextSearch(e($request->input('search'))); @@ -75,6 +72,10 @@ class ConsumablesController extends Controller $consumables->where('manufacturer_id', '=', $request->input('manufacturer_id')); } + if ($request->filled('supplier_id')) { + $consumables->where('supplier_id', '=', $request->input('supplier_id')); + } + if ($request->filled('location_id')) { $consumables->where('location_id','=',$request->input('location_id')); } @@ -84,12 +85,9 @@ class ConsumablesController extends Controller } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($consumables) && ($request->get('offset') > $consumables->count())) ? $consumables->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $consumables->count()) ? $consumables->count() : abs($request->input('offset')); + $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'; @@ -111,6 +109,9 @@ class ConsumablesController extends Controller case 'company': $consumables = $consumables->OrderCompany($order); break; + case 'supplier': + $components = $consumables->OrderSupplier($order); + break; default: $consumables = $consumables->orderBy($column_sort, $order); break; @@ -154,7 +155,7 @@ class ConsumablesController extends Controller public function show($id) { $this->authorize('view', Consumable::class); - $consumable = Consumable::findOrFail($id); + $consumable = Consumable::with('users')->findOrFail($id); return (new ConsumablesTransformer)->transformConsumable($consumable); } @@ -253,33 +254,39 @@ class ConsumablesController extends Controller public function checkout(Request $request, $id) { // Check if the consumable exists - if (is_null($consumable = Consumable::find($id))) { + if (!$consumable = Consumable::with('users')->find($id)) { return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/consumables/message.does_not_exist'))); } $this->authorize('checkout', $consumable); - if ($consumable->qty > 0) { + // Make sure there is at least one available to checkout + if ($consumable->numRemaining() <= 0) { + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/consumables/message.checkout.unavailable'))); + \Log::debug('No enough remaining'); + } - // Check if the user exists - $assigned_to = $request->input('assigned_to'); - if (is_null($user = User::find($assigned_to))) { - // Return error message - return response()->json(Helper::formatStandardApiResponse('error', null, 'No user found')); - } + // Check if the user exists - @TODO: this should probably be handled via validation, not here?? + 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 - $consumable->assigned_to = e($assigned_to); + // Update the consumable data + $consumable->assigned_to = $request->input('assigned_to'); - $consumable->users()->attach($consumable->id, [ - 'consumable_id' => $consumable->id, - 'user_id' => $user->id, - 'assigned_to' => $assigned_to, - 'note' => $request->input('note'), - ]); + $consumable->users()->attach($consumable->id, + [ + 'consumable_id' => $consumable->id, + 'user_id' => $user->id, + 'assigned_to' => $request->input('assigned_to'), + 'note' => $request->input('note'), + ] + ); // Log checkout event - $logaction = $consumable->logCheckout(e($request->input('note')), $user); + $logaction = $consumable->logCheckout($request->input('note'), $user); $data['log_id'] = $logaction->id; $data['eula'] = $consumable->getEula(); $data['first_name'] = $user->first_name; @@ -289,9 +296,7 @@ class ConsumablesController extends Controller $data['require_acceptance'] = $consumable->requireAcceptance(); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/consumables/message.checkout.success'))); - } - return response()->json(Helper::formatStandardApiResponse('error', null, 'No consumables remaining')); } /** diff --git a/app/Http/Controllers/Api/CustomFieldsetsController.php b/app/Http/Controllers/Api/CustomFieldsetsController.php index 18da1b67c2..df0fc940cf 100644 --- a/app/Http/Controllers/Api/CustomFieldsetsController.php +++ b/app/Http/Controllers/Api/CustomFieldsetsController.php @@ -7,6 +7,7 @@ use App\Http\Controllers\Controller; use App\Http\Transformers\CustomFieldsetsTransformer; use App\Http\Transformers\CustomFieldsTransformer; use App\Models\CustomFieldset; +use App\Models\CustomField; use Illuminate\Http\Request; use Redirect; use View; @@ -33,7 +34,7 @@ class CustomFieldsetsController extends Controller */ public function index() { - $this->authorize('index', CustomFieldset::class); + $this->authorize('index', CustomField::class); $fieldsets = CustomFieldset::withCount('fields as fields_count', 'models as models_count')->get(); return (new CustomFieldsetsTransformer)->transformCustomFieldsets($fieldsets, $fieldsets->count()); @@ -49,7 +50,7 @@ class CustomFieldsetsController extends Controller */ public function show($id) { - $this->authorize('view', CustomFieldset::class); + $this->authorize('view', CustomField::class); if ($fieldset = CustomFieldset::find($id)) { return (new CustomFieldsetsTransformer)->transformCustomFieldset($fieldset); } @@ -68,7 +69,7 @@ class CustomFieldsetsController extends Controller */ public function update(Request $request, $id) { - $this->authorize('update', CustomFieldset::class); + $this->authorize('update', CustomField::class); $fieldset = CustomFieldset::findOrFail($id); $fieldset->fill($request->all()); @@ -89,11 +90,23 @@ class CustomFieldsetsController extends Controller */ public function store(Request $request) { - $this->authorize('create', CustomFieldset::class); + $this->authorize('create', CustomField::class); $fieldset = new CustomFieldset; $fieldset->fill($request->all()); if ($fieldset->save()) { + // Sync fieldset with auto_add_to_fieldsets + $fields = CustomField::select('id')->where('auto_add_to_fieldsets', '=', '1')->get(); + + if ($fields->count() > 0) { + + foreach ($fields as $field) { + $field_ids[] = $field->id; + } + + $fieldset->fields()->sync($field_ids); + } + return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.create.success'))); } @@ -109,7 +122,7 @@ class CustomFieldsetsController extends Controller */ public function destroy($id) { - $this->authorize('delete', CustomFieldset::class); + $this->authorize('delete', CustomField::class); $fieldset = CustomFieldset::findOrFail($id); $modelsCount = $fieldset->models->count(); @@ -136,7 +149,7 @@ class CustomFieldsetsController extends Controller */ public function fields($id) { - $this->authorize('view', CustomFieldset::class); + $this->authorize('view', CustomField::class); $set = CustomFieldset::findOrFail($id); $fields = $set->fields; @@ -153,7 +166,7 @@ class CustomFieldsetsController extends Controller */ public function fieldsWithDefaultValues($fieldsetId, $modelId) { - $this->authorize('view', CustomFieldset::class); + $this->authorize('view', CustomField::class); $set = CustomFieldset::findOrFail($fieldsetId); diff --git a/app/Http/Controllers/Api/DepartmentsController.php b/app/Http/Controllers/Api/DepartmentsController.php index 09e3677360..ef988af597 100644 --- a/app/Http/Controllers/Api/DepartmentsController.php +++ b/app/Http/Controllers/Api/DepartmentsController.php @@ -30,6 +30,8 @@ class DepartmentsController extends Controller $departments = Company::scopeCompanyables(Department::select( 'departments.id', 'departments.name', + 'departments.phone', + 'departments.fax', 'departments.location_id', 'departments.company_id', 'departments.manager_id', @@ -58,12 +60,9 @@ class DepartmentsController extends Controller $departments->where('location_id', '=', $request->input('location_id')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($departments) && ($request->get('offset') > $departments->count())) ? $departments->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $departments->count()) ? $departments->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; diff --git a/app/Http/Controllers/Api/DepreciationsController.php b/app/Http/Controllers/Api/DepreciationsController.php index 2dd6b9d8e5..3d86c1b096 100644 --- a/app/Http/Controllers/Api/DepreciationsController.php +++ b/app/Http/Controllers/Api/DepreciationsController.php @@ -28,12 +28,9 @@ class DepreciationsController extends Controller $depreciations = $depreciations->TextSearch($request->input('search')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($depreciations) && ($request->get('offset') > $depreciations->count())) ? $depreciations->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $depreciations->count()) ? $depreciations->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; diff --git a/app/Http/Controllers/Api/GroupsController.php b/app/Http/Controllers/Api/GroupsController.php index 2c37760629..7cc5d2d756 100644 --- a/app/Http/Controllers/Api/GroupsController.php +++ b/app/Http/Controllers/Api/GroupsController.php @@ -8,6 +8,7 @@ use App\Http\Transformers\GroupsTransformer; use App\Models\Group; use Illuminate\Http\Request; + class GroupsController extends Controller { /** @@ -19,6 +20,8 @@ class GroupsController extends Controller */ public function index(Request $request) { + $this->authorize('superadmin'); + $this->authorize('view', Group::class); $allowed_columns = ['id', 'name', 'created_at', 'users_count']; @@ -32,12 +35,9 @@ class GroupsController extends Controller $groups->where('name', '=', $request->input('name')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($groups) && ($request->get('offset') > $groups->count())) ? $groups->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $groups->count()) ? $groups->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; @@ -59,9 +59,11 @@ class GroupsController extends Controller */ public function store(Request $request) { - $this->authorize('create', Group::class); + $this->authorize('superadmin'); $group = new Group; - $group->fill($request->all()); + + $group->name = $request->input('name'); + $group->permissions = $request->input('permissions'); // Todo - some JSON validation stuff here if ($group->save()) { return response()->json(Helper::formatStandardApiResponse('success', $group, trans('admin/groups/message.create.success'))); @@ -80,7 +82,7 @@ class GroupsController extends Controller */ public function show($id) { - $this->authorize('view', Group::class); + $this->authorize('superadmin'); $group = Group::findOrFail($id); return (new GroupsTransformer)->transformGroup($group); @@ -97,9 +99,11 @@ class GroupsController extends Controller */ public function update(Request $request, $id) { - $this->authorize('update', Group::class); + $this->authorize('superadmin'); $group = Group::findOrFail($id); - $group->fill($request->all()); + + $group->name = $request->input('name'); + $group->permissions = $request->input('permissions'); // Todo - some JSON validation stuff here if ($group->save()) { return response()->json(Helper::formatStandardApiResponse('success', $group, trans('admin/groups/message.update.success'))); @@ -118,9 +122,8 @@ class GroupsController extends Controller */ public function destroy($id) { - $this->authorize('delete', Group::class); + $this->authorize('superadmin'); $group = Group::findOrFail($id); - $this->authorize('delete', $group); $group->delete(); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/groups/message.delete.success'))); diff --git a/app/Http/Controllers/Api/ImportController.php b/app/Http/Controllers/Api/ImportController.php index 9742cc1644..2d7e2f7d78 100644 --- a/app/Http/Controllers/Api/ImportController.php +++ b/app/Http/Controllers/Api/ImportController.php @@ -10,6 +10,7 @@ use App\Models\Asset; use App\Models\Company; use App\Models\Import; use Artisan; +use Illuminate\Database\Eloquent\JsonEncodingException; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Storage; @@ -35,7 +36,7 @@ class ImportController extends Controller * Process and store a CSV upload file. * * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response + * @return \Illuminate\Http\JsonResponse */ public function store() { @@ -56,7 +57,7 @@ class ImportController extends Controller 'text/tsv', ])) { $results['error'] = 'File type must be CSV. Uploaded file is '.$file->getMimeType(); - return response()->json(Helper::formatStandardApiResponse('error', null, $results['error']), 500); + return response()->json(Helper::formatStandardApiResponse('error', null, $results['error']), 422); } //TODO: is there a lighter way to do this? @@ -64,7 +65,19 @@ class ImportController extends Controller ini_set('auto_detect_line_endings', '1'); } $reader = Reader::createFromFileObject($file->openFile('r')); //file pointer leak? - $import->header_row = $reader->fetchOne(0); + + try { + $import->header_row = $reader->fetchOne(0); + } catch (JsonEncodingException $e) { + return response()->json( + Helper::formatStandardApiResponse( + 'error', + null, + trans('admin/hardware/message.import.header_row_has_malformed_characters') + ), + 422 + ); + } //duplicate headers check $duplicate_headers = []; @@ -82,11 +95,22 @@ class ImportController extends Controller } } if (count($duplicate_headers) > 0) { - return response()->json(Helper::formatStandardApiResponse('error', null, implode('; ', $duplicate_headers)), 500); //should this be '4xx'? + return response()->json(Helper::formatStandardApiResponse('error', null, implode('; ', $duplicate_headers)),422); } - // Grab the first row to display via ajax as the user picks fields - $import->first_row = $reader->fetchOne(1); + try { + // Grab the first row to display via ajax as the user picks fields + $import->first_row = $reader->fetchOne(1); + } catch (JsonEncodingException $e) { + return response()->json( + Helper::formatStandardApiResponse( + 'error', + null, + trans('admin/hardware/message.import.content_row_has_malformed_characters') + ), + 422 + ); + } $date = date('Y-m-d-his'); $fixed_filename = str_slug($file->getClientOriginalName()); @@ -102,18 +126,25 @@ class ImportController extends Controller } $file_name = date('Y-m-d-his').'-'.$fixed_filename; $import->file_path = $file_name; + $import->filesize = null; + + if (!file_exists($path.'/'.$file_name)) { + return response()->json(Helper::formatStandardApiResponse('error', null, trans('general.file_not_found')), 500); + } + $import->filesize = filesize($path.'/'.$file_name); + $import->save(); $results[] = $import; } $results = (new ImportsTransformer)->transformImports($results); - return [ + return response()->json([ 'files' => $results, - ]; + ]); } - return response()->json(Helper::formatStandardApiResponse('error', null, trans('general.feature_disabled')), 500); + return response()->json(Helper::formatStandardApiResponse('error', null, trans('general.feature_disabled')), 422); } /** @@ -129,7 +160,7 @@ class ImportController extends Controller // Run a backup immediately before processing if ($request->get('run-backup')) { \Log::debug('Backup manually requested via importer'); - Artisan::call('backup:run'); + Artisan::call('snipeit:backup', ['--filename' => 'pre-import-backup-'.date('Y-m-d-H:i:s')]); } else { \Log::debug('NO BACKUP requested via importer'); } @@ -162,6 +193,9 @@ class ImportController extends Controller case 'user': $redirectTo = 'users.index'; break; + case 'location': + $redirectTo = 'locations.index'; + break; } if ($errors) { //Failure diff --git a/app/Http/Controllers/Api/LicenseSeatsController.php b/app/Http/Controllers/Api/LicenseSeatsController.php index 759f11e956..a091741e85 100644 --- a/app/Http/Controllers/Api/LicenseSeatsController.php +++ b/app/Http/Controllers/Api/LicenseSeatsController.php @@ -39,8 +39,15 @@ class LicenseSeatsController extends Controller } $total = $seats->count(); - $offset = (($seats) && (request('offset') >= $total)) ? 0 : request('offset', 0); - $limit = request('limit', 50); + + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $seats->count()) ? $seats->count() : abs($request->input('offset')); + + if ($offset >= $total ){ + $offset = 0; + } + + $limit = app('api_limit_value'); $seats = $seats->skip($offset)->take($limit)->get(); diff --git a/app/Http/Controllers/Api/LicensesController.php b/app/Http/Controllers/Api/LicensesController.php index 6e67f07ee9..e021fc3d3e 100644 --- a/app/Http/Controllers/Api/LicensesController.php +++ b/app/Http/Controllers/Api/LicensesController.php @@ -26,8 +26,8 @@ class LicensesController extends Controller public function index(Request $request) { $this->authorize('view', License::class); - $licenses = Company::scopeCompanyables(License::with('company', 'manufacturer', 'supplier','category')->withCount('freeSeats as free_seats_count')); + $licenses = License::with('company', 'manufacturer', 'supplier','category')->withCount('freeSeats as free_seats_count'); if ($request->filled('company_id')) { $licenses->where('company_id', '=', $request->input('company_id')); @@ -94,12 +94,9 @@ class LicensesController extends Controller $licenses->onlyTrashed(); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($licenses) && ($request->get('offset') > $licenses->count())) ? $licenses->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $licenses->count()) ? $licenses->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; diff --git a/app/Http/Controllers/Api/LocationsController.php b/app/Http/Controllers/Api/LocationsController.php index 3a8df10587..87bc266217 100644 --- a/app/Http/Controllers/Api/LocationsController.php +++ b/app/Http/Controllers/Api/LocationsController.php @@ -37,6 +37,8 @@ class LocationsController extends Controller 'locations.city', 'locations.state', 'locations.zip', + 'locations.phone', + 'locations.fax', 'locations.country', 'locations.parent_id', 'locations.manager_id', @@ -78,14 +80,15 @@ class LocationsController extends Controller $locations->where('locations.country', '=', $request->input('country')); } - $offset = (($locations) && (request('offset') > $locations->count())) ? $locations->count() : request('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $locations->count()) ? $locations->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; + + switch ($request->input('sort')) { case 'parent': $locations->OrderParent($order); @@ -250,8 +253,12 @@ class LocationsController extends Controller */ public function selectlist(Request $request) { - - $this->authorize('view.selectlists'); + // 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. + // Otherwise, we do our normal check that they can view select lists. + $request->headers->get('referer') === route('profile') + ? $this->authorize('self.edit_location') + : $this->authorize('view.selectlists'); $locations = Location::select([ 'locations.id', diff --git a/app/Http/Controllers/Api/ManufacturersController.php b/app/Http/Controllers/Api/ManufacturersController.php index e88ef5fedf..9ff0a0c202 100644 --- a/app/Http/Controllers/Api/ManufacturersController.php +++ b/app/Http/Controllers/Api/ManufacturersController.php @@ -23,10 +23,10 @@ class ManufacturersController extends Controller public function index(Request $request) { $this->authorize('view', Manufacturer::class); - $allowed_columns = ['id', 'name', 'url', 'support_url', 'support_email', 'support_phone', 'created_at', 'updated_at', 'image', 'assets_count', 'consumables_count', 'components_count', 'licenses_count']; + $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']; $manufacturers = Manufacturer::select( - ['id', 'name', 'url', 'support_url', 'support_email', 'support_phone', 'created_at', 'updated_at', 'image', 'deleted_at'] + ['id', 'name', 'url', 'support_url', 'warranty_lookup_url', 'support_email', 'support_phone', 'created_at', 'updated_at', 'image', 'deleted_at'] )->withCount('assets as assets_count')->withCount('licenses as licenses_count')->withCount('consumables as consumables_count')->withCount('accessories as accessories_count'); if ($request->input('deleted') == 'true') { @@ -49,6 +49,10 @@ class ManufacturersController extends Controller $manufacturers->where('support_url', '=', $request->input('support_url')); } + if ($request->filled('warranty_lookup_url')) { + $manufacturers->where('warranty_lookup_url', '=', $request->input('warranty_lookup_url')); + } + if ($request->filled('support_phone')) { $manufacturers->where('support_phone', '=', $request->input('support_phone')); } @@ -57,12 +61,9 @@ class ManufacturersController extends Controller $manufacturers->where('support_email', '=', $request->input('support_email')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($manufacturers) && ($request->get('offset') > $manufacturers->count())) ? $manufacturers->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $manufacturers->count()) ? $manufacturers->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; diff --git a/app/Http/Controllers/Api/PredefinedKitsController.php b/app/Http/Controllers/Api/PredefinedKitsController.php index a2c0c1a902..85d05c422e 100644 --- a/app/Http/Controllers/Api/PredefinedKitsController.php +++ b/app/Http/Controllers/Api/PredefinedKitsController.php @@ -29,8 +29,10 @@ class PredefinedKitsController extends Controller $kits = $kits->TextSearch($request->input('search')); } - $offset = $request->input('offset', 0); - $limit = $request->input('limit', 50); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $kits->count()) ? $kits->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); + $order = $request->input('order') === 'desc' ? 'desc' : 'asc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'name'; $kits->orderBy($sort, $order); diff --git a/app/Http/Controllers/Api/ProfileController.php b/app/Http/Controllers/Api/ProfileController.php index 691efda981..4f5e3b1bdf 100644 --- a/app/Http/Controllers/Api/ProfileController.php +++ b/app/Http/Controllers/Api/ProfileController.php @@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; use Laravel\Passport\TokenRepository; use Illuminate\Contracts\Validation\Factory as ValidationFactory; -use Gate; +use Illuminate\Support\Facades\Gate; use DB; class ProfileController extends Controller diff --git a/app/Http/Controllers/Api/ReportsController.php b/app/Http/Controllers/Api/ReportsController.php index 7ac704e2f2..21294c5779 100644 --- a/app/Http/Controllers/Api/ReportsController.php +++ b/app/Http/Controllers/Api/ReportsController.php @@ -54,11 +54,15 @@ class ReportsController extends Controller 'note', ]; + + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $actionlogs->count()) ? $actionlogs->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); + $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; $order = ($request->input('order') == 'asc') ? 'asc' : 'desc'; - $offset = request('offset', 0); - $limit = request('limit', 50); $total = $actionlogs->count(); + $actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get(); return response()->json((new ActionlogsTransformer)->transformActionlogs($actionlogs, $total), 200, ['Content-Type' => 'application/json;charset=utf8'], JSON_UNESCAPED_UNICODE); diff --git a/app/Http/Controllers/Api/SettingsController.php b/app/Http/Controllers/Api/SettingsController.php index 62380b2212..a0438ef078 100644 --- a/app/Http/Controllers/Api/SettingsController.php +++ b/app/Http/Controllers/Api/SettingsController.php @@ -143,47 +143,6 @@ class SettingsController extends Controller } - public function slacktest(SlackSettingsRequest $request) - { - - $validator = Validator::make($request->all(), [ - 'slack_endpoint' => 'url|required_with:slack_channel|starts_with:https://hooks.slack.com/|nullable', - 'slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', - ]); - - if ($validator->fails()) { - return response()->json(['message' => 'Validation failed', 'errors' => $validator->errors()], 422); - } - - // If validation passes, continue to the curl request - $slack = new Client([ - 'base_url' => e($request->input('slack_endpoint')), - 'defaults' => [ - 'exceptions' => false, - ], - ]); - - $payload = json_encode( - [ - 'channel' => e($request->input('slack_channel')), - 'text' => trans('general.slack_test_msg'), - 'username' => e($request->input('slack_botname')), - 'icon_emoji' => ':heart:', - ]); - - try { - $slack->post($request->input('slack_endpoint'), ['body' => $payload]); - return response()->json(['message' => 'Success'], 200); - - } catch (\Exception $e) { - return response()->json(['message' => 'Please check the channel name and webhook endpoint URL ('.e($request->input('slack_endpoint')).'). Slack responded with: '.$e->getMessage()], 400); - } - - //} - return response()->json(['message' => 'Something went wrong :( '], 400); - } - - /** * Test the email configuration * @@ -312,7 +271,7 @@ class SettingsController extends Controller $headers = ['ContentType' => 'application/zip']; return Storage::download($path.'/'.$file, $file, $headers); } else { - return response()->json(Helper::formatStandardApiResponse('error', null, 'File not found')); + return response()->json(Helper::formatStandardApiResponse('error', null, trans('general.file_not_found'))); } } diff --git a/app/Http/Controllers/Api/StatuslabelsController.php b/app/Http/Controllers/Api/StatuslabelsController.php index c4058f79ca..30a0b699e9 100644 --- a/app/Http/Controllers/Api/StatuslabelsController.php +++ b/app/Http/Controllers/Api/StatuslabelsController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api; use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Transformers\AssetsTransformer; +use App\Http\Transformers\SelectlistTransformer; use App\Http\Transformers\StatuslabelsTransformer; use App\Models\Asset; use App\Models\Statuslabel; @@ -50,12 +51,9 @@ class StatuslabelsController extends Controller } } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($statuslabels) && ($request->get('offset') > $statuslabels->count())) ? $statuslabels->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $statuslabels->count()) ? $statuslabels->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; @@ -196,6 +194,7 @@ class StatuslabelsController extends Controller { $this->authorize('view', Statuslabel::class); $statuslabels = Statuslabel::withCount('assets')->get(); + $total = Array(); foreach ($statuslabels as $statuslabel) { @@ -293,4 +292,45 @@ class StatuslabelsController extends Controller return '0'; } + + /** + * Gets a paginated collection for the select2 menus + * + * @author [A. Gianotto] [] + * @since [v6.1.1] + * @see \App\Http\Transformers\SelectlistTransformer + */ + public function selectlist(Request $request) + { + + $this->authorize('view.selectlists'); + $statuslabels = Statuslabel::orderBy('default_label', 'desc')->orderBy('name', 'asc')->orderBy('deployable', 'desc'); + + if ($request->filled('search')) { + $statuslabels = $statuslabels->where('name', 'LIKE', '%'.$request->get('search').'%'); + } + + if ($request->filled('deployable')) { + $statuslabels = $statuslabels->where('deployable', '=', '1'); + } + + if ($request->filled('pending')) { + $statuslabels = $statuslabels->where('pending', '=', '1'); + } + + if ($request->filled('archived')) { + $statuslabels = $statuslabels->where('archived', '=', '1'); + } + + $statuslabels = $statuslabels->orderBy('name', 'ASC')->paginate(50); + + // Loop through and set some custom properties for the transformer to use. + // This lets us have more flexibility in special cases like assets, where + // they may not have a ->name value but we want to display something anyway + foreach ($statuslabels as $statuslabel) { + $statuslabels->use_text = $statuslabel->name; + } + + return (new SelectlistTransformer)->transformSelectlist($statuslabels); + } } diff --git a/app/Http/Controllers/Api/SuppliersController.php b/app/Http/Controllers/Api/SuppliersController.php index f73f150499..a26c33b1f8 100644 --- a/app/Http/Controllers/Api/SuppliersController.php +++ b/app/Http/Controllers/Api/SuppliersController.php @@ -23,11 +23,30 @@ class SuppliersController extends Controller public function index(Request $request) { $this->authorize('view', Supplier::class); - $allowed_columns = ['id', 'name', 'address', 'phone', 'contact', 'fax', 'email', 'image', 'assets_count', 'licenses_count', 'accessories_count', 'url']; + $allowed_columns = [' + id', + 'name', + 'address', + 'phone', + 'contact', + 'fax', + 'email', + 'image', + 'assets_count', + 'licenses_count', + 'accessories_count', + 'components_count', + 'consumables_count', + 'url', + ]; $suppliers = Supplier::select( - ['id', 'name', 'address', 'address2', 'city', 'state', 'country', 'fax', 'phone', 'email', 'contact', 'created_at', 'updated_at', 'deleted_at', 'image', 'notes'] - )->withCount('assets as assets_count')->withCount('licenses as licenses_count')->withCount('accessories as accessories_count'); + ['id', 'name', 'address', 'address2', 'city', 'state', 'country', 'fax', 'phone', 'email', 'contact', 'created_at', 'updated_at', 'deleted_at', 'image', 'notes']) + ->withCount('assets as assets_count') + ->withCount('licenses as licenses_count') + ->withCount('accessories as accessories_count') + ->withCount('components as components_count') + ->withCount('consumables as consumables_count'); if ($request->filled('search')) { @@ -74,12 +93,9 @@ class SuppliersController extends Controller $suppliers->where('notes', '=', $request->input('notes')); } - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($suppliers) && ($request->get('offset') > $suppliers->count())) ? $suppliers->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $suppliers->count()) ? $suppliers->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index cca829c23f..7b22f3af4b 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -20,6 +20,7 @@ use Auth; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\Validator; class UsersController extends Controller { @@ -69,18 +70,14 @@ class UsersController extends Controller 'users.ldap_import', 'users.start_date', 'users.end_date', + 'users.vip', + 'users.autoassign_licenses', ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy',) ->withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count'); $users = Company::scopeCompanyables($users); - if (($request->filled('deleted')) && ($request->input('deleted') == 'true')) { - $users = $users->onlyTrashed(); - } elseif (($request->filled('all')) && ($request->input('all') == 'true')) { - $users = $users->withTrashed(); - } - if ($request->filled('activated')) { $users = $users->where('users.activated', '=', $request->input('activated')); } @@ -149,6 +146,10 @@ class UsersController extends Controller $users = $users->where('remote', '=', $request->input('remote')); } + if ($request->filled('vip')) { + $users = $users->where('vip', '=', $request->input('vip')); + } + if ($request->filled('two_factor_enrolled')) { $users = $users->where('two_factor_enrolled', '=', $request->input('two_factor_enrolled')); } @@ -181,19 +182,19 @@ class UsersController extends Controller $users->has('accessories', '=', $request->input('accessories_count')); } + if ($request->filled('autoassign_licenses')) { + $users->where('autoassign_licenses', '=', $request->input('autoassign_licenses')); + } + if ($request->filled('search')) { $users = $users->TextSearch($request->input('search')); } $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; - $offset = (($users) && (request('offset') > $users->count())) ? 0 : request('offset', 0); - // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which - // case we override with the actual count, so we should return 0 items. - $offset = (($users) && ($request->get('offset') > $users->count())) ? $users->count() : $request->get('offset', 0); - - // Check to make sure the limit is not higher than the max allowed - ((config('app.max_results') >= $request->input('limit')) && ($request->filled('limit'))) ? $limit = $request->input('limit') : $limit = config('app.max_results'); + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $users->count()) ? $users->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); switch ($request->input('sort')) { @@ -212,6 +213,14 @@ class UsersController extends Controller case 'company': $users = $users->OrderCompany($order); break; + case 'first_name': + $users->orderBy('first_name', $order); + $users->orderBy('last_name', $order); + break; + case 'last_name': + $users->orderBy('last_name', $order); + $users->orderBy('first_name', $order); + break; default: $allowed_columns = [ @@ -246,8 +255,10 @@ class UsersController extends Controller 'two_factor_optin', 'two_factor_enrolled', 'remote', + 'vip', 'start_date', 'end_date', + 'autoassign_licenses', ]; $sort = in_array($request->get('sort'), $allowed_columns) ? $request->get('sort') : 'first_name'; @@ -255,6 +266,12 @@ class UsersController extends Controller break; } + if (($request->filled('deleted')) && ($request->input('deleted') == 'true')) { + $users = $users->onlyTrashed(); + } elseif (($request->filled('all')) && ($request->input('all') == 'true')) { + $users = $users->withTrashed(); + } + $total = $users->count(); $users = $users->skip($offset)->take($limit)->get(); @@ -286,9 +303,11 @@ class UsersController extends Controller $users = Company::scopeCompanyables($users); if ($request->filled('search')) { - $users = $users->SimpleNameSearch($request->get('search')) - ->orWhere('username', 'LIKE', '%'.$request->get('search').'%') - ->orWhere('employee_num', 'LIKE', '%'.$request->get('search').'%'); + $users = $users->where(function ($query) use ($request) { + $query->SimpleNameSearch($request->get('search')) + ->orWhere('username', 'LIKE', '%'.$request->get('search').'%') + ->orWhere('employee_num', 'LIKE', '%'.$request->get('search').'%'); + }); } $users = $users->orderBy('last_name', 'asc')->orderBy('first_name', 'asc'); @@ -343,7 +362,7 @@ class UsersController extends Controller $user->permissions = $permissions_array; } - $tmp_pass = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 20); + $tmp_pass = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 40); $user->password = bcrypt($request->get('password', $tmp_pass)); app('App\Http\Requests\ImageUploadRequest')->handleImages($user, 600, 'image', 'avatars', 'avatar'); @@ -449,6 +468,13 @@ class UsersController extends Controller // Check if the request has groups passed and has a value if ($request->filled('groups')) { + $validator = Validator::make($request->all(), [ + 'groups.*' => 'integer|exists:permission_groups,id', + ]); + + if ($validator->fails()){ + return response()->json(Helper::formatStandardApiResponse('error', null, $user->getErrors())); + } $user->groups()->sync($request->input('groups')); // The groups field has been passed but it is null, so we should blank it out } elseif ($request->has('groups')) { @@ -542,9 +568,10 @@ class UsersController extends Controller if (empty($user->email)) { return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.inventorynotification.error'))); } + + $user->notify((new CurrentInventory($user))); - return response()->Helper::formatStandardApiResponse('success', null, trans('admin/users/message.inventorynotification.success')); - + return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.inventorynotification.success'))); } /** diff --git a/app/Http/Controllers/AssetMaintenancesController.php b/app/Http/Controllers/AssetMaintenancesController.php index 5f3221d051..dc6bc84347 100644 --- a/app/Http/Controllers/AssetMaintenancesController.php +++ b/app/Http/Controllers/AssetMaintenancesController.php @@ -101,7 +101,7 @@ class AssetMaintenancesController extends Controller $assetMaintenance = new AssetMaintenance(); $assetMaintenance->supplier_id = $request->input('supplier_id'); $assetMaintenance->is_warranty = $request->input('is_warranty'); - $assetMaintenance->cost = Helper::ParseCurrency($request->input('cost')); + $assetMaintenance->cost = $request->input('cost'); $assetMaintenance->notes = $request->input('notes'); $asset = Asset::find($request->input('asset_id')); @@ -211,7 +211,7 @@ class AssetMaintenancesController extends Controller $assetMaintenance->supplier_id = $request->input('supplier_id'); $assetMaintenance->is_warranty = $request->input('is_warranty'); - $assetMaintenance->cost = Helper::ParseCurrency($request->input('cost')); + $assetMaintenance->cost = $request->input('cost'); $assetMaintenance->notes = $request->input('notes'); $asset = Asset::find(request('asset_id')); diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 54d2310e8c..dbefb2e7b7 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -82,8 +82,8 @@ class AssetModelsController extends Controller $model->user_id = Auth::id(); $model->requestable = Request::has('requestable'); - if ($request->input('custom_fieldset') != '') { - $model->fieldset_id = e($request->input('custom_fieldset')); + if ($request->input('fieldset_id') != '') { + $model->fieldset_id = e($request->input('fieldset_id')); } $model = $request->handleImages($model); @@ -160,10 +160,10 @@ class AssetModelsController extends Controller $this->removeCustomFieldsDefaultValues($model); - if ($request->input('custom_fieldset') == '') { + if ($request->input('fieldset_id') == '') { $model->fieldset_id = null; } else { - $model->fieldset_id = $request->input('custom_fieldset'); + $model->fieldset_id = $request->input('fieldset_id'); if ($this->shouldAddDefaultValues($request->input())) { if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){ @@ -444,7 +444,7 @@ class AssetModelsController extends Controller { return ! empty($input['add_default_values']) && ! empty($input['default_values']) - && ! empty($input['custom_fieldset']); + && ! empty($input['fieldset_id']); } /** diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 657b02171b..fd5cee30ea 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -94,14 +94,18 @@ class AssetCheckinController extends Controller \Log::debug('Manually override the location IDs'); \Log::debug('Original Location ID: '.$asset->location_id); $asset->location_id = ''; - \Log::debug('New RTD Location ID: '.$asset->location_id); + \Log::debug('New Location ID: '.$asset->location_id); } $asset->location_id = $asset->rtd_location_id; if ($request->filled('location_id')) { \Log::debug('NEW Location ID: '.$request->get('location_id')); - $asset->location_id = e($request->get('location_id')); + $asset->location_id = $request->get('location_id'); + + if ($request->get('update_default_location') == 0){ + $asset->rtd_location_id = $request->get('location_id'); + } } $checkin_at = date('Y-m-d H:i:s'); diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index 38f7460986..e6326da6b1 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -27,7 +27,7 @@ class AssetCheckoutController extends Controller public function create($assetId) { // Check if the asset exists - if (is_null($asset = Asset::find(e($assetId)))) { + if (is_null($asset = Asset::with('company')->find(e($assetId)))) { 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 dddaa51ba5..e699779a34 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -12,12 +12,13 @@ use App\Models\CheckoutRequest; use App\Models\Company; use App\Models\Location; use App\Models\Setting; +use App\Models\Statuslabel; use App\Models\User; use App\View\Label; use Auth; use Carbon\Carbon; use DB; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Storage; @@ -141,8 +142,9 @@ class AssetsController extends Controller $asset->depreciate = '0'; $asset->status_id = request('status_id'); $asset->warranty_months = request('warranty_months', null); - $asset->purchase_cost = Helper::ParseCurrency($request->get('purchase_cost')); + $asset->purchase_cost = request('purchase_cost'); $asset->purchase_date = request('purchase_date', null); + $asset->asset_eol_date = request('asset_eol_date', $asset->present()->eol_date()); $asset->assigned_to = request('assigned_to', null); $asset->supplier_id = request('supplier_id', null); $asset->requestable = request('requestable', 0); @@ -312,7 +314,9 @@ class AssetsController extends Controller $asset->status_id = $request->input('status_id', null); $asset->warranty_months = $request->input('warranty_months', null); - $asset->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost', null)); + $asset->purchase_cost = $request->input('purchase_cost', null); + $asset->asset_eol_date = request('asset_eol_date', null); + $asset->purchase_date = $request->input('purchase_date', null); $asset->supplier_id = $request->input('supplier_id', null); $asset->expected_checkin = $request->input('expected_checkin', null); @@ -322,6 +326,12 @@ class AssetsController extends Controller $asset->rtd_location_id = $request->input('rtd_location_id', null); $asset->byod = $request->input('byod', 0); + $status = Statuslabel::find($asset->status_id); + + if($status->archived){ + $asset->assigned_to = null; + } + if ($asset->assigned_to == '') { $asset->location_id = $request->input('rtd_location_id', null); } @@ -628,7 +638,11 @@ class AssetsController extends Controller $csv->setHeaderOffset(0); $header = $csv->getHeader(); $isCheckinHeaderExplicit = in_array('checkin date', (array_map('strtolower', $header))); - $results = $csv->getRecords(); + try { + $results = $csv->getRecords(); + } catch (\Exception $e) { + return back()->with('error', trans('general.error_in_import_file', ['error' => $e->getMessage()])); + } $item = []; $status = []; $status['error'] = []; @@ -764,7 +778,7 @@ class AssetsController extends Controller } /** - * Retore a deleted asset. + * Restore a deleted asset. * * @author [A. Gianotto] [] * @param int $assetId diff --git a/app/Http/Controllers/Assets/BulkAssetsController.php b/app/Http/Controllers/Assets/BulkAssetsController.php index b9a3a39cf5..8419098936 100644 --- a/app/Http/Controllers/Assets/BulkAssetsController.php +++ b/app/Http/Controllers/Assets/BulkAssetsController.php @@ -30,7 +30,7 @@ class BulkAssetsController extends Controller */ public function edit(Request $request) { - $this->authorize('update', Asset::class); + $this->authorize('view', Asset::class); if (! $request->filled('ids')) { return redirect()->back()->with('error', trans('admin/hardware/message.update.no_assets_selected')); @@ -45,19 +45,33 @@ class BulkAssetsController extends Controller if ($request->filled('bulk_actions')) { switch ($request->input('bulk_actions')) { case 'labels': + $this->authorize('view', Asset::class); return (new Label) ->with('assets', Asset::find($asset_ids)) ->with('settings', Setting::getSettings()) ->with('bulkedit', true) ->with('count', 0); + case 'delete': + $this->authorize('delete', Asset::class); $assets = Asset::with('assignedTo', 'location')->find($asset_ids); $assets->each(function ($asset) { $this->authorize('delete', $asset); }); return view('hardware/bulk-delete')->with('assets', $assets); + + case 'restore': + $this->authorize('update', Asset::class); + $assets = Asset::withTrashed()->find($asset_ids); + $assets->each(function ($asset) { + $this->authorize('delete', $asset); + }); + + return view('hardware/bulk-restore')->with('assets', $assets); + case 'edit': + $this->authorize('update', Asset::class); return view('hardware/bulk') ->with('assets', $asset_ids) ->with('statuslabel_list', Helper::statusLabelList()); @@ -103,8 +117,11 @@ class BulkAssetsController extends Controller || ($request->filled('company_id')) || ($request->filled('status_id')) || ($request->filled('model_id')) + || ($request->filled('next_audit_date')) || ($request->filled('null_purchase_date')) || ($request->filled('null_expected_checkin_date')) + || ($request->filled('null_next_audit_date')) + ) { foreach ($assets as $assetId) { @@ -117,7 +134,8 @@ class BulkAssetsController extends Controller ->conditionallyAddItem('requestable') ->conditionallyAddItem('status_id') ->conditionallyAddItem('supplier_id') - ->conditionallyAddItem('warranty_months'); + ->conditionallyAddItem('warranty_months') + ->conditionallyAddItem('next_audit_date'); if ($request->input('null_purchase_date')=='1') { $this->update_array['purchase_date'] = null; @@ -127,8 +145,12 @@ class BulkAssetsController extends Controller $this->update_array['expected_checkin'] = null; } + if ($request->input('null_next_audit_date')=='1') { + $this->update_array['next_audit_date'] = null; + } + if ($request->filled('purchase_cost')) { - $this->update_array['purchase_cost'] = Helper::ParseCurrency($request->input('purchase_cost')); + $this->update_array['purchase_cost'] = $request->input('purchase_cost'); } if ($request->filled('company_id')) { @@ -289,7 +311,8 @@ class BulkAssetsController extends Controller foreach ($asset_ids as $asset_id) { $asset = Asset::findOrFail($asset_id); $this->authorize('checkout', $asset); - $error = $asset->checkOut($target, $admin, $checkout_at, $expected_checkin, e($request->get('note')), null); + + $error = $asset->checkOut($target, $admin, $checkout_at, $expected_checkin, e($request->get('note')), $asset->name, null); if ($target->location_id != '') { $asset->location_id = $target->location_id; @@ -312,5 +335,19 @@ class BulkAssetsController extends Controller } catch (ModelNotFoundException $e) { return redirect()->route('hardware.bulkcheckout.show')->with('error', $e->getErrors()); } + + } + public function restore(Request $request) { + $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')); + } else { + foreach ($assetIds as $key => $assetId) { + $asset = Asset::withTrashed()->find($assetId); + $asset->restore(); + } + return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.restore.success')); + } } } diff --git a/app/Http/Controllers/BulkAssetModelsController.php b/app/Http/Controllers/BulkAssetModelsController.php index 43381da783..a312ba1f6e 100644 --- a/app/Http/Controllers/BulkAssetModelsController.php +++ b/app/Http/Controllers/BulkAssetModelsController.php @@ -92,7 +92,7 @@ class BulkAssetModelsController extends Controller AssetModel::whereIn('id', $models_raw_array)->update($update_array); return redirect()->route('models.index') - ->with('success', trans('admin/models/message.bulkedit.success')); + ->with('success', trans_choice('admin/models/message.bulkedit.success', count($models_raw_array), ['model_count' => count($models_raw_array)])); } return redirect()->route('models.index') diff --git a/app/Http/Controllers/CompaniesController.php b/app/Http/Controllers/CompaniesController.php index 396ec5ef68..b02e3194f9 100644 --- a/app/Http/Controllers/CompaniesController.php +++ b/app/Http/Controllers/CompaniesController.php @@ -60,6 +60,8 @@ final class CompaniesController extends Controller $company = new Company; $company->name = $request->input('name'); + $company->phone = $request->input('phone'); + $company->fax = $request->input('fax'); $company = $request->handleImages($company); @@ -111,6 +113,8 @@ final class CompaniesController extends Controller $this->authorize('update', $company); $company->name = $request->input('name'); + $company->phone = $request->input('phone'); + $company->fax = $request->input('fax'); $company = $request->handleImages($company); diff --git a/app/Http/Controllers/Components/ComponentCheckoutController.php b/app/Http/Controllers/Components/ComponentCheckoutController.php index b2be07c661..412d9dde62 100644 --- a/app/Http/Controllers/Components/ComponentCheckoutController.php +++ b/app/Http/Controllers/Components/ComponentCheckoutController.php @@ -33,6 +33,11 @@ class ComponentCheckoutController extends Controller } $this->authorize('checkout', $component); + // Make sure there is at least one available to checkout + if ($component->numRemaining() <= 0){ + return redirect()->route('components.index')->with('error', trans('admin/components/message.checkout.unavailable')); + } + return view('components/checkout', compact('component')); } @@ -50,7 +55,7 @@ class ComponentCheckoutController extends Controller public function store(Request $request, $componentId) { // Check if the component exists - if (is_null($component = Component::find($componentId))) { + if (!$component = Component::find($componentId)) { // Redirect to the component management page with error return redirect()->route('components.index')->with('error', trans('admin/components/message.not_found')); } @@ -58,9 +63,15 @@ class ComponentCheckoutController extends Controller $this->authorize('checkout', $component); $max_to_checkout = $component->numRemaining(); + + // Make sure there are at least the requested number of components available to checkout + if ($max_to_checkout < $request->get('assigned_qty')) { + return redirect()->back()->withInput()->with('error', trans('admin/components/message.checkout.unavailable', ['remaining' => $max_to_checkout, 'requested' => $request->get('assigned_qty')])); + } + $validator = Validator::make($request->all(), [ - 'asset_id' => 'required', - 'assigned_qty' => "required|numeric|between:1,$max_to_checkout", + 'asset_id' => 'required|exists:assets,id', + 'assigned_qty' => "required|numeric|min:1|digits_between:1,$max_to_checkout", ]); if ($validator->fails()) { @@ -69,24 +80,17 @@ class ComponentCheckoutController extends Controller ->withInput(); } - $admin_user = Auth::user(); - $asset_id = e($request->input('asset_id')); - // Check if the user exists - if (is_null($asset = Asset::find($asset_id))) { - // Redirect to the component management page with error - return redirect()->route('components.index')->with('error', trans('admin/components/message.asset_does_not_exist')); - } + $asset = Asset::find($request->input('asset_id')); // Update the component data - $component->asset_id = $asset_id; - + $component->asset_id = $request->input('asset_id'); $component->assets()->attach($component->id, [ 'component_id' => $component->id, - 'user_id' => $admin_user->id, + 'user_id' => Auth::user(), 'created_at' => date('Y-m-d H:i:s'), 'assigned_qty' => $request->input('assigned_qty'), - 'asset_id' => $asset_id, + 'asset_id' => $request->input('asset_id'), 'note' => $request->input('note'), ]); diff --git a/app/Http/Controllers/Components/ComponentsController.php b/app/Http/Controllers/Components/ComponentsController.php index f943a71a2e..34c9aed16b 100644 --- a/app/Http/Controllers/Components/ComponentsController.php +++ b/app/Http/Controllers/Components/ComponentsController.php @@ -71,13 +71,14 @@ class ComponentsController extends Controller $component = new Component(); $component->name = $request->input('name'); $component->category_id = $request->input('category_id'); + $component->supplier_id = $request->input('supplier_id'); $component->location_id = $request->input('location_id'); $component->company_id = Company::getIdForCurrentUser($request->input('company_id')); $component->order_number = $request->input('order_number', null); $component->min_amt = $request->input('min_amt', null); $component->serial = $request->input('serial', null); $component->purchase_date = $request->input('purchase_date', null); - $component->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost', null)); + $component->purchase_cost = $request->input('purchase_cost', null); $component->qty = $request->input('qty'); $component->user_id = Auth::id(); $component->notes = $request->input('notes'); @@ -145,13 +146,14 @@ class ComponentsController extends Controller // Update the component data $component->name = $request->input('name'); $component->category_id = $request->input('category_id'); + $component->supplier_id = $request->input('supplier_id'); $component->location_id = $request->input('location_id'); $component->company_id = Company::getIdForCurrentUser($request->input('company_id')); $component->order_number = $request->input('order_number'); $component->min_amt = $request->input('min_amt'); $component->serial = $request->input('serial'); $component->purchase_date = $request->input('purchase_date'); - $component->purchase_cost = Helper::ParseCurrency(request('purchase_cost')); + $component->purchase_cost = request('purchase_cost'); $component->qty = $request->input('qty'); $component->notes = $request->input('notes'); diff --git a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php index f7f2b6e54d..6585624d82 100644 --- a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php +++ b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php @@ -24,9 +24,16 @@ class ConsumableCheckoutController extends Controller */ public function create($consumableId) { - if (is_null($consumable = Consumable::find($consumableId))) { + + if (is_null($consumable = Consumable::with('users')->find($consumableId))) { return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.does_not_exist')); } + + // Make sure there is at least one available to checkout + if ($consumable->numRemaining() <= 0){ + return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable')); + } + $this->authorize('checkout', $consumable); return view('consumables/checkout', compact('consumable')); @@ -44,12 +51,18 @@ class ConsumableCheckoutController extends Controller */ public function store(Request $request, $consumableId) { - if (is_null($consumable = Consumable::find($consumableId))) { + if (is_null($consumable = Consumable::with('users')->find($consumableId))) { return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.not_found')); } $this->authorize('checkout', $consumable); + // Make sure there is at least one available to checkout + if ($consumable->numRemaining() <= 0) { + return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable')); + } + + $admin_user = Auth::user(); $assigned_to = e($request->input('assigned_to')); diff --git a/app/Http/Controllers/Consumables/ConsumablesController.php b/app/Http/Controllers/Consumables/ConsumablesController.php index f068e9868d..b33e6e07a9 100644 --- a/app/Http/Controllers/Consumables/ConsumablesController.php +++ b/app/Http/Controllers/Consumables/ConsumablesController.php @@ -68,6 +68,7 @@ class ConsumablesController extends Controller $consumable = new Consumable(); $consumable->name = $request->input('name'); $consumable->category_id = $request->input('category_id'); + $consumable->supplier_id = $request->input('supplier_id'); $consumable->location_id = $request->input('location_id'); $consumable->company_id = Company::getIdForCurrentUser($request->input('company_id')); $consumable->order_number = $request->input('order_number'); @@ -76,7 +77,7 @@ class ConsumablesController extends Controller $consumable->model_number = $request->input('model_number'); $consumable->item_no = $request->input('item_no'); $consumable->purchase_date = $request->input('purchase_date'); - $consumable->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost')); + $consumable->purchase_cost = $request->input('purchase_cost'); $consumable->qty = $request->input('qty'); $consumable->user_id = Auth::id(); $consumable->notes = $request->input('notes'); @@ -144,6 +145,7 @@ class ConsumablesController extends Controller $consumable->name = $request->input('name'); $consumable->category_id = $request->input('category_id'); + $consumable->supplier_id = $request->input('supplier_id'); $consumable->location_id = $request->input('location_id'); $consumable->company_id = Company::getIdForCurrentUser($request->input('company_id')); $consumable->order_number = $request->input('order_number'); @@ -152,7 +154,7 @@ class ConsumablesController extends Controller $consumable->model_number = $request->input('model_number'); $consumable->item_no = $request->input('item_no'); $consumable->purchase_date = $request->input('purchase_date'); - $consumable->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost')); + $consumable->purchase_cost = $request->input('purchase_cost'); $consumable->qty = Helper::ParseFloat($request->input('qty')); $consumable->notes = $request->input('notes'); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 96d761ef5b..c0e9454d62 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -9,11 +9,11 @@ * * **THIS DOCUMENTATION DOES NOT COVER INSTALLATION.** If you're here and you're not a * developer, you're probably in the wrong place. Please see the - * [Installation documentation](http://docs.snipeitapp.com) for + * [Installation documentation](https://snipe-it.readme.io) for * information on how to install Snipe-IT. * * To learn how to set up a development environment and get started developing for Snipe-IT, - * please see the [contributing documentation](http://docs.snipeitapp.com/contributing.html). + * please see the [contributing documentation](https://snipe-it.readme.io/docs/contributing-overview). * * Only the Snipe-IT specific controllers, models, helpers, service providers, * etc have been included in this documentation (excluding vendors, Laravel core, etc) diff --git a/app/Http/Controllers/CustomFieldsController.php b/app/Http/Controllers/CustomFieldsController.php index 4eb31450ee..c9579ae7ef 100644 --- a/app/Http/Controllers/CustomFieldsController.php +++ b/app/Http/Controllers/CustomFieldsController.php @@ -7,6 +7,7 @@ use App\Http\Requests\CustomFieldRequest; use App\Models\CustomField; use App\Models\CustomFieldset; use Illuminate\Support\Facades\Auth; +use Illuminate\Http\Request; use Redirect; /** @@ -45,7 +46,7 @@ class CustomFieldsController extends Controller * @see CustomFieldsController::storeField() * @author [A. Gianotto] [] * @since [v5.1.5] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function show() @@ -63,14 +64,17 @@ class CustomFieldsController extends Controller * @return \Illuminate\Support\Facades\View * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function create() + public function create(Request $request) { $this->authorize('create', CustomField::class); + $fieldsets = CustomFieldset::get(); return view('custom_fields.fields.edit', [ 'predefinedFormats' => Helper::predefined_formats(), - 'customFormat' => '', - ])->with('field', new CustomField()); + 'customFormat' => '', + 'fieldsets' => $fieldsets, + 'field' => new CustomField(), + ]); } /** @@ -79,7 +83,7 @@ class CustomFieldsController extends Controller * @see CustomFieldsController::createField() * @author [Brady Wetherington] [] * @since [v1.8] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function store(CustomFieldRequest $request) @@ -104,21 +108,33 @@ class CustomFieldsController extends Controller "show_in_email" => $show_in_email, "is_unique" => $request->get("is_unique", 0), "display_in_user_view" => $display_in_user_view, + "auto_add_to_fieldsets" => $request->get("auto_add_to_fieldsets", 0), + "show_in_listview" => $request->get("show_in_listview", 0), "user_id" => Auth::id() ]); if ($request->filled('custom_format')) { - $field->format = e($request->get('custom_format')); + $field->format = $request->get('custom_format'); } else { - $field->format = e($request->get('format')); + $field->format = $request->get('format'); } if ($field->save()) { + + // Sync fields with fieldsets + $fieldset_array = $request->input('associate_fieldsets'); + if ($request->has('associate_fieldsets') && (is_array($fieldset_array))) { + $field->fieldset()->sync(array_keys($fieldset_array)); + } else { + $field->fieldset()->sync([]); + } + + return redirect()->route('fields.index')->with('success', trans('admin/custom_fields/message.field.create.success')); } - return redirect()->back()->withInput() + return redirect()->back()->with('selected_fieldsets', $request->input('associate_fieldsets'))->withInput() ->with('error', trans('admin/custom_fields/message.field.create.error')); } @@ -128,7 +144,7 @@ class CustomFieldsController extends Controller * * @author [A. Gianotto] [] * @since [v3.0] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function deleteFieldFromFieldset($field_id, $fieldset_id) @@ -147,8 +163,7 @@ class CustomFieldsController extends Controller ->with('success', trans('admin/custom_fields/message.field.delete.success')); } else { return redirect()->back()->withErrors(['message' => "Field is in use and cannot be deleted."]); - } - + } } return redirect()->back()->withErrors(['message' => "Error deleting field from fieldset"]); @@ -161,7 +176,7 @@ class CustomFieldsController extends Controller * * @author [Brady Wetherington] [] * @since [v1.8] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function destroy($field_id) @@ -190,12 +205,12 @@ class CustomFieldsController extends Controller * @return \Illuminate\Support\Facades\View * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function edit($id) + public function edit(Request $request, $id) { if ($field = CustomField::find($id)) { $this->authorize('update', $field); - + $fieldsets = CustomFieldset::get(); $customFormat = ''; if ((stripos($field->format, 'regex') === 0) && ($field->format !== CustomField::PREDEFINED_FORMATS['MAC'])) { $customFormat = $field->format; @@ -204,6 +219,7 @@ class CustomFieldsController extends Controller return view('custom_fields.fields.edit', [ 'field' => $field, 'customFormat' => $customFormat, + 'fieldsets' => $fieldsets, 'predefinedFormats' => Helper::predefined_formats(), ]); } @@ -222,7 +238,7 @@ class CustomFieldsController extends Controller * @author [A. Gianotto] [] * @param int $id * @since [v4.0] - * @return Redirect + * @return \Illuminate\Http\RedirectResponse * @throws \Illuminate\Auth\Access\AuthorizationException */ public function update(CustomFieldRequest $request, $id) @@ -249,6 +265,8 @@ class CustomFieldsController extends Controller $field->show_in_email = $show_in_email; $field->is_unique = $request->get("is_unique", 0); $field->display_in_user_view = $display_in_user_view; + $field->auto_add_to_fieldsets = $request->get("auto_add_to_fieldsets", 0); + $field->show_in_listview = $request->get("show_in_listview", 0); if ($request->get('format') == 'CUSTOM REGEX') { $field->format = e($request->get('custom_format')); @@ -256,11 +274,21 @@ class CustomFieldsController extends Controller $field->format = e($request->get('format')); } - if($field->element == 'checkbox' || $field->element == 'radio'){ + if ($field->element == 'checkbox' || $field->element == 'radio'){ $field->format = 'ANY'; } if ($field->save()) { + + + // Sync fields with fieldsets + $fieldset_array = $request->input('associate_fieldsets'); + if ($request->has('associate_fieldsets') && (is_array($fieldset_array))) { + $field->fieldset()->sync(array_keys($fieldset_array)); + } else { + $field->fieldset()->sync([]); + } + return redirect()->route('fields.index')->with('success', trans('admin/custom_fields/message.field.update.success')); } diff --git a/app/Http/Controllers/CustomFieldsetsController.php b/app/Http/Controllers/CustomFieldsetsController.php index c7c00a7bd2..dbee97b776 100644 --- a/app/Http/Controllers/CustomFieldsetsController.php +++ b/app/Http/Controllers/CustomFieldsetsController.php @@ -75,9 +75,9 @@ class CustomFieldsetsController extends Controller */ public function create() { - $this->authorize('create', CustomFieldset::class); + $this->authorize('create', CustomField::class); - return view('custom_fields.fieldsets.edit'); + return view('custom_fields.fieldsets.edit')->with('item', new CustomFieldset()); } /** @@ -91,18 +91,29 @@ class CustomFieldsetsController extends Controller */ public function store(Request $request) { - $this->authorize('create', CustomFieldset::class); + $this->authorize('create', CustomField::class); - $cfset = new CustomFieldset([ + $fieldset = new CustomFieldset([ 'name' => e($request->get('name')), 'user_id' => Auth::user()->id, ]); - $validator = Validator::make($request->all(), $cfset->rules); - if ($validator->passes()) { - $cfset->save(); + $validator = Validator::make($request->all(), $fieldset->rules); - return redirect()->route('fieldsets.show', [$cfset->id]) + if ($validator->passes()) { + $fieldset->save(); + + // Sync fieldset with auto_add_to_fieldsets + $fields = CustomField::select('id')->where('auto_add_to_fieldsets', '=', '1')->get(); + if ($fields->count() > 0) { + foreach ($fields as $field) { + $field_ids[] = $field->id; + } + + $fieldset->fields()->sync($field_ids); + } + + return redirect()->route('fieldsets.show', [$fieldset->id]) ->with('success', trans('admin/custom_fields/message.fieldset.create.success')); } @@ -110,31 +121,52 @@ class CustomFieldsetsController extends Controller } /** - * What the actual fuck, Brady? + * Presents edit form for fieldset * - * @todo Uhh, build this? - * @author [Brady Wetherington] [] + * @author [A. Gianotto] [] * @param int $id - * @since [v1.8] - * @return Fuckall + * @since [v6.0.14] + * @return Redirect + * @throws \Illuminate\Auth\Access\AuthorizationException */ public function edit($id) { - // + $this->authorize('create', CustomField::class); + + if ($fieldset = CustomFieldset::find($id)) { + return view('custom_fields.fieldsets.edit')->with('item', $fieldset); + } + + return redirect()->route('fields.index')->with('error', trans('admin/custom_fields/general.fieldset_does_not_exist', ['id' => $id])); + } /** - * GET IN THE SEA BRADY. + * Saves updated fieldset data * - * @todo Uhh, build this too? - * @author [Brady Wetherington] [] + * @author [A. Gianotto] [] * @param int $id - * @since [v1.8] - * @return Fuckall + * @since [v6.0.14] + * @return Redirect + * @throws \Illuminate\Auth\Access\AuthorizationException */ - public function update($id) + public function update(Request $request, $id) { - // + $this->authorize('create', CustomField::class); + + if ($fieldset = CustomFieldset::find($id)) { + + $fieldset->name = $request->input('name'); + + if ($fieldset->save()) { + return redirect()->route('fields.index')->with('success', trans('admin/custom_fields/general.fieldset_updated')); + } + + return redirect()->back()->withInput()->withErrors($fieldset->getErrors()); + + } + + return redirect()->route('fields.index')->with('error', trans('admin/custom_fields/general.fieldset_does_not_exist', ['id' => $id])); } /** @@ -202,7 +234,7 @@ class CustomFieldsetsController extends Controller */ public function makeFieldRequired($fieldset_id, $field_id) { - $this->authorize('update', CustomFieldset::class); + $this->authorize('update', CustomField::class); $field = CustomField::findOrFail($field_id); $fieldset = CustomFieldset::findOrFail($fieldset_id); $fields[$field->id] = ['required' => 1]; @@ -220,7 +252,7 @@ class CustomFieldsetsController extends Controller */ public function makeFieldOptional($fieldset_id, $field_id) { - $this->authorize('update', CustomFieldset::class); + $this->authorize('update', CustomField::class); $field = CustomField::findOrFail($field_id); $fieldset = CustomFieldset::findOrFail($fieldset_id); $fields[$field->id] = ['required' => 0]; diff --git a/app/Http/Controllers/DepartmentsController.php b/app/Http/Controllers/DepartmentsController.php index 4b2b97ce7f..2d456c0a4a 100644 --- a/app/Http/Controllers/DepartmentsController.php +++ b/app/Http/Controllers/DepartmentsController.php @@ -170,6 +170,8 @@ class DepartmentsController extends Controller $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); + $department->phone = $request->input('phone'); + $department->fax = $request->input('fax'); $department = $request->handleImages($department); diff --git a/app/Http/Controllers/GoogleAuthController.php b/app/Http/Controllers/GoogleAuthController.php new file mode 100644 index 0000000000..a93fcd1fc2 --- /dev/null +++ b/app/Http/Controllers/GoogleAuthController.php @@ -0,0 +1,74 @@ + config('app.url').'/google/callback']); + config(['services.google.client_id' => $setting->google_client_id]); + config(['services.google.client_secret' => $setting->google_client_secret]); + } + + public function redirectToGoogle() + { + return Socialite::driver('google')->redirect(); + } + + public function handleGoogleCallback() + { + try { + $socialUser = Socialite::driver('google')->user(); + \Log::debug('Google user found in Google Workspace'); + } catch (InvalidStateException $exception) { + \Log::debug('Google user NOT found in Google Workspace'); + return redirect()->route('login') + ->withErrors( + [ + 'username' => [ + trans('auth/general.google_login_failed') + ], + ] + ); + } + + + $user = User::where('username', $socialUser->getEmail())->first(); + + + if ($user) { + \Log::debug('Google user '.$socialUser->getEmail().' found in Snipe-IT'); + $user->update([ + 'avatar' => $socialUser->avatar, + ]); + + Auth::login($user, true); + return redirect()->route('home'); + } + + \Log::debug('Google user '.$socialUser->getEmail().' NOT found in Snipe-IT'); + return redirect()->route('login') + ->withErrors( + [ + 'username' => [ + trans('auth/general.google_login_failed'), + ], + ] + ); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/GroupsController.php b/app/Http/Controllers/GroupsController.php index abe3e0682a..b98156824a 100755 --- a/app/Http/Controllers/GroupsController.php +++ b/app/Http/Controllers/GroupsController.php @@ -92,7 +92,7 @@ class GroupsController extends Controller return view('groups.edit', compact('group', 'permissions', 'selected_array', 'groupPermissions')); } - return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found')); + return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', ['id' => $id])); } /** @@ -107,7 +107,7 @@ class GroupsController extends Controller public function update(Request $request, $id = null) { if (! $group = Group::find($id)) { - return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', compact('id'))); + return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', ['id' => $id])); } $group->name = $request->input('name'); $group->permissions = json_encode($request->input('permission')); @@ -133,14 +133,13 @@ class GroupsController extends Controller * @return \Illuminate\Http\RedirectResponse * @throws \Exception */ - public function destroy($id = null) + public function destroy($id) { if (! config('app.lock_passwords')) { if (! $group = Group::find($id)) { - return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', compact('id'))); + return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', ['id' => $id])); } $group->delete(); - // Redirect to the group management page return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.delete')); } @@ -164,6 +163,6 @@ class GroupsController extends Controller return view('groups/view', compact('group')); } - return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', compact('id'))); + return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', ['id' => $id])); } } diff --git a/app/Http/Controllers/ImportsController.php b/app/Http/Controllers/ImportsController.php deleted file mode 100644 index 5c2ca6175b..0000000000 --- a/app/Http/Controllers/ImportsController.php +++ /dev/null @@ -1,22 +0,0 @@ -authorize('import'); - $imports = (new ImportsTransformer)->transformImports(Import::latest()->get()); - - return view('importer/import')->with('imports', $imports); - } -} diff --git a/app/Http/Controllers/Licenses/LicenseCheckinController.php b/app/Http/Controllers/Licenses/LicenseCheckinController.php index d585e6714c..50e20c7985 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckinController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckinController.php @@ -59,6 +59,12 @@ class LicenseCheckinController extends Controller } $license = License::find($licenseSeat->license_id); + + // LicenseSeat is not assigned, it can't be checked in + if (is_null($licenseSeat->assigned_to) && is_null($licenseSeat->asset_id)) { + return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkin.error')); + } + $this->authorize('checkout', $license); if (! $license->reassignable) { @@ -106,4 +112,54 @@ class LicenseCheckinController extends Controller // Redirect to the license page with error return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkin.error')); } + + /** + * Bulk checkin all license seats + * + * @author [A. Gianotto] [] + * @see LicenseCheckinController::create() method that provides the form view + * @since [v6.1.1] + * @return \Illuminate\Http\RedirectResponse + * @throws \Illuminate\Auth\Access\AuthorizationException + */ + + public function bulkCheckin(Request $request, $licenseId) { + + $license = License::findOrFail($licenseId); + $this->authorize('checkin', $license); + + $licenseSeatsByUser = LicenseSeat::where('license_id', '=', $licenseId) + ->whereNotNull('assigned_to') + ->with('user') + ->get(); + + foreach ($licenseSeatsByUser as $user_seat) { + $user_seat->assigned_to = null; + + if ($user_seat->save()) { + \Log::debug('Checking in '.$license->name.' from user '.$user_seat->username); + $user_seat->logCheckin($user_seat->user, trans('admin/licenses/general.bulk.checkin_all.log_msg')); + } + } + + $licenseSeatsByAsset = LicenseSeat::where('license_id', '=', $licenseId) + ->whereNotNull('asset_id') + ->with('asset') + ->get(); + + $count = 0; + foreach ($licenseSeatsByAsset as $asset_seat) { + $asset_seat->asset_id = null; + + if ($asset_seat->save()) { + \Log::debug('Checking in '.$license->name.' from asset '.$asset_seat->asset_tag); + $asset_seat->logCheckin($asset_seat->asset, trans('admin/licenses/general.bulk.checkin_all.log_msg')); + $count++; + } + } + + return redirect()->back()->with('success', trans_choice('admin/licenses/general.bulk.checkin_all.success', 2, ['count' => $count] )); + + } + } diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index 6f2ae003ca..3a0f806584 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -30,15 +30,17 @@ class LicenseCheckoutController extends Controller // Check that the license is valid if ($license = License::find($licenseId)) { + $this->authorize('checkout', $license); // If the license is valid, check that there is an available seat if ($license->avail_seats_count < 1) { return redirect()->route('licenses.index')->with('error', 'There are no available seats for this license'); } + return view('licenses/checkout', compact('license')); } - $this->authorize('checkout', $license); + return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.not_found')); + - return view('licenses/checkout', compact('license')); } /** @@ -126,4 +128,70 @@ class LicenseCheckoutController extends Controller return false; } + + /** + * Bulk checkin all license seats + * + * @author [A. Gianotto] [] + * @see LicenseCheckinController::create() method that provides the form view + * @since [v6.1.1] + * @return \Illuminate\Http\RedirectResponse + * @throws \Illuminate\Auth\Access\AuthorizationException + */ + + public function bulkCheckout($licenseId) { + + \Log::debug('Checking out '.$licenseId.' via bulk'); + $license = License::findOrFail($licenseId); + $this->authorize('checkin', $license); + $avail_count = $license->getAvailSeatsCountAttribute(); + + $users = User::whereNull('deleted_at')->where('autoassign_licenses', '=', 1)->with('licenses')->get(); + \Log::debug($avail_count.' will be assigned'); + + if ($users->count() > $avail_count) { + \Log::debug('You do not have enough free seats to complete this task, so we will check out as many as we can. '); + } + + // If the license is valid, check that there is an available seat + if ($license->availCount()->count() < 1) { + return redirect()->back()->with('error', trans('admin/licenses/general.bulk.checkout_all.error_no_seats')); + } + + + $assigned_count = 0; + + foreach ($users as $user) { + + // Check to make sure this user doesn't already have this license checked out to them + if ($user->licenses->where('id', '=', $licenseId)->count()) { + \Log::debug($user->username.' already has this license checked out to them. Skipping... '); + continue; + } + + $licenseSeat = $license->freeSeat(); + + // Update the seat with checkout info + $licenseSeat->assigned_to = $user->id; + + if ($licenseSeat->save()) { + $avail_count--; + $assigned_count++; + $licenseSeat->logCheckout(trans('admin/licenses/general.bulk.checkout_all.log_msg'), $user); + \Log::debug('License '.$license->name.' seat '.$licenseSeat->id.' checked out to '.$user->username); + } + + if ($avail_count == 0) { + return redirect()->back()->with('warning', trans('admin/licenses/general.bulk.checkout_all.warn_not_enough_seats', ['count' => $assigned_count])); + } + } + + if ($assigned_count == 0) { + return redirect()->back()->with('warning', trans('admin/licenses/general.bulk.checkout_all.warn_no_avail_users', ['count' => $assigned_count])); + } + + return redirect()->back()->with('success', trans_choice('admin/licenses/general.bulk.checkout_all.success', 2, ['count' => $assigned_count] )); + + + } } diff --git a/app/Http/Controllers/Licenses/LicenseFilesController.php b/app/Http/Controllers/Licenses/LicenseFilesController.php index db414edebf..d457d4983a 100644 --- a/app/Http/Controllers/Licenses/LicenseFilesController.php +++ b/app/Http/Controllers/Licenses/LicenseFilesController.php @@ -91,29 +91,30 @@ class LicenseFilesController extends Controller */ public function destroy($licenseId = null, $fileId = null) { - $license = License::find($licenseId); + if ($license = License::find($licenseId)) { - // the asset is valid - if (isset($license->id)) { $this->authorize('update', $license); - $log = Actionlog::find($fileId); - // Remove the file if one exists - if (Storage::exists('licenses/'.$log->filename)) { - try { - Storage::delete('licenses/'.$log->filename); - } catch (\Exception $e) { - \Log::debug($e); + if ($log = Actionlog::find($fileId)) { + + // Remove the file if one exists + if (Storage::exists('licenses/'.$log->filename)) { + try { + Storage::delete('licenses/'.$log->filename); + } catch (\Exception $e) { + \Log::debug($e); + } } + + $log->delete(); + + return redirect()->back() + ->with('success', trans('admin/hardware/message.deletefile.success')); } - $log->delete(); - - return redirect()->back() - ->with('success', trans('admin/hardware/message.deletefile.success')); + return redirect()->route('licenses.index')->with('error', trans('general.log_does_not_exist')); } - // Redirect to the licence management page return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.does_not_exist')); } @@ -129,7 +130,6 @@ class LicenseFilesController extends Controller */ public function show($licenseId = null, $fileId = null, $download = true) { - \Log::info('Private filesystem is: '.config('filesystems.default')); $license = License::find($licenseId); // the license is valid diff --git a/app/Http/Controllers/Licenses/LicensesController.php b/app/Http/Controllers/Licenses/LicensesController.php index a0467654ca..02e2163207 100755 --- a/app/Http/Controllers/Licenses/LicensesController.php +++ b/app/Http/Controllers/Licenses/LicensesController.php @@ -6,6 +6,8 @@ use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Company; use App\Models\License; +use App\Models\LicenseSeat; +use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -86,7 +88,7 @@ class LicensesController extends Controller $license->name = $request->input('name'); $license->notes = $request->input('notes'); $license->order_number = $request->input('order_number'); - $license->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost')); + $license->purchase_cost = $request->input('purchase_cost'); $license->purchase_date = $request->input('purchase_date'); $license->purchase_order = $request->input('purchase_order'); $license->purchase_order = $request->input('purchase_order'); @@ -164,7 +166,7 @@ class LicensesController extends Controller $license->name = $request->input('name'); $license->notes = $request->input('notes'); $license->order_number = $request->input('order_number'); - $license->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost')); + $license->purchase_cost = $request->input('purchase_cost'); $license->purchase_date = $request->input('purchase_date'); $license->purchase_order = $request->input('purchase_order'); $license->reassignable = $request->input('reassignable', 0); @@ -205,7 +207,7 @@ class LicensesController extends Controller if ($license->assigned_seats_count == 0) { // Delete the license and the associated license seats DB::table('license_seats') - ->where('id', $license->id) + ->where('license_id', $license->id) ->update(['assigned_to' => null, 'asset_id' => null]); $licenseSeats = $license->licenseseats(); @@ -233,16 +235,40 @@ class LicensesController extends Controller { $license = License::with('assignedusers')->find($licenseId); - if ($license) { - $this->authorize('view', $license); - - return view('licenses/view', compact('license')); + if (!$license) { + return redirect()->route('licenses.index') + ->with('error', trans('admin/licenses/message.does_not_exist')); } - return redirect()->route('licenses.index') - ->with('error', trans('admin/licenses/message.does_not_exist')); + $users_count = User::where('autoassign_licenses', '1')->count(); + $total_seats_count = $license->totalSeatsByLicenseID(); + $available_seats_count = $license->availCount()->count(); + $checkedout_seats_count = ($total_seats_count - $available_seats_count); + + \Log::debug('Total: '.$total_seats_count); + \Log::debug('Users: '.$users_count); + \Log::debug('Available: '.$available_seats_count); + \Log::debug('Checkedout: '.$checkedout_seats_count); + + + $this->authorize('view', $license); + return view('licenses.view', compact('license')) + ->with('users_count', $users_count) + ->with('total_seats_count', $total_seats_count) + ->with('available_seats_count', $available_seats_count) + ->with('checkedout_seats_count', $checkedout_seats_count); + } + + /** + * Returns a view with prepopulated data for clone + * + * @author [A. Gianotto] [] + * @param int $licenseId + * @return \Illuminate\Http\RedirectResponse + * @throws \Illuminate\Auth\Access\AuthorizationException + */ public function getClone($licenseId = null) { if (is_null($license_to_clone = License::find($licenseId))) { diff --git a/app/Http/Controllers/LocationsController.php b/app/Http/Controllers/LocationsController.php index 9524abf6ee..08dc38b3ac 100755 --- a/app/Http/Controllers/LocationsController.php +++ b/app/Http/Controllers/LocationsController.php @@ -79,6 +79,8 @@ class LocationsController extends Controller $location->ldap_ou = $request->input('ldap_ou'); $location->manager_id = $request->input('manager_id'); $location->user_id = Auth::id(); + $location->phone = request('phone'); + $location->fax = request('fax'); $location = $request->handleImages($location); @@ -139,6 +141,8 @@ class LocationsController extends Controller $location->state = $request->input('state'); $location->country = $request->input('country'); $location->zip = $request->input('zip'); + $location->phone = request('phone'); + $location->fax = request('fax'); $location->ldap_ou = $request->input('ldap_ou'); $location->manager_id = $request->input('manager_id'); @@ -227,6 +231,36 @@ class LocationsController extends Controller } + + /** + * Returns a view that presents a form to clone a location. + * + * @author [A. Gianotto] [] + * @param int $locationId + * @since [v6.0.14] + * @return View + */ + public function getClone($locationId = null) + { + $this->authorize('create', Location::class); + + // Check if the asset exists + if (is_null($location_to_clone = Location::find($locationId))) { + // Redirect to the asset management page + return redirect()->route('licenses.index')->with('error', trans('admin/locations/message.does_not_exist')); + } + + $location = clone $location_to_clone; + + // unset these values + $location->id = null; + $location->image = null; + + return view('locations/edit') + ->with('item', $location); + } + + public function print_all_assigned($id) { if ($location = Location::where('id', $id)->first()) { diff --git a/app/Http/Controllers/ManufacturersController.php b/app/Http/Controllers/ManufacturersController.php index 1f7d2f2c07..e98644f46f 100755 --- a/app/Http/Controllers/ManufacturersController.php +++ b/app/Http/Controllers/ManufacturersController.php @@ -68,6 +68,7 @@ class ManufacturersController extends Controller $manufacturer->user_id = Auth::id(); $manufacturer->url = $request->input('url'); $manufacturer->support_url = $request->input('support_url'); + $manufacturer->warranty_lookup_url = $request->input('warranty_lookup_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); $manufacturer = $request->handleImages($manufacturer); @@ -123,10 +124,11 @@ class ManufacturersController extends Controller return redirect()->route('manufacturers.index')->with('error', trans('admin/manufacturers/message.does_not_exist')); } - // Save the data + // Save the data $manufacturer->name = $request->input('name'); $manufacturer->url = $request->input('url'); $manufacturer->support_url = $request->input('support_url'); + $manufacturer->warranty_lookup_url = $request->input('warranty_lookup_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); diff --git a/app/Http/Controllers/ModalController.php b/app/Http/Controllers/ModalController.php index 385877a3ec..6f6b39dd12 100644 --- a/app/Http/Controllers/ModalController.php +++ b/app/Http/Controllers/ModalController.php @@ -17,7 +17,7 @@ class ModalController extends Controller * @author [A. Gianotto] [location_id = $request->input('location_id'); } + // Handle the avatar upload and/or delete if necessary + app('\App\Http\Requests\ImageUploadRequest')->handleImages($user, 600, 'avatar', 'avatars', 'avatar'); - if ($request->input('avatar_delete') == 1) { - $user->avatar = null; - } - - - if ($request->hasFile('avatar')) { - $path = 'avatars'; - - if (! Storage::disk('public')->exists($path)) { - Storage::disk('public')->makeDirectory($path, 775); - } - - $upload = $image = $request->file('avatar'); - $ext = $image->getClientOriginalExtension(); - $file_name = 'avatar-'.str_random(18).'.'.$ext; - - if ($image->getClientOriginalExtension() != 'svg') { - $upload = Image::make($image->getRealPath())->resize(84, 84); - } - - // This requires a string instead of an object, so we use ($string) - Storage::disk('public')->put($path.'/'.$file_name, (string) $upload->encode()); - - // Remove Current image if exists - if (($user->avatar) && (Storage::disk('public')->exists($path.'/'.$user->avatar))) { - Storage::disk('public')->delete($path.'/'.$user->avatar); - } - - $user->avatar = $file_name; - } if ($user->save()) { return redirect()->route('profile')->with('success', 'Account successfully updated'); diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 6cf2091f60..b2a86bf240 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -51,9 +51,8 @@ class ReportsController extends Controller public function getAccessoryReport() { $this->authorize('reports.view'); - $accessories = Accessory::orderBy('created_at', 'DESC')->with('company')->get(); - return view('reports/accessories', compact('accessories')); + return view('reports/accessories'); } /** @@ -285,7 +284,7 @@ class ReportsController extends Controller $row = [ $actionlog->created_at, - ($actionlog->user) ? e($actionlog->user->getFullNameAttribute()) : '', + ($actionlog->admin) ? e($actionlog->admin->getFullNameAttribute()) : '', $actionlog->present()->actionType(), e($actionlog->itemType()), ($actionlog->itemType() == 'user') ? $actionlog->filename : $item_name, @@ -502,7 +501,6 @@ class ReportsController extends Controller $header[] = trans('general.zip'); } - if ($request->filled('assigned_to')) { $header[] = trans('admin/hardware/table.checkoutto'); $header[] = trans('general.type'); @@ -533,13 +531,14 @@ class ReportsController extends Controller } if ($request->filled('warranty')) { - $header[] = 'Warranty'; - $header[] = 'Warranty Expires'; + $header[] = trans('admin/hardware/form.warranty'); + $header[] = trans('admin/hardware/form.warranty_expires'); } + if ($request->filled('depreciation')) { - $header[] = 'Value'; - $header[] = 'Diff'; - $header[] = 'Fully Depreciated'; + $header[] = trans('admin/hardware/table.book_value'); + $header[] = trans('admin/hardware/table.diff'); + $header[] = trans('admin/hardware/form.fully_depreciated'); } if ($request->filled('checkout_date')) { @@ -596,23 +595,23 @@ class ReportsController extends Controller 'model.category', 'model.manufacturer', 'supplier'); if ($request->filled('by_location_id')) { - $assets->where('assets.location_id', $request->input('by_location_id')); + $assets->whereIn('assets.location_id', $request->input('by_location_id')); } if ($request->filled('by_rtd_location_id')) { - $assets->where('assets.rtd_location_id', $request->input('by_rtd_location_id')); + $assets->whereIn('assets.rtd_location_id', $request->input('by_rtd_location_id')); } if ($request->filled('by_supplier_id')) { - $assets->where('assets.supplier_id', $request->input('by_supplier_id')); + $assets->whereIn('assets.supplier_id', $request->input('by_supplier_id')); } if ($request->filled('by_company_id')) { - $assets->where('assets.company_id', $request->input('by_company_id')); + $assets->whereIn('assets.company_id', $request->input('by_company_id')); } if ($request->filled('by_model_id')) { - $assets->where('assets.model_id', $request->input('by_model_id')); + $assets->whereIn('assets.model_id', $request->input('by_model_id')); } if ($request->filled('by_category_id')) { @@ -632,7 +631,7 @@ class ReportsController extends Controller } if ($request->filled('by_status_id')) { - $assets->where('assets.status_id', $request->input('by_status_id')); + $assets->whereIn('assets.status_id', $request->input('by_status_id')); } if (($request->filled('purchase_start')) && ($request->filled('purchase_end'))) { @@ -642,6 +641,9 @@ class ReportsController extends Controller if (($request->filled('created_start')) && ($request->filled('created_end'))) { $assets->whereBetween('assets.created_at', [$request->input('created_start'), $request->input('created_end')]); } + if (($request->filled('checkout_date_start')) && ($request->filled('checkout_date_end'))) { + $assets->whereBetween('assets.last_checkout', [$request->input('checkout_date_start'), $request->input('checkout_date_end')]); + } if (($request->filled('expected_checkin_start')) && ($request->filled('expected_checkin_end'))) { $assets->whereBetween('assets.expected_checkin', [$request->input('expected_checkin_start'), $request->input('expected_checkin_end')]); @@ -664,6 +666,7 @@ class ReportsController extends Controller $assets->onlyTrashed(); } + \Log::debug($assets->toSql()); $assets->orderBy('assets.id', 'ASC')->chunk(20, function ($assets) use ($handle, $customfields, $request) { $executionTime = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']; @@ -899,12 +902,8 @@ class ReportsController extends Controller public function getAssetMaintenancesReport() { $this->authorize('reports.view'); - // Grab all the improvements - $assetMaintenances = AssetMaintenance::with('asset', 'supplier', 'asset.company') - ->orderBy('created_at', 'DESC') - ->get(); - return view('reports/asset_maintenances', compact('assetMaintenances')); + return view('reports.asset_maintenances'); } /** @@ -1025,7 +1024,11 @@ class ReportsController extends Controller if (is_null($acceptance->created_at)){ return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.bad_data')); } else { - $logItem = $assetItem->checkouts()->where('created_at', '=', $acceptance->created_at)->get()[0]; + $logItem_res = $assetItem->checkouts()->where('created_at', '=', $acceptance->created_at)->get(); + if ($logItem_res->isEmpty()){ + return redirect()->route('reports/unaccepted_assets')->with('error', trans('general.bad_data')); + } + $logItem = $logItem_res[0]; } if(!$assetItem->assignedTo->locale){ @@ -1120,8 +1123,6 @@ class ReportsController extends Controller $row[] = str_replace(',', '', e($item['assetItem']->asset_tag)); $row[] = str_replace(',', '', e(($item['acceptance']->assignedTo) ? $item['acceptance']->assignedTo->present()->name() : trans('admin/reports/general.deleted_user'))); $rows[] = implode(',', $row); - } else { - // Log the error maybe? } } diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 5479b5649b..f8c0638422 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -65,18 +65,27 @@ class SettingsController extends Controller $start_settings['db_error'] = $e->getMessage(); } - $protocol = array_key_exists('HTTPS', $_SERVER) && ('on' == $_SERVER['HTTPS']) ? 'https://' : 'http://'; + if (array_key_exists("HTTP_X_FORWARDED_PROTO", $_SERVER)) { + $protocol = $_SERVER["HTTP_X_FORWARDED_PROTO"] . "://"; + } elseif (array_key_exists('HTTPS', $_SERVER) && ('on' == $_SERVER['HTTPS'])) { + $protocol = "https://"; + } else { + $protocol = "http://"; + } - $host = array_key_exists('SERVER_NAME', $_SERVER) ? $_SERVER['SERVER_NAME'] : null; - $port = array_key_exists('SERVER_PORT', $_SERVER) ? $_SERVER['SERVER_PORT'] : null; - if (('http://' === $protocol && '80' != $port) || ('https://' === $protocol && '443' != $port)) { - $host .= ':'.$port; + if (array_key_exists("HTTP_X_FORWARDED_HOST", $_SERVER)) { + $host = $_SERVER["HTTP_X_FORWARDED_HOST"]; + } else { + $host = array_key_exists('SERVER_NAME', $_SERVER) ? $_SERVER['SERVER_NAME'] : null; + $port = array_key_exists('SERVER_PORT', $_SERVER) ? $_SERVER['SERVER_PORT'] : null; + if (('http://' === $protocol && '80' != $port) || ('https://' === $protocol && '443' != $port)) { + $host .= ':'.$port; + } } $pageURL = $protocol.$host.$_SERVER['REQUEST_URI']; - $start_settings['url_valid'] = (url('/').'/setup' === $pageURL); - - $start_settings['url_config'] = url('/'); + $start_settings['url_config'] = config('app.url').'/setup'; + $start_settings['url_valid'] = ($start_settings['url_config'] === $pageURL); $start_settings['real_url'] = $pageURL; $start_settings['php_version_min'] = true; @@ -111,17 +120,17 @@ class SettingsController extends Controller $start_settings['prod'] = true; } + $start_settings['owner'] = ''; + if (function_exists('posix_getpwuid')) { // Probably Linux $owner = posix_getpwuid(fileowner($_SERVER['SCRIPT_FILENAME'])); - $start_settings['owner'] = $owner['name']; - } else { // Windows - // TODO: Is there a way of knowing if a windows user has elevated permissions - // This just gets the user name, which likely isn't 'root' - // $start_settings['owner'] = getenv('USERNAME'); - $start_settings['owner'] = ''; + // This *should* be an array, but we've seen this return a bool in some chrooted environments + if (is_array($owner)) { + $start_settings['owner'] = $owner['name']; + } } - if (('root' === $start_settings['owner']) || ('0' === $start_settings['owner'])) { + if (($start_settings['owner'] === 'root') || ($start_settings['owner'] === '0')) { $start_settings['owner_is_admin'] = true; } else { $start_settings['owner_is_admin'] = false; @@ -679,33 +688,6 @@ class SettingsController extends Controller return view('settings.slack', compact('setting')); } - /** - * Return a form to allow a super admin to update settings. - * - * @author [A. Gianotto] [] - * - * @since [v1.0] - * - * @return View - */ - public function postSlack(SlackSettingsRequest $request) - { - if (is_null($setting = Setting::getSettings())) { - return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); - } - - $setting->slack_endpoint = $request->input('slack_endpoint'); - $setting->slack_channel = $request->input('slack_channel'); - $setting->slack_botname = $request->input('slack_botname'); - - if ($setting->save()) { - return redirect()->route('settings.index') - ->with('success', trans('admin/settings/message.update.success')); - } - - return redirect()->back()->withInput()->withErrors($setting->getErrors()); - } - /** * Return a form to allow a super admin to update settings. * @@ -807,7 +789,7 @@ class SettingsController extends Controller */ public function getPhpInfo() { - if (true === config('app.debug')) { + if (config('app.debug') === true) { return view('settings.phpinfo'); } @@ -987,6 +969,7 @@ class SettingsController extends Controller $setting->ldap_phone_field = $request->input('ldap_phone'); $setting->ldap_jobtitle = $request->input('ldap_jobtitle'); $setting->ldap_country = $request->input('ldap_country'); + $setting->ldap_location = $request->input('ldap_location'); $setting->ldap_dept = $request->input('ldap_dept'); $setting->ldap_client_tls_cert = $request->input('ldap_client_tls_cert'); $setting->ldap_client_tls_key = $request->input('ldap_client_tls_key'); @@ -1064,6 +1047,48 @@ class SettingsController extends Controller return $pdf_branding; } + + /** + * Show Google login settings form + * + * @author [A. Gianotto] [] + * @since [v6.1.1] + * @return View + */ + public function getGoogleLoginSettings() + { + $setting = Setting::getSettings(); + return view('settings.google', compact('setting')); + } + + /** + * ShSaveow Google login settings form + * + * @author [A. Gianotto] [] + * @since [v6.1.1] + * @return View + */ + public function postGoogleLoginSettings(Request $request) + { + if (!config('app.lock_passwords')) { + $setting = Setting::getSettings(); + + $setting->google_login = $request->input('google_login', 0); + $setting->google_client_id = $request->input('google_client_id'); + $setting->google_client_secret = $request->input('google_client_secret'); + + if ($setting->save()) { + return redirect()->route('settings.index') + ->with('success', trans('admin/settings/message.update.success')); + } + + return redirect()->back()->withInput()->withErrors($setting->getErrors()); + } + + return redirect()->back()->with('error', trans('general.feature_disabled')); + } + + /** * Show the listing of backups. * @@ -1119,7 +1144,7 @@ class SettingsController extends Controller public function postBackups() { if (! config('app.lock_passwords')) { - Artisan::call('backup:run'); + Artisan::call('snipeit:backup', ['--filename' => 'manual-backup-'.date('Y-m-d-H-i-s')]); $output = Artisan::output(); // Backup completed diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index 3550b43708..a2d3d496da 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Users; +use App\Events\UserMerged; use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Accessory; @@ -13,6 +14,7 @@ use App\Models\LicenseSeat; use App\Models\ConsumableAssignment; use App\Models\Consumable; use App\Models\User; +use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -21,7 +23,7 @@ use Illuminate\Support\Facades\Password; class BulkUsersController extends Controller { /** - * Returns a view that confirms the user's a bulk delete will be applied to. + * Returns a view that confirms the user's a bulk action will be applied to. * * @author [A. Gianotto] [] * @since [v1.7] @@ -35,16 +37,32 @@ class BulkUsersController extends Controller // Make sure there were users selected if (($request->filled('ids')) && (count($request->input('ids')) > 0)) { + // Get the list of affected users $user_raw_array = request('ids'); $users = User::whereIn('id', $user_raw_array) ->with('groups', 'assets', 'licenses', 'accessories')->get(); + // bulk edit, display the bulk edit form if ($request->input('bulk_actions') == 'edit') { return view('users/bulk-edit', compact('users')) ->with('groups', Group::pluck('name', 'id')); + + // bulk delete, display the bulk delete confirmation form } elseif ($request->input('bulk_actions') == 'delete') { return view('users/confirm-bulk-delete')->with('users', $users)->with('statuslabel_list', Helper::statusLabelList()); + + // merge, confirm they have at least 2 users selected and display the merge screen + } elseif ($request->input('bulk_actions') == 'merge') { + + if (($request->filled('ids')) && (count($request->input('ids')) > 1)) { + return view('users/confirm-merge')->with('users', $users); + // Not enough users selected, send them back + } else { + return redirect()->back()->with('error', trans('general.not_enough_users_selected', ['count' => 2])); + } + + // bulk password reset, just do the thing } elseif ($request->input('bulk_actions') == 'bulkpasswordreset') { foreach ($users as $user) { if (($user->activated == '1') && ($user->email != '')) { @@ -59,7 +77,7 @@ class BulkUsersController extends Controller } } - return redirect()->back()->with('error', 'No users selected'); + return redirect()->back()->with('error', trans('general.no_users_selected')); } /** @@ -76,7 +94,7 @@ class BulkUsersController extends Controller $this->authorize('update', User::class); if ((! $request->filled('ids')) || $request->input('ids') <= 0) { - return redirect()->back()->with('error', 'No users selected'); + return redirect()->back()->with('error', trans('general.no_users_selected')); } $user_raw_array = $request->input('ids'); @@ -95,7 +113,8 @@ class BulkUsersController extends Controller ->conditionallyAddItem('locale') ->conditionallyAddItem('remote') ->conditionallyAddItem('ldap_import') - ->conditionallyAddItem('activated'); + ->conditionallyAddItem('activated') + ->conditionallyAddItem('autoassign_licenses'); // If the manager_id is one of the users being updated, generate a warning. @@ -105,6 +124,11 @@ class BulkUsersController extends Controller 'warning' => trans('admin/users/message.bulk_manager_warn'), ]; } + + if ($request->input('null_location_id')=='1') { + $this->update_array['location_id'] = null; + } + if (! $manager_conflict) { $this->conditionallyAddItem('manager_id'); } @@ -163,11 +187,11 @@ class BulkUsersController extends Controller $this->authorize('update', User::class); if ((! $request->filled('ids')) || (count($request->input('ids')) == 0)) { - return redirect()->back()->with('error', 'No users selected'); + return redirect()->back()->with('error', trans('general.no_users_selected')); } if (config('app.lock_passwords')) { - return redirect()->route('users.index')->with('error', 'Bulk delete is not enabled in this installation'); + return redirect()->route('users.index')->with('error', trans('general.feature_disabled')); } $user_raw_array = request('ids'); @@ -249,4 +273,80 @@ class BulkUsersController extends Controller $logAction->logaction('checkin from'); } } + + /** + * Save bulk-edited users + * + * @author [A. Gianotto] [] + * @since [v1.0] + * @param Request $request + * @return \Illuminate\Http\RedirectResponse + * @throws \Illuminate\Auth\Access\AuthorizationException + */ + public function merge(Request $request) + { + $this->authorize('update', User::class); + + if (config('app.lock_passwords')) { + return redirect()->route('users.index')->with('error', trans('general.feature_disabled')); + } + + $user_ids_to_merge = $request->input('ids_to_merge'); + $user_ids_to_merge = array_diff($user_ids_to_merge, array($request->input('merge_into_id'))); + + if ((!$request->filled('merge_into_id')) || (count($user_ids_to_merge) < 1)) { + return redirect()->back()->with('error', trans('general.no_users_selected')); + } + + // 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); + + // Walk users + foreach ($users_to_merge as $user_to_merge) { + + foreach ($user_to_merge->assets as $asset) { + \Log::debug('Updating asset: '.$asset->asset_tag . ' to '.$merge_into_user->id); + $asset->assigned_to = $request->input('merge_into_id'); + $asset->save(); + } + + foreach ($user_to_merge->licenses as $license) { + \Log::debug('Updating license pivot: '.$license->id . ' to '.$merge_into_user->id); + $user_to_merge->licenses()->updateExistingPivot($license->id, ['assigned_to' => $merge_into_user->id]); + } + + foreach ($user_to_merge->consumables as $consumable) { + \Log::debug('Updating consumable pivot: '.$consumable->id . ' to '.$merge_into_user->id); + $user_to_merge->consumables()->updateExistingPivot($consumable->id, ['assigned_to' => $merge_into_user->id]); + } + + foreach ($user_to_merge->accessories as $accessory) { + $user_to_merge->accessories()->updateExistingPivot($accessory->id, ['assigned_to' => $merge_into_user->id]); + } + + foreach ($user_to_merge->userlog as $log) { + $log->target_id = $user_to_merge->id; + $log->save(); + } + + User::where('manager_id', '=', $user_to_merge->id)->update(['manager_id' => $merge_into_user->id]); + + foreach ($user_to_merge->managedLocations as $managedLocation) { + $managedLocation->manager_id = $merge_into_user->id; + $managedLocation->save(); + } + + $user_to_merge->delete(); + //$user_to_merge->save(); + + event(new UserMerged($user_to_merge, $merge_into_user, $admin)); + + } + + return redirect()->route('users.index')->with('success', trans('general.merge_success', ['count' => $users_to_merge->count(), 'into_username' => $merge_into_user->username])); + + + } } diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 52d423036f..25a64e5cb2 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -74,7 +74,6 @@ class UsersController extends Controller $permissions = $this->filterDisplayable($permissions); $user = new User; - $user->activated = 1; return view('users/edit', compact('groups', 'userGroups', 'permissions', 'userPermissions')) ->with('user', $user); @@ -121,6 +120,7 @@ class UsersController extends Controller $user->created_by = Auth::user()->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); // Strip out the superuser permission if the user isn't a superadmin $permissions_array = $request->input('permission'); @@ -131,7 +131,7 @@ class UsersController extends Controller $user->permissions = json_encode($permissions_array); // we have to invoke the - app(\App\Http\Requests\ImageUploadRequest::class)->handleImages($user, 600, 'image', 'avatars', 'avatar'); + app(ImageUploadRequest::class)->handleImages($user, 600, 'avatar', 'avatars', 'avatar'); if ($user->save()) { if ($request->filled('groups')) { @@ -210,7 +210,6 @@ class UsersController extends Controller */ public function update(SaveUserRequest $request, $id = null) { - // We need to reverse the UI specific logic for our // permissions here before we update the user. $permissions = $request->input('permissions', []); @@ -268,12 +267,15 @@ class UsersController extends Controller $user->city = $request->input('city', null); $user->state = $request->input('state', null); $user->country = $request->input('country', null); - $user->activated = $request->input('activated', 0); + // if a user is editing themselves we should always keep activated true + $user->activated = $request->input('activated', $request->user()->is($user) ? 1 : 0); $user->zip = $request->input('zip', null); $user->remote = $request->input('remote', 0); + $user->vip = $request->input('vip', 0); $user->website = $request->input('website', null); $user->start_date = $request->input('start_date', null); $user->end_date = $request->input('end_date', null); + $user->autoassign_licenses = $request->input('autoassign_licenses', 0); // Update the location of any assets checked out to this user Asset::where('assigned_type', User::class) @@ -296,7 +298,7 @@ class UsersController extends Controller $user->permissions = json_encode($permissions_array); // Handle uploaded avatar - app(\App\Http\Requests\ImageUploadRequest::class)->handleImages($user, 600, 'avatar', 'avatars', 'avatar'); + app(ImageUploadRequest::class)->handleImages($user, 600, 'avatar', 'avatars', 'avatar'); //\Log::debug(print_r($user, true)); @@ -668,4 +670,4 @@ class UsersController extends Controller return redirect()->back()->with('error', 'User is not activated, is LDAP synced, or does not have an email address '); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php index ee3e4b14c6..c9aafd2c78 100755 --- a/app/Http/Controllers/ViewAssetsController.php +++ b/app/Http/Controllers/ViewAssetsController.php @@ -82,7 +82,7 @@ class ViewAssetsController extends Controller return view('account/requestable-assets', compact('assets', 'models')); } - public function getRequestItem(Request $request, $itemType, $itemId = null) + public function getRequestItem(Request $request, $itemType, $itemId = null, $cancel_by_admin = false, $requestingUser = null) { $item = null; $fullItemType = 'App\\Models\\'.studly_case($itemType); @@ -119,16 +119,16 @@ class ViewAssetsController extends Controller $settings = Setting::getSettings(); - if ($item_request = $item->isRequestedBy($user)) { - $item->cancelRequest(); - $data['item_quantity'] = $item_request->qty; + if (($item_request = $item->isRequestedBy($user)) || $cancel_by_admin) { + $item->cancelRequest($requestingUser); + $data['item_quantity'] = ($item_request) ? $item_request->qty : 1; $logaction->logaction('request_canceled'); if (($settings->alert_email != '') && ($settings->alerts_enabled == '1') && (! config('app.lock_passwords'))) { $settings->notify(new RequestAssetCancelation($data)); } - return redirect()->route('requestable-assets')->with('success')->with('success', trans('admin/hardware/message.requests.canceled')); + return redirect()->back()->with('success')->with('success', trans('admin/hardware/message.requests.canceled')); } else { $item->request(); if (($settings->alert_email != '') && ($settings->alerts_enabled == '1') && (! config('app.lock_passwords'))) { diff --git a/app/Http/Livewire/Importer.php b/app/Http/Livewire/Importer.php new file mode 100644 index 0000000000..2e1137bcd2 --- /dev/null +++ b/app/Http/Livewire/Importer.php @@ -0,0 +1,529 @@ + 'required|string', + 'files.*.created_at' => 'required|string', + 'files.*.filesize' => 'required|integer', + 'activeFile' => 'Import', + 'activeFile.import_type' => 'string', + 'activeFile.field_map' => 'array', + 'activeFile.header_row' => 'array', + 'field_map' => 'array' + ]; + + public function generate_field_map() + { + \Log::debug("header row is: ".print_r($this->activeFile->header_row,true)); + \Log::debug("Field map is: ".print_r($this->field_map,true)); + $tmp = array_combine($this->activeFile->header_row, $this->field_map); + return json_encode(array_filter($tmp)); + } + + + + private function getColumns($type) + { + switch ($type) { + case 'asset': + $results = $this->assets_fields; + break; + case 'accessory': + $results = $this->accessories_fields; + break; + case 'consumable': + $results = $this->consumables_fields; + break; + case 'component': + $results = $this->components_fields; + break; + case 'license': + $results = $this->licenses_fields; + break; + case 'user': + $results = $this->users_fields; + break; + case 'location': + $results = $this->locations_fields; + break; + default: + $results = []; + } + asort($results, SORT_FLAG_CASE | SORT_STRING); + if ($type == "asset") { + // add Custom Fields after a horizontal line + $results['-'] = "———" . trans('admin/custom_fields/general.custom_fields') . "———’"; + foreach (CustomField::orderBy('name')->get() as $field) { + $results[$field->db_column_name()] = $field->name; + } + } + return $results; + } + + public function updating($name, $new_import_type) + { + if ($name == "activeFile.import_type") { + \Log::debug("WE ARE CHANGING THE import_type!!!!! TO: " . $new_import_type); + \Log::debug("so, what's \$this->>field_map at?: " . print_r($this->field_map, true)); + // go through each header, find a matching field to try and map it to. + foreach ($this->activeFile->header_row as $i => $header) { + // do we have something mapped already? + if (array_key_exists($i, $this->field_map)) { + // yes, we do. Is it valid for this type of import? + // (e.g. the import type might have been changed...?) + if (array_key_exists($this->field_map[$i], $this->columnOptions[$new_import_type])) { + //yes, this key *is* valid. Continue on to the next field. + continue; + } else { + //no, this key is *INVALID* for this import type. Better set it to null + // and we'll hope that the $aliases_fields or something else picks it up. + $this->field_map[$i] = null; // fingers crossed! But it's not likely, tbh. + } // TODO - strictly speaking, this isn't necessary here I don't think. + } + // first, check for exact matches + foreach ($this->columnOptions[$new_import_type] as $value => $text) { + if (strcasecmp($text, $header) === 0) { // case-INSENSITIVe on purpose! + $this->field_map[$i] = $value; + continue 2; //don't bother with the alias check, go to the next header + } + } + // if you got here, we didn't find a match. Try the $aliases_fields + foreach ($this->aliases_fields as $key => $alias_values) { + foreach ($alias_values as $alias_value) { + if (strcasecmp($alias_value, $header) === 0) { // aLsO CaSe-INSENSitiVE! + // Make *absolutely* sure that this key actually _exists_ in this import type - + // you can trigger this by importing accessories with a 'Warranty' column (which don't exist + // in "Accessories"!) + if (array_key_exists($key, $this->columnOptions[$new_import_type])) { + $this->field_map[$i] = $key; + continue 3; // bust out of both of these loops; as well as the surrounding one - e.g. move on to the next header + } + } + } + } + // and if you got here, we got nothing. Let's recommend 'null' + $this->field_map[$i] = null; // Booooo :( + } + } + } + + public function boot() { // FIXME - delete or undelete. + ///////$this->activeFile = null; // I do *not* understand why I have to do this, but, well, whatever. + } + + + public function mount() + { + $this->authorize('import'); + $this->progress = -1; // '-1' means 'don't show the progressbar' + $this->progress_bar_class = 'progress-bar-warning'; + $this->importTypes = [ + 'asset' => trans('general.assets'), + 'accessory' => trans('general.accessories'), + 'consumable' => trans('general.consumables'), + 'component' => trans('general.components'), + 'license' => trans('general.licenses'), + 'user' => trans('general.users'), + 'location' => trans('general.locations'), + ]; + + /** + * These are the item-type specific columns + */ + $this->accessories_fields = [ + 'company' => trans('general.company'), + 'location' => trans('general.location'), + 'quantity' => trans('general.qty'), + 'item_name' => trans('general.item_name_var', ['item' => trans('general.accessory')]), + 'model_number' => trans('general.model_no'), + 'notes' => trans('general.notes'), + 'category' => trans('general.category'), + 'supplier' => trans('general.supplier'), + 'min_amt' => trans('mail.min_QTY'), + 'purchase_cost' => trans('general.purchase_cost'), + 'purchase_date' => trans('general.purchase_date'), + 'manufacturer' => trans('general.manufacturer'), + 'order_number' => trans('general.order_number'), + ]; + + $this->assets_fields = [ + 'company' => trans('general.company'), + 'location' => trans('general.location'), + 'item_name' => trans('general.item_name_var', ['item' => trans('general.asset')]), + 'asset_tag' => trans('general.asset_tag'), + 'asset_model' => trans('general.model_name'), + 'byod' => trans('general.byod'), + 'model_number' => trans('general.model_no'), + 'status' => trans('general.status'), + 'warranty_months' => trans('admin/hardware/form.warranty'), + 'category' => trans('general.category'), + 'requestable' => trans('admin/hardware/general.requestable'), + 'serial' => trans('general.serial_number'), + 'supplier' => trans('general.supplier'), + 'purchase_cost' => trans('general.purchase_cost'), + 'purchase_date' => trans('general.purchase_date'), + 'purchase_order' => trans('admin/licenses/form.purchase_order'), + 'asset_notes' => trans('general.item_notes', ['item' => trans('admin/hardware/general.asset')]), + 'model_notes' => trans('general.item_notes', ['item' => trans('admin/hardware/form.model')]), + 'manufacturer' => trans('general.manufacturer'), + 'order_number' => trans('general.order_number'), + 'image' => trans('general.importer.image_filename'), + /** + * Checkout fields: + * Assets can be checked out to other assets, people, or locations, but we currently + * only support checkout to people and locations in the importer + **/ + 'checkout_class' => trans('general.importer.checkout_type'), + 'first_name' => trans('general.importer.checked_out_to_first_name'), + 'last_name' => trans('general.importer.checked_out_to_last_name'), + 'full_name' => trans('general.importer.checked_out_to_fullname'), + 'email' => trans('general.importer.checked_out_to_email'), + 'username' => trans('general.importer.checked_out_to_username'), + 'checkout_location' => trans('general.importer.checkout_location'), + ]; + + $this->consumables_fields = [ + 'company' => trans('general.company'), + 'location' => trans('general.location'), + 'quantity' => trans('general.qty'), + 'item_name' => trans('general.item_name_var', ['item' => trans('general.consumable')]), + 'model_number' => trans('general.model_no'), + 'notes' => trans('general.notes'), + 'min_amt' => trans('mail.min_QTY'), + 'category' => trans('general.category'), + 'purchase_cost' => trans('general.purchase_cost'), + 'purchase_date' => trans('general.purchase_date'), + 'checkout_class' => trans('general.importer.checkout_type'), + 'supplier' => trans('general.supplier'), + 'manufacturer' => trans('general.manufacturer'), + 'order_number' => trans('general.order_number'), + 'item_no' => trans('admin/consumables/general.item_no'), + ]; + + $this->components_fields = [ + 'company' => trans('general.company'), + 'location' => trans('general.location'), + 'quantity' => trans('general.qty'), + 'item_name' => trans('general.item_name_var', ['item' => trans('general.component')]), + 'model_number' => trans('general.model_no'), + 'notes' => trans('general.notes'), + 'category' => trans('general.category'), + 'supplier' => trans('general.supplier'), + 'min_amt' => trans('mail.min_QTY'), + 'purchase_cost' => trans('general.purchase_cost'), + 'purchase_date' => trans('general.purchase_date'), + 'manufacturer' => trans('general.manufacturer'), + 'order_number' => trans('general.order_number'), + 'serial' => trans('general.serial_number'), + ]; + + $this->licenses_fields = [ + 'company' => trans('general.company'), + 'location' => trans('general.location'), + 'item_name' => trans('general.item_name_var', ['item' => trans('general.license')]), + 'asset_tag' => trans('general.importer.checked_out_to_tag'), + 'expiration_date' => trans('admin/licenses/form.expiration'), + 'full_name' => trans('general.importer.checked_out_to_fullname'), + 'license_email' => trans('admin/licenses/form.to_email'), + 'license_name' => trans('admin/licenses/form.to_name'), + 'purchase_order' => trans('admin/licenses/form.purchase_order'), + 'reassignable' => trans('admin/licenses/form.reassignable'), + 'seats' => trans('admin/licenses/form.seats'), + 'notes' => trans('general.notes'), + 'category' => trans('general.category'), + 'supplier' => trans('general.supplier'), + 'purchase_cost' => trans('general.purchase_cost'), + 'purchase_date' => trans('general.purchase_date'), + 'maintained' => trans('admin/licenses/form.maintained'), + 'checkout_class' => trans('general.importer.checkout_type'), + 'serial' => trans('general.license_serial'), + 'email' => trans('general.importer.checked_out_to_email'), + 'username' => trans('general.importer.checked_out_to_username'), + 'manufacturer' => trans('general.manufacturer'), + ]; + + $this->users_fields = [ + 'id' => trans('general.id'), + 'company' => trans('general.company'), + 'location' => trans('general.location'), + 'department' => trans('general.department'), + 'first_name' => trans('general.first_name'), + 'last_name' => trans('general.last_name'), + 'notes' => trans('general.notes'), + 'username' => trans('admin/users/table.username'), + 'jobtitle' => trans('admin/users/table.title'), + 'phone_number' => trans('admin/users/table.phone'), + 'manager_first_name' => trans('general.importer.manager_first_name'), + 'manager_last_name' => trans('general.importer.manager_last_name'), + 'activated' => trans('general.activated'), + 'address' => trans('general.address'), + 'city' => trans('general.city'), + 'state' => trans('general.state'), + 'country' => trans('general.country'), + 'zip' => trans('general.zip'), + 'vip' => trans('general.importer.vip'), + 'remote' => trans('admin/users/general.remote'), + 'email' => trans('admin/users/table.email'), + 'website' => trans('general.website'), + 'avatar' => trans('general.image'), + 'gravatar' => trans('general.importer.gravatar'), + 'start_date' => trans('general.start_date'), + 'end_date' => trans('general.end_date'), + 'employee_num' => trans('general.employee_number'), + ]; + + $this->locations_fields = [ + 'name' => trans('general.item_name_var', ['item' => trans('general.location')]), + 'address' => trans('general.address'), + 'address2' => trans('general.importer.address2'), + 'city' => trans('general.city'), + 'state' => trans('general.state'), + 'country' => trans('general.country'), + 'zip' => trans('general.zip'), + 'currency' => trans('general.importer.currency'), + 'ldap_ou' => trans('admin/locations/table.ldap_ou'), + 'manager_username' => trans('general.importer.manager_username'), + 'manager' => trans('general.importer.manager_full_name'), + 'parent_location' => trans('admin/locations/table.parent'), + ]; + + // "real fieldnames" to a list of aliases for that field + $this->aliases_fields = [ + 'item_name' => + [ + 'item name', + 'asset name', + 'accessory name', + 'user name', + 'consumable name', + 'component name', + 'name', + ], + 'item_no' => [ + 'item number', + 'item no.', + 'item #', + ], + 'asset_model' => + [ + 'model name', + 'model', + ], + 'gravatar' => + [ + 'gravatar', + ], + 'currency' => + [ + '$', + ], + 'jobtitle' => + [ + 'job title for user', + 'job title', + ], + 'username' => + [ + 'user name', + 'username', + trans('general.importer.checked_out_to_username'), + ], + 'first_name' => + [ + 'first name', + trans('general.importer.checked_out_to_first_name'), + ], + 'last_name' => + [ + 'last name', + 'lastname', + trans('general.importer.checked_out_to_last_name'), + ], + 'email' => + [ + 'email', + 'e-mail', + trans('general.importer.checked_out_to_email'), + ], + 'phone_number' => + [ + 'phone', + 'phone number', + 'phone num', + 'telephone number', + 'telephone', + 'tel.', + ], + 'serial' => + [ + 'serial number', + 'serial no.', + 'serial no', + 'product key', + 'key', + ], + 'model_number' => + [ + 'model', + 'model no', + 'model no.', + 'model number', + 'model num', + 'model num.' + ], + 'warranty_months' => + [ + 'Warranty', + 'Warranty Months' + ], + 'qty' => + [ + 'QTY', + 'Quantity' + ], + 'zip' => + [ + 'Postal Code', + 'Post Code', + 'Zip Code' + ], + 'min_amt' => + [ + 'Min Amount', + 'Minimum Amount', + 'Min Quantity', + 'Minimum Quantity', + ], + 'next_audit_date' => + [ + 'Next Audit', + ], + 'address2' => + [ + 'Address 2', + 'Address2', + ], + 'ldap_ou' => + [ + 'LDAP OU', + 'OU', + ], + 'parent_location' => + [ + 'Parent', + 'Parent Location', + ], + 'manager' => + [ + 'Managed By', + 'Manager Name', + 'Manager Full Name', + ], + 'manager_username' => + [ + 'Manager Username', + ], + ]; + + $this->columnOptions[''] = $this->getColumns(''); //blank mode? I don't know what this is supposed to mean + foreach($this->importTypes AS $type => $name) { + $this->columnOptions[$type] = $this->getColumns($type); + } + if ($this->activeFile) { + $this->field_map = $this->activeFile->field_map ? array_values($this->activeFile->field_map) : []; + } + } + + public function selectFile($id) + { + + $this->activeFile = Import::find($id); + $this->field_map = null; + foreach($this->activeFile->header_row as $element) { + if(isset($this->activeFile->field_map[$element])) { + $this->field_map[] = $this->activeFile->field_map[$element]; + } else { + $this->field_map[] = null; // re-inject the 'nulls' if a file was imported with some 'Do Not Import' settings + } + } + $this->file_id = $id; + $this->import_errors = null; + $this->statusText = null; + + } + + public function destroy($id) + { + // TODO: why don't we just do File::find($id)? This seems dumb. + foreach($this->files as $file) { + \Log::debug("File id is: ".$file->id); + if($id == $file->id) { + if(Storage::delete('private_uploads/imports/'.$file->file_path)) { + $file->delete(); + + $this->message = trans('admin/hardware/message.import.file_delete_success'); + $this->message_type = 'success'; + return; + } else { + $this->message = trans('admin/hardware/message.import.file_delete_error'); + $this->message_type = 'danger'; + } + } + } + } + + public function render() + { + $this->files = Import::orderBy('id','desc')->get(); //HACK - slows down renders. + return view('livewire.importer') + ->extends('layouts.default') + ->section('content'); + } +} diff --git a/app/Http/Livewire/SlackSettingsForm.php b/app/Http/Livewire/SlackSettingsForm.php new file mode 100644 index 0000000000..bb3a7bd7f6 --- /dev/null +++ b/app/Http/Livewire/SlackSettingsForm.php @@ -0,0 +1,177 @@ + 'url|required_with:webhook_channel|starts_with:https://hooks.slack.com/services|nullable', + 'webhook_channel' => 'required_with:webhook_endpoint|starts_with:#|nullable', + 'webhook_botname' => 'string|nullable', + ]; + + public function mount() { + $this->webhook_text= [ + "slack" => array( + "name" => trans('admin/settings/general.slack') , + "icon" => 'fab fa-slack', + "placeholder" => "https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX", + "link" => 'https://api.slack.com/messaging/webhooks', + ), + "general"=> array( + "name" => trans('admin/settings/general.general_webhook'), + "icon" => "fab fa-hashtag", + "placeholder" => "", + "link" => "", + ), + ]; + + $this->setting = Setting::getSettings(); + $this->save_button = trans('general.save'); + $this->webhook_selected = $this->setting->webhook_selected; + $this->webhook_placeholder = $this->webhook_text[$this->setting->webhook_selected]["placeholder"]; + $this->webhook_name = $this->webhook_text[$this->setting->webhook_selected]["name"]; + $this->webhook_icon = $this->webhook_text[$this->setting->webhook_selected]["icon"]; + $this->webhook_endpoint = $this->setting->webhook_endpoint; + $this->webhook_channel = $this->setting->webhook_channel; + $this->webhook_botname = $this->setting->webhook_botname; + $this->webhook_options = $this->setting->webhook_selected; + + if($this->setting->webhook_selected == 'general'){ + $this->isDisabled=''; + } + if($this->setting->webhook_endpoint != null && $this->setting->webhook_channel != null){ + $this->isDisabled= ''; + } + + } + public function updated($field) { + + if($this->webhook_selected != 'general') { + $this->validateOnly($field, $this->rules); + } + } + + public function updatedWebhookSelected() { + $this->webhook_name = $this->webhook_text[$this->webhook_selected]['name']; + $this->webhook_icon = $this->webhook_text[$this->webhook_selected]["icon"]; ; + $this->webhook_placeholder = $this->webhook_text[$this->webhook_selected]["placeholder"]; + $this->webhook_link = $this->webhook_text[$this->webhook_selected]["link"]; + if($this->webhook_selected != 'slack'){ + $this->isDisabled= ''; + $this->save_button = trans('general.save'); + } + } + + private function isButtonDisabled() { + if($this->webhook_selected == 'slack') { + if (empty($this->webhook_endpoint)) { + $this->isDisabled = 'disabled'; + $this->save_button = trans('admin/settings/general.webhook_presave'); + } + if (empty($this->webhook_channel)) { + $this->isDisabled = 'disabled'; + $this->save_button = trans('admin/settings/general.webhook_presave'); + } + } + + } + + public function render() + { + $this->isButtonDisabled(); + return view('livewire.slack-settings-form'); + } + + public function testWebhook(){ + + $webhook = new Client([ + 'base_url' => e($this->webhook_endpoint), + 'defaults' => [ + 'exceptions' => false, + ], + ]); + + $payload = json_encode( + [ + 'channel' => e($this->webhook_channel), + 'text' => trans('general.webhook_test_msg', ['app' => $this->webhook_name]), + 'username' => e($this->webhook_botname), + 'icon_emoji' => ':heart:', + ]); + + try { + + $webhook->post($this->webhook_endpoint, ['body' => $payload]); + $this->isDisabled=''; + $this->save_button = trans('general.save'); + return session()->flash('success' , 'Your '.$this->webhook_name.' Integration works!'); + + } catch (\Exception $e) { + + $this->isDisabled= 'disabled'; + return session()->flash('error' , trans('admin/settings/message.webhook.error', ['error_message' => $e->getMessage(), 'app' => $this->webhook_name])); + } + + return session()->flash('error' , trans('admin/settings/message.webhook.error_misc')); + + } + + public function clearSettings(){ + + if (Helper::isDemoMode()) { + session()->flash('error',trans('general.feature_disabled')); + } else { + $this->webhook_endpoint = ''; + $this->webhook_channel = ''; + $this->webhook_botname = ''; + $this->setting->webhook_endpoint = ''; + $this->setting->webhook_channel = ''; + $this->setting->webhook_botname = ''; + + $this->setting->save(); + + session()->flash('success', trans('admin/settings/message.update.success')); + } + } + + public function submit() + { + if (Helper::isDemoMode()) { + session()->flash('error',trans('general.feature_disabled')); + } else { + if ($this->webhook_selected != 'general') { + $this->validate($this->rules); + } + + $this->setting->webhook_selected = $this->webhook_selected; + $this->setting->webhook_endpoint = $this->webhook_endpoint; + $this->setting->webhook_channel = $this->webhook_channel; + $this->setting->webhook_botname = $this->webhook_botname; + + $this->setting->save(); + + session()->flash('success',trans('admin/settings/message.update.success')); + + } + + } +} diff --git a/app/Http/Middleware/CheckForSetup.php b/app/Http/Middleware/CheckForSetup.php index b4beb70588..4e399ffcff 100644 --- a/app/Http/Middleware/CheckForSetup.php +++ b/app/Http/Middleware/CheckForSetup.php @@ -20,13 +20,13 @@ class CheckForSetup if (Setting::setupCompleted()) { if ($request->is('setup*')) { - return redirect(url('/')); + return redirect(config('app.url')); } else { return $next($request); } } else { if (! ($request->is('setup*')) && ! ($request->is('.env')) && ! ($request->is('health'))) { - return redirect(url('/').'/setup'); + return redirect(config('app.url').'/setup'); } return $next($request); diff --git a/app/Http/Middleware/CheckForTwoFactor.php b/app/Http/Middleware/CheckForTwoFactor.php index fd630ef10c..2b72deb8a9 100644 --- a/app/Http/Middleware/CheckForTwoFactor.php +++ b/app/Http/Middleware/CheckForTwoFactor.php @@ -11,7 +11,7 @@ class CheckForTwoFactor /** * Routes to ignore for Two Factor Auth */ - const IGNORE_ROUTES = ['two-factor', 'two-factor-enroll', 'setup', 'logout']; + public const IGNORE_ROUTES = ['two-factor', 'two-factor-enroll', 'setup', 'logout']; /** * Handle an incoming request. diff --git a/app/Http/Middleware/CheckPermissions.php b/app/Http/Middleware/CheckPermissions.php index 48df11ba51..a51484f283 100644 --- a/app/Http/Middleware/CheckPermissions.php +++ b/app/Http/Middleware/CheckPermissions.php @@ -3,7 +3,7 @@ namespace App\Http\Middleware; use Closure; -use Gate; +use Illuminate\Support\Facades\Gate; class CheckPermissions { diff --git a/app/Http/Requests/AssetFileRequest.php b/app/Http/Requests/AssetFileRequest.php index f8631f23ba..697b49f3d6 100644 --- a/app/Http/Requests/AssetFileRequest.php +++ b/app/Http/Requests/AssetFileRequest.php @@ -24,7 +24,7 @@ class AssetFileRequest extends Request $max_file_size = \App\Helpers\Helper::file_upload_max_size(); return [ - 'file.*' => 'required|mimes:png,gif,jpg,svg,jpeg,doc,docx,pdf,txt,zip,rar,xls,xlsx,lic,xml,rtf,webp|max:'.$max_file_size, + 'file.*' => 'required|mimes:png,gif,jpg,svg,jpeg,doc,docx,pdf,txt,zip,rar,xls,xlsx,lic,xml,rtf,json,webp|max:'.$max_file_size, ]; } } diff --git a/app/Http/Requests/CustomFieldRequest.php b/app/Http/Requests/CustomFieldRequest.php index 7c6ba1e97e..0c2ec0ae60 100644 --- a/app/Http/Requests/CustomFieldRequest.php +++ b/app/Http/Requests/CustomFieldRequest.php @@ -26,6 +26,8 @@ class CustomFieldRequest extends FormRequest { $rules = []; + $rules['associate_fieldsets.*'] = 'nullable|integer|exists:custom_fieldsets,id'; + switch ($this->method()) { // Brand new @@ -54,4 +56,11 @@ class CustomFieldRequest extends FormRequest return $rules; } + + public function messages() + { + return [ + 'associate_fieldsets.*.exists' => trans('admin/custom_fields/message/does_not_exist'), + ]; + } } diff --git a/app/Http/Requests/ImageUploadRequest.php b/app/Http/Requests/ImageUploadRequest.php index 1b0b051366..b3cd6e102c 100644 --- a/app/Http/Requests/ImageUploadRequest.php +++ b/app/Http/Requests/ImageUploadRequest.php @@ -7,7 +7,9 @@ use enshrined\svgSanitize\Sanitizer; use Intervention\Image\Facades\Image; use App\Http\Traits\ConvertsBase64ToFiles; use Illuminate\Http\UploadedFile; -use Storage; +use Illuminate\Support\Facades\Storage; +use Intervention\Image\Exception\NotReadableException; + class ImageUploadRequest extends Request { @@ -63,11 +65,13 @@ class ImageUploadRequest extends Request * @param string $path location for uploaded images, defaults to uploads/plural of item type. * @return SnipeModel Target asset is being checked out to. */ - public function handleImages($item, $w = 600, $form_fieldname = null, $path = null, $db_fieldname = 'image') + public function handleImages($item, $w = 600, $form_fieldname = 'image', $path = null, $db_fieldname = 'image') { + $type = strtolower(class_basename(get_class($item))); if (is_null($path)) { + $path = str_plural($type); if ($type == 'assetmodel') { @@ -79,49 +83,47 @@ class ImageUploadRequest extends Request } } - if (is_null($form_fieldname)) { - $form_fieldname = 'image'; - } - - // This is dumb, but we need it for overriding field names for exceptions like avatars and logo uploads - if (is_null($db_fieldname)) { - $use_db_field = $form_fieldname; - } else { - $use_db_field = $db_fieldname; - } - - - // ConvertBase64ToFiles just changes object type, - // as it cannot currently insert files to $this->files if ($this->offsetGet($form_fieldname) instanceof UploadedFile) { - $image=$this->offsetGet($form_fieldname); + $image = $this->offsetGet($form_fieldname); + \Log::debug('Image is an instance of UploadedFile'); + } elseif ($this->hasFile($form_fieldname)) { + $image = $this->file($form_fieldname); + \Log::debug('Just use regular upload for '.$form_fieldname); } else { - if ($this->hasFile($form_fieldname)) { - $image = $this->file($form_fieldname); - } + \Log::debug('No image found for form fieldname: '.$form_fieldname); } if (isset($image)) { - \Log::debug($image); if (!config('app.lock_passwords')) { $ext = $image->getClientOriginalExtension(); - $file_name = $type.'-'.$form_fieldname.'-'.str_random(10).'.'.$ext; + $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->getClientOriginalExtension() !== 'webp') && ($image->getClientOriginalExtension() !== 'svg')) { + \Log::debug('Not an SVG or webp - resize'); \Log::debug('Trying to upload to: '.$path.'/'.$file_name); - $upload = Image::make($image->getRealPath())->resize(null, $w, function ($constraint) { - $constraint->aspectRatio(); - $constraint->upsize(); - }); + + try { + $upload = Image::make($image->getRealPath())->resize(null, $w, function ($constraint) { + $constraint->aspectRatio(); + $constraint->upsize(); + }); + } catch(NotReadableException $e) { + \Log::debug($e); + $validator = \Validator::make([], []); + $validator->errors()->add($form_fieldname, trans('general.unaccepted_image_type', ['mimetype' => $image->getClientMimeType()])); + + throw new \Illuminate\Validation\ValidationException($validator); + } // This requires a string instead of an object, so we use ($string) Storage::disk('public')->put($path.'/'.$file_name, (string) $upload->encode()); + } else { // If the file is a webp, we need to just move it since webp support // needs to be compiled into gd for resizing to be available @@ -146,30 +148,30 @@ class ImageUploadRequest extends Request } // Remove Current image if exists - if (($item->{$use_db_field}!='') && (Storage::disk('public')->exists($path.'/'.$item->{$use_db_field}))) { + if (($item->{$form_fieldname}!='') && (Storage::disk('public')->exists($path.'/'.$item->{$db_fieldname}))) { \Log::debug('A file already exists that we are replacing - we should delete the old one.'); try { - Storage::disk('public')->delete($path.'/'.$item->{$use_db_field}); + Storage::disk('public')->delete($path.'/'.$item->{$form_fieldname}); \Log::debug('Old file '.$path.'/'.$file_name.' has been deleted.'); } catch (\Exception $e) { \Log::debug('Could not delete old file. '.$path.'/'.$file_name.' does not exist?'); } } - $item->{$use_db_field} = $file_name; + $item->{$db_fieldname} = $file_name; } + // If the user isn't uploading anything new but wants to delete their old image, do so - } else { - if ($this->input('image_delete') == '1') { - \Log::debug('Deleting image'); - try { - Storage::disk('public')->delete($path.'/'.$item->{$use_db_field}); - $item->{$use_db_field} = null; - } catch (\Exception $e) { - \Log::debug($e); - } + } elseif ($this->input('image_delete') == '1') { + \Log::debug('Deleting image'); + try { + Storage::disk('public')->delete($path.'/'.$item->{$db_fieldname}); + $item->{$db_fieldname} = null; + } catch (\Exception $e) { + \Log::debug($e); } + } return $item; diff --git a/app/Http/Requests/SaveUserRequest.php b/app/Http/Requests/SaveUserRequest.php index b6e44c3f44..98e561549e 100644 --- a/app/Http/Requests/SaveUserRequest.php +++ b/app/Http/Requests/SaveUserRequest.php @@ -39,14 +39,12 @@ class SaveUserRequest extends FormRequest // Brand new user case 'POST': - { $rules['first_name'] = 'required|string|min:1'; $rules['username'] = 'required_unless:ldap_import,1|string|min:1'; if ($this->request->get('ldap_import') == false) { $rules['password'] = Setting::passwordComplexityRulesSaving('store').'|confirmed'; } break; - } // Save all fields case 'PUT': @@ -57,12 +55,11 @@ class SaveUserRequest extends FormRequest // Save only what's passed case 'PATCH': - { $rules['password'] = Setting::passwordComplexityRulesSaving('update'); break; - } - default:break; + default: + break; } return $rules; diff --git a/app/Http/Requests/SlackSettingsRequest.php b/app/Http/Requests/SlackSettingsRequest.php deleted file mode 100644 index 1f44215198..0000000000 --- a/app/Http/Requests/SlackSettingsRequest.php +++ /dev/null @@ -1,33 +0,0 @@ - 'url|required_with:slack_channel|starts_with:"https://hooks.slack.com"|nullable', - 'slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', - 'slack_botname' => 'string|nullable', - - ]; - } - - -} diff --git a/app/Http/Transformers/AccessoriesTransformer.php b/app/Http/Transformers/AccessoriesTransformer.php index 6f254b3b87..7b79973a9a 100644 --- a/app/Http/Transformers/AccessoriesTransformer.php +++ b/app/Http/Transformers/AccessoriesTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Accessory; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -32,13 +32,14 @@ class AccessoriesTransformer 'model_number' => ($accessory->model_number) ? e($accessory->model_number) : null, 'category' => ($accessory->category) ? ['id' => $accessory->category->id, 'name'=> e($accessory->category->name)] : null, 'location' => ($accessory->location) ? ['id' => $accessory->location->id, 'name'=> e($accessory->location->name)] : null, - 'notes' => ($accessory->notes) ? e($accessory->notes) : null, + 'notes' => ($accessory->notes) ? Helper::parseEscapedMarkedownInline($accessory->notes) : null, 'qty' => ($accessory->qty) ? (int) $accessory->qty : null, 'purchase_date' => ($accessory->purchase_date) ? Helper::getFormattedDateObject($accessory->purchase_date, 'date') : null, 'purchase_cost' => Helper::formatCurrencyOutput($accessory->purchase_cost), 'order_number' => ($accessory->order_number) ? e($accessory->order_number) : null, 'min_qty' => ($accessory->min_amt) ? (int) $accessory->min_amt : null, - 'remaining_qty' => $accessory->numRemaining(), + 'remaining_qty' => (int) $accessory->numRemaining(), + 'users_count' => $accessory->users_count, 'created_at' => Helper::getFormattedDateObject($accessory->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($accessory->updated_at, 'datetime'), @@ -50,6 +51,8 @@ class AccessoriesTransformer 'checkin' => false, 'update' => Gate::allows('update', Accessory::class), 'delete' => Gate::allows('delete', Accessory::class), + 'clone' => Gate::allows('create', Accessory::class), + ]; $permissions_array['user_can_checkout'] = false; diff --git a/app/Http/Transformers/ActionlogsTransformer.php b/app/Http/Transformers/ActionlogsTransformer.php index c58760d4de..7b7a7fc011 100644 --- a/app/Http/Transformers/ActionlogsTransformer.php +++ b/app/Http/Transformers/ActionlogsTransformer.php @@ -60,12 +60,14 @@ class ActionlogsTransformer if ($actionlog->action_type == 'accepted') { $file_url = route('log.storedeula.download', ['filename' => $actionlog->filename]); } else { - if ($actionlog->itemType() == 'asset') { - $file_url = route('show/assetfile', ['assetId' => $actionlog->item->id, 'fileId' => $actionlog->id]); - } elseif ($actionlog->itemType() == 'license') { - $file_url = route('show.licensefile', ['licenseId' => $actionlog->item->id, 'fileId' => $actionlog->id]); - } elseif ($actionlog->itemType() == 'user') { - $file_url = route('show/userfile', ['userId' => $actionlog->item->id, 'fileId' => $actionlog->id]); + if ($actionlog->item) { + if ($actionlog->itemType() == 'asset') { + $file_url = route('show/assetfile', ['assetId' => $actionlog->item->id, 'fileId' => $actionlog->id]); + } elseif ($actionlog->itemType() == 'license') { + $file_url = route('show.licensefile', ['licenseId' => $actionlog->item->id, 'fileId' => $actionlog->id]); + } elseif ($actionlog->itemType() == 'user') { + $file_url = route('show/userfile', ['userId' => $actionlog->item->id, 'fileId' => $actionlog->id]); + } } } } @@ -108,7 +110,7 @@ class ActionlogsTransformer 'type' => e($actionlog->targetType()), ] : null, - 'note' => ($actionlog->note) ? e($actionlog->note): null, + 'note' => ($actionlog->note) ? Helper::parseEscapedMarkedownInline($actionlog->note): null, 'signature_file' => ($actionlog->accept_signature) ? route('log.signature.view', ['filename' => $actionlog->accept_signature ]) : null, 'log_meta' => ((isset($clean_meta)) && (is_array($clean_meta))) ? $clean_meta: null, 'action_date' => ($actionlog->action_date) ? Helper::getFormattedDateObject($actionlog->action_date, 'datetime'): Helper::getFormattedDateObject($actionlog->created_at, 'datetime'), diff --git a/app/Http/Transformers/AssetMaintenancesTransformer.php b/app/Http/Transformers/AssetMaintenancesTransformer.php index 72ec786f68..fa92640823 100644 --- a/app/Http/Transformers/AssetMaintenancesTransformer.php +++ b/app/Http/Transformers/AssetMaintenancesTransformer.php @@ -5,7 +5,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Asset; use App\Models\AssetMaintenance; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class AssetMaintenancesTransformer @@ -45,7 +45,11 @@ class AssetMaintenancesTransformer 'name'=> e($assetmaintenance->asset->location->name), ] : null, - 'notes' => ($assetmaintenance->notes) ? e($assetmaintenance->notes) : null, + 'rtd_location' => ($assetmaintenance->asset->defaultLoc) ? [ + 'id' => (int) $assetmaintenance->asset->defaultLoc->id, + 'name'=> e($assetmaintenance->asset->defaultLoc->name), + ] : null, + 'notes' => ($assetmaintenance->notes) ? Helper::parseEscapedMarkedownInline($assetmaintenance->notes) : null, 'supplier' => ($assetmaintenance->supplier) ? ['id' => $assetmaintenance->supplier->id, 'name'=> e($assetmaintenance->supplier->name)] : null, 'cost' => Helper::formatCurrencyOutput($assetmaintenance->cost), 'asset_maintenance_type' => e($assetmaintenance->asset_maintenance_type), @@ -55,6 +59,7 @@ class AssetMaintenancesTransformer 'user_id' => ($assetmaintenance->admin) ? ['id' => $assetmaintenance->admin->id, 'name'=> e($assetmaintenance->admin->getFullNameAttribute())] : null, 'created_at' => Helper::getFormattedDateObject($assetmaintenance->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($assetmaintenance->updated_at, 'datetime'), + 'is_warranty'=> $assetmaintenance->is_warranty, ]; diff --git a/app/Http/Transformers/AssetModelsTransformer.php b/app/Http/Transformers/AssetModelsTransformer.php index d694ac5b49..f3a658c872 100644 --- a/app/Http/Transformers/AssetModelsTransformer.php +++ b/app/Http/Transformers/AssetModelsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\AssetModel; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -63,7 +63,7 @@ class AssetModelsTransformer 'default_fieldset_values' => $default_field_values, 'eol' => ($assetmodel->eol > 0) ? $assetmodel->eol.' months' : 'None', 'requestable' => ($assetmodel->requestable == '1') ? true : false, - 'notes' => e($assetmodel->notes), + 'notes' => Helper::parseEscapedMarkedownInline($assetmodel->notes), 'created_at' => Helper::getFormattedDateObject($assetmodel->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($assetmodel->updated_at, 'datetime'), 'deleted_at' => Helper::getFormattedDateObject($assetmodel->deleted_at, 'datetime'), diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index a36d0ab89b..869666d7a0 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -5,7 +5,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Asset; use App\Models\Setting; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; @@ -38,7 +38,8 @@ class AssetsTransformer 'byod' => ($asset->byod ? true : false), 'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null, - 'eol' => ($asset->purchase_date != '') ? Helper::getFormattedDateObject($asset->present()->eol_date(), 'date') : null, + 'eol' => (($asset->model) && ($asset->model->eol != '')) ? $asset->model->eol : null, + 'asset_eol_date' => ($asset->asset_eol_date != '') ? Helper::getFormattedDateObject($asset->asset_eol_date, 'date') : null, 'status_label' => ($asset->assetstatus) ? [ 'id' => (int) $asset->assetstatus->id, 'name'=> e($asset->assetstatus->name), @@ -57,7 +58,7 @@ class AssetsTransformer 'id' => (int) $asset->supplier->id, 'name'=> e($asset->supplier->name), ] : null, - 'notes' => ($asset->notes) ? e($asset->notes) : null, + 'notes' => ($asset->notes) ? Helper::parseEscapedMarkedownInline($asset->notes) : null, 'order_number' => ($asset->order_number) ? e($asset->order_number) : null, 'company' => ($asset->company) ? [ 'id' => (int) $asset->company->id, @@ -83,7 +84,7 @@ class AssetsTransformer 'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date, 'date'), 'deleted_at' => Helper::getFormattedDateObject($asset->deleted_at, 'datetime'), 'purchase_date' => Helper::getFormattedDateObject($asset->purchase_date, 'date'), - 'age' => $asset->purchase_date ? Helper::AgeFormat($asset->purchase_date) : '', + 'age' => $asset->purchase_date ? $asset->purchase_date->diffForHumans() : '', 'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'), 'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'), 'purchase_cost' => Helper::formatCurrencyOutput($asset->purchase_cost), @@ -91,6 +92,7 @@ class AssetsTransformer 'checkout_counter' => (int) $asset->checkout_counter, 'requests_counter' => (int) $asset->requests_counter, 'user_can_checkout' => (bool) $asset->availableForCheckout(), + 'book_value' => Helper::formatCurrencyOutput($asset->getLinearDepreciatedValue()), ]; diff --git a/app/Http/Transformers/CategoriesTransformer.php b/app/Http/Transformers/CategoriesTransformer.php index 5ea8ee3e01..d5e1ceb51b 100644 --- a/app/Http/Transformers/CategoriesTransformer.php +++ b/app/Http/Transformers/CategoriesTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Category; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -38,6 +38,9 @@ class CategoriesTransformer case 'component': $category->item_count = $category->components_count; break; + case 'license': + $category->item_count = $category->licenses_count; + break; default: $category->item_count = 0; } @@ -47,7 +50,7 @@ class CategoriesTransformer 'id' => (int) $category->id, 'name' => e($category->name), 'image' => ($category->image) ? Storage::disk('public')->url('categories/'.e($category->image)) : null, - 'category_type' => ucwords(e($category->category_type)), + 'category_type' => Helper::categoryTypeList($category->category_type), 'has_eula' => ($category->getEula() ? true : false), 'use_default_eula' => ($category->use_default_eula=='1' ? true : false), 'eula' => ($category->getEula()), diff --git a/app/Http/Transformers/CompaniesTransformer.php b/app/Http/Transformers/CompaniesTransformer.php index bafe1f9f68..4726630c4e 100644 --- a/app/Http/Transformers/CompaniesTransformer.php +++ b/app/Http/Transformers/CompaniesTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Company; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -26,6 +26,8 @@ class CompaniesTransformer $array = [ 'id' => (int) $company->id, 'name' => e($company->name), + 'phone' => ($company->phone!='') ? e($company->phone): null, + 'fax' => ($company->fax!='') ? e($company->fax): null, 'image' => ($company->image) ? Storage::disk('public')->url('companies/'.e($company->image)) : null, 'created_at' => Helper::getFormattedDateObject($company->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($company->updated_at, 'datetime'), diff --git a/app/Http/Transformers/ComponentsAssetsTransformer.php b/app/Http/Transformers/ComponentsAssetsTransformer.php index c2c7784fe4..437d00ca22 100644 --- a/app/Http/Transformers/ComponentsAssetsTransformer.php +++ b/app/Http/Transformers/ComponentsAssetsTransformer.php @@ -3,7 +3,7 @@ namespace App\Http\Transformers; use App\Models\Asset; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class ComponentsAssetsTransformer diff --git a/app/Http/Transformers/ComponentsTransformer.php b/app/Http/Transformers/ComponentsTransformer.php index 20e2fc4abb..d18870bdc3 100644 --- a/app/Http/Transformers/ComponentsTransformer.php +++ b/app/Http/Transformers/ComponentsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Component; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -37,6 +37,7 @@ class ComponentsTransformer 'id' => (int) $component->category->id, 'name' => e($component->category->name), ] : null, + 'supplier' => ($component->supplier) ? ['id' => $component->supplier->id, 'name'=> e($component->supplier->name)] : null, 'order_number' => e($component->order_number), 'purchase_date' => Helper::getFormattedDateObject($component->purchase_date, 'date'), 'purchase_cost' => Helper::formatCurrencyOutput($component->purchase_cost), @@ -45,7 +46,7 @@ class ComponentsTransformer 'id' => (int) $component->company->id, 'name' => e($component->company->name), ] : null, - 'notes' => ($component->notes) ? e($component->notes) : null, + 'notes' => ($component->notes) ? Helper::parseEscapedMarkedownInline($component->notes) : null, 'created_at' => Helper::getFormattedDateObject($component->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($component->updated_at, 'datetime'), 'user_can_checkout' => ($component->numRemaining() > 0) ? 1 : 0, diff --git a/app/Http/Transformers/ConsumablesTransformer.php b/app/Http/Transformers/ConsumablesTransformer.php index b6c3d18748..f23ebc0382 100644 --- a/app/Http/Transformers/ConsumablesTransformer.php +++ b/app/Http/Transformers/ConsumablesTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Consumable; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -31,6 +31,7 @@ class ConsumablesTransformer 'item_no' => e($consumable->item_no), 'location' => ($consumable->location) ? ['id' => (int) $consumable->location->id, 'name' => e($consumable->location->name)] : null, 'manufacturer' => ($consumable->manufacturer) ? ['id' => (int) $consumable->manufacturer->id, 'name' => e($consumable->manufacturer->name)] : null, + 'supplier' => ($consumable->supplier) ? ['id' => $consumable->supplier->id, 'name'=> e($consumable->supplier->name)] : null, 'min_amt' => (int) $consumable->min_amt, 'model_number' => ($consumable->model_number != '') ? e($consumable->model_number) : null, 'remaining' => $consumable->numRemaining(), @@ -38,7 +39,7 @@ class ConsumablesTransformer 'purchase_cost' => Helper::formatCurrencyOutput($consumable->purchase_cost), 'purchase_date' => Helper::getFormattedDateObject($consumable->purchase_date, 'date'), 'qty' => (int) $consumable->qty, - 'notes' => ($consumable->notes) ? e($consumable->notes) : null, + 'notes' => ($consumable->notes) ? Helper::parseEscapedMarkedownInline($consumable->notes) : null, 'created_at' => Helper::getFormattedDateObject($consumable->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($consumable->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/CustomFieldsTransformer.php b/app/Http/Transformers/CustomFieldsTransformer.php index 9ada5183ab..d6401a3e5e 100644 --- a/app/Http/Transformers/CustomFieldsTransformer.php +++ b/app/Http/Transformers/CustomFieldsTransformer.php @@ -48,6 +48,8 @@ class CustomFieldsTransformer 'type' => e($field->element), 'required' => (($field->pivot) && ($field->pivot->required=='1')) ? true : false, 'display_in_user_view' => ($field->display_in_user_view =='1') ? true : false, + 'auto_add_to_fieldsets' => ($field->auto_add_to_fieldsets == '1') ? true : false, + 'show_in_listview' => ($field->show_in_listview == '1') ? true : false, 'created_at' => Helper::getFormattedDateObject($field->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($field->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/DepartmentsTransformer.php b/app/Http/Transformers/DepartmentsTransformer.php index 4f80249adf..546cedf04f 100644 --- a/app/Http/Transformers/DepartmentsTransformer.php +++ b/app/Http/Transformers/DepartmentsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Department; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -26,6 +26,8 @@ class DepartmentsTransformer $array = [ 'id' => (int) $department->id, 'name' => e($department->name), + 'phone' => ($department->phone!='') ? e($department->phone): null, + 'fax' => ($department->fax!='') ? e($department->fax): null, 'image' => ($department->image) ? Storage::disk('public')->url(app('departments_upload_url').e($department->image)) : null, 'company' => ($department->company) ? [ 'id' => (int) $department->company->id, diff --git a/app/Http/Transformers/DepreciationsTransformer.php b/app/Http/Transformers/DepreciationsTransformer.php index 71aa6c97f7..78a01b4c1e 100644 --- a/app/Http/Transformers/DepreciationsTransformer.php +++ b/app/Http/Transformers/DepreciationsTransformer.php @@ -5,7 +5,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Depreciable; use App\Models\Depreciation; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class DepreciationsTransformer diff --git a/app/Http/Transformers/GroupsTransformer.php b/app/Http/Transformers/GroupsTransformer.php index 313ad113ec..81755afa43 100644 --- a/app/Http/Transformers/GroupsTransformer.php +++ b/app/Http/Transformers/GroupsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Group; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class GroupsTransformer diff --git a/app/Http/Transformers/LicenseSeatsTransformer.php b/app/Http/Transformers/LicenseSeatsTransformer.php index 126361b17a..f82fd3a49f 100644 --- a/app/Http/Transformers/LicenseSeatsTransformer.php +++ b/app/Http/Transformers/LicenseSeatsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Models\License; use App\Models\LicenseSeat; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class LicenseSeatsTransformer diff --git a/app/Http/Transformers/LicensesTransformer.php b/app/Http/Transformers/LicensesTransformer.php index 3fb2a8943b..f68ad738d8 100644 --- a/app/Http/Transformers/LicensesTransformer.php +++ b/app/Http/Transformers/LicensesTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\License; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class LicensesTransformer @@ -34,7 +34,7 @@ class LicensesTransformer 'depreciation' => ($license->depreciation) ? ['id' => (int) $license->depreciation->id,'name'=> e($license->depreciation->name)] : null, 'purchase_cost' => Helper::formatCurrencyOutput($license->purchase_cost), 'purchase_cost_numeric' => $license->purchase_cost, - 'notes' => e($license->notes), + 'notes' => Helper::parseEscapedMarkedownInline($license->notes), 'expiration_date' => Helper::getFormattedDateObject($license->expiration_date, 'date'), 'seats' => (int) $license->seats, 'free_seats_count' => (int) $license->free_seats_count, @@ -56,7 +56,7 @@ class LicensesTransformer 'checkin' => Gate::allows('checkin', License::class), 'clone' => Gate::allows('create', License::class), 'update' => Gate::allows('update', License::class), - 'delete' => Gate::allows('delete', License::class), + 'delete' => (Gate::allows('delete', License::class) && ($license->seats == $license->availCount()->count())) ? true : false, ]; $array += $permissions_array; diff --git a/app/Http/Transformers/LocationsTransformer.php b/app/Http/Transformers/LocationsTransformer.php index a55c41b350..635a90cbc7 100644 --- a/app/Http/Transformers/LocationsTransformer.php +++ b/app/Http/Transformers/LocationsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Location; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -43,6 +43,8 @@ class LocationsTransformer 'state' => ($location->state) ? e($location->state) : null, 'country' => ($location->country) ? e($location->country) : null, 'zip' => ($location->zip) ? e($location->zip) : null, + 'phone' => ($location->phone!='') ? e($location->phone): null, + 'fax' => ($location->fax!='') ? e($location->fax): null, 'assigned_assets_count' => (int) $location->assigned_assets_count, 'assets_count' => (int) $location->assets_count, 'rtd_assets_count' => (int) $location->rtd_assets_count, @@ -63,6 +65,7 @@ class LocationsTransformer $permissions_array['available_actions'] = [ 'update' => Gate::allows('update', Location::class) ? true : false, 'delete' => $location->isDeletable(), + 'clone' => (Gate::allows('create', Location::class) && ($location->deleted_at == '')), ]; $array += $permissions_array; diff --git a/app/Http/Transformers/ManufacturersTransformer.php b/app/Http/Transformers/ManufacturersTransformer.php index a7ac0e6a42..9c84fd50fe 100644 --- a/app/Http/Transformers/ManufacturersTransformer.php +++ b/app/Http/Transformers/ManufacturersTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Manufacturer; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -29,6 +29,7 @@ class ManufacturersTransformer 'url' => e($manufacturer->url), 'image' => ($manufacturer->image) ? Storage::disk('public')->url('manufacturers/'.e($manufacturer->image)) : null, 'support_url' => e($manufacturer->support_url), + 'warranty_lookup_url' => e($manufacturer->warranty_lookup_url), 'support_phone' => e($manufacturer->support_phone), 'support_email' => e($manufacturer->support_email), 'assets_count' => (int) $manufacturer->assets_count, diff --git a/app/Http/Transformers/PredefinedKitsTransformer.php b/app/Http/Transformers/PredefinedKitsTransformer.php index ebd91aef0c..a5d37e5c72 100644 --- a/app/Http/Transformers/PredefinedKitsTransformer.php +++ b/app/Http/Transformers/PredefinedKitsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Models\PredefinedKit; use App\Models\SnipeModel; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; /** diff --git a/app/Http/Transformers/StatuslabelsTransformer.php b/app/Http/Transformers/StatuslabelsTransformer.php index cc229a590f..41dd336068 100644 --- a/app/Http/Transformers/StatuslabelsTransformer.php +++ b/app/Http/Transformers/StatuslabelsTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Statuslabel; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class StatuslabelsTransformer diff --git a/app/Http/Transformers/SuppliersTransformer.php b/app/Http/Transformers/SuppliersTransformer.php index 76b2a01514..1fdc93c193 100644 --- a/app/Http/Transformers/SuppliersTransformer.php +++ b/app/Http/Transformers/SuppliersTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\Supplier; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Storage; @@ -41,7 +41,9 @@ class SuppliersTransformer 'assets_count' => (int) $supplier->assets_count, 'accessories_count' => (int) $supplier->accessories_count, 'licenses_count' => (int) $supplier->licenses_count, - 'notes' => ($supplier->notes) ? e($supplier->notes) : null, + 'consumables_count' => (int) $supplier->consumables_count, + 'components_count' => (int) $supplier->components_count, + 'notes' => ($supplier->notes) ? Helper::parseEscapedMarkedownInline($supplier->notes) : null, 'created_at' => Helper::getFormattedDateObject($supplier->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($supplier->updated_at, 'datetime'), diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index f8636cc574..76c0288073 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -4,7 +4,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; use App\Models\User; -use Gate; +use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; class UsersTransformer @@ -36,6 +36,7 @@ class UsersTransformer 'name'=> e($user->manager->first_name).' '.e($user->manager->last_name), ] : null, 'jobtitle' => ($user->jobtitle) ? e($user->jobtitle) : null, + 'vip' => ($user->vip == '1') ? true : false, 'phone' => ($user->phone) ? e($user->phone) : null, 'website' => ($user->website) ? e($user->website) : null, 'address' => ($user->address) ? e($user->address) : null, @@ -52,9 +53,10 @@ class UsersTransformer 'id' => (int) $user->userloc->id, 'name'=> e($user->userloc->name), ] : null, - 'notes'=> e($user->notes), + 'notes'=> Helper::parseEscapedMarkedownInline($user->notes), 'permissions' => $user->decodePermissions(), 'activated' => ($user->activated == '1') ? true : false, + 'autoassign_licenses' => ($user->autoassign_licenses == '1') ? true : false, 'ldap_import' => ($user->ldap_import == '1') ? true : false, 'two_factor_enrolled' => ($user->two_factor_active_and_enrolled()) ? true : false, 'two_factor_optin' => ($user->two_factor_active()) ? true : false, diff --git a/app/Importer/AssetImporter.php b/app/Importer/AssetImporter.php index 10f3883bcc..be19455618 100644 --- a/app/Importer/AssetImporter.php +++ b/app/Importer/AssetImporter.php @@ -12,7 +12,10 @@ class AssetImporter extends ItemImporter public function __construct($filename) { parent::__construct($filename); - $this->defaultStatusLabelId = Statuslabel::first()->id; + + if (!is_null(Statuslabel::first())) { + $this->defaultStatusLabelId = Statuslabel::first()->id; + } } protected function handle($row) @@ -60,7 +63,7 @@ class AssetImporter extends ItemImporter $asset_tag = Asset::autoincrement_asset(); } - $asset = Asset::where(['asset_tag'=> $asset_tag])->first(); + $asset = Asset::where(['asset_tag'=> (string) $asset_tag])->first(); if ($asset) { if (! $this->updating) { $this->log('A matching Asset '.$asset_tag.' already exists'); @@ -76,10 +79,12 @@ class AssetImporter extends ItemImporter } $this->item['notes'] = $this->findCsvMatch($row, 'asset_notes'); $this->item['image'] = $this->findCsvMatch($row, 'image'); - $this->item['requestable'] = $this->fetchHumanBoolean($this->findCsvMatch($row, 'requestable')); - $asset->requestable = $this->fetchHumanBoolean($this->findCsvMatch($row, 'requestable')); + $this->item['requestable'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'requestable')) == 1) ? '1' : 0; + $asset->requestable = $this->item['requestable']; $this->item['warranty_months'] = intval($this->findCsvMatch($row, 'warranty_months')); $this->item['model_id'] = $this->createOrFetchAssetModel($row); + $this->item['byod'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'byod')) == 1) ? '1' : 0; + // If no status ID is found if (! array_key_exists('status_id', $this->item) && ! $editingAsset) { @@ -112,6 +117,11 @@ class AssetImporter extends ItemImporter $item['next_audit_date'] = $this->item['next_audit_date']; } + $item['asset_eol_date'] = null; + if (isset($this->item['asset_eol_date'])) { + $item['asset_eol_date'] = $this->item['asset_eol_date']; + } + if ($editingAsset) { $asset->update($item); } else { @@ -125,17 +135,16 @@ class AssetImporter extends ItemImporter } } - //FIXME: this disables model validation. Need to find a way to avoid double-logs without breaking everything. - // $asset->unsetEventDispatcher(); + if ($asset->save()) { - $asset->logCreate('Imported using csv importer'); + $asset->logCreate(trans('general.importer.import_note')); $this->log('Asset '.$this->item['name'].' with serial number '.$this->item['serial'].' was created'); // If we have a target to checkout to, lets do so. //-- user_id is a property of the abstract class Importer, which this class inherits from and it's setted by //-- the class that needs to use it (command importer or GUI importer inside the project). if (isset($target)) { - $asset->fresh()->checkOut($target, $this->user_id, date('Y-m-d H:i:s')); + $asset->fresh()->checkOut($target, $this->user_id, date('Y-m-d H:i:s'), null, $asset->notes, $asset->name); } return; diff --git a/app/Importer/Importer.php b/app/Importer/Importer.php index 1ee90b399c..4c60f0beed 100644 --- a/app/Importer/Importer.php +++ b/app/Importer/Importer.php @@ -27,57 +27,14 @@ abstract class Importer protected $updating; /** * Default Map of item fields->csv names + * + * This has been moved into Livewire/Importer.php to be more granular. + * @todo - remove references to this property since we don't use it anymore. + * * @var array */ private $defaultFieldMap = [ - 'asset_tag' => 'asset tag', - 'activated' => 'activated', - 'category' => 'category', - 'checkout_class' => 'checkout type', // Supports Location or User for assets. Using checkout_class instead of checkout_type because type exists on asset already. - 'checkout_location' => 'checkout location', - 'company' => 'company', - 'item_name' => 'item name', - 'item_number' => 'item number', - 'image' => 'image', - 'expiration_date' => 'expiration date', - 'location' => 'location', - 'notes' => 'notes', - 'license_email' => 'licensed to email', - 'license_name' => 'licensed to name', - 'maintained' => 'maintained', - 'manufacturer' => 'manufacturer', - 'asset_model' => 'model name', - 'model_number' => 'model number', - 'order_number' => 'order number', - 'purchase_cost' => 'purchase cost', - 'purchase_date' => 'purchase date', - 'purchase_order' => 'purchase order', - 'qty' => 'quantity', - 'reassignable' => 'reassignable', - 'requestable' => 'requestable', - 'seats' => 'seats', - 'serial' => 'serial number', - 'status' => 'status', - 'supplier' => 'supplier', - 'termination_date' => 'termination date', - 'warranty_months' => 'warranty', - 'full_name' => 'full name', - 'email' => 'email', - 'username' => 'username', - 'address' => 'address', - 'city' => 'city', - 'state' => 'state', - 'country' => 'country', - 'jobtitle' => 'job title', - 'employee_num' => 'employee number', - 'phone_number' => 'phone number', - 'first_name' => 'first name', - 'last_name' => 'last name', - 'department' => 'department', - 'manager_first_name' => 'manager first name', - 'manager_last_name' => 'manager last name', - 'min_amt' => 'minimum quantity', - 'remote' => 'remote', + ]; /** * Map of item fields->csv names @@ -119,7 +76,7 @@ abstract class Importer } else { $this->csv = Reader::createFromString($file); } - $this->tempPassword = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 20); + $this->tempPassword = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 40); } // Cached Values for import lookups @@ -198,11 +155,11 @@ abstract class Importer $val = $default; $key = $this->lookupCustomKey($key); - $this->log("Custom Key: ${key}"); + // $this->log("Custom Key: ${key}"); if (array_key_exists($key, $array)) { $val = Encoding::toUTF8(trim($array[$key])); } - $this->log("${key}: ${val}"); + //$this->log("${key}: ${val}"); return $val; } @@ -280,10 +237,13 @@ abstract class Importer * @return User Model w/ matching name * @internal param array $user_array User details parsed from csv */ - protected function createOrFetchUser($row) + protected function createOrFetchUser($row, $type = 'user') { + $user_array = [ 'full_name' => $this->findCsvMatch($row, 'full_name'), + 'first_name' => $this->findCsvMatch($row, 'first_name'), + 'last_name' => $this->findCsvMatch($row, 'last_name'), 'email' => $this->findCsvMatch($row, 'email'), 'manager_id'=> '', 'department_id' => '', @@ -292,48 +252,53 @@ abstract class Importer 'remote' => $this->fetchHumanBoolean(($this->findCsvMatch($row, 'remote'))), ]; - // Maybe we're lucky and the user already exists. - if ($user = User::where('username', $user_array['username'])->first()) { - $this->log('User '.$user_array['username'].' already exists'); - - return $user; + if ($type == 'manager') { + $user_array['full_name'] = $this->findCsvMatch($row, 'manager'); + $user_array['username'] = $this->findCsvMatch($row, 'manager_username'); } - // If the full name is empty, bail out--we need this to extract first name (at the very least) - if (empty($user_array['full_name'])) { - $this->log('Insufficient user data provided (Full name is required)- skipping user creation, just adding asset'); + // Maybe we're lucky and the username was passed and it already exists. + if (!empty($user_array['username'])) { + if ($user = User::where('username', $user_array['username'])->first()) { + $this->log('User '.$user_array['username'].' already exists'); + return $user; + } + } + + // If the full name and username is empty, bail out--we need this to extract first name (at the very least) + if ((empty($user_array['username'])) && (empty($user_array['full_name'])) && (empty($user_array['first_name']))) { + $this->log('Insufficient user data provided (Full name, first name or username is required) - skipping user creation.'); + \Log::debug('User array: '); + \Log::debug(print_r($user_array, true)); + \Log::debug(print_r($row, true)); return false; } - // Is the user actually an ID? - if ($user = $this->findUserByNumber($user_array['full_name'])) { - return $user; - } - $this->log('User does not appear to be an id with number: '.$user_array['full_name'].'. Continuing through our processes'); // Populate email if it does not exist. if (empty($user_array['email'])) { $user_array['email'] = User::generateEmailFromFullName($user_array['full_name']); } - $user_formatted_array = User::generateFormattedNameFromFullName($user_array['full_name'], Setting::getSettings()->username_format); - $user_array['first_name'] = $user_formatted_array['first_name']; - $user_array['last_name'] = $user_formatted_array['last_name']; + if (empty($user_array['first_name'])) { + // Get some fields for first name and last name based off of full name + $user_formatted_array = User::generateFormattedNameFromFullName($user_array['full_name'], Setting::getSettings()->username_format); + $user_array['first_name'] = $user_formatted_array['first_name']; + $user_array['last_name'] = $user_formatted_array['last_name']; + } if (empty($user_array['username'])) { $user_array['username'] = $user_formatted_array['username']; if ($this->usernameFormat == 'email') { $user_array['username'] = $user_array['email']; } - } - // Does this ever actually fire?? - // Check for a matching user after trying to guess username. - if ($user = User::where('username', $user_array['username'])->first()) { - $this->log('User '.$user_array['username'].' already exists'); - - return $user; + // Check for a matching username one more time after trying to guess username. + if ($user = User::where('username', $user_array['username'])->first()) { + $this->log('User '.$user_array['username'].' already exists'); + return $user; + } } // If at this point we have not found a username or first name, bail out in shame. @@ -341,7 +306,7 @@ abstract class Importer return false; } - // No Luck, let's create one. + // No luck finding a user on username or first name, let's create one. $user = new User; $user->first_name = $user_array['first_name']; $user->last_name = $user_array['last_name']; @@ -356,9 +321,9 @@ abstract class Importer if ($user->save()) { $this->log('User '.$user_array['username'].' created'); - return $user; } + $this->logError($user, 'User "'.$user_array['username'].'" was not able to be created.'); return false; diff --git a/app/Importer/ItemImporter.php b/app/Importer/ItemImporter.php index d332200368..9e80cb9572 100644 --- a/app/Importer/ItemImporter.php +++ b/app/Importer/ItemImporter.php @@ -60,8 +60,8 @@ class ItemImporter extends Importer $this->item['department_id'] = $this->createOrFetchDepartment($item_department); } - $item_manager_first_name = $this->findCsvMatch($row, 'manage_first_name'); - $item_manager_last_name = $this->findCsvMatch($row, 'manage_last_name'); + $item_manager_first_name = $this->findCsvMatch($row, 'manager_first_name'); + $item_manager_last_name = $this->findCsvMatch($row, 'manager_last_name'); if ($this->shouldUpdateField($item_manager_first_name)) { $this->item['manager_id'] = $this->fetchManager($item_manager_first_name, $item_manager_last_name); @@ -74,7 +74,7 @@ class ItemImporter extends Importer $this->item['purchase_date'] = null; if ($this->findCsvMatch($row, 'purchase_date') != '') { - $this->item['purchase_date'] = date('Y-m-d 00:00:01', strtotime($this->findCsvMatch($row, 'purchase_date'))); + $this->item['purchase_date'] = date('Y-m-d', strtotime($this->findCsvMatch($row, 'purchase_date'))); } $this->item['last_audit_date'] = null; @@ -87,10 +87,15 @@ class ItemImporter extends Importer $this->item['next_audit_date'] = date('Y-m-d', strtotime($this->findCsvMatch($row, 'next_audit_date'))); } + $this->item['asset_eol_date'] = null; + if ($this->findCsvMatch($row, 'asset_eol_date') != '') { + $this->item['asset_eol_date'] = date('Y-m-d', strtotime($this->findCsvMatch($row, 'asset_eol_date'))); + } + $this->item['qty'] = $this->findCsvMatch($row, 'quantity'); $this->item['requestable'] = $this->findCsvMatch($row, 'requestable'); $this->item['user_id'] = $this->user_id; - $this->item['serial'] = $this->findCsvMatch($row, 'serial number'); + $this->item['serial'] = $this->findCsvMatch($row, 'serial'); // NO need to call this method if we're running the user import. // TODO: Merge these methods. $this->item['checkout_class'] = $this->findCsvMatch($row, 'checkout_class'); @@ -103,13 +108,13 @@ class ItemImporter extends Importer /** * Parse row to determine what (if anything) we should checkout to. * @param array $row CSV Row being parsed - * @return SnipeModel Model to be checked out to + * @return ?SnipeModel Model to be checked out to */ protected function determineCheckout($row) { - // We only support checkout-to-location for asset, so short circuit otherwise. - if (get_class($this) != AssetImporter::class) { - return $this->createOrFetchUser($row); + // Locations don't get checked out to anyone/anything + if (get_class($this) == LocationImporter::class) { + return; } if (strtolower($this->item['checkout_class']) === 'location' && $this->findCsvMatch($row, 'checkout_location') != null ) { @@ -222,11 +227,11 @@ class ItemImporter extends Importer $item = $this->sanitizeItemForStoring($asset_model, $editingModel); $item['name'] = $asset_model_name; $item['notes'] = $this->findCsvMatch($row, 'model_notes'); - + if(!empty($asset_modelNumber)){ $item['model_number'] = $asset_modelNumber; } - + $asset_model->update($item); $asset_model->save(); $this->log('Asset Model Updated'); diff --git a/app/Importer/LicenseImporter.php b/app/Importer/LicenseImporter.php index 894c50bbfa..ce07585ab5 100644 --- a/app/Importer/LicenseImporter.php +++ b/app/Importer/LicenseImporter.php @@ -27,15 +27,24 @@ class LicenseImporter extends ItemImporter * @since 4.0 * @param array $row * @return License|mixed|null + * updated @author Jes Vinsmoke + * @since 6.1 + * */ public function createLicenseIfNotExists(array $row) { $editingLicense = false; - $license = License::where('name', $this->item['name']) + $license = License::where('serial', $this->item['serial'])->where('name', $this->item['name']) ->first(); if ($license) { if (! $this->updating) { - $this->log('A matching License '.$this->item['name'].' with serial '.$this->item['serial'].' already exists'); + + if($this->item['serial'] != "") { + $this->log('A matching License ' . $this->item['name'] . ' with serial ' . $this->item['serial'] . ' already exists'); + } + else { + $this->log('A matching License ' . $this->item['name'] . ' with no serial number already exists'); + } return; } @@ -57,6 +66,12 @@ class LicenseImporter extends ItemImporter $this->item['maintained'] = $this->findCsvMatch($row, 'maintained'); $this->item['purchase_order'] = $this->findCsvMatch($row, 'purchase_order'); $this->item['reassignable'] = $this->findCsvMatch($row, 'reassignable'); + $this->item['manufacturer'] = $this->createOrFetchManufacturer($this->findCsvMatch($row, 'manufacturer')); + + if($this->item['reassignable'] == "") + { + $this->item['reassignable'] = 1; + } $this->item['seats'] = $this->findCsvMatch($row, 'seats'); $this->item["termination_date"] = null; @@ -80,6 +95,11 @@ class LicenseImporter extends ItemImporter $checkout_target = $this->item['checkout_target']; $asset = Asset::where('asset_tag', $asset_tag)->first(); $targetLicense = $license->freeSeat(); + + if (is_null($targetLicense)){ + return; + } + if ($checkout_target) { $targetLicense->assigned_to = $checkout_target->id; $targetLicense->user_id = Auth::id(); diff --git a/app/Importer/LocationImporter.php b/app/Importer/LocationImporter.php new file mode 100644 index 0000000000..25140abe00 --- /dev/null +++ b/app/Importer/LocationImporter.php @@ -0,0 +1,102 @@ +createLocationIfNotExists($row); + } + + /** + * Create a location if a duplicate does not exist. + * @todo Investigate how this should interact with Importer::createLocationIfNotExists + * + * @author A. Gianotto + * @since 6.1.0 + * @param array $row + */ + public function createLocationIfNotExists(array $row) + { + + $editingLocation = false; + $location = Location::where('name', '=', $this->findCsvMatch($row, 'name'))->first(); + + if ($location) { + if (! $this->updating) { + $this->log('A matching Location '.$this->item['name'].' already exists'); + return; + } + + $this->log('Updating Location'); + $editingLocation = true; + } else { + $this->log('No Matching Location, Create a new one'); + $location = new Location; + } + + // Pull the records from the CSV to determine their values + $this->item['name'] = $this->findCsvMatch($row, 'name'); + $this->item['address'] = $this->findCsvMatch($row, 'address'); + $this->item['address2'] = $this->findCsvMatch($row, 'address2'); + $this->item['city'] = $this->findCsvMatch($row, 'city'); + $this->item['state'] = $this->findCsvMatch($row, 'state'); + $this->item['country'] = $this->findCsvMatch($row, 'country'); + $this->item['zip'] = $this->findCsvMatch($row, 'zip'); + $this->item['currency'] = $this->findCsvMatch($row, 'currency'); + $this->item['ldap_ou'] = $this->findCsvMatch($row, 'ldap_ou'); + $this->item['manager'] = $this->findCsvMatch($row, 'manager'); + $this->item['manager_username'] = $this->findCsvMatch($row, 'manager_username'); + $this->item['user_id'] = \Auth::user()->id; + + if ($this->findCsvMatch($row, 'parent_location')) { + $this->item['parent_id'] = $this->createOrFetchLocation($this->findCsvMatch($row, 'parent_location')); + } + + if (!empty($this->item['manager'])) { + if ($manager = $this->createOrFetchUser($row, 'manager')) { + $this->item['manager_id'] = $manager->id; + } + } + + \Log::debug('Item array is: '); + \Log::debug(print_r($this->item, true)); + + + if ($editingLocation) { + \Log::debug('Updating existing location'); + $location->update($this->sanitizeItemForUpdating($location)); + } else { + \Log::debug('Creating location'); + $location->fill($this->sanitizeItemForStoring($location)); + } + + if ($location->save()) { + $this->log('Location '.$location->name.' created or updated from CSV import'); + return $location; + + } else { + \Log::debug($location->getErrors()); + return $location->errors; + } + + + } +} \ No newline at end of file diff --git a/app/Importer/UserImporter.php b/app/Importer/UserImporter.php index b062c16bca..e13d4c4cce 100644 --- a/app/Importer/UserImporter.php +++ b/app/Importer/UserImporter.php @@ -42,22 +42,30 @@ class UserImporter extends ItemImporter public function createUserIfNotExists(array $row) { // Pull the records from the CSV to determine their values + $this->item['id'] = $this->findCsvMatch($row, 'id'); $this->item['username'] = $this->findCsvMatch($row, 'username'); $this->item['first_name'] = $this->findCsvMatch($row, 'first_name'); $this->item['last_name'] = $this->findCsvMatch($row, 'last_name'); $this->item['email'] = $this->findCsvMatch($row, 'email'); + $this->item['gravatar'] = $this->findCsvMatch($row, 'gravatar'); $this->item['phone'] = $this->findCsvMatch($row, 'phone_number'); + $this->item['website'] = $this->findCsvMatch($row, 'website'); $this->item['jobtitle'] = $this->findCsvMatch($row, 'jobtitle'); $this->item['address'] = $this->findCsvMatch($row, 'address'); $this->item['city'] = $this->findCsvMatch($row, 'city'); $this->item['state'] = $this->findCsvMatch($row, 'state'); $this->item['country'] = $this->findCsvMatch($row, 'country'); + $this->item['start_date'] = $this->findCsvMatch($row, 'start_date'); + $this->item['end_date'] = $this->findCsvMatch($row, 'end_date'); $this->item['zip'] = $this->findCsvMatch($row, 'zip'); $this->item['activated'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'activated')) == 1) ? '1' : 0; $this->item['employee_num'] = $this->findCsvMatch($row, 'employee_num'); $this->item['department_id'] = $this->createOrFetchDepartment($this->findCsvMatch($row, 'department')); $this->item['manager_id'] = $this->fetchManager($this->findCsvMatch($row, 'manager_first_name'), $this->findCsvMatch($row, 'manager_last_name')); $this->item['remote'] =($this->fetchHumanBoolean($this->findCsvMatch($row, 'remote')) ==1 ) ? '1' : 0; + $this->item['vip'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'vip')) ==1 ) ? '1' : 0; + $this->item['autoassign_licenses'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'autoassign_licenses')) ==1 ) ? '1' : 0; + $user_department = $this->findCsvMatch($row, 'department'); if ($this->shouldUpdateField($user_department)) { @@ -69,13 +77,18 @@ class UserImporter extends ItemImporter $user_formatted_array = User::generateFormattedNameFromFullName($user_full_name, Setting::getSettings()->username_format); $this->item['username'] = $user_formatted_array['username']; } - - $user = User::where('username', $this->item['username'])->first(); - if ($user) { - if (! $this->updating) { - $this->log('A matching User '.$this->item['name'].' already exists. '); - \Log::debug('A matching User '.$this->item['name'].' already exists. '); + // Check if a numeric ID was passed. If it does, use that above all else. + if ((array_key_exists('id', $this->item) && ($this->item['id'] != "") && (is_numeric($this->item['id'])))) { + $user = User::find($this->item['id']); + } else { + $user = User::where('username', $this->item['username'])->first(); + } + + if ($user) { + + if (! $this->updating) { + \Log::debug('A matching User '.$this->item['name'].' already exists. '); return; } $this->log('Updating User'); @@ -102,7 +115,6 @@ class UserImporter extends ItemImporter $user->fill($this->sanitizeItemForStoring($user)); if ($user->save()) { - // $user->logCreate('Imported using CSV Importer'); $this->log('User '.$this->item['name'].' was created'); if (($user->email) && ($user->activated == '1')) { diff --git a/app/Importer/import_mappings.md b/app/Importer/import_mappings.md deleted file mode 100644 index 211a68bc9c..0000000000 --- a/app/Importer/import_mappings.md +++ /dev/null @@ -1,43 +0,0 @@ -| CSV | Item | Applicable Types | -|---------------------|------------------|-------------------------------------------| -| activated | | User | -| asset tag | asset_tag | Asset | -| category | category | All | -| company | company | All | -| department_id | | User ? All | -| item name | item_name | All | -| image | image | Asset | -| email | | | -| expiration date | expiration_date | License | -| location | location | All | -| notes | notes | All | -| licensed to email | license_email | License | -| licensed to name | license_name | License | -| maintained | maintained | License | -| manager_id | | User | -| manufacturer | manufacturer | All | -| model name | asset_model | Asset | -| model number | model_number | Asset | -| order number | order_number | All ? | -| purchase cost | purchase_cost | All ? | -| purchase date | purchase_date | All ? | -| purchase order | purchase_order | License | -| quantity | qty | Accessory, Consumable, Component, License | -| reassignable | reassignable | License | -| requestable | requestable | Asset, Accessory? | -| seats | seats | License | -| serial number | serial | Asset, license | -| status | status | Asset ? All | -| supplier | supplier | Asset ? All | -| minimum quantity | min_amt | Consumable | -| termination date | termination_date | License | -| warranty months | warranty_months | Asset | -| User Related Fields | assigned_to | Asset | -| name | | | -| email | | | -| username | | | -| address | address | User | -| city | city | User | -| state | state | User | -| country | country | User | - diff --git a/app/Listeners/CheckoutableListener.php b/app/Listeners/CheckoutableListener.php index 9d6cd942bd..09cb3ae8f2 100644 --- a/app/Listeners/CheckoutableListener.php +++ b/app/Listeners/CheckoutableListener.php @@ -2,22 +2,21 @@ namespace App\Listeners; +use App\Events\CheckoutableCheckedOut; use App\Models\Accessory; use App\Models\Asset; use App\Models\CheckoutAcceptance; +use App\Models\Component; use App\Models\Consumable; use App\Models\LicenseSeat; use App\Models\Recipients\AdminRecipient; use App\Models\Setting; -use App\Models\User; use App\Notifications\CheckinAccessoryNotification; use App\Notifications\CheckinAssetNotification; -use App\Notifications\CheckinLicenseNotification; use App\Notifications\CheckinLicenseSeatNotification; use App\Notifications\CheckoutAccessoryNotification; use App\Notifications\CheckoutAssetNotification; use App\Notifications\CheckoutConsumableNotification; -use App\Notifications\CheckoutLicenseNotification; use App\Notifications\CheckoutLicenseSeatNotification; use Illuminate\Support\Facades\Notification; use Exception; @@ -25,18 +24,17 @@ use Log; class CheckoutableListener { + private array $skipNotificationsFor = [ + Component::class, + ]; + /** - * Notify the user about the checked out checkoutable and add a record to the - * checkout_requests table. + * Notify the user and post to webhook about the checked out checkoutable + * and add a record to the checkout_requests table. */ public function onCheckedOut($event) { - - - /** - * When the item wasn't checked out to a user, we can't send notifications - */ - if (! $event->checkedOutTo instanceof User) { + if ($this->shouldNotSendAnyNotifications($event->checkoutable)){ return; } @@ -46,6 +44,11 @@ class CheckoutableListener $acceptance = $this->getCheckoutAcceptance($event); try { + if ($this->shouldSendWebhookNotification()) { + Notification::route('slack', Setting::getSettings()->webhook_endpoint) + ->notify($this->getCheckoutNotification($event)); + } + if (! $event->checkedOutTo->locale) { Notification::locale(Setting::getSettings()->locale)->send( $this->getNotifiables($event), @@ -63,16 +66,13 @@ class CheckoutableListener } /** - * Notify the user about the checked in checkoutable + * Notify the user and post to webhook about the checked in checkoutable */ public function onCheckedIn($event) { \Log::debug('onCheckedIn in the Checkoutable listener fired'); - /** - * When the item wasn't checked out to a user, we can't send notifications - */ - if (! $event->checkedOutTo instanceof User) { + if ($this->shouldNotSendAnyNotifications($event->checkoutable)) { return; } @@ -90,6 +90,11 @@ class CheckoutableListener } try { + if ($this->shouldSendWebhookNotification()) { + Notification::route('slack', Setting::getSettings()->webhook_endpoint) + ->notify($this->getCheckinNotification($event)); + } + // Use default locale if (! $event->checkedOutTo->locale) { Notification::locale(Setting::getSettings()->locale)->send( @@ -182,11 +187,11 @@ class CheckoutableListener /** * Get the appropriate notification for the event * - * @param CheckoutableCheckedIn $event - * @param CheckoutAcceptance $acceptance + * @param CheckoutableCheckedOut $event + * @param CheckoutAcceptance|null $acceptance * @return Notification */ - private function getCheckoutNotification($event, $acceptance) + private function getCheckoutNotification($event, $acceptance = null) { $notificationClass = null; @@ -225,4 +230,14 @@ class CheckoutableListener 'App\Listeners\CheckoutableListener@onCheckedOut' ); } + + private function shouldNotSendAnyNotifications($checkoutable): bool + { + return in_array(get_class($checkoutable), $this->skipNotificationsFor); + } + + private function shouldSendWebhookNotification(): bool + { + return Setting::getSettings() && Setting::getSettings()->webhook_endpoint; + } } diff --git a/app/Listeners/LogListener.php b/app/Listeners/LogListener.php index 791a84f57a..d14b674364 100644 --- a/app/Listeners/LogListener.php +++ b/app/Listeners/LogListener.php @@ -18,7 +18,9 @@ use App\Events\ItemDeclined; use App\Events\LicenseCheckedIn; use App\Events\LicenseCheckedOut; use App\Models\Actionlog; +use App\Models\User; use App\Models\LicenseSeat; +use App\Events\UserMerged; class LogListener { @@ -87,6 +89,43 @@ class LogListener $logaction->save(); } + + public function onUserMerged(UserMerged $event) + { + + $to_from_array = [ + 'to_id' => $event->merged_to->id, + 'to_username' => $event->merged_to->username, + 'from_id' => $event->merged_from->id, + 'from_username' => $event->merged_from->username, + ]; + + // Add a record to the users being merged FROM + \Log::debug('Users merged: '.$event->merged_from->id .' ('.$event->merged_from->username.') merged into '. $event->merged_to->id. ' ('.$event->merged_to->username.')'); + $logaction = new Actionlog(); + $logaction->item_id = $event->merged_from->id; + $logaction->item_type = User::class; + $logaction->target_id = $event->merged_to->id; + $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->save(); + + // Add a record to the users being merged TO + $logaction = new Actionlog(); + $logaction->target_id = $event->merged_from->id; + $logaction->target_type = User::class; + $logaction->item_id = $event->merged_to->id; + $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->save(); + + + } + /** * Register the listeners for the subscriber. * @@ -99,6 +138,7 @@ class LogListener 'CheckoutableCheckedOut', 'CheckoutAccepted', 'CheckoutDeclined', + 'UserMerged', ]; foreach ($list as $event) { @@ -108,4 +148,6 @@ class LogListener ); } } + + } diff --git a/app/Models/Accessory.php b/app/Models/Accessory.php index 3f2004b047..7576cc644f 100755 --- a/app/Models/Accessory.php +++ b/app/Models/Accessory.php @@ -63,6 +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', ]; @@ -327,23 +328,13 @@ class Accessory extends SnipeModel return null; } - /** - * Check how many items within an accessory are checked out - * - * @author [A. Gianotto] [] - * @since [v5.0] - * @return int - */ - public function numCheckedOut() - { - $checkedout = 0; - $checkedout = $this->users->count(); - - return $checkedout; - } /** - * Check how many items of an accessory remain + * 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 + * bad things happen. * * @author [A. Gianotto] [] * @since [v3.0] @@ -351,11 +342,11 @@ class Accessory extends SnipeModel */ public function numRemaining() { - $checkedout = $this->users->count(); + $checkedout = $this->users_count; $total = $this->qty; $remaining = $total - $checkedout; - return $remaining; + return (int) $remaining; } /** diff --git a/app/Models/Asset.php b/app/Models/Asset.php index f8e0cab314..95e1c3a166 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -34,9 +34,9 @@ class Asset extends Depreciable use CompanyableTrait; use HasFactory, Loggable, Requestable, Presentable, SoftDeletes, ValidatingTrait, UniqueUndeletedTrait, UniqueSerialTrait; - const LOCATION = 'location'; - const ASSET = 'asset'; - const USER = 'user'; + public const LOCATION = 'location'; + public const ASSET = 'asset'; + public const USER = 'user'; use Acceptable; @@ -70,25 +70,12 @@ class Asset extends Depreciable */ protected $injectUniqueIdentifier = true; - // We set these as protected dates so that they will be easily accessible via Carbon - protected $dates = [ - 'created_at', - 'updated_at', - 'deleted_at', - 'purchase_date', - 'last_checkout', - 'expected_checkin', - 'last_audit_date', - 'next_audit_date' - ]; - - protected $casts = [ - 'purchase_date' => 'datetime', + 'purchase_date' => 'date', 'last_checkout' => 'datetime', - 'expected_checkin' => 'datetime', + 'expected_checkin' => 'date', 'last_audit_date' => 'datetime', - 'next_audit_date' => 'datetime', + 'next_audit_date' => 'date', 'model_id' => 'integer', 'status_id' => 'integer', 'company_id' => 'integer', @@ -96,26 +83,28 @@ class Asset extends Depreciable 'rtd_company_id' => 'integer', 'supplier_id' => 'integer', 'byod' => 'boolean', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + 'deleted_at' => 'datetime', ]; protected $rules = [ 'name' => 'max:255|nullable', - 'model_id' => 'required|integer|exists:models,id', + 'model_id' => 'required|integer|exists:models,id,deleted_at,NULL', 'status_id' => 'required|integer|exists:status_labels,id', 'company_id' => 'integer|nullable', 'warranty_months' => 'numeric|nullable|digits_between:0,240', 'physical' => 'numeric|max:1|nullable', - 'checkout_date' => 'date|max:10|min:10|nullable', - 'checkin_date' => 'date|max:10|min:10|nullable', + 'last_checkout' => 'date_format:Y-m-d H:i:s|nullable', + 'expected_checkin' => 'date|nullable', 'location_id' => 'exists:locations,id|nullable', 'rtd_location_id' => 'exists:locations,id|nullable', 'asset_tag' => 'required|min:1|max:255|unique_undeleted', - 'status' => 'integer', + 'purchase_date' => 'date|date_format:Y-m-d|nullable', 'serial' => 'unique_serial|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', - 'next_audit_date' => 'date|nullable', - 'last_audit_date' => 'date|nullable', 'supplier_id' => 'exists:suppliers,id|nullable', + 'asset_eol_date' => 'date|max:10|min:10|nullable', ]; /** @@ -145,6 +134,9 @@ class Asset extends Depreciable 'last_checkout', 'expected_checkin', 'byod', + 'asset_eol_date', + 'last_audit_date', + 'next_audit_date', ]; use Searchable; @@ -167,6 +159,7 @@ class Asset extends Depreciable 'expected_checkin', 'next_audit_date', 'last_audit_date', + 'asset_eol_date', ]; /** @@ -180,11 +173,19 @@ class Asset extends Depreciable 'company' => ['name'], 'defaultLoc' => ['name'], 'location' => ['name'], - 'model' => ['name', 'model_number'], + 'model' => ['name', 'model_number', 'eol'], 'model.category' => ['name'], 'model.manufacturer' => ['name'], ]; + // To properly set the expected checkin as Y-m-d + public function setExpectedCheckinAttribute($value) + { + if ($value == '') { + $value = null; + } + $this->attributes['expected_checkin'] = $value; + } /** * This handles the custom field validation for assets @@ -389,7 +390,7 @@ class Asset extends Depreciable */ public function depreciation() { - return $this->model->belongsTo(\App\Models\Depreciation::class, 'depreciation_id'); + return $this->hasOneThrough(\App\Models\Depreciation::class,\App\Models\AssetModel::class,'id','id','model_id','depreciation_id'); } @@ -402,7 +403,7 @@ class Asset extends Depreciable */ public function components() { - return $this->belongsToMany('\App\Models\Component', 'components_assets', 'asset_id', 'component_id')->withPivot('id', 'assigned_qty', 'created_at')->withTrashed(); + return $this->belongsToMany('\App\Models\Component', 'components_assets', 'asset_id', 'component_id')->withPivot('id', 'assigned_qty', 'created_at'); } @@ -536,6 +537,28 @@ class Asset extends Depreciable return strtolower(class_basename($this->assigned_type)); } + + + /** + * This is annoying, but because we don't say "assets" in our route names, we have to make an exception here + * @todo - normalize the route names - API endpoint URLS can stay the same + * + * @author [A. Gianotto] [] + * @since [v6.1.0] + * @return string + */ + public function targetShowRoute() + { + $route = str_plural($this->assignedType()); + if ($route=='assets') { + return 'hardware'; + } + + return $route; + + } + + /** * Get the asset's location based on default RTD location * @@ -762,24 +785,17 @@ class Asset extends Depreciable * @since [v4.0] * @return string | false */ - public static function autoincrement_asset() + public static function autoincrement_asset(int $additional_increment = 0) { $settings = \App\Models\Setting::getSettings(); if ($settings->auto_increment_assets == '1') { - $temp_asset_tag = \DB::table('assets') - ->where('physical', '=', '1') - ->max('asset_tag'); - - $asset_tag_digits = preg_replace('/\D/', '', $temp_asset_tag); - $asset_tag = preg_replace('/^0*/', '', $asset_tag_digits); - if ($settings->zerofill_count > 0) { - return $settings->auto_increment_prefix.self::zerofill($settings->next_auto_tag_base, $settings->zerofill_count); + return $settings->auto_increment_prefix.self::zerofill($settings->next_auto_tag_base + $additional_increment, $settings->zerofill_count); } - return $settings->auto_increment_prefix.$settings->next_auto_tag_base; + return $settings->auto_increment_prefix.($settings->next_auto_tag_base + $additional_increment); } else { return false; } @@ -886,7 +902,13 @@ class Asset extends Depreciable return false; } - + public function getComponentCost(){ + $cost = 0; + foreach($this->components as $component) { + $cost += $component->pivot->assigned_qty*$component->purchase_cost; + } + return $cost; + } /** * ----------------------------------------------- @@ -918,8 +940,10 @@ class Asset extends Depreciable ->orWhere('assets_users.first_name', 'LIKE', '%'.$term.'%') ->orWhere('assets_users.last_name', 'LIKE', '%'.$term.'%') ->orWhere('assets_users.username', 'LIKE', '%'.$term.'%') - ->orWhereRaw('CONCAT('.DB::getTablePrefix().'assets_users.first_name," ",'.DB::getTablePrefix().'assets_users.last_name) LIKE ?', ["%$term%"]); - + ->orWhereMultipleColumns([ + 'assets_users.first_name', + 'assets_users.last_name', + ], $term); } /** @@ -1314,7 +1338,10 @@ class Asset extends Depreciable })->orWhere(function ($query) use ($search) { $query->where('assets_users.first_name', 'LIKE', '%'.$search.'%') ->orWhere('assets_users.last_name', 'LIKE', '%'.$search.'%') - ->orWhereRaw('CONCAT('.DB::getTablePrefix().'assets_users.first_name," ",'.DB::getTablePrefix().'assets_users.last_name) LIKE ?', ["%$search%"]) + ->orWhereMultipleColumns([ + 'assets_users.first_name', + 'assets_users.last_name', + ], $search) ->orWhere('assets_users.username', 'LIKE', '%'.$search.'%') ->orWhere('assets_locations.name', 'LIKE', '%'.$search.'%') ->orWhere('assigned_assets.name', 'LIKE', '%'.$search.'%'); @@ -1532,7 +1559,7 @@ class Asset extends Depreciable */ public function scopeOrderModelNumber($query, $order) { - return $query->join('models', 'assets.model_id', '=', 'models.id')->orderBy('models.model_number', $order); + return $query->leftJoin('models as model_number_sort', 'assets.model_id', '=', 'model_number_sort.id')->orderBy('model_number_sort.model_number', $order); } @@ -1632,9 +1659,9 @@ class Asset extends Depreciable */ public function scopeOrderManufacturer($query, $order) { - return $query->join('models', 'assets.model_id', '=', 'models.id') - ->join('manufacturers', 'models.manufacturer_id', '=', 'manufacturers.id') - ->orderBy('manufacturers.name', $order); + return $query->join('models as order_asset_model', 'assets.model_id', '=', 'order_asset_model.id') + ->leftjoin('manufacturers as manufacturer_order', 'order_asset_model.manufacturer_id', '=', 'manufacturer_order.id') + ->orderBy('manufacturer_order.name', $order); } /** diff --git a/app/Models/AssetMaintenance.php b/app/Models/AssetMaintenance.php index 41ab802579..292e529571 100644 --- a/app/Models/AssetMaintenance.php +++ b/app/Models/AssetMaintenance.php @@ -95,8 +95,8 @@ class AssetMaintenance extends Model implements ICompanyableChild */ public function setCostAttribute($value) { - $value = Helper::ParseFloat($value); - if ($value == '0.0') { + $value = Helper::ParseCurrency($value); + if ($value == 0) { $value = null; } $this->attributes['cost'] = $value; diff --git a/app/Models/Category.php b/app/Models/Category.php index b00e5a7bf9..c06ac38543 100755 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -194,7 +194,25 @@ class Category extends SnipeModel */ public function assets() { - return $this->hasManyThrough(\App\Models\Asset::class, \App\Models\AssetModel::class, 'category_id', 'model_id'); + return $this->hasManyThrough(Asset::class, \App\Models\AssetModel::class, 'category_id', 'model_id'); + } + + /** + * Establishes the category -> assets relationship but also takes into consideration + * the setting to show archived in lists. + * + * We could have complicated the assets() method above, but keeping this separate + * should give us more flexibility if we need to return actually archived assets + * by their category. + * + * @author [A. Gianotto] [] + * @since [v6.1.0] + * @see \App\Models\Asset::scopeAssetsForShow() + * @return \Illuminate\Database\Eloquent\Relations\Relation + */ + public function showableAssets() + { + return $this->hasManyThrough(Asset::class, \App\Models\AssetModel::class, 'category_id', 'model_id')->AssetsForShow(); } /** diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index 79a6da5415..4a4360c40a 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -3,25 +3,33 @@ namespace App\Models; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Notifications\Notifiable; class CheckoutAcceptance extends Model { - use SoftDeletes, Notifiable; + use HasFactory, SoftDeletes, Notifiable; protected $casts = [ 'accepted_at' => 'datetime', 'declined_at' => 'datetime', ]; - // Get the mail recipient from the config - public function routeNotificationForMail(): string + /** + * Get the mail recipient from the config + * + * @return mixed|string|null + */ + public function routeNotificationForMail() { // At this point the endpoint is the same for everything. // In the future this may want to be adapted for individual notifications. - return (config('mail.reply_to.address')) ? config('mail.reply_to.address') : '' ; + $recipients_string = explode(',', Setting::getSettings()->alert_email); + $recipients = array_map('trim', $recipients_string); + + return array_filter($recipients); } /** diff --git a/app/Models/CheckoutRequest.php b/app/Models/CheckoutRequest.php index 26abdd301e..b717a332aa 100644 --- a/app/Models/CheckoutRequest.php +++ b/app/Models/CheckoutRequest.php @@ -18,7 +18,7 @@ class CheckoutRequest extends Model public function requestingUser() { - return $this->user()->first(); + return $this->user()->withTrashed()->first(); } public function requestedItem() diff --git a/app/Models/Company.php b/app/Models/Company.php index 413011b9a7..10b44077ae 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -45,7 +45,7 @@ final class Company extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'created_at', 'updated_at']; + protected $searchableAttributes = ['name', 'phone', 'fax', 'created_at', 'updated_at']; /** * The relations and their attributes that should be included when searching the model. @@ -59,7 +59,11 @@ final class Company extends SnipeModel * * @var array */ - protected $fillable = ['name']; + protected $fillable = [ + 'name', + 'phone', + 'fax', + ]; private static function isFullMultipleCompanySupportEnabled() { diff --git a/app/Models/Component.php b/app/Models/Component.php index dc353d288c..052ec1219d 100644 --- a/app/Models/Component.php +++ b/app/Models/Component.php @@ -33,9 +33,10 @@ class Component extends SnipeModel 'name' => 'required|min:3|max:255', 'qty' => 'required|integer|min:1', 'category_id' => 'required|integer|exists:categories,id', - 'company_id' => 'integer|nullable', + 'supplier_id' => 'nullable|integer|exists:suppliers,id', + 'company_id' => 'integer|nullable|exists:companies,id', 'min_amt' => 'integer|min:0|nullable', - 'purchase_date' => 'date|nullable', + 'purchase_date' => 'date_format:Y-m-d|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', ]; @@ -57,6 +58,7 @@ class Component extends SnipeModel protected $fillable = [ 'category_id', 'company_id', + 'supplier_id', 'location_id', 'name', 'purchase_cost', @@ -86,6 +88,7 @@ class Component extends SnipeModel 'category' => ['name'], 'company' => ['name'], 'location' => ['name'], + 'supplier' => ['name'], ]; @@ -168,6 +171,18 @@ class Component extends SnipeModel return $this->belongsTo(\App\Models\Category::class, 'category_id'); } + /** + * Establishes the item -> supplier relationship + * + * @author [A. Gianotto] [] + * @since [v6.1.1] + * @return \Illuminate\Database\Eloquent\Relations\Relation + */ + public function supplier() + { + return $this->belongsTo(\App\Models\Supplier::class, 'supplier_id'); + } + /** * Establishes the component -> action logs relationship * @@ -247,4 +262,17 @@ class Component extends SnipeModel { return $query->leftJoin('companies', 'components.company_id', '=', 'companies.id')->orderBy('companies.name', $order); } + + /** + * Query builder scope to order on supplier + * + * @param \Illuminate\Database\Query\Builder $query Query builder instance + * @param text $order Order + * + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeOrderSupplier($query, $order) + { + return $query->leftJoin('suppliers', 'components.supplier_id', '=', 'suppliers.id')->orderBy('suppliers.name', $order); + } } diff --git a/app/Models/Consumable.php b/app/Models/Consumable.php index c04c9b53d5..a3a0d59178 100644 --- a/app/Models/Consumable.php +++ b/app/Models/Consumable.php @@ -27,6 +27,7 @@ class Consumable extends SnipeModel 'requestable' => 'boolean', 'category_id' => 'integer', 'company_id' => 'integer', + 'supplier_id', 'qty' => 'integer', 'min_amt' => 'integer', ]; @@ -41,6 +42,7 @@ class Consumable 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', ]; /** @@ -94,6 +96,7 @@ class Consumable extends SnipeModel 'company' => ['name'], 'location' => ['name'], 'manufacturer' => ['name'], + 'supplier' => ['name'], ]; @@ -248,6 +251,18 @@ class Consumable extends SnipeModel return $this->belongsToMany(\App\Models\User::class, 'consumables_users', 'consumable_id', 'assigned_to')->withPivot('user_id')->withTrashed()->withTimestamps(); } + /** + * Establishes the item -> supplier relationship + * + * @author [A. Gianotto] [] + * @since [v6.1.1] + * @return \Illuminate\Database\Eloquent\Relations\Relation + */ + public function supplier() + { + return $this->belongsTo(\App\Models\Supplier::class, 'supplier_id'); + } + /** * Determine whether to send a checkin/checkout email based on @@ -375,4 +390,17 @@ class Consumable extends SnipeModel { return $query->leftJoin('companies', 'consumables.company_id', '=', 'companies.id')->orderBy('companies.name', $order); } + + /** + * Query builder scope to order on supplier + * + * @param \Illuminate\Database\Query\Builder $query Query builder instance + * @param text $order Order + * + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeOrderSupplier($query, $order) + { + return $query->leftJoin('suppliers', 'consumables.supplier_id', '=', 'suppliers.id')->orderBy('suppliers.name', $order); + } } diff --git a/app/Models/CustomField.php b/app/Models/CustomField.php index e0b06318bb..e7fddd1aad 100644 --- a/app/Models/CustomField.php +++ b/app/Models/CustomField.php @@ -21,7 +21,7 @@ class CustomField extends Model * * @var array */ - const PREDEFINED_FORMATS = [ + public const PREDEFINED_FORMATS = [ 'ANY' => '', 'CUSTOM REGEX' => '', 'ALPHA' => 'alpha', @@ -52,6 +52,8 @@ class CustomField extends Model 'name' => 'required|unique:custom_fields', 'element' => 'required|in:text,listbox,textarea,checkbox,radio', 'field_encrypted' => 'nullable|boolean', + 'auto_add_to_fieldsets' => 'boolean', + 'show_in_listview' => 'boolean', ]; /** @@ -69,6 +71,9 @@ class CustomField extends Model 'show_in_email', 'is_unique', 'display_in_user_view', + 'auto_add_to_fieldsets', + 'show_in_listview', + ]; /** @@ -238,7 +243,7 @@ class CustomField extends Model * * @author [A. Gianotto] [] * @since [v3.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation + * @return string */ public function db_column_name() { @@ -303,9 +308,9 @@ class CustomField extends Model $arr_parts = explode('|', $arr[$x]); if ($arr_parts[0] != '') { if (array_key_exists('1', $arr_parts)) { - $result[$arr_parts[0]] = $arr_parts[1]; + $result[$arr_parts[0]] = trim($arr_parts[1]); } else { - $result[$arr_parts[0]] = $arr_parts[0]; + $result[$arr_parts[0]] = trim($arr_parts[0]); } } } diff --git a/app/Models/Department.php b/app/Models/Department.php index 74e2b23df9..90fde79df4 100644 --- a/app/Models/Department.php +++ b/app/Models/Department.php @@ -43,6 +43,8 @@ class Department extends SnipeModel protected $fillable = [ 'user_id', 'name', + 'phone', + 'fax', 'location_id', 'company_id', 'manager_id', @@ -56,7 +58,7 @@ class Department extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'notes']; + protected $searchableAttributes = ['name', 'notes', 'phone', 'fax']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index 250894820c..cfc42aa945 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -68,7 +68,7 @@ class Depreciable extends SnipeModel */ public function getLinearDepreciatedValue() // TODO - for testing it might be nice to have an optional $relative_to param here, defaulted to 'now' { - if ($this->purchase_date) { + if (($this->get_depreciation()) && ($this->purchase_date)) { $months_passed = ($this->purchase_date->diff(now())->m)+($this->purchase_date->diff(now())->y*12); } else { return null; @@ -127,7 +127,7 @@ class Depreciable extends SnipeModel $yearsPast = 0; } - return round($yearsPast / $deprecationYears * $this->purchase_cost, 2); + return $this->purchase_cost - round($yearsPast / $deprecationYears * $this->purchase_cost, 2); } /** diff --git a/app/Models/Depreciation.php b/app/Models/Depreciation.php index 39fb935494..9faa1b86e2 100755 --- a/app/Models/Depreciation.php +++ b/app/Models/Depreciation.php @@ -16,7 +16,7 @@ class Depreciation extends SnipeModel // Declare the rules for the form validation protected $rules = [ 'name' => 'required|min:3|max:255|unique:depreciations,name', - 'months' => 'required|max:3600|integer', + 'months' => 'required|max:3600|integer|gt:0', ]; /** diff --git a/app/Models/Group.php b/app/Models/Group.php index a68579adac..c0de8c263d 100755 --- a/app/Models/Group.php +++ b/app/Models/Group.php @@ -16,6 +16,11 @@ class Group extends SnipeModel 'name' => 'required|min:2|max:255', ]; + protected $fillable = [ + 'name', + 'permissions' + ]; + /** * Whether the model should inject it's identifier to the unique * validation rules before attempting validation. If this property diff --git a/app/Models/Ldap.php b/app/Models/Ldap.php index 4c47147625..4eb496a2ab 100644 --- a/app/Models/Ldap.php +++ b/app/Models/Ldap.php @@ -213,20 +213,22 @@ class Ldap extends Model $ldap_result_phone = Setting::getSettings()->ldap_phone; $ldap_result_jobtitle = Setting::getSettings()->ldap_jobtitle; $ldap_result_country = Setting::getSettings()->ldap_country; + $ldap_result_location = Setting::getSettings()->ldap_location; $ldap_result_dept = Setting::getSettings()->ldap_dept; $ldap_result_manager = Setting::getSettings()->ldap_manager; // Get LDAP user data $item = []; - $item['username'] = isset($ldapattributes[$ldap_result_username][0]) ? $ldapattributes[$ldap_result_username][0] : ''; - $item['employee_number'] = isset($ldapattributes[$ldap_result_emp_num][0]) ? $ldapattributes[$ldap_result_emp_num][0] : ''; - $item['lastname'] = isset($ldapattributes[$ldap_result_last_name][0]) ? $ldapattributes[$ldap_result_last_name][0] : ''; - $item['firstname'] = isset($ldapattributes[$ldap_result_first_name][0]) ? $ldapattributes[$ldap_result_first_name][0] : ''; - $item['email'] = isset($ldapattributes[$ldap_result_email][0]) ? $ldapattributes[$ldap_result_email][0] : ''; - $item['telephone'] = isset($ldapattributes[$ldap_result_phone][0]) ? $ldapattributes[$ldap_result_phone][0] : ''; - $item['jobtitle'] = isset($ldapattributes[$ldap_result_jobtitle][0]) ? $ldapattributes[$ldap_result_jobtitle][0] : ''; - $item['country'] = isset($ldapattributes[$ldap_result_country][0]) ? $ldapattributes[$ldap_result_country][0] : ''; - $item['department'] = isset($ldapattributes[$ldap_result_dept][0]) ? $ldapattributes[$ldap_result_dept][0] : ''; - $item['manager'] = isset($ldapattributes[$ldap_result_manager][0]) ? $ldapattributes[$ldap_result_manager][0] : ''; + $item['username'] = $ldapattributes[$ldap_result_username][0] ?? ''; + $item['employee_number'] = $ldapattributes[$ldap_result_emp_num][0] ?? ''; + $item['lastname'] = $ldapattributes[$ldap_result_last_name][0] ?? ''; + $item['firstname'] = $ldapattributes[$ldap_result_first_name][0] ?? ''; + $item['email'] = $ldapattributes[$ldap_result_email][0] ?? ''; + $item['telephone'] = $ldapattributes[$ldap_result_phone][0] ?? ''; + $item['jobtitle'] = $ldapattributes[$ldap_result_jobtitle][0] ?? ''; + $item['country'] = $ldapattributes[$ldap_result_country][0] ?? ''; + $item['department'] = $ldapattributes[$ldap_result_dept][0] ?? ''; + $item['manager'] = $ldapattributes[$ldap_result_manager][0] ?? ''; + $item['location'] = $ldapattributes[$ldap_result_location][0] ?? ''; return $item; } diff --git a/app/Models/License.php b/app/Models/License.php index b59387a42e..162b3d662a 100755 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -33,10 +33,9 @@ class License extends Depreciable protected $table = 'licenses'; protected $casts = [ - 'purchase_date' => 'datetime', - 'expiration_date' => 'datetime', - 'termination_date' => 'datetime', - 'seats' => 'integer', + 'purchase_date' => 'date', + 'expiration_date' => 'date', + 'termination_date' => 'date', 'category_id' => 'integer', 'company_id' => 'integer', ]; @@ -50,6 +49,9 @@ class License extends Depreciable 'category_id' => 'required|exists:categories,id', 'company_id' => 'integer|nullable', 'purchase_cost'=> 'numeric|nullable|gte:0', + 'purchase_date' => 'date_format:Y-m-d|nullable|max:10', + 'expiration_date' => 'date_format:Y-m-d|nullable|max:10', + 'termination_date' => 'date_format:Y-m-d|nullable|max:10', ]; /** @@ -104,10 +106,10 @@ class License extends Depreciable * @var array */ protected $searchableRelations = [ - 'manufacturer' => ['name'], - 'company' => ['name'], - 'category' => ['name'], - 'depreciation' => ['name'], + 'manufacturer' => ['name'], + 'company' => ['name'], + 'category' => ['name'], + 'depreciation' => ['name'], ]; /** @@ -365,7 +367,7 @@ class License extends Depreciable */ public function assignedusers() { - return $this->belongsToMany(\App\Models\User::class, 'license_seats', 'assigned_to', 'license_id'); + return $this->belongsToMany(\App\Models\User::class, 'license_seats', 'license_id', 'assigned_to'); } /** @@ -423,7 +425,7 @@ class License extends Depreciable public static function assetcount() { return LicenseSeat::whereNull('deleted_at') - ->count(); + ->count(); } @@ -439,8 +441,8 @@ class License extends Depreciable public function totalSeatsByLicenseID() { return LicenseSeat::where('license_id', '=', $this->id) - ->whereNull('deleted_at') - ->count(); + ->whereNull('deleted_at') + ->count(); } /** @@ -484,11 +486,12 @@ class License extends Depreciable public static function availassetcount() { return LicenseSeat::whereNull('assigned_to') - ->whereNull('asset_id') - ->whereNull('deleted_at') - ->count(); + ->whereNull('asset_id') + ->whereNull('deleted_at') + ->count(); } + /** * Returns the number of total available seats for this license * @@ -531,7 +534,7 @@ class License extends Depreciable { return $this->licenseSeatsRelation()->where(function ($query) { $query->whereNotNull('assigned_to') - ->orWhereNotNull('asset_id'); + ->orWhereNotNull('asset_id'); }); } @@ -619,13 +622,13 @@ class License extends Depreciable public function freeSeat() { return $this->licenseseats() - ->whereNull('deleted_at') - ->where(function ($query) { - $query->whereNull('assigned_to') - ->whereNull('asset_id'); - }) - ->orderBy('id', 'asc') - ->first(); + ->whereNull('deleted_at') + ->where(function ($query) { + $query->whereNull('assigned_to') + ->whereNull('asset_id'); + }) + ->orderBy('id', 'asc') + ->first(); } @@ -655,11 +658,11 @@ class License extends Depreciable $days = (is_null($days)) ? 60 : $days; return self::whereNotNull('expiration_date') - ->whereNull('deleted_at') - ->whereRaw(DB::raw('DATE_SUB(`expiration_date`,INTERVAL '.$days.' DAY) <= DATE(NOW()) ')) - ->where('expiration_date', '>', date('Y-m-d')) - ->orderBy('expiration_date', 'ASC') - ->get(); + ->whereNull('deleted_at') + ->whereRaw(DB::raw('DATE_SUB(`expiration_date`,INTERVAL '.$days.' DAY) <= DATE(NOW()) ')) + ->where('expiration_date', '>', date('Y-m-d')) + ->orderBy('expiration_date', 'ASC') + ->get(); } /** @@ -703,4 +706,4 @@ class License extends Depreciable return $query->leftJoin('companies as companies', 'licenses.company_id', '=', 'companies.id')->select('licenses.*') ->orderBy('companies.name', $order); } -} +} \ No newline at end of file diff --git a/app/Models/LicenseSeat.php b/app/Models/LicenseSeat.php index 2207edd02c..d2a99d3c56 100755 --- a/app/Models/LicenseSeat.php +++ b/app/Models/LicenseSeat.php @@ -6,13 +6,15 @@ use App\Models\Traits\Acceptable; use App\Notifications\CheckinLicenseNotification; use App\Notifications\CheckoutLicenseNotification; use App\Presenters\Presentable; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; class LicenseSeat extends SnipeModel implements ICompanyableChild { use CompanyableChildTrait; - use SoftDeletes; + use HasFactory; use Loggable; + use SoftDeletes; protected $presenter = \App\Presenters\LicenseSeatPresenter::class; use Presentable; diff --git a/app/Models/Location.php b/app/Models/Location.php index 8181f406cd..145d6cef9a 100755 --- a/app/Models/Location.php +++ b/app/Models/Location.php @@ -26,11 +26,12 @@ class Location extends SnipeModel protected $table = 'locations'; protected $rules = [ 'name' => 'required|min:2|max:255|unique_undeleted', - 'city' => 'min:2|max:255|nullable', - 'country' => 'min:2|max:255|nullable', - 'address' => 'max:80|nullable', - 'address2' => 'max:80|nullable', - 'zip' => 'min:3|max:10|nullable', + 'address' => 'max:191|nullable', + 'address2' => 'max:191|nullable', + 'city' => 'max:191|nullable', + 'state' => 'min:2|max:191|nullable', + 'country' => 'min:2|max:191|nullable', + 'zip' => 'max:10|nullable', 'manager_id' => 'exists:users,id|nullable', 'parent_id' => 'non_circular:locations,id', ]; @@ -65,6 +66,8 @@ class Location extends SnipeModel 'state', 'country', 'zip', + 'phone', + 'fax', 'ldap_ou', 'currency', 'manager_id', @@ -79,7 +82,7 @@ class Location extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'address', 'city', 'state', 'zip', 'created_at', 'ldap_ou']; + protected $searchableAttributes = ['name', 'address', 'city', 'state', 'zip', 'created_at', 'ldap_ou', 'phone', 'fax']; /** * The relations and their attributes that should be included when searching the model. @@ -267,7 +270,7 @@ class Location extends SnipeModel foreach ($locations_with_children[$parent_id] as $location) { $location->use_text = $prefix.' '.$location->name; - $location->use_image = ($location->image) ? url('/').'/uploads/locations/'.$location->image : null; + $location->use_image = ($location->image) ? config('app.url').'/uploads/locations/'.$location->image : null; $results[] = $location; //now append the children. (if we have any) if (array_key_exists($location->id, $locations_with_children)) { diff --git a/app/Models/Loggable.php b/app/Models/Loggable.php index 53ff279a09..d0bbd10733 100644 --- a/app/Models/Loggable.php +++ b/app/Models/Loggable.php @@ -93,8 +93,12 @@ trait Loggable { $settings = Setting::getSettings(); $log = new Actionlog; - $log->target_type = get_class($target); - $log->target_id = $target->id; + + if($target != null){ + $log->target_type = get_class($target); + $log->target_id = $target->id; + + } if (static::class == LicenseSeat::class) { $log->item_type = License::class; diff --git a/app/Models/Manufacturer.php b/app/Models/Manufacturer.php index 5f01c3c273..da4f26b02f 100755 --- a/app/Models/Manufacturer.php +++ b/app/Models/Manufacturer.php @@ -23,8 +23,9 @@ class Manufacturer extends SnipeModel protected $rules = [ 'name' => 'required|min:2|max:255|unique:manufacturers,name,NULL,id,deleted_at,NULL', 'url' => 'url|nullable', - 'support_url' => 'url|nullable', 'support_email' => 'email|nullable', + 'support_url' => 'nullable|url', + 'warranty_lookup_url' => 'nullable|starts_with:http://,https://,afp://,facetime://,file://,irc://' ]; protected $hidden = ['user_id']; @@ -51,6 +52,7 @@ class Manufacturer extends SnipeModel 'support_phone', 'support_url', 'url', + 'warranty_lookup_url', ]; use Searchable; diff --git a/app/Models/Requestable.php b/app/Models/Requestable.php index 3983254e41..bf5c9c427b 100644 --- a/app/Models/Requestable.php +++ b/app/Models/Requestable.php @@ -38,8 +38,12 @@ trait Requestable $this->requests()->where('user_id', Auth::id())->delete(); } - public function cancelRequest() + public function cancelRequest($user_id = null) { - $this->requests()->where('user_id', Auth::id())->update(['canceled_at' => \Carbon\Carbon::now()]); + if (!$user_id){ + $user_id = Auth::id(); + } + + $this->requests()->where('user_id', $user_id)->update(['canceled_at' => \Carbon\Carbon::now()]); } } diff --git a/app/Models/Setting.php b/app/Models/Setting.php index f2a4184178..6c95d6b01e 100755 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -31,7 +31,7 @@ class Setting extends Model * * @var string */ - const SETUP_CHECK_KEY = 'snipeit_setup_check'; + public const SETUP_CHECK_KEY = 'snipeit_setup_check'; /** * Whether the model should inject it's identifier to the unique @@ -76,6 +76,7 @@ class Setting extends Model 'audit_interval' => 'numeric|nullable', 'custom_forgot_pass_url' => 'url|nullable', 'privacy_policy_link' => 'nullable|url', + 'google_client_id' => 'nullable|ends_with:apps.googleusercontent.com' ]; protected $fillable = [ @@ -83,6 +84,12 @@ class Setting extends Model 'email_domain', 'email_format', 'username_format', + 'webhook_endpoint', + 'webhook_channel', + 'webhook_botname', + 'google_login', + 'google_client_id', + 'google_client_secret', ]; /** @@ -262,7 +269,7 @@ class Setting extends Model { // At this point the endpoint is the same for everything. // In the future this may want to be adapted for individual notifications. - return self::getSettings()->slack_endpoint; + return self::getSettings()->webhook_endpoint; } /** @@ -338,7 +345,15 @@ class Setting extends Model 'ad_domain', 'ad_append_domain', 'ldap_client_tls_key', - 'ldap_client_tls_cert' + 'ldap_client_tls_cert', + 'ldap_default_group', + 'ldap_dept', + 'ldap_emp_num', + 'ldap_phone_field', + 'ldap_jobtitle', + 'ldap_manager', + 'ldap_country', + 'ldap_location', ])->first()->getAttributes(); return collect($ldapSettings); diff --git a/app/Models/SnipeModel.php b/app/Models/SnipeModel.php index e5a039a4e1..af12c3d29b 100644 --- a/app/Models/SnipeModel.php +++ b/app/Models/SnipeModel.php @@ -21,9 +21,9 @@ class SnipeModel extends Model */ public function setPurchaseCostAttribute($value) { - $value = Helper::ParseFloat($value); + $value = Helper::ParseCurrency($value); - if ($value == '0.0') { + if ($value == 0) { $value = null; } $this->attributes['purchase_cost'] = $value; diff --git a/app/Models/SnipeSCIMConfig.php b/app/Models/SnipeSCIMConfig.php index 36a9ac855c..7ec25645e6 100644 --- a/app/Models/SnipeSCIMConfig.php +++ b/app/Models/SnipeSCIMConfig.php @@ -12,94 +12,9 @@ class SnipeSCIMConfig extends \ArieTimmerman\Laravel\SCIMServer\SCIMConfig { public function getUserConfig() { - $config = parent::getUserConfig(); - // Much of this is copied verbatim from the library, then adjusted for our needs - $config['class'] = SCIMUser::class; - unset($config['mapping']['example:name:space']); - - $config['map_unmapped'] = false; // anything we don't explicitly map will _not_ show up. - - $core_namespace = 'urn:ietf:params:scim:schemas:core:2.0:User'; - $core = $core_namespace.':'; - $mappings =& $config['mapping'][$core_namespace]; //grab this entire key, we don't want to be repeating ourselves - - //username - *REQUIRED* - $config['validations'][$core.'userName'] = 'required'; - $mappings['userName'] = AttributeMapping::eloquent('username'); - - //human name - *FIRST NAME REQUIRED* - $config['validations'][$core.'name.givenName'] = 'required'; - $config['validations'][$core.'name.familyName'] = 'string'; //not required - - $mappings['name']['familyName'] = AttributeMapping::eloquent("last_name"); - $mappings['name']['givenName'] = AttributeMapping::eloquent("first_name"); - $mappings['name']['formatted'] = (new AttributeMapping())->ignoreWrite()->setRead( - function (&$object) { - return $object->getFullNameAttribute(); - } - ); - - // externalId support - $config['validations'][$core.'externalId'] = 'string|nullable'; // not required, but supported mostly just for Okta - // note that the mapping is *not* namespaced like the other $mappings - $config['mapping']['externalId'] = AttributeMapping::eloquent('scim_externalid'); - - $config['validations'][$core.'emails'] = 'nullable|array'; // emails are not required in Snipe-IT... - $config['validations'][$core.'emails.*.value'] = 'email'; // ...(had to remove the recommended 'required' here) - - $mappings['emails'] = [[ - "value" => AttributeMapping::eloquent("email"), - "display" => null, - "type" => AttributeMapping::constant("work")->ignoreWrite(), - "primary" => AttributeMapping::constant(true)->ignoreWrite() - ]]; - - //active - $config['validations'][$core.'active'] = 'boolean'; - - $mappings['active'] = AttributeMapping::eloquent('activated'); - - //phone - $config['validations'][$core.'phoneNumbers'] = 'nullable|array'; - $config['validations'][$core.'phoneNumbers.*.value'] = 'string'; // another one where want to say 'we don't _need_ a phone number, but if you have one it better have a value. - - $mappings['phoneNumbers'] = [[ - "value" => AttributeMapping::eloquent("phone"), - "display" => null, - "type" => AttributeMapping::constant("work")->ignoreWrite(), - "primary" => AttributeMapping::constant(true)->ignoreWrite() - ]]; - - //address - $config['validations'][$core.'addresses'] = 'nullable|array'; - $config['validations'][$core.'addresses.*.streetAddress'] = 'string'; - $config['validations'][$core.'addresses.*.locality'] = 'string'; - $config['validations'][$core.'addresses.*.region'] = 'nullable|string'; - $config['validations'][$core.'addresses.*.postalCode'] = 'nullable|string'; - $config['validations'][$core.'addresses.*.country'] = 'string'; - - $mappings['addresses'] = [[ - 'type' => AttributeMapping::constant("work")->ignoreWrite(), - 'formatted' => AttributeMapping::constant("n/a")->ignoreWrite(), // TODO - is this right? This doesn't look right. - 'streetAddress' => AttributeMapping::eloquent("address"), - 'locality' => AttributeMapping::eloquent("city"), - 'region' => AttributeMapping::eloquent("state"), - 'postalCode' => AttributeMapping::eloquent("zip"), - 'country' => AttributeMapping::eloquent("country"), - 'primary' => AttributeMapping::constant(true)->ignoreWrite() //this isn't in the example? - ]]; - - //title - $config['validations'][$core.'title'] = 'string'; - $mappings['title'] = AttributeMapping::eloquent('jobtitle'); - - //Preferred Language - $config['validations'][$core.'preferredLanguage'] = 'string'; - $mappings['preferredLanguage'] = AttributeMapping::eloquent('locale'); - - /* + /* more snipe-it attributes I'd like to check out (to map to 'enterprise' maybe?): - website - notes? @@ -108,66 +23,216 @@ class SnipeSCIMConfig extends \ArieTimmerman\Laravel\SCIMServer\SCIMConfig - company_id to "organization?" */ - $enterprise_namespace = 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User'; - $ent = $enterprise_namespace.':'; - // we remove the 'example' namespace and add the Enterprise one - $config['mapping']['schemas'] = AttributeMapping::constant( [$core_namespace, $enterprise_namespace] )->ignoreWrite(); + $user_prefix = 'urn:ietf:params:scim:schemas:core:2.0:User:'; + $enterprise_prefix = 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:'; - $config['validations'][$ent.'employeeNumber'] = 'string'; - $config['validations'][$ent.'department'] = 'string'; - $config['validations'][$ent.'manager'] = 'nullable'; - $config['validations'][$ent.'manager.value'] = 'string'; + return [ - $config['mapping'][$enterprise_namespace] = [ - 'employeeNumber' => AttributeMapping::eloquent('employee_num'), - 'department' =>(new AttributeMapping())->setAdd( // FIXME parent? - function ($value, &$object) { - $department = Department::where("name", $value)->first(); - if ($department) { - $object->department_id = $department->id; - } - } - )->setReplace( - function ($value, &$object) { - $department = Department::where("name", $value)->first(); - if ($department) { - $object->department_id = $department->id; - } - } - )->setRead( + // Set to 'null' to make use of auth.providers.users.model (App\User::class) + 'class' => SCIMUser::class, + + 'validations' => [ + $user_prefix . 'userName' => 'required', + $user_prefix . 'name.givenName' => 'required', + $user_prefix . 'name.familyName' => 'nullable|string', + $user_prefix . 'externalId' => 'nullable|string', + $user_prefix . 'emails' => 'nullable|array', + $user_prefix . 'emails.*.value' => 'nullable|email', + $user_prefix . 'active' => 'boolean', + $user_prefix . 'phoneNumbers' => 'nullable|array', + $user_prefix . 'phoneNumbers.*.value' => 'nullable|string', + $user_prefix . 'addresses' => 'nullable|array', + $user_prefix . 'addresses.*.streetAddress' => 'nullable|string', + $user_prefix . 'addresses.*.locality' => 'nullable|string', + $user_prefix . 'addresses.*.region' => 'nullable|string', + $user_prefix . 'addresses.*.postalCode' => 'nullable|string', + $user_prefix . 'addresses.*.country' => 'nullable|string', + $user_prefix . 'title' => 'nullable|string', + $user_prefix . 'preferredLanguage' => 'nullable|string', + + // Enterprise validations: + $enterprise_prefix . 'employeeNumber' => 'nullable|string', + $enterprise_prefix . 'department' => 'nullable|string', + $enterprise_prefix . 'manager' => 'nullable', + $enterprise_prefix . 'manager.value' => 'nullable|string' + ], + + 'singular' => 'User', + 'schema' => [Schema::SCHEMA_USER], + + //eager loading + 'withRelations' => [], + 'map_unmapped' => false, +// 'unmapped_namespace' => 'urn:ietf:params:scim:schemas:laravel:unmapped', + 'description' => 'User Account', + + // Map a SCIM attribute to an attribute of the object. + 'mapping' => [ + + 'id' => (new AttributeMapping())->setRead( function (&$object) { - return $object->department ? $object->department->name : null; - } - ), - 'manager' => [ - // FIXME - manager writes are disabled. This kinda works but it leaks errors all over the place. Not cool. - // '$ref' => (new AttributeMapping())->ignoreWrite()->ignoreRead(), - // 'displayName' => (new AttributeMapping())->ignoreWrite()->ignoreRead(), - // NOTE: you could probably do a 'plain' Eloquent mapping here, but we don't for future-proofing - 'value' => (new AttributeMapping())->setAdd( - function ($value, &$object) { - $manager = User::find($value); - if ($manager) { - $object->manager_id = $manager->id; - } + return (string)$object->id; } + )->disableWrite(), + + 'externalId' => AttributeMapping::eloquent('scim_externalid'), // FIXME - I have a PR that changes a lot of this. + + 'meta' => [ + 'created' => AttributeMapping::eloquent("created_at")->disableWrite(), + 'lastModified' => AttributeMapping::eloquent("updated_at")->disableWrite(), + + 'location' => (new AttributeMapping())->setRead( + function ($object) { + return route( + 'scim.resource', + [ + 'resourceType' => 'Users', + 'resourceObject' => $object->id + ] + ); + } + )->disableWrite(), + + 'resourceType' => AttributeMapping::constant("User") + ], + + 'schemas' => AttributeMapping::constant( + [ + 'urn:ietf:params:scim:schemas:core:2.0:User', + 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User' + ] + )->ignoreWrite(), + + 'urn:ietf:params:scim:schemas:core:2.0:User' => [ + + 'userName' => AttributeMapping::eloquent("username"), + + 'name' => [ + 'formatted' => (new AttributeMapping())->ignoreWrite()->setRead( + function (&$object) { + return $object->getFullNameAttribute(); + } + ), + 'familyName' => AttributeMapping::eloquent("last_name"), + 'givenName' => AttributeMapping::eloquent("first_name"), + 'middleName' => null, + 'honorificPrefix' => null, + 'honorificSuffix' => null + ], + + 'displayName' => null, + 'nickName' => null, + 'profileUrl' => null, + 'title' => AttributeMapping::eloquent('jobtitle'), + 'userType' => null, + 'preferredLanguage' => AttributeMapping::eloquent('locale'), // Section 5.3.5 of [RFC7231] + 'locale' => null, // see RFC5646 + 'timezone' => null, // see RFC6557 + 'active' => AttributeMapping::eloquent('activated'), + + 'password' => AttributeMapping::eloquent('password')->disableRead(), + + // Multi-Valued Attributes + 'emails' => [[ + "value" => AttributeMapping::eloquent("email"), + "display" => null, + "type" => AttributeMapping::constant("work")->ignoreWrite(), + "primary" => AttributeMapping::constant(true)->ignoreWrite() + ]], + + 'phoneNumbers' => [[ + "value" => AttributeMapping::eloquent("phone"), + "display" => null, + "type" => AttributeMapping::constant("work")->ignoreWrite(), + "primary" => AttributeMapping::constant(true)->ignoreWrite() + ]], + + 'ims' => [[ + "value" => null, + "display" => null, + "type" => null, + "primary" => null + ]], // Instant messaging addresses for the User + + 'photos' => [[ + "value" => null, + "display" => null, + "type" => null, + "primary" => null + ]], + + 'addresses' => [[ + 'type' => AttributeMapping::constant("work")->ignoreWrite(), + 'formatted' => AttributeMapping::constant("n/a")->ignoreWrite(), // TODO - is this right? This doesn't look right. + 'streetAddress' => AttributeMapping::eloquent("address"), + 'locality' => AttributeMapping::eloquent("city"), + 'region' => AttributeMapping::eloquent("state"), + 'postalCode' => AttributeMapping::eloquent("zip"), + 'country' => AttributeMapping::eloquent("country"), + 'primary' => AttributeMapping::constant(true)->ignoreWrite() //this isn't in the example? + ]], + + 'groups' => [[ + 'value' => null, + '$ref' => null, + 'display' => null, + 'type' => null, + ]], + + 'entitlements' => null, + 'roles' => null, + 'x509Certificates' => null + ], + + 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User' => [ + 'employeeNumber' => AttributeMapping::eloquent('employee_num'), + 'department' => (new AttributeMapping())->setAdd( // FIXME parent? + function ($value, &$object) { + $department = Department::where("name", $value)->first(); + if ($department) { + $object->department_id = $department->id; + } + } )->setReplace( function ($value, &$object) { - $manager = User::find($value); - if ($manager) { - $object->manager_id = $manager->id; + $department = Department::where("name", $value)->first(); + if ($department) { + $object->department_id = $department->id; } } )->setRead( function (&$object) { - return $object->manager_id; - } + return $object->department ? $object->department->name : null; + } ), + 'manager' => [ + // FIXME - manager writes are disabled. This kinda works but it leaks errors all over the place. Not cool. + // '$ref' => (new AttributeMapping())->ignoreWrite()->ignoreRead(), + // 'displayName' => (new AttributeMapping())->ignoreWrite()->ignoreRead(), + // NOTE: you could probably do a 'plain' Eloquent mapping here, but we don't for future-proofing + 'value' => (new AttributeMapping())->setAdd( + function ($value, &$object) { + $manager = User::find($value); + if ($manager) { + $object->manager_id = $manager->id; + } + } + )->setReplace( + function ($value, &$object) { + $manager = User::find($value); + if ($manager) { + $object->manager_id = $manager->id; + } + } + )->setRead( + function (&$object) { + return $object->manager_id; + } + ), + ] + ] ] ]; - - return $config; } - } diff --git a/app/Models/Supplier.php b/app/Models/Supplier.php index 393e7ddb29..e198d10c10 100755 --- a/app/Models/Supplier.php +++ b/app/Models/Supplier.php @@ -16,17 +16,17 @@ class Supplier extends SnipeModel protected $table = 'suppliers'; protected $rules = [ - 'name' => 'required|min:1|max:255|unique_undeleted', - 'address' => 'max:250|nullable', - 'address2' => 'max:250|nullable', - 'city' => 'max:255|nullable', - 'state' => 'max:32|nullable', - 'country' => 'max:3|nullable', + 'name' => 'required|min:1|max:255|unique_undeleted', 'fax' => 'min:7|max:35|nullable', 'phone' => 'min:7|max:35|nullable', 'contact' => 'max:100|nullable', 'notes' => 'max:191|nullable', // Default string length is 191 characters.. 'email' => 'email|max:150|nullable', + 'address' => 'max:250|nullable', + 'address2' => 'max:250|nullable', + 'city' => 'max:191|nullable', + 'state' => 'min:2|max:191|nullable', + 'country' => 'min:2|max:191|nullable', 'zip' => 'max:10|nullable', 'url' => 'sometimes|nullable|string|max:250', ]; @@ -78,24 +78,7 @@ class Supplier extends SnipeModel { return $this->hasMany(Asset::class)->whereNull('deleted_at')->selectRaw('supplier_id, count(*) as count')->groupBy('supplier_id'); } - - /** - * Sets the license seat count attribute - * - * @todo I don't see the licenseSeatsRelation here? - * - * @author A. Gianotto - * @since [v1.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function getLicenseSeatsCountAttribute() - { - if ($this->licenseSeatsRelation->first()) { - return $this->licenseSeatsRelation->first()->count; - } - - return 0; - } + /** * Establishes the supplier -> assets relationship @@ -121,6 +104,30 @@ class Supplier extends SnipeModel return $this->hasMany(\App\Models\Accessory::class, 'supplier_id'); } + /** + * Establishes the supplier -> component relationship + * + * @author A. Gianotto + * @since [v6.1.1] + * @return \Illuminate\Database\Eloquent\Relations\Relation + */ + public function components() + { + return $this->hasMany(\App\Models\Component::class, 'supplier_id'); + } + + /** + * Establishes the supplier -> component relationship + * + * @author A. Gianotto + * @since [v6.1.1] + * @return \Illuminate\Database\Eloquent\Relations\Relation + */ + public function consumables() + { + return $this->hasMany(\App\Models\Consumable::class, 'supplier_id'); + } + /** * Establishes the supplier -> asset maintenances relationship * diff --git a/app/Models/Traits/Searchable.php b/app/Models/Traits/Searchable.php index db46e305df..06e05348fb 100644 --- a/app/Models/Traits/Searchable.php +++ b/app/Models/Traits/Searchable.php @@ -5,6 +5,7 @@ namespace App\Models\Traits; use App\Models\Asset; use App\Models\CustomField; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Support\Facades\DB; /** * This trait allows for cleaner searching of models, @@ -164,7 +165,13 @@ trait Searchable } // I put this here because I only want to add the concat one time in the end of the user relation search if($relation == 'user') { - $query->orWhereRaw('CONCAT (users.first_name, " ", users.last_name) LIKE ?', ["%$term%"]); + $query->orWhereRaw( + $this->buildMultipleColumnSearch([ + 'users.first_name', + 'users.last_name', + ]), + ["%{$term}%"] + ); } }); } @@ -195,7 +202,7 @@ trait Searchable */ private function getSearchableAttributes() { - return isset($this->searchableAttributes) ? $this->searchableAttributes : []; + return $this->searchableAttributes ?? []; } /** @@ -205,7 +212,7 @@ trait Searchable */ private function getSearchableRelations() { - return isset($this->searchableRelations) ? $this->searchableRelations : []; + return $this->searchableRelations ?? []; } /** @@ -257,4 +264,37 @@ trait Searchable return $related->getTable(); } + + /** + * Builds a search string for either MySQL or sqlite by separating the provided columns with a space. + * + * @param array $columns Columns to include in search string. + * @return string + */ + private function buildMultipleColumnSearch(array $columns): string + { + $mappedColumns = collect($columns)->map(fn($column) => DB::getTablePrefix() . $column)->toArray(); + + $driver = config('database.connections.' . config('database.default') . '.driver'); + + if ($driver === 'sqlite') { + return implode("||' '||", $mappedColumns) . ' LIKE ?'; + } + + // Default to MySQL's concatenation method + return 'CONCAT(' . implode('," ",', $mappedColumns) . ') LIKE ?'; + } + + /** + * Search a string across multiple columns separated with a space. + * + * @param Builder $query + * @param array $columns - Columns to include in search string. + * @param $term + * @return Builder + */ + public function scopeOrWhereMultipleColumns($query, array $columns, $term) + { + return $query->orWhereRaw($this->buildMultipleColumnSearch($columns), ["%{$term}%"]); + } } diff --git a/app/Models/User.php b/app/Models/User.php old mode 100755 new mode 100644 index 399008430b..98a3ec346b --- a/app/Models/User.php +++ b/app/Models/User.php @@ -61,7 +61,11 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'remote', 'start_date', 'end_date', - 'scim_externalid' + 'scim_externalid', + 'avatar', + 'gravatar', + 'vip', + 'autoassign_licenses', ]; protected $casts = [ @@ -69,18 +73,13 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'manager_id' => 'integer', 'location_id' => 'integer', 'company_id' => 'integer', + 'vip' => 'boolean', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + 'deleted_at' => 'datetime', + 'autoassign_licenses' => 'boolean', ]; - - protected $dates = [ - 'created_at', - 'updated_at', - 'deleted_at', - 'start_date', - 'end_date', - ]; - - /** * Model validation rules * @@ -96,8 +95,14 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'website' => 'url|nullable|max:191', 'manager_id' => 'nullable|exists:users,id|cant_manage_self', 'location_id' => 'exists:locations,id|nullable', - 'start_date' => 'nullable|date', - 'end_date' => 'nullable|date|after_or_equal:start_date', + 'start_date' => 'nullable|date_format:Y-m-d', + 'end_date' => 'nullable|date_format:Y-m-d|after_or_equal:start_date', + 'autoassign_licenses' => 'boolean', + 'address' => 'max:191|nullable', + 'city' => 'max:191|nullable', + 'state' => 'min:2|max:191|nullable', + 'country' => 'min:2|max:191|nullable', + 'zip' => 'max:10|nullable', ]; /** @@ -259,20 +264,6 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo return $this->last_name.', '.$this->first_name.' ('.$this->username.')'; } - /** - * The url for slack notifications. - * Used by Notifiable trait. - * @return mixed - */ - public function routeNotificationForSlack() - { - // At this point the endpoint is the same for everything. - // In the future this may want to be adapted for individual notifications. - $this->endpoint = \App\Models\Setting::getSettings()->slack_endpoint; - - return $this->endpoint; - } - /** * Establishes the user -> assets relationship @@ -283,7 +274,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo */ public function assets() { - return $this->morphMany(\App\Models\Asset::class, 'assigned', 'assigned_type', 'assigned_to')->withTrashed(); + return $this->morphMany(\App\Models\Asset::class, 'assigned', 'assigned_type', 'assigned_to')->withTrashed()->orderBy('id'); } /** @@ -311,7 +302,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo public function accessories() { return $this->belongsToMany(\App\Models\Accessory::class, 'accessories_users', 'assigned_to', 'accessory_id') - ->withPivot('id', 'created_at', 'note')->withTrashed(); + ->withPivot('id', 'created_at', 'note')->withTrashed()->orderBy('accessory_id'); } /** @@ -653,14 +644,14 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo */ public function scopeSimpleNameSearch($query, $search) { - $query = $query->where('first_name', 'LIKE', '%'.$search.'%') - ->orWhere('last_name', 'LIKE', '%'.$search.'%') - ->orWhereRaw('CONCAT('.DB::getTablePrefix().'users.first_name," ",'.DB::getTablePrefix().'users.last_name) LIKE ?', ["%$search%"]); - - return $query; + return $query->where('first_name', 'LIKE', '%' . $search . '%') + ->orWhere('last_name', 'LIKE', '%' . $search . '%') + ->orWhereMultipleColumns([ + 'users.first_name', + 'users.last_name', + ], $search); } - /** * Run additional, advanced searches. * @@ -669,9 +660,11 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo * @return \Illuminate\Database\Eloquent\Builder */ public function advancedTextSearch(Builder $query, array $terms) { - foreach($terms as $term) { - $query = $query->orWhereRaw('CONCAT('.DB::getTablePrefix().'users.first_name," ",'.DB::getTablePrefix().'users.last_name) LIKE ?', ["%$term%"]); + $query->orWhereMultipleColumns([ + 'users.first_name', + 'users.last_name', + ], $term); } return $query; diff --git a/app/Notifications/AcceptanceAssetAcceptedNotification.php b/app/Notifications/AcceptanceAssetAcceptedNotification.php index c667588dae..ca016acd34 100644 --- a/app/Notifications/AcceptanceAssetAcceptedNotification.php +++ b/app/Notifications/AcceptanceAssetAcceptedNotification.php @@ -40,12 +40,17 @@ class AcceptanceAssetAcceptedNotification extends Notification public function via() { - $notifyBy[] = 'mail'; + $notifyBy = ['mail']; return $notifyBy; } + public function shouldSend($notifiable, $channel) + { + return $this->settings->alerts_enabled && ! empty($this->settings->alert_email); + } + /** * Get the mail representation of the notification. * diff --git a/app/Notifications/AcceptanceAssetDeclinedNotification.php b/app/Notifications/AcceptanceAssetDeclinedNotification.php index 9446747353..11b022e095 100644 --- a/app/Notifications/AcceptanceAssetDeclinedNotification.php +++ b/app/Notifications/AcceptanceAssetDeclinedNotification.php @@ -38,12 +38,17 @@ class AcceptanceAssetDeclinedNotification extends Notification */ public function via($notifiable) { - $notifyBy[] = 'mail'; + $notifyBy = ['mail']; return $notifyBy; } + public function shouldSend($notifiable, $channel) + { + return $this->settings->alerts_enabled && ! empty($this->settings->alert_email); + } + /** * Get the mail representation of the notification. * diff --git a/app/Notifications/AuditNotification.php b/app/Notifications/AuditNotification.php index 84f1753767..1377c29e7e 100644 --- a/app/Notifications/AuditNotification.php +++ b/app/Notifications/AuditNotification.php @@ -23,6 +23,7 @@ class AuditNotification extends Notification public function __construct($params) { // + $this->settings = Setting::getSettings(); $this->params = $params; } @@ -34,7 +35,7 @@ class AuditNotification extends Notification public function via() { $notifyBy = []; - if (Setting::getSettings()->slack_endpoint) { + if (Setting::getSettings()->webhook_endpoint) { $notifyBy[] = 'slack'; } @@ -43,9 +44,12 @@ class AuditNotification extends Notification public function toSlack() { + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; return (new SlackMessage) ->success() ->content(class_basename(get_class($this->params['item'])).' Audited') + ->from(($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot') + ->to($channel) ->attachment(function ($attachment) { $item = $this->params['item']; $admin_user = $this->params['admin']; diff --git a/app/Notifications/CheckinAccessoryNotification.php b/app/Notifications/CheckinAccessoryNotification.php index f9abba59f9..53be68f58f 100644 --- a/app/Notifications/CheckinAccessoryNotification.php +++ b/app/Notifications/CheckinAccessoryNotification.php @@ -39,11 +39,7 @@ class CheckinAccessoryNotification extends Notification \Log::debug('via called'); $notifyBy = []; - if (Setting::getSettings()->slack_endpoint) { - $notifyBy[] = 'slack'; - } - - if (Setting::getSettings()->slack_endpoint != '') { + if (Setting::getSettings()->webhook_endpoint != '') { $notifyBy[] = 'slack'; } @@ -95,7 +91,8 @@ class CheckinAccessoryNotification extends Notification $admin = $this->admin; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ 'To' => '<'.$target->present()->viewUrl().'|'.$target->present()->fullName().'>', @@ -105,6 +102,7 @@ class CheckinAccessoryNotification extends Notification return (new SlackMessage) ->content(':arrow_down: :keyboard: '.trans('mail.Accessory_Checkin_Notification')) ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/CheckinAssetNotification.php b/app/Notifications/CheckinAssetNotification.php index 9868ad1b4d..5389c8ddde 100644 --- a/app/Notifications/CheckinAssetNotification.php +++ b/app/Notifications/CheckinAssetNotification.php @@ -43,9 +43,8 @@ class CheckinAssetNotification extends Notification public function via() { $notifyBy = []; - - if (Setting::getSettings()->slack_endpoint != '') { - \Log::debug('use slack'); + if (Setting::getSettings()->webhook_endpoint != '') { + \Log::debug('use webhook'); $notifyBy[] = 'slack'; } @@ -65,7 +64,8 @@ class CheckinAssetNotification extends Notification $admin = $this->admin; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname != '') ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname != '') ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ trans('general.administrator') => '<'.$admin->present()->viewUrl().'|'.$admin->present()->fullName().'>', @@ -76,6 +76,7 @@ class CheckinAssetNotification extends Notification return (new SlackMessage) ->content(':arrow_down: :computer: '.trans('mail.Asset_Checkin_Notification')) ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/CheckinLicenseSeatNotification.php b/app/Notifications/CheckinLicenseSeatNotification.php index faeafecb1b..2c7fe2fd85 100644 --- a/app/Notifications/CheckinLicenseSeatNotification.php +++ b/app/Notifications/CheckinLicenseSeatNotification.php @@ -41,7 +41,7 @@ class CheckinLicenseSeatNotification extends Notification { $notifyBy = []; - if (Setting::getSettings()->slack_endpoint != '') { + if (Setting::getSettings()->webhook_endpoint != '') { $notifyBy[] = 'slack'; } @@ -62,7 +62,8 @@ class CheckinLicenseSeatNotification extends Notification $admin = $this->admin; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; if ($admin) { $fields = [ @@ -79,6 +80,7 @@ class CheckinLicenseSeatNotification extends Notification return (new SlackMessage) ->content(':arrow_down: :floppy_disk: '.trans('mail.License_Checkin_Notification')) ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/CheckoutAccessoryNotification.php b/app/Notifications/CheckoutAccessoryNotification.php index 5882fdf275..f5635d1af0 100644 --- a/app/Notifications/CheckoutAccessoryNotification.php +++ b/app/Notifications/CheckoutAccessoryNotification.php @@ -37,7 +37,7 @@ class CheckoutAccessoryNotification extends Notification { $notifyBy = []; - if (Setting::getSettings()->slack_endpoint != '') { + if (Setting::getSettings()->webhook_endpoint != '') { $notifyBy[] = 'slack'; } @@ -78,7 +78,8 @@ class CheckoutAccessoryNotification extends Notification $admin = $this->admin; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ 'To' => '<'.$target->present()->viewUrl().'|'.$target->present()->fullName().'>', @@ -88,6 +89,7 @@ class CheckoutAccessoryNotification extends Notification return (new SlackMessage) ->content(':arrow_up: :keyboard: Accessory Checked Out') ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/CheckoutAssetNotification.php b/app/Notifications/CheckoutAssetNotification.php index c56c1a3711..e57825f5c6 100644 --- a/app/Notifications/CheckoutAssetNotification.php +++ b/app/Notifications/CheckoutAssetNotification.php @@ -53,8 +53,8 @@ class CheckoutAssetNotification extends Notification { $notifyBy = []; - if ((Setting::getSettings()) && (Setting::getSettings()->slack_endpoint != '')) { - \Log::debug('use slack'); + if ((Setting::getSettings()) && (Setting::getSettings()->webhook_endpoint != '')) { + \Log::debug('use webhook'); $notifyBy[] = 'slack'; } @@ -95,7 +95,8 @@ class CheckoutAssetNotification extends Notification $admin = $this->admin; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ 'To' => '<'.$target->present()->viewUrl().'|'.$target->present()->fullName().'>', @@ -107,8 +108,9 @@ class CheckoutAssetNotification extends Notification } return (new SlackMessage) - ->content(':arrow_up: :computer: Asset Checked Out') + ->content(':arrow_up: :computer: '.trans('mail.Asset_Checkout_Notification')) ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/CheckoutConsumableNotification.php b/app/Notifications/CheckoutConsumableNotification.php index bfebe2c7d5..376c70fdea 100644 --- a/app/Notifications/CheckoutConsumableNotification.php +++ b/app/Notifications/CheckoutConsumableNotification.php @@ -43,7 +43,7 @@ class CheckoutConsumableNotification extends Notification { $notifyBy = []; - if (Setting::getSettings()->slack_endpoint != '') { + if (Setting::getSettings()->webhook_endpoint != '') { $notifyBy[] = 'slack'; } @@ -84,7 +84,8 @@ class CheckoutConsumableNotification extends Notification $admin = $this->admin; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ 'To' => '<'.$target->present()->viewUrl().'|'.$target->present()->fullName().'>', @@ -94,6 +95,7 @@ class CheckoutConsumableNotification extends Notification return (new SlackMessage) ->content(':arrow_up: :paperclip: Consumable Checked Out') ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/CheckoutLicenseSeatNotification.php b/app/Notifications/CheckoutLicenseSeatNotification.php index 50d8313c09..2dd6480a30 100644 --- a/app/Notifications/CheckoutLicenseSeatNotification.php +++ b/app/Notifications/CheckoutLicenseSeatNotification.php @@ -43,7 +43,7 @@ class CheckoutLicenseSeatNotification extends Notification { $notifyBy = []; - if (Setting::getSettings()->slack_endpoint != '') { + if (Setting::getSettings()->webhook_endpoint != '') { $notifyBy[] = 'slack'; } @@ -84,7 +84,8 @@ class CheckoutLicenseSeatNotification extends Notification $admin = $this->admin; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ 'To' => '<'.$target->present()->viewUrl().'|'.$target->present()->fullName().'>', @@ -94,6 +95,7 @@ class CheckoutLicenseSeatNotification extends Notification return (new SlackMessage) ->content(':arrow_up: :floppy_disk: License Checked Out') ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $admin, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/CurrentInventory.php b/app/Notifications/CurrentInventory.php index d0161aa165..158955b273 100644 --- a/app/Notifications/CurrentInventory.php +++ b/app/Notifications/CurrentInventory.php @@ -44,7 +44,7 @@ class CurrentInventory extends Notification 'accessories' => $this->user->accessories, 'licenses' => $this->user->licenses, ]) - ->subject('Inventory Report'); + ->subject(trans('mail.inventory_report')); return $message; } diff --git a/app/Notifications/FirstAdminNotification.php b/app/Notifications/FirstAdminNotification.php index 71637b5e80..83e3a65de7 100644 --- a/app/Notifications/FirstAdminNotification.php +++ b/app/Notifications/FirstAdminNotification.php @@ -24,7 +24,7 @@ class FirstAdminNotification extends Notification $this->_data['last_name'] = $content['last_name']; $this->_data['username'] = $content['username']; $this->_data['password'] = $content['password']; - $this->_data['url'] = url('/'); + $this->_data['url'] = config('app.url'); } /** diff --git a/app/Notifications/InventoryAlert.php b/app/Notifications/InventoryAlert.php index ff88b548c0..6d59e3b42a 100644 --- a/app/Notifications/InventoryAlert.php +++ b/app/Notifications/InventoryAlert.php @@ -32,7 +32,7 @@ class InventoryAlert extends Notification */ public function via() { - $notifyBy[] = 'mail'; + $notifyBy = ['mail']; return $notifyBy; } diff --git a/app/Notifications/RequestAssetCancelation.php b/app/Notifications/RequestAssetCancelation.php index ea76056af3..fa3546bbc8 100644 --- a/app/Notifications/RequestAssetCancelation.php +++ b/app/Notifications/RequestAssetCancelation.php @@ -57,8 +57,8 @@ class RequestAssetCancelation extends Notification { $notifyBy = []; - if (Setting::getSettings()->slack_endpoint != '') { - \Log::debug('use slack'); + if (Setting::getSettings()->webhook_endpoint != '') { + \Log::debug('use webhook'); $notifyBy[] = 'slack'; } @@ -73,7 +73,8 @@ class RequestAssetCancelation extends Notification $item = $this->item; $note = $this->note; $qty = $this->item_quantity; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ 'QTY' => $qty, @@ -87,6 +88,7 @@ class RequestAssetCancelation extends Notification return (new SlackMessage) ->content(trans('mail.a_user_canceled')) ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/RequestAssetNotification.php b/app/Notifications/RequestAssetNotification.php index 22a8f3d464..d2001f2e13 100644 --- a/app/Notifications/RequestAssetNotification.php +++ b/app/Notifications/RequestAssetNotification.php @@ -58,7 +58,7 @@ class RequestAssetNotification extends Notification { $notifyBy = []; - if (Setting::getSettings()->slack_endpoint != '') { + if (Setting::getSettings()->webhook_endpoint != '') { $notifyBy[] = 'slack'; } @@ -73,7 +73,8 @@ class RequestAssetNotification extends Notification $qty = $this->item_quantity; $item = $this->item; $note = $this->note; - $botname = ($this->settings->slack_botname) ? $this->settings->slack_botname : 'Snipe-Bot'; + $botname = ($this->settings->webhook_botname) ? $this->settings->webhook_botname : 'Snipe-Bot'; + $channel = ($this->settings->webhook_channel) ? $this->settings->webhook_channel : ''; $fields = [ 'QTY' => $qty, @@ -83,6 +84,7 @@ class RequestAssetNotification extends Notification return (new SlackMessage) ->content(trans('mail.Item_Requested')) ->from($botname) + ->to($channel) ->attachment(function ($attachment) use ($item, $note, $fields) { $attachment->title(htmlspecialchars_decode($item->present()->name), $item->present()->viewUrl()) ->fields($fields) diff --git a/app/Notifications/SendUpcomingAuditNotification.php b/app/Notifications/SendUpcomingAuditNotification.php index a883220f2f..a1005494f6 100644 --- a/app/Notifications/SendUpcomingAuditNotification.php +++ b/app/Notifications/SendUpcomingAuditNotification.php @@ -40,7 +40,7 @@ class SendUpcomingAuditNotification extends Notification */ public function toMail() { - $message = (new MailMessage)->markdown('notifications.markdown.upcoming-audits', + $message = (new MailMessage())->markdown('notifications.markdown.upcoming-audits', [ 'assets' => $this->assets, 'threshold' => $this->threshold, diff --git a/app/Notifications/WelcomeNotification.php b/app/Notifications/WelcomeNotification.php index 639f622188..1e27ca7364 100644 --- a/app/Notifications/WelcomeNotification.php +++ b/app/Notifications/WelcomeNotification.php @@ -24,7 +24,7 @@ class WelcomeNotification extends Notification $this->_data['last_name'] = htmlspecialchars_decode($content['last_name']); $this->_data['username'] = htmlspecialchars_decode($content['username']); $this->_data['password'] = htmlspecialchars_decode($content['password']); - $this->_data['url'] = url('/'); + $this->_data['url'] = config('app.url'); } /** @@ -44,7 +44,7 @@ class WelcomeNotification extends Notification */ public function toMail() { - return (new MailMessage) + return (new MailMessage()) ->subject(trans('mail.welcome', ['name' => $this->_data['first_name'].' '.$this->_data['last_name']])) ->markdown('notifications.Welcome', $this->_data); } diff --git a/app/Observers/AssetObserver.php b/app/Observers/AssetObserver.php index a399e1d2a6..84595f04b3 100644 --- a/app/Observers/AssetObserver.php +++ b/app/Observers/AssetObserver.php @@ -71,12 +71,33 @@ class AssetObserver public function created(Asset $asset) { if ($settings = Setting::getSettings()) { - $settings->increment('next_auto_tag_base'); - $settings->save(); + $tag = $asset->asset_tag; + $prefix = $settings->auto_increment_prefix; + $number = substr($tag, strlen($prefix)); + // IF - auto_increment_assets is on, AND (the prefix matches the start of the tag OR there is no prefix) + // AND the rest of the string after the prefix is all digits, THEN... + if ($settings->auto_increment_assets && (strpos($tag, $prefix) === 0 || $prefix=='') && preg_match('/\d+/',$number) === 1) { + // new way of auto-trueing-up auto_increment ID's + $next_asset_tag = intval($number, 10) + 1; + // we had to use 'intval' because the $number could be '01234' and + // might get interpreted in Octal instead of decimal + + // only modify the 'next' one if it's *bigger* than the stored base + // + if($next_asset_tag > $settings->next_auto_tag_base) { + $settings->next_auto_tag_base = $next_asset_tag; + $settings->save(); + } + + } else { + // legacy method + $settings->increment('next_auto_tag_base'); + $settings->save(); + } } $logAction = new Actionlog(); - $logAction->item_type = Asset::class; + $logAction->item_type = Asset::class; // can we instead say $logAction->item = $asset ? $logAction->item_id = $asset->id; $logAction->created_at = date('Y-m-d H:i:s'); $logAction->user_id = Auth::id(); diff --git a/app/Presenters/AccessoryPresenter.php b/app/Presenters/AccessoryPresenter.php index 7d77acc8d7..cc4f9badfc 100644 --- a/app/Presenters/AccessoryPresenter.php +++ b/app/Presenters/AccessoryPresenter.php @@ -80,19 +80,25 @@ class AccessoryPresenter extends Presenter ], [ 'field' => 'qty', 'searchable' => false, - 'sortable' => false, - 'title' => trans('admin/accessories/general.total'), - ], [ - 'field' => 'min_qty', - 'searchable' => false, 'sortable' => true, - 'title' => trans('general.min_amt'), + 'title' => trans('admin/accessories/general.total'), ], [ 'field' => 'remaining_qty', 'searchable' => false, 'sortable' => false, 'visible' => false, 'title' => trans('admin/accessories/general.remaining'), + ],[ + 'field' => 'users_count', + 'searchable' => false, + 'sortable' => true, + 'visible' => true, + 'title' => trans('general.checked_out'), + ], [ + 'field' => 'min_qty', + 'searchable' => false, + 'sortable' => true, + 'title' => trans('general.min_amt'), ], [ 'field' => 'purchase_date', 'searchable' => true, diff --git a/app/Presenters/ActionlogPresenter.php b/app/Presenters/ActionlogPresenter.php index 617cdb6a2a..cd581d33ce 100644 --- a/app/Presenters/ActionlogPresenter.php +++ b/app/Presenters/ActionlogPresenter.php @@ -50,6 +50,8 @@ class ActionlogPresenter extends Presenter return 'far fa-save'; } elseif ($this->itemType() == 'component') { return 'far fa-hdd'; + } elseif ($this->itemType() == 'user') { + return 'fa-solid fa-people-arrows'; } } diff --git a/app/Presenters/AssetAuditPresenter.php b/app/Presenters/AssetAuditPresenter.php index 2c25a6aa06..a332950de1 100644 --- a/app/Presenters/AssetAuditPresenter.php +++ b/app/Presenters/AssetAuditPresenter.php @@ -44,13 +44,13 @@ class AssetAuditPresenter extends Presenter 'visible' => true, 'formatter' => 'hardwareLinkFormatter', ], [ - 'field' => 'image', + 'field' => 'file', 'searchable' => false, 'sortable' => true, 'switchable' => true, 'title' => trans('admin/hardware/table.image'), 'visible' => false, - 'formatter' => 'imageFormatter', + 'formatter' => 'auditImageFormatter', ], [ 'field' => 'asset_tag', 'searchable' => true, diff --git a/app/Presenters/AssetMaintenancesPresenter.php b/app/Presenters/AssetMaintenancesPresenter.php index 8906b420d3..c4446c0b2a 100644 --- a/app/Presenters/AssetMaintenancesPresenter.php +++ b/app/Presenters/AssetMaintenancesPresenter.php @@ -95,6 +95,7 @@ class AssetMaintenancesPresenter extends Presenter 'searchable' => true, 'sortable' => true, 'title' => trans('admin/asset_maintenances/table.is_warranty'), + 'formatter' => 'trueFalseFormatter' ], [ 'field' => 'cost', 'searchable' => true, diff --git a/app/Presenters/AssetModelPresenter.php b/app/Presenters/AssetModelPresenter.php index fd74108ee3..8da192ebb2 100644 --- a/app/Presenters/AssetModelPresenter.php +++ b/app/Presenters/AssetModelPresenter.php @@ -123,6 +123,7 @@ class AssetModelPresenter extends Presenter 'switchable' => true, 'title' => trans('general.notes'), 'visible' => false, + 'formatter' => 'notesFormatter', ], [ 'field' => 'created_at', @@ -210,7 +211,7 @@ class AssetModelPresenter extends Presenter public function imageUrl() { if (! empty($this->image)) { - return ''.$this->name.''; + return ''.$this->name.''; } return ''; @@ -223,7 +224,7 @@ class AssetModelPresenter extends Presenter public function imageSrc() { if (! empty($this->image)) { - return url('/').'/uploads/models/'.$this->image; + return config('app.url').'/uploads/models/'.$this->image; } return ''; diff --git a/app/Presenters/AssetPresenter.php b/app/Presenters/AssetPresenter.php index ccc4a4cf13..ec50933583 100644 --- a/app/Presenters/AssetPresenter.php +++ b/app/Presenters/AssetPresenter.php @@ -154,6 +154,13 @@ class AssetPresenter extends Presenter 'footerFormatter' => 'sumFormatter', 'class' => 'text-right', ], [ + "field" => "book_value", + "searchable" => false, + "sortable" => false, + "title" => trans('admin/hardware/table.book_value'), + "footerFormatter" => 'sumFormatter', + "class" => "text-right", + ],[ 'field' => 'order_number', 'searchable' => true, 'sortable' => true, @@ -163,9 +170,16 @@ class AssetPresenter extends Presenter ], [ 'field' => 'eol', 'searchable' => false, - 'sortable' => false, + 'sortable' => true, 'visible' => false, 'title' => trans('general.eol'), + ], + [ + 'field' => 'asset_eol_date', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('admin/hardware/form.eol_date'), 'formatter' => 'dateDisplayFormatter', ], [ 'field' => 'warranty_months', @@ -285,7 +299,7 @@ class AssetPresenter extends Presenter 'formatter'=> 'customFieldsFormatter', 'escape' => true, 'class' => ($field->field_encrypted == '1') ? 'css-padlock' : '', - 'visible' => true, + 'visible' => ($field->show_in_listview == '1') ? true : false, ]; } @@ -527,6 +541,18 @@ class AssetPresenter extends Presenter return false; } + /** + * Used to take user created warranty URL and dynamically fill in the needed values per asset + * @return string + */ + public function dynamicWarrantyUrl() + { + $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('{SERIAL}',$this->model->serial,$url)); + return $url; + } + /** * Url to view this item. * @return string diff --git a/app/Presenters/CompanyPresenter.php b/app/Presenters/CompanyPresenter.php index a6aaebf7e4..767def2e36 100644 --- a/app/Presenters/CompanyPresenter.php +++ b/app/Presenters/CompanyPresenter.php @@ -29,6 +29,22 @@ class CompanyPresenter extends Presenter 'title' => trans('admin/companies/table.name'), 'visible' => true, 'formatter' => 'companiesLinkFormatter', + ], [ + 'field' => 'phone', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/users/table.phone'), + 'visible' => false, + 'formatter' => 'phoneFormatter', + ], [ + 'field' => 'fax', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/suppliers/table.fax'), + 'visible' => false, + 'formatter' => 'phoneFormatter', ], [ 'field' => 'image', 'searchable' => false, diff --git a/app/Presenters/ComponentPresenter.php b/app/Presenters/ComponentPresenter.php index 16a96f3c4c..c7468911a1 100644 --- a/app/Presenters/ComponentPresenter.php +++ b/app/Presenters/ComponentPresenter.php @@ -59,6 +59,15 @@ class ComponentPresenter extends Presenter 'title' => trans('general.category'), 'formatter' => 'categoriesLinkObjFormatter', ], [ + 'field' => 'supplier', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('general.supplier'), + 'visible' => false, + 'formatter' => 'suppliersLinkObjFormatter', + ], + [ 'field' => 'qty', 'searchable' => false, 'sortable' => true, diff --git a/app/Presenters/ConsumablePresenter.php b/app/Presenters/ConsumablePresenter.php index e931fc1228..abb599de4f 100644 --- a/app/Presenters/ConsumablePresenter.php +++ b/app/Presenters/ConsumablePresenter.php @@ -53,6 +53,14 @@ class ConsumablePresenter extends Presenter 'sortable' => true, 'title' => trans('general.category'), 'formatter' => 'categoriesLinkObjFormatter', + ], [ + 'field' => 'supplier', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('general.supplier'), + 'visible' => false, + 'formatter' => 'suppliersLinkObjFormatter', ], [ 'field' => 'model_number', 'searchable' => true, diff --git a/app/Presenters/LicensePresenter.php b/app/Presenters/LicensePresenter.php index 1e8784f2fc..f2d54549e1 100644 --- a/app/Presenters/LicensePresenter.php +++ b/app/Presenters/LicensePresenter.php @@ -33,7 +33,7 @@ class LicensePresenter extends Presenter 'field' => 'name', 'searchable' => true, 'sortable' => true, - 'title' => trans('admin/licenses/table.title'), + 'title' => trans('general.name'), 'formatter' => 'licensesLinkFormatter', ], [ 'field' => 'product_key', @@ -151,6 +151,21 @@ class LicensePresenter extends Presenter 'visible' => false, 'title' => trans('general.order_number'), ], [ + 'field' => 'created_at', + 'searchable' => false, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.created_at'), + 'formatter' => 'dateDisplayFormatter', + ], [ + 'field' => 'updated_at', + 'searchable' => false, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.updated_at'), + 'formatter' => 'dateDisplayFormatter', + ], + [ 'field' => 'notes', 'searchable' => true, 'sortable' => true, diff --git a/app/Presenters/LocationPresenter.php b/app/Presenters/LocationPresenter.php index d4281839a1..bf4ee27bba 100644 --- a/app/Presenters/LocationPresenter.php +++ b/app/Presenters/LocationPresenter.php @@ -141,6 +141,24 @@ class LocationPresenter extends Presenter 'title' => trans('admin/locations/table.country'), 'visible' => false, ], + [ + 'field' => 'phone', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/users/table.phone'), + 'visible' => false, + 'formatter' => 'phoneFormatter', + ], + [ + 'field' => 'fax', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/suppliers/table.fax'), + 'visible' => false, + 'formatter' => 'phoneFormatter', + ], [ 'field' => 'ldap_ou', 'searchable' => true, diff --git a/app/Presenters/ManufacturerPresenter.php b/app/Presenters/ManufacturerPresenter.php index 5b44a76933..f5c15f1fe5 100644 --- a/app/Presenters/ManufacturerPresenter.php +++ b/app/Presenters/ManufacturerPresenter.php @@ -47,7 +47,7 @@ class ManufacturerPresenter extends Presenter 'switchable' => true, 'title' => trans('admin/manufacturers/table.url'), 'visible' => true, - 'formatter' => 'linkFormatter', + 'formatter' => 'externalLinkFormatter', ], [ 'field' => 'support_url', @@ -56,7 +56,7 @@ class ManufacturerPresenter extends Presenter 'switchable' => true, 'title' => trans('admin/manufacturers/table.support_url'), 'visible' => true, - 'formatter' => 'linkFormatter', + 'formatter' => 'externalLinkFormatter', ], [ @@ -78,6 +78,15 @@ class ManufacturerPresenter extends Presenter 'visible' => true, 'formatter' => 'emailFormatter', ], + [ + 'field' => 'warranty_lookup_url', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/manufacturers/table.warranty_lookup_url'), + 'visible' => false, + 'formatter' => 'externalLinkFormatter', + ], [ 'field' => 'assets_count', diff --git a/app/Presenters/UserPresenter.php b/app/Presenters/UserPresenter.php index 8f5cfcccf5..080a2d10e9 100644 --- a/app/Presenters/UserPresenter.php +++ b/app/Presenters/UserPresenter.php @@ -7,6 +7,7 @@ use App\Models\Setting; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Str; /** * Class UserPresenter @@ -85,6 +86,15 @@ class UserPresenter extends Presenter 'visible' => true, 'formatter' => 'usersLinkFormatter', ], + [ + 'field' => 'vip', + 'searchable' => false, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/users/general.vip_label'), + 'visible' => false, + 'formatter' => 'trueFalseFormatter', + ], [ 'field' => 'remote', 'searchable' => false, @@ -285,6 +295,15 @@ class UserPresenter extends Presenter 'visible' => true, 'formatter' => 'trueFalseFormatter', ], + [ + 'field' => 'autoassign_licenses', + 'searchable' => false, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('general.autoassign_licenses'), + 'visible' => false, + 'formatter' => 'trueFalseFormatter', + ], [ 'field' => 'created_by', 'searchable' => false, @@ -346,8 +365,7 @@ class UserPresenter extends Presenter public function emailLink() { if ($this->email) { - return ''.$this->email.'' - .''; + return ''.$this->email.''; } return ''; @@ -382,23 +400,31 @@ class UserPresenter extends Presenter public function gravatar() { if ($this->avatar) { + + // Check if it's a google avatar or some external avatar + if (Str::startsWith($this->avatar, ['http://', 'https://'])) { + return $this->avatar; + } + + // Otherwise assume it's an uploaded image return Storage::disk('public')->url('avatars/'.e($this->avatar)); } if (Setting::getSettings()->load_remote == '1') { 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))); + } elseif ($this->email != '') { + + $gravatar = md5(strtolower(trim($this->email))); return '//gravatar.com/avatar/'.$gravatar; } } // Set a fun, gender-neutral default icon - return url('/').'/img/default-sm.png'; + return config('app.url').'/img/default-sm.png'; } /** diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 90520738d0..d5b10bde3a 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -39,7 +39,7 @@ class RouteServiceProvider extends ServiceProvider { Route::group([ 'middleware' => 'web', - 'namespace' => $this->namespace, +// 'namespace' => $this->namespace, //okay, I don't know what this means, but somehow this might be a problem for us? ], function ($router) { require base_path('routes/web/hardware.php'); require base_path('routes/web/models.php'); @@ -65,7 +65,7 @@ class RouteServiceProvider extends ServiceProvider { Route::group([ 'middleware' => 'auth:api', - 'namespace' => $this->namespace, +// 'namespace' => $this->namespace, // this might also be a problem? I don't really know :/ 'prefix' => 'api', ], function ($router) { require base_path('routes/api.php'); diff --git a/app/Providers/SettingsServiceProvider.php b/app/Providers/SettingsServiceProvider.php index 8ab77c6631..371fc234de 100644 --- a/app/Providers/SettingsServiceProvider.php +++ b/app/Providers/SettingsServiceProvider.php @@ -29,6 +29,23 @@ class SettingsServiceProvider extends ServiceProvider $view->with('snipeSettings', Setting::getSettings()); }); + + // Make sure the limit is actually set, is an integer and does not exceed system limits + \App::singleton('api_limit_value', function () { + $limit = config('app.max_results'); + + if ((abs(intval(request('limit'))) > 0) && (abs(request('limit')) <= config('app.max_results'))) { + $limit = abs(request('limit')); + } + \Log::debug('Max in env: '.config('app.max_results')); + \Log::debug('Original requested limit: '.request('limit')); + \Log::debug('Modified limit: '.$limit); + \Log::debug('------------------------------'); + + return $limit; + }); + + /** * Set some common variables so that they're globally available. * The paths should always be public (versus private uploads) @@ -150,6 +167,7 @@ class SettingsServiceProvider extends ServiceProvider // Set the monetary locale to the configured locale to make helper::parseFloat work. setlocale(LC_MONETARY, config('app.locale')); setlocale(LC_NUMERIC, config('app.locale')); + } /** diff --git a/app/Services/Saml.php b/app/Services/Saml.php index c8fed32bb1..f80b1c1fb9 100644 --- a/app/Services/Saml.php +++ b/app/Services/Saml.php @@ -22,7 +22,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException; */ class Saml { - const DATA_SESSION_KEY = '_samlData'; + public const DATA_SESSION_KEY = '_samlData'; /** * OneLogin_Saml2_Auth instance. @@ -161,7 +161,7 @@ class Saml //Let onelogin/php-saml know to use 'X-Forwarded-*' headers if it is from a trusted proxy OneLogin_Saml2_Utils::setProxyVars(request()->isFromTrustedProxy()); - data_set($settings, 'sp.entityId', url('/')); + data_set($settings, 'sp.entityId', config('app.url')); data_set($settings, 'sp.assertionConsumerService.url', route('saml.acs')); data_set($settings, 'sp.singleLogoutService.url', route('saml.sls')); data_set($settings, 'sp.x509cert', $setting->saml_sp_x509cert); @@ -308,12 +308,9 @@ class Saml */ public function samlLogin($data) { - $setting = Setting::getSettings(); $this->saveDataToSession($data); $this->loadDataFromSession(); - $username = $this->getUsername(); - return User::where('username', '=', $username)->whereNull('deleted_at')->where('activated', '=', '1')->first(); } diff --git a/composer.json b/composer.json index ccddd5ab2f..bb9acd9b1d 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ } ], "require": { - "php": ">=7.4 <8.3", + "php": ">=7.4.3 <8.2", "ext-curl": "*", "ext-fileinfo": "*", "ext-json": "*", @@ -46,10 +46,11 @@ "laravel/helpers": "^1.4", "laravel/passport": "^10.1", "laravel/slack-notification-channel": "^2.3", + "laravel/socialite": "^5.6", "laravel/tinker": "^2.6", "laravel/ui": "^3.3", "laravelcollective/html": "^6.2", - "lcobucci/clock": "1.2.0|2.0.0", + "lcobucci/clock": "^1.2.0|^2.0.0", "lcobucci/jwt": "^3.4.5|^4.0.4", "league/csv": "^9.7", "league/flysystem-aws-s3-v3": "^1.0", @@ -61,26 +62,31 @@ "nunomaduro/collision": "^5.4", "onelogin/php-saml": "^3.4", "paragonie/constant_time_encoding": "^2.3", - "symfony/polyfill-mbstring": "^1.22", + "paragonie/sodium_compat": "^1.19", "phpdocumentor/reflection-docblock": "^5.1", "phpspec/prophecy": "^1.10", "pragmarx/google2fa-laravel": "^1.3", "rollbar/rollbar-laravel": "^7.0", "spatie/laravel-backup": "^6.16", + "symfony/polyfill-mbstring": "^1.22", "tecnickcom/tc-lib-barcode": "^1.15", "tecnickcom/tcpdf": "^6.5.0", "unicodeveloper/laravel-password": "^1.0", "watson/validating": "^6.1" }, "require-dev": { + "brianium/paratest": "^6.6", "fakerphp/faker": "^1.16", - "laravel/dusk": "^6.19", + "laravel/dusk": "^6.25", "mockery/mockery": "^1.4", + "nunomaduro/larastan": "^1.0", + "nunomaduro/phpinsights": "^2.7", "phpunit/php-token-stream": "^3.1", "phpunit/phpunit": "^9.0", "squizlabs/php_codesniffer": "^3.5", "symfony/css-selector": "^4.4", - "symfony/dom-crawler": "^4.4" + "symfony/dom-crawler": "^4.4", + "vimeo/psalm": "^5.13" }, "extra": { "laravel": { @@ -124,6 +130,9 @@ "sort-packages": true, "optimize-autoloader": true, "discard-changes": true, - "process-timeout": 3000 + "process-timeout": 3000, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } } } diff --git a/composer.lock b/composer.lock index bf8cb1f758..46cb36476c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0c1f3848f8c9ede2b5f1513e4feaa7d7", + "content-hash": "ba3150255e8c263677ad9bc203852fb0", "packages": [ { "name": "alek13/slack", @@ -78,12 +78,12 @@ "source": { "type": "git", "url": "https://github.com/grokability/laravel-scim-server.git", - "reference": "2c7ecc450eee59234e059ec2e7724b2d8f3a8369" + "reference": "9e8dd2d3958d3c3c05d0a99fe6475361ad9e9419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/grokability/laravel-scim-server/zipball/2c7ecc450eee59234e059ec2e7724b2d8f3a8369", - "reference": "2c7ecc450eee59234e059ec2e7724b2d8f3a8369", + "url": "https://api.github.com/repos/grokability/laravel-scim-server/zipball/9e8dd2d3958d3c3c05d0a99fe6475361ad9e9419", + "reference": "9e8dd2d3958d3c3c05d0a99fe6475361ad9e9419", "shasum": "" }, "require": { @@ -133,7 +133,7 @@ "support": { "source": "https://github.com/grokability/laravel-scim-server/tree/master" }, - "time": "2022-11-22T20:26:54+00:00" + "time": "2023-01-12T00:32:07+00:00" }, { "name": "asm89/stack-cors", @@ -1810,24 +1810,24 @@ }, { "name": "dompdf/dompdf", - "version": "v2.0.0", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "79573d8b8a141ec8a17312515de8740eed014fa9" + "reference": "e8d2d5e37e8b0b30f0732a011295ab80680d7e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/79573d8b8a141ec8a17312515de8740eed014fa9", - "reference": "79573d8b8a141ec8a17312515de8740eed014fa9", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/e8d2d5e37e8b0b30f0732a011295ab80680d7e85", + "reference": "e8d2d5e37e8b0b30f0732a011295ab80680d7e85", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", "masterminds/html5": "^2.0", - "phenx/php-font-lib": "^0.5.4", - "phenx/php-svg-lib": "^0.3.3 || ^0.4.0", + "phenx/php-font-lib": ">=0.5.4 <1.0.0", + "phenx/php-svg-lib": ">=0.3.3 <1.0.0", "php": "^7.1 || ^8.0" }, "require-dev": { @@ -1858,25 +1858,17 @@ ], "authors": [ { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - }, - { - "name": "Brian Sweeney", - "email": "eclecticgeek@gmail.com" - }, - { - "name": "Gabriel Bull", - "email": "me@gabrielbull.com" + "name": "The Dompdf Community", + "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" } ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v2.0.0" + "source": "https://github.com/dompdf/dompdf/tree/v2.0.3" }, - "time": "2022-06-21T21:14:57+00:00" + "time": "2023-02-07T12:51:48+00:00" }, { "name": "dragonmantank/cron-expression", @@ -2681,6 +2673,7 @@ "type": "github" } ], + "abandoned": true, "time": "2022-02-23T14:25:13+00:00" }, { @@ -3612,6 +3605,75 @@ }, "time": "2022-01-12T18:07:54+00:00" }, + { + "name": "laravel/socialite", + "version": "v5.6.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/a14a177f2cc71d8add71e2b19e00800e83bdda09", + "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "league/oauth1-client": "^1.10.1", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ], + "aliases": { + "Socialite": "Laravel\\Socialite\\Facades\\Socialite" + } + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "homepage": "https://laravel.com", + "keywords": [ + "laravel", + "oauth" + ], + "support": { + "issues": "https://github.com/laravel/socialite/issues", + "source": "https://github.com/laravel/socialite" + }, + "time": "2023-01-20T15:42:35+00:00" + }, { "name": "laravel/tinker", "version": "v2.7.2", @@ -3811,6 +3873,7 @@ "issues": "https://github.com/LaravelCollective/html/issues", "source": "https://github.com/LaravelCollective/html" }, + "abandoned": "spatie/laravel-html", "time": "2022-02-08T21:02:54+00:00" }, { @@ -4540,6 +4603,82 @@ ], "time": "2022-04-17T13:12:02+00:00" }, + { + "name": "league/oauth1-client", + "version": "v1.10.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "d6365b901b5c287dd41f143033315e2f777e1167" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/d6365b901b5c287dd41f143033315e2f777e1167", + "reference": "d6365b901b5c287dd41f143033315e2f777e1167", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "guzzlehttp/psr7": "^1.7|^2.0", + "php": ">=7.1||>=8.0" + }, + "require-dev": { + "ext-simplexml": "*", + "friendsofphp/php-cs-fixer": "^2.17", + "mockery/mockery": "^1.3.3", + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5||9.5" + }, + "suggest": { + "ext-simplexml": "For decoding XML-based responses." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth1-client/issues", + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.10.1" + }, + "time": "2022-04-15T14:02:14+00:00" + }, { "name": "league/oauth2-server", "version": "8.3.5", @@ -5015,6 +5154,10 @@ "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.1" }, "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + }, { "url": "https://opencollective.com/zipstream", "type": "open_collective" @@ -5131,16 +5274,16 @@ }, { "name": "masterminds/html5", - "version": "2.7.5", + "version": "2.7.6", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab" + "reference": "897eb517a343a2281f11bc5556d6548db7d93947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947", + "reference": "897eb517a343a2281f11bc5556d6548db7d93947", "shasum": "" }, "require": { @@ -5194,9 +5337,9 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.7.5" + "source": "https://github.com/Masterminds/html5-php/tree/2.7.6" }, - "time": "2021-07-01T14:25:37+00:00" + "time": "2022-08-18T16:18:26+00:00" }, { "name": "maximebf/debugbar", @@ -6299,6 +6442,92 @@ }, "time": "2020-10-15T08:29:30+00:00" }, + { + "name": "paragonie/sodium_compat", + "version": "v1.19.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/cb15e403ecbe6a6cc515f855c310eb6b1872a933", + "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933", + "shasum": "" + }, + "require": { + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "autoload": { + "files": [ + "autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "support": { + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v1.19.0" + }, + "time": "2022-09-26T03:40:35+00:00" + }, { "name": "phenx/php-font-lib", "version": "0.5.4", @@ -6345,21 +6574,21 @@ }, { "name": "phenx/php-svg-lib", - "version": "0.4.1", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/dompdf/php-svg-lib.git", - "reference": "4498b5df7b08e8469f0f8279651ea5de9626ed02" + "reference": "76876c6cf3080bcb6f249d7d59705108166a6685" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/4498b5df7b08e8469f0f8279651ea5de9626ed02", - "reference": "4498b5df7b08e8469f0f8279651ea5de9626ed02", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/76876c6cf3080bcb6f249d7d59705108166a6685", + "reference": "76876c6cf3080bcb6f249d7d59705108166a6685", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1 || ^7.2 || ^7.3 || ^7.4 || ^8.0", + "php": "^7.1 || ^8.0", "sabberworm/php-css-parser": "^8.4" }, "require-dev": { @@ -6385,9 +6614,9 @@ "homepage": "https://github.com/PhenX/php-svg-lib", "support": { "issues": "https://github.com/dompdf/php-svg-lib/issues", - "source": "https://github.com/dompdf/php-svg-lib/tree/0.4.1" + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.0" }, - "time": "2022-03-07T12:52:04+00:00" + "time": "2022-09-06T12:16:56+00:00" }, { "name": "php-http/message-factory", @@ -11727,6 +11956,999 @@ } ], "packages-dev": [ + { + "name": "amphp/amp", + "version": "v2.6.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^7 | ^8 | ^9", + "psalm/phar": "^3.11@dev", + "react/promise": "^2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ], + "psr-4": { + "Amp\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.6.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2022-02-20T17:52:18+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", + "shasum": "" + }, + "require": { + "amphp/amp": "^2", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "files": [ + "lib/functions.php" + ], + "psr-4": { + "Amp\\ByteStream\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-03-30T17:13:30+00:00" + }, + { + "name": "brianium/paratest", + "version": "v6.6.2", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "5249af4e25e79da66d1ec3b54b474047999c10b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/5249af4e25e79da66d1ec3b54b474047999c10b8", + "reference": "5249af4e25e79da66d1ec3b54b474047999c10b8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "jean85/pretty-package-versions": "^2.0.5", + "php": "^7.3 || ^8.0", + "phpunit/php-code-coverage": "^9.2.15", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-timer": "^5.0.3", + "phpunit/phpunit": "^9.5.21", + "sebastian/environment": "^5.1.4", + "symfony/console": "^5.4.9 || ^6.1.2", + "symfony/polyfill-php80": "^v1.26.0", + "symfony/process": "^5.4.8 || ^6.1.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.26.13", + "malukenho/mcbumpface": "^1.1.5", + "squizlabs/php_codesniffer": "^3.7.1", + "symfony/filesystem": "^5.4.9 || ^6.1.0", + "vimeo/psalm": "^4.26.0" + }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v6.6.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2022-08-22T10:45:51+00:00" + }, + { + "name": "cmgmyr/phploc", + "version": "8.0.2", + "source": { + "type": "git", + "url": "https://github.com/cmgmyr/phploc.git", + "reference": "35e308033e02264a59cb1b56cc2abb1a22483ca8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cmgmyr/phploc/zipball/35e308033e02264a59cb1b56cc2abb1a22483ca8", + "reference": "35e308033e02264a59cb1b56cc2abb1a22483ca8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "php": "^7.4 || ^8.0", + "phpunit/php-file-iterator": "^3.0|^4.0", + "sebastian/cli-parser": "^1.0|^2.0", + "sebastian/version": "^3.0|^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpunit/phpunit": "^9.0|^10.0", + "vimeo/psalm": "^5.7" + }, + "bin": [ + "phploc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Chris Gmyr", + "email": "cmgmyr@gmail.com", + "role": "lead" + } + ], + "description": "A tool for quickly measuring the size of a PHP project.", + "homepage": "https://github.com/cmgmyr/phploc", + "support": { + "issues": "https://github.com/cmgmyr/phploc/issues", + "source": "https://github.com/cmgmyr/phploc/tree/8.0.2" + }, + "funding": [ + { + "url": "https://github.com/cmgmyr", + "type": "github" + } + ], + "time": "2023-03-19T10:37:20+00:00" + }, + { + "name": "composer/ca-bundle", + "version": "1.3.6", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.55", + "psr/log": "^1.0", + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.3.6" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-06-06T12:02:59+00:00" + }, + { + "name": "composer/composer", + "version": "2.3.10", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "ebac357c0a41359f3981098729042ed6dedc97ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/ebac357c0a41359f3981098729042ed6dedc97ba", + "reference": "ebac357c0a41359f3981098729042ed6dedc97ba", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/metadata-minifier": "^1.0", + "composer/pcre": "^2 || ^3", + "composer/semver": "^3.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^2.0.2 || ^3.0.3", + "justinrainbow/json-schema": "^5.2.11", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "react/promise": "^2.8", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.2", + "symfony/console": "^5.4.7 || ^6.0.7", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/polyfill-php73": "^1.24", + "symfony/polyfill-php80": "^1.24", + "symfony/process": "^5.4 || ^6.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1", + "phpstan/phpstan-symfony": "^1.1", + "symfony/phpunit-bridge": "^6.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.3-dev" + }, + "phpstan": { + "includes": [ + "phpstan/rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "https://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/2.3.10" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-07-13T13:48:23+00:00" + }, + { + "name": "composer/metadata-minifier", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/metadata-minifier.git", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2", + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\MetadataMinifier\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Small utility library that handles metadata minification and expansion.", + "keywords": [ + "composer", + "compression" + ], + "support": { + "issues": "https://github.com/composer/metadata-minifier/issues", + "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-04-07T13:37:33+00:00" + }, + { + "name": "composer/pcre", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-11-17T09:50:14+00:00" + }, + { + "name": "composer/semver", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.7", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "c848241796da2abf65837d51dce1fae55a960149" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", + "reference": "c848241796da2abf65837d51dce1fae55a960149", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-05-23T07:37:50+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T21:32:43+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "time": "2023-01-05T11:28:13+00:00" + }, + { + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, + "time": "2019-12-04T15:06:13+00:00" + }, { "name": "fakerphp/faker", "version": "v1.20.0", @@ -11794,6 +13016,257 @@ }, "time": "2022-07-20T13:12:54+00:00" }, + { + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "AdvancedJsonRpc\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "A more advanced JSONRPC implementation", + "support": { + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" + }, + "time": "2021-06-11T22:34:44+00:00" + }, + { + "name": "felixfbecker/language-server-protocol", + "version": "v1.5.2", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpstan/phpstan": "*", + "squizlabs/php_codesniffer": "^3.1", + "vimeo/psalm": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "LanguageServerProtocol\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "PHP classes for the Language Server Protocol", + "keywords": [ + "language", + "microsoft", + "php", + "server" + ], + "support": { + "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + }, + "time": "2022-03-02T22:36:06+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "0.5.1", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.26 || ^8.5.31", + "theofidry/php-cs-fixer-config": "^1.0", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2022-12-24T12:35:10+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.13.2", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "3952f08a81bd3b1b15e11c3de0b6bf037faa8496" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/3952f08a81bd3b1b15e11c3de0b6bf037faa8496", + "reference": "3952f08a81bd3b1b15e11c3de0b6bf037faa8496", + "shasum": "" + }, + "require": { + "composer/semver": "^3.2", + "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^1.13", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/options-resolver": "^5.4 || ^6.0", + "symfony/polyfill-mbstring": "^1.23", + "symfony/polyfill-php80": "^1.25", + "symfony/polyfill-php81": "^1.25", + "symfony/process": "^5.4 || ^6.0", + "symfony/stopwatch": "^5.4 || ^6.0" + }, + "require-dev": { + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.0", + "mikey179/vfsstream": "^1.6.10", + "php-coveralls/php-coveralls": "^2.5.2", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", + "phpspec/prophecy": "^1.15", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "phpunitgoodpractices/polyfill": "^1.6", + "phpunitgoodpractices/traits": "^1.9.2", + "symfony/phpunit-bridge": "^6.0", + "symfony/yaml": "^5.4 || ^6.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.2" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2023-01-02T23:53:50+00:00" + }, { "name": "hamcrest/hamcrest-php", "version": "v2.0.1", @@ -11846,17 +13319,146 @@ "time": "2020-07-09T08:09:16+00:00" }, { - "name": "laravel/dusk", - "version": "v6.25.0", + "name": "jean85/pretty-package-versions", + "version": "2.0.5", "source": { "type": "git", - "url": "https://github.com/laravel/dusk.git", - "reference": "b4632b7493a187d31afc5c9ddec437c81b16421a" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/dusk/zipball/b4632b7493a187d31afc5c9ddec437c81b16421a", - "reference": "b4632b7493a187d31afc5c9ddec437c81b16421a", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.12", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + }, + "time": "2022-04-13T08:02:27+00:00" + }, + { + "name": "laravel/dusk", + "version": "v6.25.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/dusk.git", + "reference": "25a595ac3dc82089a91af10dd23b0d58fd3f6d0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/dusk/zipball/25a595ac3dc82089a91af10dd23b0d58fd3f6d0b", + "reference": "25a595ac3dc82089a91af10dd23b0d58fd3f6d0b", "shasum": "" }, "require": { @@ -11914,9 +13516,91 @@ ], "support": { "issues": "https://github.com/laravel/dusk/issues", - "source": "https://github.com/laravel/dusk/tree/v6.25.0" + "source": "https://github.com/laravel/dusk/tree/v6.25.2" }, - "time": "2022-07-11T11:38:43+00:00" + "time": "2022-09-29T09:37:07+00:00" + }, + { + "name": "league/container", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/container.git", + "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/container/zipball/375d13cb828649599ef5d48a339c4af7a26cd0ab", + "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "psr/container": "^1.1 || ^2.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "orno/di": "~2.0" + }, + "require-dev": { + "nette/php-generator": "^3.4", + "nikic/php-parser": "^4.10", + "phpstan/phpstan": "^0.12.47", + "phpunit/phpunit": "^8.5.17", + "roave/security-advisories": "dev-latest", + "scrutinizer/ocular": "^1.8", + "squizlabs/php_codesniffer": "^3.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev", + "dev-4.x": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Container\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Bennett", + "email": "mail@philbennett.co.uk", + "role": "Developer" + } + ], + "description": "A fast and intuitive dependency injection container.", + "homepage": "https://github.com/thephpleague/container", + "keywords": [ + "container", + "dependency", + "di", + "injection", + "league", + "provider", + "service" + ], + "support": { + "issues": "https://github.com/thephpleague/container/issues", + "source": "https://github.com/thephpleague/container/tree/4.2.0" + }, + "funding": [ + { + "url": "https://github.com/philipobenito", + "type": "github" + } + ], + "time": "2021-11-16T10:29:06+00:00" }, { "name": "mockery/mockery", @@ -12049,6 +13733,261 @@ ], "time": "2022-03-03T13:19:32+00:00" }, + { + "name": "netresearch/jsonmapper", + "version": "v4.2.0", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "squizlabs/php_codesniffer": "~3.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + }, + "time": "2023-04-09T17:37:40+00:00" + }, + { + "name": "nunomaduro/larastan", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/larastan.git", + "reference": "769bc6346a6cce3b823c30eaace33d9c3a0dd40e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/769bc6346a6cce3b823c30eaace33d9c3a0dd40e", + "reference": "769bc6346a6cce3b823c30eaace33d9c3a0dd40e", + "shasum": "" + }, + "require": { + "composer/composer": "^1.0 || ^2.0", + "ext-json": "*", + "illuminate/console": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/container": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/contracts": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/database": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/http": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/pipeline": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "mockery/mockery": "^0.9 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.0 <1.9", + "symfony/process": "^4.3 || ^5.0 || ^6.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13.0", + "orchestra/testbench": "^4.0 || ^5.0 || ^6.0 || ^7.0", + "phpunit/phpunit": "^7.3 || ^8.2 || ^9.3" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/nunomaduro/larastan/issues", + "source": "https://github.com/nunomaduro/larastan/tree/1.0.4" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/canvural", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-11-09T09:09:31+00:00" + }, + { + "name": "nunomaduro/phpinsights", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/phpinsights.git", + "reference": "a701b7acfda9940ef0140c7276319df9026824c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/phpinsights/zipball/a701b7acfda9940ef0140c7276319df9026824c4", + "reference": "a701b7acfda9940ef0140c7276319df9026824c4", + "shasum": "" + }, + "require": { + "cmgmyr/phploc": "^8.0", + "composer/semver": "^3.3", + "ext-iconv": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "friendsofphp/php-cs-fixer": "^3.0.0", + "justinrainbow/json-schema": "^5.1", + "league/container": "^3.2|^4.2", + "php": "^7.4 || ^8.0 || ^8.1", + "php-parallel-lint/php-parallel-lint": "^1.3", + "psr/container": "^1.0|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "sebastian/diff": "^4.0|^5.0", + "slevomat/coding-standard": "^7.0.8|^8.0", + "squizlabs/php_codesniffer": "^3.5", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/console": "^4.2.12|^5.0|^6.0", + "symfony/finder": "^4.2.12|^5.0|^6.0", + "symfony/http-client": "^4.3.8|^5.0|^6.0", + "symfony/process": "^5.4|^6.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^0.15.0", + "illuminate/console": "^5.8|^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^5.8|^6.0|^7.0|^8.0|^9.0|^10.0", + "mockery/mockery": "^1.0", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^8.0|^9.0|^10.0", + "rector/rector": "0.11.56", + "symfony/var-dumper": "^4.2.12|^5.0|^6.0", + "thecodingmachine/phpstan-strict-rules": "^0.12.0" + }, + "suggest": { + "ext-simplexml": "It is needed for the checkstyle formatter" + }, + "bin": [ + "bin/phpinsights" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\PhpInsights\\Application\\Adapters\\Laravel\\InsightsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\PhpInsights\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Instant PHP quality checks from your console.", + "keywords": [ + "Insights", + "code", + "console", + "php", + "quality", + "source" + ], + "support": { + "issues": "https://github.com/nunomaduro/phpinsights/issues", + "source": "https://github.com/nunomaduro/phpinsights/tree/v2.8.0" + }, + "funding": [ + { + "url": "https://github.com/JustSteveKing", + "type": "github" + }, + { + "url": "https://github.com/cmgmyr", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-03-18T18:38:03+00:00" + }, { "name": "phar-io/manifest", "version": "2.0.3", @@ -12160,6 +14099,63 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "php-parallel-lint/php-parallel-lint", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git", + "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.3.0" + }, + "replace": { + "grogy/php-parallel-lint": "*", + "jakub-onderka/php-parallel-lint": "*" + }, + "require-dev": { + "nette/tester": "^1.3 || ^2.0", + "php-parallel-lint/php-console-highlighter": "0.* || ^1.0", + "squizlabs/php_codesniffer": "^3.6" + }, + "suggest": { + "php-parallel-lint/php-console-highlighter": "Highlight syntax in code snippet" + }, + "bin": [ + "parallel-lint" + ], + "type": "library", + "autoload": { + "classmap": [ + "./src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "ahoj@jakubonderka.cz" + } + ], + "description": "This tool check syntax of PHP files about 20x faster than serial check.", + "homepage": "https://github.com/php-parallel-lint/PHP-Parallel-Lint", + "support": { + "issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues", + "source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/v1.3.2" + }, + "time": "2022-02-21T12:50:22+00:00" + }, { "name": "php-webdriver/webdriver", "version": "1.12.1", @@ -12225,6 +14221,112 @@ }, "time": "2022-05-03T12:16:34+00:00" }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.22.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/65c39594fbd8c67abfc68bb323f86447bab79cc0", + "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.1" + }, + "time": "2023-06-29T20:46:06+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.8.11", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "46e223dd68a620da18855c23046ddb00940b4014" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/46e223dd68a620da18855c23046ddb00940b4014", + "reference": "46e223dd68a620da18855c23046ddb00940b4014", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.8.11" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2022-10-24T15:45:13+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "9.2.15", @@ -12705,6 +14807,78 @@ ], "time": "2022-06-19T12:14:25+00:00" }, + { + "name": "react/promise", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.10.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-05-02T15:15:43+00:00" + }, { "name": "sebastian/cli-parser", "version": "1.0.1", @@ -13389,6 +15563,423 @@ ], "time": "2020-09-28T06:39:44+00:00" }, + { + "name": "seld/jsonlint", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2023-05-11T13:16:46+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ], + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" + }, + "time": "2022-08-31T10:31:18+00:00" + }, + { + "name": "slevomat/coding-standard", + "version": "8.13.1", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "a13c15e20f2d307a1ca8dec5313ec462a4466470" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/a13c15e20f2d307a1ca8dec5313ec462a4466470", + "reference": "a13c15e20f2d307a1ca8dec5313ec462a4466470", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.22.0", + "squizlabs/php_codesniffer": "^3.7.1" + }, + "require-dev": { + "phing/phing": "2.17.4", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.10.21", + "phpstan/phpstan-deprecation-rules": "1.1.3", + "phpstan/phpstan-phpunit": "1.3.13", + "phpstan/phpstan-strict-rules": "1.5.1", + "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.2.2" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/8.13.1" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2023-06-25T12:52:34+00:00" + }, + { + "name": "spatie/array-to-xml", + "version": "2.17.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", + "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": "^7.4|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "phpunit/phpunit": "^9.0", + "spatie/pest-plugin-snapshots": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\ArrayToXml\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" + } + ], + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], + "support": { + "source": "https://github.com/spatie/array-to-xml/tree/2.17.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-12-26T08:22:07+00:00" + }, + { + "name": "symfony/cache", + "version": "v5.4.25", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "e2013521c0f07473ae69a01fce0af78fc3ec0f23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/e2013521c0f07473ae69a01fce0af78fc3ec0f23", + "reference": "e2013521c0f07473ae69a01fce0af78fc3ec0f23", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "conflict": { + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v5.4.25" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-06-22T08:06:06+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "suggest": { + "symfony/cache-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, { "name": "symfony/dom-crawler", "version": "v4.4.42", @@ -13463,6 +16054,443 @@ ], "time": "2022-04-30T18:34:00+00:00" }, + { + "name": "symfony/filesystem", + "version": "v5.4.25", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-31T13:04:02+00:00" + }, + { + "name": "symfony/http-client", + "version": "v5.4.25", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "ccbb572627466f03a3d7aa1b23483787f5969afc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/ccbb572627466f03a3d7aa1b23483787f5969afc", + "reference": "ccbb572627466f03a3d7aa1b23483787f5969afc", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-client-contracts": "^2.4", + "symfony/polyfill-php73": "^1.11", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.0|^2|^3" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "2.4" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v5.4.25" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-06-21T14:44:30+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T15:48:08+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-14T08:03:56+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-14T08:03:56+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "be74908a6942fdd331554b3cec27ff41b45ccad4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/be74908a6942fdd331554b3cec27ff41b45ccad4", + "reference": "be74908a6942fdd331554b3cec27ff41b45ccad4", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-21T19:46:44+00:00" + }, { "name": "theseer/tokenizer", "version": "1.2.1", @@ -13512,6 +16540,112 @@ } ], "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "vimeo/psalm", + "version": "5.13.1", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "086b94371304750d1c673315321a55d15fc59015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/086b94371304750d1c673315321a55d15fc59015", + "reference": "086b94371304750d1c673315321a55d15fc59015", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.4.2", + "amphp/byte-stream": "^1.5", + "composer-runtime-api": "^2", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0 || ^3.0", + "dnoegel/php-xdg-base-dir": "^0.1.1", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "nikic/php-parser": "^4.14", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "sebastian/diff": "^4.0 || ^5.0", + "spatie/array-to-xml": "^2.17.0 || ^3.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0" + }, + "provide": { + "psalm/psalm": "self.version" + }, + "require-dev": { + "amphp/phpunit-util": "^2.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.9", + "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.6", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.6", + "symfony/process": "^4.4 || ^5.0 || ^6.0" + }, + "suggest": { + "ext-curl": "In order to send data to shepherd", + "ext-igbinary": "^2.0.5 is required, used to serialize caching data" + }, + "bin": [ + "psalm", + "psalm-language-server", + "psalm-plugin", + "psalm-refactor", + "psalter" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev", + "dev-4.x": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psalm\\": "src/Psalm/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown" + } + ], + "description": "A static analysis tool for finding errors in PHP applications", + "keywords": [ + "code", + "inspection", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/vimeo/psalm/issues", + "source": "https://github.com/vimeo/psalm/tree/5.13.1" + }, + "time": "2023-06-27T16:39:49+00:00" } ], "aliases": [], @@ -13522,7 +16656,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.4 <8.3", + "php": ">=7.4.3 <8.2", "ext-curl": "*", "ext-fileinfo": "*", "ext-json": "*", diff --git a/config/app.php b/config/app.php index 8833ea2ae7..2559b8012c 100755 --- a/config/app.php +++ b/config/app.php @@ -216,7 +216,8 @@ return [ */ 'require_saml' => env('REQUIRE_SAML', false), - + + /* |-------------------------------------------------------------------------- | Demo Mode Lockdown @@ -294,6 +295,7 @@ return [ Laravel\Tinker\TinkerServiceProvider::class, Unicodeveloper\DumbPassword\DumbPasswordServiceProvider::class, Eduardokum\LaravelMailAutoEmbed\ServiceProvider::class, + Laravel\Socialite\SocialiteServiceProvider::class, /* * Application Service Providers... @@ -366,6 +368,7 @@ return [ 'Image' => Intervention\Image\ImageServiceProvider::class, 'Carbon' => Carbon\Carbon::class, 'Helper' => App\Helpers\Helper::class, // makes it much easier to use 'Helper::blah' in blades (which is where we usually use this) + 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ], diff --git a/config/database.php b/config/database.php index 9d94454db2..36440b2127 100755 --- a/config/database.php +++ b/config/database.php @@ -102,6 +102,7 @@ return [ 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), diff --git a/config/dompdf.php b/config/dompdf.php index a2cdae8599..22f5f6c27e 100644 --- a/config/dompdf.php +++ b/config/dompdf.php @@ -74,8 +74,11 @@ return array( * This is only checked on command line call by dompdf.php, but not by * direct class use like: * $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output(); + * + * + * Hardcoding 2 Paths needed for Docker Containers */ - "chroot" => realpath(base_path()), + "chroot" => realpath(base_path()) . ",/var/lib/snipeit/data/uploads,/var/lib/snipeit/data/private_uploads", /** * Whether to enable font subsetting or not. diff --git a/config/hashing.php b/config/hashing.php index d3c8e2fb22..06f18a0c6d 100644 --- a/config/hashing.php +++ b/config/hashing.php @@ -15,7 +15,7 @@ return [ | */ - 'driver' => 'bcrypt', + 'driver' => env('HASHING_DRIVER', 'bcrypt'), /* |-------------------------------------------------------------------------- @@ -44,9 +44,9 @@ return [ */ 'argon' => [ - 'memory' => 1024, - 'threads' => 2, - 'time' => 2, + 'memory' => env('ARGON_MEMORY', 1024), + 'threads' => env('ARGON_THREADS', 2), + 'time' => env('ARGON_TIME', 2), ], ]; diff --git a/config/insights.php b/config/insights.php new file mode 100644 index 0000000000..f0393edeca --- /dev/null +++ b/config/insights.php @@ -0,0 +1,128 @@ + 'laravel', + + /* + |-------------------------------------------------------------------------- + | IDE + |-------------------------------------------------------------------------- + | + | This options allow to add hyperlinks in your terminal to quickly open + | files in your favorite IDE while browsing your PhpInsights report. + | + | Supported: "textmate", "macvim", "emacs", "sublime", "phpstorm", + | "atom", "vscode". + | + | If you have another IDE that is not in this list but which provide an + | url-handler, you could fill this config with a pattern like this: + | + | myide://open?url=file://%f&line=%l + | + */ + + 'ide' => null, + + /* + |-------------------------------------------------------------------------- + | Configuration + |-------------------------------------------------------------------------- + | + | Here you may adjust all the various `Insights` that will be used by PHP + | Insights. You can either add, remove or configure `Insights`. Keep in + | mind that all added `Insights` must belong to a specific `Metric`. + | + */ + + 'exclude' => [ + // 'path/to/directory-or-file' + ], + + 'add' => [ + Classes::class => [ + ForbiddenFinalClasses::class, + ], + ], + + 'remove' => [ + AlphabeticallySortedUsesSniff::class, + DeclareStrictTypesSniff::class, + DisallowMixedTypeHintSniff::class, + ForbiddenDefineFunctions::class, + ForbiddenNormalClasses::class, + ForbiddenTraits::class, + ParameterTypeHintSniff::class, + PropertyTypeHintSniff::class, + ReturnTypeHintSniff::class, + UselessFunctionDocCommentSniff::class, + ], + + 'config' => [ + ForbiddenPrivateMethods::class => [ + 'title' => 'The usage of private methods is not idiomatic in Laravel.', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Requirements + |-------------------------------------------------------------------------- + | + | Here you may define a level you want to reach per `Insights` category. + | When a score is lower than the minimum level defined, then an error + | code will be returned. This is optional and individually defined. + | + */ + + 'requirements' => [ +// 'min-quality' => 0, +// 'min-complexity' => 0, +// 'min-architecture' => 0, +// 'min-style' => 0, +// 'disable-security-check' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Threads + |-------------------------------------------------------------------------- + | + | Here you may adjust how many threads (core) PHPInsights can use to perform + | the analyse. This is optional, don't provide it and the tool will guess + | the max core number available. It accepts null value or integer > 0. + | + */ + + 'threads' => null, + +]; diff --git a/config/logging.php b/config/logging.php index cdd0bbcbdf..7cb5d86039 100644 --- a/config/logging.php +++ b/config/logging.php @@ -1,5 +1,4 @@ errorLevel == E_WARNING ) { + \Log::info("IGNORING E_WARNING in production mode: ".$args->getMessage()); + return true; // "TRUE - you should ignore it!" + } + $needle = "ArieTimmerman\\Laravel\\SCIMServer\\Exceptions\\SCIMException"; + if (App::environment('production') && is_string($args) && strncmp($args, $needle, strlen($needle) ) === 0 ) { + \Log::info("String: '$args' looks like a SCIM Exception; ignoring error"); + return true; //yes, *do* ignore it + } + return false; + }; + } diff --git a/config/mail.php b/config/mail.php index d47d182ed3..f650cf5387 100755 --- a/config/mail.php +++ b/config/mail.php @@ -140,8 +140,8 @@ return [ | */ - 'sendmail' => '/usr/sbin/sendmail -bs', - + 'sendmail' => env('SENDMAIL_PATH', ini_get('sendmail_path')), + 'markdown' => [ 'theme' => 'default', 'paths' => [ diff --git a/config/scim.php b/config/scim.php index d7d578efc2..4e343cd3a6 100644 --- a/config/scim.php +++ b/config/scim.php @@ -3,6 +3,6 @@ return [ "trace" => env("SCIM_TRACE",false), // below, if we ever get 'sure' that we can change this default to 'true' we should - "omit_main_schema_in_return" => env('SCIM_STANDARDS_COMPLIANCE', false), + "omit_main_schema_in_return" => env('SCIM_STANDARDS_COMPLIANCE', true), "publish_routes" => false, ]; diff --git a/config/services.php b/config/services.php index 3f7362fd51..de8c4ed71a 100644 --- a/config/services.php +++ b/config/services.php @@ -43,10 +43,10 @@ return [ 'secret' => env('STRIPE_SECRET'), ], - 'stunning' => [ - 'enabled' => env('ENABLE_STUNNING', false), - 'app_key' => env('STUNNING_APP_KEY'), - 'stripe_id' => env('STUNNING_STRIPE_ID'), + 'baremetrics' => [ + 'enabled' => env('ENABLE_BMPAY', false), + 'app_key' => env('BMPAY_PUBLIC_KEY', null), + 'stripe_id' => env('BMPAY_STRIPE_ID', null), ], 'google' => [ diff --git a/config/session.php b/config/session.php index dee8d9103e..a47294a8cb 100644 --- a/config/session.php +++ b/config/session.php @@ -130,7 +130,7 @@ return [ | */ - 'path' => '/', + 'path' => env('SESSION_COOKIE_PATH', '/'), /* |-------------------------------------------------------------------------- @@ -158,4 +158,20 @@ return [ 'secure' => env('SECURE_COOKIES', false), + /* + |-------------------------------------------------------------------------- + | Bootstrap Table Storage Type + |-------------------------------------------------------------------------- + | + | Set the storage that this Bootstrap Table will use. + | Valid options are: + | - cookieStorage + | - localStorage: use this if you have a LOT of custom fields and are getting a REQUEST TOO LARGE error + | - sessionStorage + | + | More info: https://bootstrap-table.com/docs/extensions/cookie/#cookiestorage + */ + + 'bs_table_storage' => env('BS_TABLE_STORAGE', 'cookieStorage'), + ]; diff --git a/config/version.php b/config/version.php index f111cfb8d1..ba0dd3bace 100644 --- a/config/version.php +++ b/config/version.php @@ -1,10 +1,10 @@ 'v6.0.14', - 'full_app_version' => 'v6.0.14 - build 9161-g799c9c910', - 'build_version' => '9161', + 'app_version' => 'v6.1.2', + 'full_app_version' => 'v6.1.2 - build 10938-g32747cafd', + 'build_version' => '10938', 'prerelease_version' => '', - 'hash_version' => 'g799c9c910', - 'full_hash' => 'v6.0.14-117-g799c9c910', - 'branch' => 'master', + 'hash_version' => 'g32747cafd', + 'full_hash' => 'v6.1.2-89-g32747cafd', + 'branch' => 'develop', ); \ No newline at end of file diff --git a/crowdin.yml b/crowdin.yml index 4eccb2adbc..7abe441e4f 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -3,6 +3,7 @@ "files": [ { "source" : "/resources/lang/en/**/*.php", - "translation" : "/resources/lang/%locale%/%original_file_name%" + # https://developer.crowdin.com/configuration-file/#placeholders + "translation" : "/resources/lang/%locale%/**/%original_file_name%" } ] diff --git a/database/factories/AccessoryFactory.php b/database/factories/AccessoryFactory.php index 84edcb705c..8ce34303b3 100644 --- a/database/factories/AccessoryFactory.php +++ b/database/factories/AccessoryFactory.php @@ -2,17 +2,14 @@ namespace Database\Factories; +use App\Models\Accessory; +use App\Models\Category; +use App\Models\Location; +use App\Models\Manufacturer; +use App\Models\Supplier; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Asset Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating models .. -| -*/ - class AccessoryFactory extends Factory { /** @@ -20,7 +17,7 @@ class AccessoryFactory extends Factory * * @var string */ - protected $model = \App\Models\Accessory::class; + protected $model = Accessory::class; /** * Define the model's default state. @@ -30,9 +27,16 @@ class AccessoryFactory extends Factory public function definition() { return [ - 'user_id' => 1, + 'name' => sprintf( + '%s %s', + $this->faker->randomElement(['Bluetooth', 'Wired']), + $this->faker->randomElement(['Keyboard', 'Wired']) + ), + 'user_id' => User::factory()->superuser(), + 'category_id' => Category::factory(), 'model_number' => $this->faker->numberBetween(1000000, 50000000), - 'location_id' => rand(1, 5), + 'location_id' => Location::factory(), + 'qty' => 1, ]; } @@ -42,11 +46,15 @@ class AccessoryFactory extends Factory return [ 'name' => 'Bluetooth Keyboard', 'image' => 'bluetooth.jpg', - 'category_id' => 8, - 'manufacturer_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Keyboards')->first() ?? Category::factory()->accessoryKeyboardCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'qty' => 10, 'min_amt' => 2, - 'supplier_id' => rand(1, 5), + 'supplier_id' => Supplier::factory(), ]; }); } @@ -57,11 +65,15 @@ class AccessoryFactory extends Factory return [ 'name' => 'USB Keyboard', 'image' => 'usb-keyboard.jpg', - 'category_id' => 8, - 'manufacturer_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Keyboards')->first() ?? Category::factory()->accessoryKeyboardCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'qty' => 15, 'min_amt' => 2, - 'supplier_id' => rand(1, 5), + 'supplier_id' => Supplier::factory(), ]; }); } @@ -72,11 +84,15 @@ class AccessoryFactory extends Factory return [ 'name' => 'Magic Mouse', 'image' => 'magic-mouse.jpg', - 'category_id' => 9, - 'manufacturer_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Mouse')->first() ?? Category::factory()->accessoryMouseCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'qty' => 13, 'min_amt' => 2, - 'supplier_id' => rand(1, 5), + 'supplier_id' => Supplier::factory(), ]; }); } @@ -87,8 +103,12 @@ class AccessoryFactory extends Factory return [ 'name' => 'Sculpt Comfort Mouse', 'image' => 'comfort-mouse.jpg', - 'category_id' => 9, - 'manufacturer_id' => 2, + 'category_id' => function () { + return Category::where('name', 'Mouse')->first() ?? Category::factory()->accessoryMouseCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Microsoft')->first() ?? Manufacturer::factory()->microsoft(); + }, 'qty' => 13, 'min_amt' => 2, ]; diff --git a/database/factories/ActionlogFactory.php b/database/factories/ActionlogFactory.php index 33cc83ead4..c25fdcc70a 100644 --- a/database/factories/ActionlogFactory.php +++ b/database/factories/ActionlogFactory.php @@ -4,20 +4,12 @@ namespace Database\Factories; use App\Models\Actionlog; use App\Models\Asset; -use App\Models\Company; +use App\Models\License; +use App\Models\LicenseSeat; use App\Models\Location; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Action Log Factories -|-------------------------------------------------------------------------- -| -| This simulates checkin/checkout/etc activities -| -*/ - class ActionlogFactory extends Factory { /** @@ -25,7 +17,7 @@ class ActionlogFactory extends Factory * * @var string */ - protected $model = \App\Models\Actionlog::class; + protected $model = Actionlog::class; /** * Define the model's default state. @@ -34,71 +26,83 @@ class ActionlogFactory extends Factory */ public function definition() { - $asset = \App\Models\Asset::factory()->create(); return [ - 'item_type' => get_class($asset), - 'item_id' => 1, - 'user_id' => 1, + 'item_id' => Asset::factory(), + 'item_type' => Asset::class, + 'user_id' => User::factory()->superuser(), 'action_type' => 'uploaded', ]; } - public function assetCheckoutToUser() { return $this->state(function () { - $target = \App\Models\User::inRandomOrder()->first(); - $item = \App\Models\Asset::RTD()->inRandomOrder()->first(); - $user_id = rand(1, 2); // keep it simple - make it one of the two superadmins - $asset = Asset::where('id', $item->id) - ->update( + $target = User::inRandomOrder()->first(); + $asset = Asset::RTD()->inRandomOrder()->first(); + + $asset->update( [ 'assigned_to' => $target->id, - 'assigned_type' => \App\Models\User::class, - 'assigned_to' => $target->location_id, + 'assigned_type' => User::class, + 'location_id' => $target->location_id, ] ); return [ 'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), - 'user_id' => $user_id, 'action_type' => 'checkout', - 'item_id' => $item->id, - 'item_type' => \App\Models\Asset::class, + 'item_id' => $asset->id, + 'item_type' => Asset::class, 'target_id' => $target->id, - 'target_type' => get_class($target), - + 'target_type' => User::class, ]; }); } - public function assetCheckoutToLocation() { return $this->state(function () { - $target = \App\Models\Location::inRandomOrder()->first(); - $item = \App\Models\Asset::inRandomOrder()->RTD()->first(); - $user_id = rand(1, 2); // keep it simple - make it one of the two superadmins - $asset = \App\Models\Asset::where('id', $item->id) - ->update( + $target = Location::inRandomOrder()->first(); + $asset = Asset::inRandomOrder()->RTD()->first(); + + $asset->update( [ 'assigned_to' => $target->id, - 'assigned_type' => \App\Models\Location::class, - 'assigned_to' => $target->id, + 'assigned_type' => Location::class, + 'location_id' => $target->id, ] ); return [ 'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), - 'user_id' => $user_id, 'action_type' => 'checkout', - 'item_id' => $item->id, - 'item_type' => \App\Models\Asset::class, + 'item_id' => $asset->id, + 'item_type' => Asset::class, 'target_id' => $target->id, - 'target_type' => get_class($target), + 'target_type' => Location::class, ]; }); } + public function licenseCheckoutToUser() + { + return $this->state(function () { + $target = User::inRandomOrder()->first(); + $licenseSeat = LicenseSeat::whereNull('assigned_to')->inRandomOrder()->first(); + $licenseSeat->update([ + 'assigned_to' => $target->id, + 'user_id' => 1, // not ideal but works + ]); + + return [ + 'created_at' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'action_type' => 'checkout', + 'item_id' => $licenseSeat->license->id, + 'item_type' => License::class, + 'target_id' => $target->id, + 'target_type' => User::class, + ]; + }); + } } diff --git a/database/factories/AssetFactory.php b/database/factories/AssetFactory.php index 24021921b3..0e0c3931d8 100644 --- a/database/factories/AssetFactory.php +++ b/database/factories/AssetFactory.php @@ -4,22 +4,12 @@ namespace Database\Factories; use App\Models\Asset; use App\Models\AssetModel; -use App\Models\Category; use App\Models\Location; +use App\Models\Statuslabel; use App\Models\Supplier; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to modelling assets. -| -*/ - -// These are just for unit tests, not to generate data - class AssetFactory extends Factory { /** @@ -38,16 +28,19 @@ class AssetFactory extends Factory { return [ 'name' => null, - 'rtd_location_id' => Location::all()->random()->id, - 'serial' => $this->faker->uuid, - 'status_id' => 1, - 'user_id' => 1, + 'model_id' => AssetModel::factory(), + 'rtd_location_id' => Location::factory(), + 'serial' => $this->faker->uuid(), + 'status_id' => function () { + return Statuslabel::where('name', 'Ready to Deploy')->first() ?? Statuslabel::factory()->rtd()->create(['name' => 'Ready to Deploy']); + }, + 'user_id' => User::factory()->superuser(), 'asset_tag' => $this->faker->unixTime('now'), 'notes' => 'Created by DB seeder', - 'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'), 'purchase_cost' => $this->faker->randomFloat(2, '299.99', '2999.99'), 'order_number' => $this->faker->numberBetween(1000000, 50000000), - 'supplier_id' => Supplier::all()->random()->id, + 'supplier_id' => Supplier::factory(), 'requestable' => $this->faker->boolean(), 'assigned_to' => null, 'assigned_type' => null, @@ -60,7 +53,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 1, + 'model_id' => function () { + return AssetModel::where('name', 'Macbook Pro 13"')->first() ?? AssetModel::factory()->mbp13Model(); + }, ]; }); } @@ -69,8 +64,12 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 1, - 'status_id' => 2, + 'model_id' => function () { + return AssetModel::where('name', 'Macbook Pro 13"')->first() ?? AssetModel::factory()->mbp13Model(); + }, + 'status_id' => function () { + return Statuslabel::where('name', 'Pending')->first() ?? Statuslabel::factory()->pending()->make(['name' => 'Pending']); + }, ]; }); } @@ -79,8 +78,12 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 1, - 'status_id' => 3, + 'model_id' => function () { + return AssetModel::where('name', 'Macbook Pro 13"')->first() ?? AssetModel::factory()->mbp13Model(); + }, + 'status_id' => function () { + return Statuslabel::where('name', 'Archived')->first() ?? Statuslabel::factory()->archived()->make(['name' => 'Archived']); + }, ]; }); } @@ -89,7 +92,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 2, + 'model_id' => function () { + return AssetModel::where('name', 'Macbook Air')->first() ?? AssetModel::factory()->mbpAirModel(); + }, ]; }); } @@ -98,7 +103,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 3, + 'model_id' => function () { + return AssetModel::where('name', 'Surface')->first() ?? AssetModel::factory()->surfaceModel(); + }, ]; }); } @@ -107,7 +114,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 4, + 'model_id' => function () { + return AssetModel::where('name', 'XPS 13')->first() ?? AssetModel::factory()->xps13Model(); + }, ]; }); } @@ -116,7 +125,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 5, + 'model_id' => function () { + return AssetModel::where('name', 'Spectre')->first() ?? AssetModel::factory()->spectreModel(); + }, ]; }); } @@ -125,7 +136,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 6, + 'model_id' => function () { + return AssetModel::where('name', 'ZenBook UX310')->first() ?? AssetModel::factory()->zenbookModel(); + }, ]; }); } @@ -134,7 +147,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 7, + 'model_id' => function () { + return AssetModel::where('name', 'Yoga 910')->first() ?? AssetModel::factory()->yogaModel(); + }, ]; }); } @@ -143,7 +158,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 8, + 'model_id' => function () { + return AssetModel::where('name', 'iMac Pro')->first() ?? AssetModel::factory()->macproModel(); + }, ]; }); } @@ -152,7 +169,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 9, + 'model_id' => function () { + return AssetModel::where('name', 'Lenovo Intel Core i5')->first() ?? AssetModel::factory()->lenovoI5Model(); + }, ]; }); } @@ -161,7 +180,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 10, + 'model_id' => function () { + return AssetModel::where('name', 'OptiPlex')->first() ?? AssetModel::factory()->optiplexModel(); + }, ]; }); } @@ -170,7 +191,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 11, + 'model_id' => function () { + return AssetModel::where('name', 'SoundStation 2')->first() ?? AssetModel::factory()->polycomModel(); + }, ]; }); } @@ -179,7 +202,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 12, + 'model_id' => function () { + return AssetModel::where('name', 'Polycom CX3000 IP Conference Phone')->first() ?? AssetModel::factory()->polycomcxModel(); + }, ]; }); } @@ -188,7 +213,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 13, + 'model_id' => function () { + return AssetModel::where('name', 'iPad Pro')->first() ?? AssetModel::factory()->ipadModel(); + }, ]; }); } @@ -197,7 +224,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 14, + 'model_id' => function () { + return AssetModel::where('name', 'Tab3')->first() ?? AssetModel::factory()->tab3Model(); + }, ]; }); } @@ -206,7 +235,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 15, + 'model_id' => function () { + return AssetModel::where('name', 'iPhone 11')->first() ?? AssetModel::factory()->iphone11Model(); + }, ]; }); } @@ -215,7 +246,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 16, + 'model_id' => function () { + return AssetModel::where('name', 'iPhone 12')->first() ?? AssetModel::factory()->iphone12Model(); + }, ]; }); } @@ -224,7 +257,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 17, + 'model_id' => function () { + return AssetModel::where('name', 'Ultrafine 4k')->first() ?? AssetModel::factory()->ultrafine(); + }, ]; }); } @@ -233,7 +268,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 18, + 'model_id' => function () { + return AssetModel::where('name', 'Ultrasharp U2415')->first() ?? AssetModel::factory()->ultrasharp(); + }, ]; }); } @@ -242,9 +279,8 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 1, - 'assigned_to' => \App\Models\User::factory()->create()->id, - 'assigned_type' => \App\Models\User::class, + 'assigned_to' => User::factory(), + 'assigned_type' => User::class, ]; }); } @@ -253,9 +289,8 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 1, - 'assigned_to' => \App\Models\Location::factory()->create()->id, - 'assigned_type' => \App\Models\Location::class, + 'assigned_to' => Location::factory(), + 'assigned_type' => Location::class, ]; }); } @@ -265,8 +300,8 @@ class AssetFactory extends Factory return $this->state(function () { return [ 'model_id' => 1, - 'assigned_to' => \App\Models\Asset::factory()->create()->id, - 'assigned_type' => \App\Models\Asset::class, + 'assigned_to' => Asset::factory(), + 'assigned_type' => Asset::class, ]; }); } @@ -275,7 +310,9 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 1, + 'model_id' => function () { + return AssetModel::where('name', 'Macbook Pro 13')->first() ?? AssetModel::factory()->mbp13Model(); + }, ]; }); } @@ -284,9 +321,21 @@ class AssetFactory extends Factory { return $this->state(function () { return [ - 'model_id' => 1, + 'model_id' => function () { + return AssetModel::where('name', 'Macbook Pro 13')->first() ?? AssetModel::factory()->mbp13Model(); + }, 'deleted_at' => $this->faker->dateTime(), ]; }); } + + public function requestable() + { + return $this->state(['requestable' => true]); + } + + public function nonrequestable() + { + return $this->state(['requestable' => false]); + } } diff --git a/database/factories/AssetMaintenanceFactory.php b/database/factories/AssetMaintenanceFactory.php index f9351f5188..ada73f7ed8 100644 --- a/database/factories/AssetMaintenanceFactory.php +++ b/database/factories/AssetMaintenanceFactory.php @@ -3,19 +3,10 @@ namespace Database\Factories; use App\Models\Asset; -use App\Models\AssetModel; -use App\Models\Category; +use App\Models\AssetMaintenance; +use App\Models\Supplier; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to modelling assets. -| -*/ - class AssetMaintenanceFactory extends Factory { /** @@ -23,7 +14,7 @@ class AssetMaintenanceFactory extends Factory * * @var string */ - protected $model = \App\Models\AssetMaintenance::class; + protected $model = AssetMaintenance::class; /** * Define the model's default state. @@ -33,14 +24,10 @@ class AssetMaintenanceFactory extends Factory public function definition() { return [ - 'asset_id' => function () { - return \App\Models\Asset::factory()->create()->id; - }, - 'supplier_id' => function () { - return \App\Models\Supplier::factory()->create()->id; - }, + 'asset_id' => Asset::factory(), + 'supplier_id' => Supplier::factory(), 'asset_maintenance_type' => $this->faker->randomElement(['maintenance', 'repair', 'upgrade']), - 'title' => $this->faker->sentence, + 'title' => $this->faker->sentence(), 'start_date' => $this->faker->date(), 'is_warranty' => $this->faker->boolean(), 'notes' => $this->faker->paragraph(), diff --git a/database/factories/AssetModelFactory.php b/database/factories/AssetModelFactory.php index 187bc539fc..4881d6560b 100644 --- a/database/factories/AssetModelFactory.php +++ b/database/factories/AssetModelFactory.php @@ -2,68 +2,14 @@ namespace Database\Factories; +use App\Models\AssetModel; +use App\Models\CustomFieldset; +use App\Models\Depreciation; +use App\Models\Manufacturer; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; use App\Models\Category; -/* -|-------------------------------------------------------------------------- -| Asset Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating models .. -| -*/ - -/* -|-------------------------------------------------------------------------- -| Laptops -|-------------------------------------------------------------------------- -*/ - -// 1 - -// 2 - -// 3 - -// 4 - -// 5 - -// 6 - -// 7 - -/* -|-------------------------------------------------------------------------- -| Desktops -|-------------------------------------------------------------------------- -*/ - -/* -|-------------------------------------------------------------------------- -| Conference Phones -|-------------------------------------------------------------------------- -*/ - -/* -|-------------------------------------------------------------------------- -| Tablets -|-------------------------------------------------------------------------- -*/ - -/* -|-------------------------------------------------------------------------- -| Mobile Phones -|-------------------------------------------------------------------------- -*/ - -/* -|-------------------------------------------------------------------------- -| Displays -|-------------------------------------------------------------------------- -*/ - class AssetModelFactory extends Factory { /** @@ -71,7 +17,7 @@ class AssetModelFactory extends Factory * * @var string */ - protected $model = \App\Models\AssetModel::class; + protected $model = AssetModel::class; /** * Define the model's default state. @@ -81,8 +27,9 @@ class AssetModelFactory extends Factory public function definition() { return [ - 'user_id' => 1, + 'user_id' => User::factory()->superuser(), 'name' => $this->faker->catchPhrase(), + 'category_id' => Category::factory(), 'model_number' => $this->faker->creditCardNumber(), 'notes' => 'Created by demo seeder', @@ -94,11 +41,17 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Macbook Pro 13"', - 'category_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Laptops')->first() ?? Category::factory()->assetLaptopCategory(); + }, 'eol' => '36', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'mbp.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -108,12 +61,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Macbook Air', - 'category_id' => 1, - 'manufacturer_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Laptops')->first() ?? Category::factory()->assetLaptopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'eol' => '36', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'macbookair.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -123,12 +84,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Surface', - 'category_id' => 1, - 'manufacturer_id' => 2, + 'category_id' => function () { + return Category::where('name', 'Laptops')->first() ?? Category::factory()->assetLaptopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Microsoft')->first() ?? Manufacturer::factory()->microsoft(); + }, 'eol' => '36', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'surface.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -138,12 +107,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'XPS 13', - 'category_id' => 1, - 'manufacturer_id' => 3, + 'category_id' => function () { + return Category::where('name', 'Laptops')->first() ?? Category::factory()->assetLaptopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Dell')->first() ?? Manufacturer::factory()->dell(); + }, 'eol' => '36', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'xps.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -153,12 +130,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'ZenBook UX310', - 'category_id' => 1, - 'manufacturer_id' => 4, + 'category_id' => function () { + return Category::where('name', 'Laptops')->first() ?? Category::factory()->assetLaptopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Asus')->first() ?? Manufacturer::factory()->asus(); + }, 'eol' => '36', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'zenbook.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -168,12 +153,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Spectre', - 'category_id' => 1, - 'manufacturer_id' => 5, + 'category_id' => function () { + return Category::where('name', 'Laptops')->first() ?? Category::factory()->assetLaptopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'HP')->first() ?? Manufacturer::factory()->hp(); + }, 'eol' => '36', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'spectre.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -183,12 +176,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Yoga 910', - 'category_id' => 1, - 'manufacturer_id' => 6, + 'category_id' => function () { + return Category::where('name', 'Laptops')->first() ?? Category::factory()->assetLaptopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Lenovo')->first() ?? Manufacturer::factory()->lenovo(); + }, 'eol' => '36', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'yoga.png', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -198,12 +199,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'iMac Pro', - 'category_id' => 2, - 'manufacturer_id' => 1, + 'category_id' => function (){ + return Category::where('name', 'Desktops')->first() ?? Category::factory()->assetDesktopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'eol' => '24', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'imacpro.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -213,12 +222,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Lenovo Intel Core i5', - 'category_id' => 2, - 'manufacturer_id' => 6, + 'category_id' => function () { + return Category::where('name', 'Desktops')->first() ?? Category::factory()->assetDesktopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Lenovo')->first() ?? Manufacturer::factory()->lenovo(); + }, 'eol' => '24', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'lenovoi5.png', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -228,13 +245,21 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'OptiPlex', - 'category_id' => 2, - 'manufacturer_id' => 3, + 'category_id' => function (){ + return Category::where('name', 'Desktops')->first() ?? Category::factory()->assetDesktopCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Dell')->first() ?? Manufacturer::factory()->dell(); + }, 'model_number' => '5040 (MRR81)', 'eol' => '24', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'optiplex.jpg', - 'fieldset_id' => 2, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Laptops and Desktops')->first() ?? CustomFieldset::factory()->computer(); + }, ]; }); } @@ -244,10 +269,16 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'SoundStation 2', - 'category_id' => 6, - 'manufacturer_id' => 8, + 'category_id' => function () { + return Category::where('name', 'VOIP Phones')->first() ?? Category::factory()->assetVoipCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Polycom')->first() ?? Manufacturer::factory()->polycom(); + }, 'eol' => '12', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'soundstation.jpg', ]; }); @@ -258,10 +289,16 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Polycom CX3000 IP Conference Phone', - 'category_id' => 6, - 'manufacturer_id' => 8, + 'category_id' => function () { + return Category::where('name', 'VOIP Phones')->first() ?? Category::factory()->assetVoipCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Polycom')->first() ?? Manufacturer::factory()->polycom(); + }, 'eol' => '12', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'cx3000.png', ]; }); @@ -272,10 +309,16 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'iPad Pro', - 'category_id' => 3, - 'manufacturer_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Tablets')->first() ?? Category::factory()->assetTabletCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'eol' => '12', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'ipad.jpg', ]; }); @@ -286,10 +329,16 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Tab3', - 'category_id' => 3, - 'manufacturer_id' => 6, + 'category_id' => function () { + return Category::where('name', 'Tablets')->first() ?? Category::factory()->assetTabletCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Lenovo')->first() ?? Manufacturer::factory()->lenovo(); + }, 'eol' => '12', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'tab3.png', ]; }); @@ -300,12 +349,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'iPhone 11', - 'category_id' => 4, - 'manufacturer_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Mobile Phones')->first() ?? Category::factory()->assetMobileCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'eol' => '12', - 'depreciation_id' => 3, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Mobile Phone Depreciation')->first() ?? Depreciation::factory()->mobilePhones(); + }, 'image' => 'iphone11.jpeg', - 'fieldset_id' => 1, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Mobile Devices')->first() ?? CustomFieldset::factory()->mobile(); + }, ]; }); } @@ -315,12 +372,20 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'iPhone 12', - 'category_id' => 4, - 'manufacturer_id' => 1, + 'category_id' => function () { + return Category::where('name', 'Mobile Phones')->first() ?? Category::factory()->assetMobileCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Apple')->first() ?? Manufacturer::factory()->apple(); + }, 'eol' => '12', - 'depreciation_id' => 1, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Computer Depreciation')->first() ?? Depreciation::factory()->computer(); + }, 'image' => 'iphone12.jpeg', - 'fieldset_id' => 1, + 'fieldset_id' => function () { + return CustomFieldset::where('name', 'Mobile Devices')->first() ?? CustomFieldset::factory()->mobile(); + }, ]; }); } @@ -330,10 +395,16 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Ultrafine 4k', - 'category_id' => 5, - 'manufacturer_id' => 7, + 'category_id' => function () { + return Category::where('name', 'Displays')->first() ?? Category::factory()->assetDisplayCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'LG')->first() ?? Manufacturer::factory()->lg(); + }, 'eol' => '12', - 'depreciation_id' => 2, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Display Depreciation')->first() ?? Depreciation::factory()->display(); + }, 'image' => 'ultrafine.jpg', ]; }); @@ -344,10 +415,16 @@ class AssetModelFactory extends Factory return $this->state(function () { return [ 'name' => 'Ultrasharp U2415', - 'category_id' => 5, - 'manufacturer_id' => 3, + 'category_id' => function () { + return Category::where('name', 'Displays')->first() ?? Category::factory()->assetDisplayCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Dell')->first() ?? Manufacturer::factory()->dell(); + }, 'eol' => '12', - 'depreciation_id' => 2, + 'depreciation_id' => function () { + return Depreciation::where('name', 'Display Depreciation')->first() ?? Depreciation::factory()->display(); + }, 'image' => 'ultrasharp.jpg', ]; }); diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php index 8f9dd90e3f..94a9626da4 100644 --- a/database/factories/CategoryFactory.php +++ b/database/factories/CategoryFactory.php @@ -2,18 +2,10 @@ namespace Database\Factories; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; use App\Models\Category; -/* -|-------------------------------------------------------------------------- -| Category Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating categories and the various states.. -| -*/ - class CategoryFactory extends Factory { /** @@ -21,7 +13,7 @@ class CategoryFactory extends Factory * * @var string */ - protected $model = \App\Models\Category::class; + protected $model = Category::class; /** * Define the model's default state. @@ -32,18 +24,19 @@ class CategoryFactory extends Factory { return [ 'name' => $this->faker->catchPhrase(), + 'category_type' => 'asset', 'checkin_email' => $this->faker->boolean(), 'eula_text' => $this->faker->paragraph(), 'require_acceptance' => false, 'use_default_eula' => $this->faker->boolean(), - 'user_id' => 1, + 'user_id' => User::factory()->superuser(), ]; } // usage: Category::factory()->assetLaptopCategory(); public function assetLaptopCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Laptops', 'category_type' => 'asset', 'require_acceptance' => true, @@ -53,7 +46,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->assetDesktopCategory(); public function assetDesktopCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Desktops', 'category_type' => 'asset', 'require_acceptance' => true, @@ -63,7 +56,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->assetDisplayCategory(); public function assetDisplayCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Displays', 'category_type' => 'asset', ]); @@ -72,7 +65,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->assetTabletCategory(); public function assetTabletCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Tablets', 'category_type' => 'asset', ]); @@ -81,7 +74,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->assetMobileCategory(); public function assetMobileCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Mobile Phones', 'category_type' => 'asset', ]); @@ -90,7 +83,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->assetConferenceCategory(); public function assetConferenceCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Conference Phones', 'category_type' => 'asset', ]); @@ -100,7 +93,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->assetVoipCategory(); public function assetVoipCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'VOIP Phones', 'category_type' => 'asset', ]); @@ -109,8 +102,8 @@ class CategoryFactory extends Factory // usage: Category::factory()->accessoryKeyboardCategory(); public function accessoryKeyboardCategory() { - return Category::factory()->create([ - 'name' => 'Keyboardss', + return $this->state([ + 'name' => 'Keyboards', 'category_type' => 'accessory', ]); } @@ -119,7 +112,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->accessoryMouseCategory(); public function accessoryMouseCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Mouse', 'category_type' => 'accessory', ]); @@ -128,7 +121,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->componentHddCategory(); public function componentHddCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'HDD/SSD', 'category_type' => 'component', ]); @@ -137,7 +130,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->componentRamCategory(); public function componentRamCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'RAM', 'category_type' => 'component', ]); @@ -146,7 +139,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->consumablePaperCategory(); public function consumablePaperCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Printer Paper', 'category_type' => 'consumable', ]); @@ -155,7 +148,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->consumableInkCategory(); public function consumableInkCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Printer Ink', 'category_type' => 'consumable', ]); @@ -164,7 +157,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->licenseGraphicsCategory(); public function licenseGraphicsCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Graphics Software', 'category_type' => 'license', ]); @@ -173,7 +166,7 @@ class CategoryFactory extends Factory // usage: Category::factory()->licenseGraphicsCategory(); public function licenseOfficeCategory() { - return Category::factory()->create([ + return $this->state([ 'name' => 'Office Software', 'category_type' => 'license', ]); diff --git a/database/factories/CheckoutAcceptanceFactory.php b/database/factories/CheckoutAcceptanceFactory.php new file mode 100644 index 0000000000..b5744527f8 --- /dev/null +++ b/database/factories/CheckoutAcceptanceFactory.php @@ -0,0 +1,41 @@ + Asset::class, + 'checkoutable_id' => Asset::factory(), + 'assigned_to_id' => User::factory(), + ]; + } + + public function forAccessory() + { + return $this->state([ + 'checkoutable_type' => Accessory::class, + 'checkoutable_id' => Accessory::factory(), + ]); + } + + public function pending() + { + return $this->state([ + 'accepted_at' => null, + 'declined_at' => null, + ]); + } +} diff --git a/database/factories/CompanyFactory.php b/database/factories/CompanyFactory.php index 695a2dbdb5..bf4b7ce242 100644 --- a/database/factories/CompanyFactory.php +++ b/database/factories/CompanyFactory.php @@ -1,25 +1,8 @@ $this->faker->company, + 'name' => $this->faker->company(), ]; } } diff --git a/database/factories/ComponentFactory.php b/database/factories/ComponentFactory.php index bd971162ab..caac70078f 100644 --- a/database/factories/ComponentFactory.php +++ b/database/factories/ComponentFactory.php @@ -2,16 +2,12 @@ namespace Database\Factories; +use App\Models\Category; +use App\Models\Company; +use App\Models\Component; +use App\Models\Location; use Illuminate\Database\Eloquent\Factories\Factory; - -/* -|-------------------------------------------------------------------------- -| Components Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating components .. -| -*/ +use App\Models\Supplier; class ComponentFactory extends Factory { @@ -20,7 +16,7 @@ class ComponentFactory extends Factory * * @var string */ - protected $model = \App\Models\Component::class; + protected $model = Component::class; /** * Define the model's default state. @@ -31,19 +27,16 @@ class ComponentFactory extends Factory { return [ 'name' => $this->faker->text(20), - 'category_id' => function () { - return \App\Models\Category::factory()->create()->id; - }, - 'location_id' => 1, - 'serial' => $this->faker->uuid, + 'category_id' => Category::factory(), + 'location_id' => Location::factory(), + 'serial' => $this->faker->uuid(), 'qty' => $this->faker->numberBetween(3, 10), 'order_number' => $this->faker->numberBetween(1000000, 50000000), - 'purchase_date' => $this->faker->dateTime(), + 'purchase_date' => $this->faker->dateTime()->format('Y-m-d'), 'purchase_cost' => $this->faker->randomFloat(2), 'min_amt' => $this->faker->numberBetween($min = 1, $max = 2), - 'company_id' => function () { - return \App\Models\Company::factory()->create()->id; - }, + 'company_id' => Company::factory(), + 'supplier_id' => Supplier::factory(), ]; } @@ -52,11 +45,12 @@ class ComponentFactory extends Factory return $this->state(function () { return [ 'name' => 'Crucial 4GB DDR3L-1600 SODIMM', - 'category_id' => 13, + 'category_id' => function () { + return Category::where('name', 'RAM')->first() ?? Category::factory()->componentRamCategory(); + }, 'qty' => 10, 'min_amt' => 2, - 'location_id' => 3, - 'company_id' => 2, + 'location_id' => Location::factory(), ]; }); } @@ -66,7 +60,9 @@ class ComponentFactory extends Factory return $this->state(function () { return [ 'name' => 'Crucial 8GB DDR3L-1600 SODIMM Memory for Mac', - 'category_id' => 13, + 'category_id' => function () { + return Category::where('name', 'RAM')->first() ?? Category::factory()->componentRamCategory(); + }, 'qty' => 10, 'min_amt' => 2, ]; @@ -78,7 +74,9 @@ class ComponentFactory extends Factory return $this->state(function () { return [ 'name' => 'Crucial BX300 120GB SATA Internal SSD', - 'category_id' => 12, + 'category_id' => function () { + return Category::where('name', 'HDD/SSD')->first() ?? Category::factory()->componentHddCategory(); + }, 'qty' => 10, 'min_amt' => 2, ]; @@ -90,7 +88,9 @@ class ComponentFactory extends Factory return $this->state(function () { return [ 'name' => 'Crucial BX300 240GB SATA Internal SSD', - 'category_id' => 12, + 'category_id' => function () { + return Category::where('name', 'HDD/SSD')->first() ?? Category::factory()->componentHddCategory(); + }, 'qty' => 10, 'min_amt' => 2, ]; diff --git a/database/factories/ConsumableFactory.php b/database/factories/ConsumableFactory.php index 50a9db0ba2..18a116418b 100644 --- a/database/factories/ConsumableFactory.php +++ b/database/factories/ConsumableFactory.php @@ -2,16 +2,13 @@ namespace Database\Factories; +use App\Models\Category; +use App\Models\Company; +use App\Models\Consumable; +use App\Models\Manufacturer; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; - -/* -|-------------------------------------------------------------------------- -| Consumables Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating consumables .. -| -*/ +use App\Models\Supplier; class ConsumableFactory extends Factory { @@ -20,7 +17,7 @@ class ConsumableFactory extends Factory * * @var string */ - protected $model = \App\Models\Consumable::class; + protected $model = Consumable::class; /** * Define the model's default state. @@ -30,13 +27,17 @@ class ConsumableFactory extends Factory public function definition() { return [ - 'user_id' => 1, + 'name' => $this->faker->words(3, true), + 'category_id' => Category::factory(), + 'user_id' => User::factory()->superuser(), 'item_no' => $this->faker->numberBetween(1000000, 50000000), 'order_number' => $this->faker->numberBetween(1000000, 50000000), - 'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'), 'purchase_cost' => $this->faker->randomFloat(2, 1, 50), 'qty' => $this->faker->numberBetween(5, 10), 'min_amt' => $this->faker->numberBetween($min = 1, $max = 2), + 'company_id' => Company::factory(), + 'supplier_id' => Supplier::factory(), ]; } @@ -45,11 +46,14 @@ class ConsumableFactory extends Factory return $this->state(function () { return [ 'name' => 'Cardstock (White)', - 'category_id' => 10, - 'manufacturer_id' => 10, + 'category_id' => function () { + return Category::where('name', 'Printer Paper')->first() ?? Category::factory()->consumablePaperCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Avery')->first() ?? Manufacturer::factory()->avery(); + }, 'qty' => 10, 'min_amt' => 2, - 'company_id' => 3, ]; }); } @@ -59,8 +63,12 @@ class ConsumableFactory extends Factory return $this->state(function () { return [ 'name' => 'Laserjet Paper (Ream)', - 'category_id' => 10, - 'manufacturer_id' => 10, + 'category_id' => function () { + return Category::where('name', 'Printer Paper')->first() ?? Category::factory()->consumablePaperCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Avery')->first() ?? Manufacturer::factory()->avery(); + }, 'qty' => 20, 'min_amt' => 2, ]; @@ -72,8 +80,12 @@ class ConsumableFactory extends Factory return $this->state(function () { return [ 'name' => 'Laserjet Toner (black)', - 'category_id' => 11, - 'manufacturer_id' => 5, + 'category_id' => function () { + return Category::where('name', 'Printer Ink')->first() ?? Category::factory()->consumableInkCategory(); + }, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'HP')->first() ?? Manufacturer::factory()->hp(); + }, 'qty' => 20, 'min_amt' => 2, ]; diff --git a/database/factories/CustomFieldFactory.php b/database/factories/CustomFieldFactory.php index c964ea44d1..adcca9cae1 100644 --- a/database/factories/CustomFieldFactory.php +++ b/database/factories/CustomFieldFactory.php @@ -2,6 +2,7 @@ namespace Database\Factories; +use App\Models\CustomField; use Illuminate\Database\Eloquent\Factories\Factory; class CustomFieldFactory extends Factory @@ -11,7 +12,7 @@ class CustomFieldFactory extends Factory * * @var string */ - protected $model = \App\Models\CustomField::class; + protected $model = CustomField::class; /** * Define the model's default state. @@ -21,9 +22,10 @@ class CustomFieldFactory extends Factory public function definition() { return [ - 'name' => $this->faker->catchPhrase, + 'name' => $this->faker->catchPhrase(), 'format' => '', 'element' => 'text', + 'auto_add_to_fieldsets' => '0', ]; } diff --git a/database/factories/CustomFieldsetFactory.php b/database/factories/CustomFieldsetFactory.php index 1dd834d052..f369121c8f 100644 --- a/database/factories/CustomFieldsetFactory.php +++ b/database/factories/CustomFieldsetFactory.php @@ -2,6 +2,7 @@ namespace Database\Factories; +use App\Models\CustomFieldset; use Illuminate\Database\Eloquent\Factories\Factory; class CustomFieldsetFactory extends Factory @@ -11,7 +12,7 @@ class CustomFieldsetFactory extends Factory * * @var string */ - protected $model = \App\Models\CustomFieldset::class; + protected $model = CustomFieldset::class; /** * Define the model's default state. @@ -21,7 +22,7 @@ class CustomFieldsetFactory extends Factory public function definition() { return [ - 'name' => $this->faker->catchPhrase, + 'name' => $this->faker->catchPhrase(), ]; } diff --git a/database/factories/DepartmentFactory.php b/database/factories/DepartmentFactory.php index ad80d32841..cd8c86a875 100644 --- a/database/factories/DepartmentFactory.php +++ b/database/factories/DepartmentFactory.php @@ -2,17 +2,11 @@ namespace Database\Factories; +use App\Models\Department; +use App\Models\Location; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Asset Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating models .. -| -*/ - class DepartmentFactory extends Factory { /** @@ -20,7 +14,7 @@ class DepartmentFactory extends Factory * * @var string */ - protected $model = \App\Models\Department::class; + protected $model = Department::class; /** * Define the model's default state. @@ -30,8 +24,9 @@ class DepartmentFactory extends Factory public function definition() { return [ - 'user_id' => 1, - 'location_id' => rand(1, 5), + 'name' => $this->faker->word() . ' Department', + 'user_id' => User::factory()->superuser(), + 'location_id' => Location::factory(), ]; } diff --git a/database/factories/DepreciationFactory.php b/database/factories/DepreciationFactory.php index 17940ac515..6a648d7ade 100644 --- a/database/factories/DepreciationFactory.php +++ b/database/factories/DepreciationFactory.php @@ -2,17 +2,10 @@ namespace Database\Factories; +use App\Models\Depreciation; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Asset Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating models .. -| -*/ - class DepreciationFactory extends Factory { /** @@ -20,7 +13,7 @@ class DepreciationFactory extends Factory * * @var string */ - protected $model = \App\Models\Depreciation::class; + protected $model = Depreciation::class; /** * Define the model's default state. @@ -31,7 +24,7 @@ class DepreciationFactory extends Factory { return [ 'name' => $this->faker->catchPhrase(), - 'user_id' => 1, + 'user_id' => User::factory()->superuser(), 'months' => 36, ]; } diff --git a/database/factories/GroupFactory.php b/database/factories/GroupFactory.php index 17f3493c2b..9dee88a965 100644 --- a/database/factories/GroupFactory.php +++ b/database/factories/GroupFactory.php @@ -1,25 +1,8 @@ $this->faker->name, + 'name' => $this->faker->name(), ]; } } diff --git a/database/factories/LicenseFactory.php b/database/factories/LicenseFactory.php index 2aa681c0d2..6360735c5f 100644 --- a/database/factories/LicenseFactory.php +++ b/database/factories/LicenseFactory.php @@ -2,25 +2,12 @@ namespace Database\Factories; use App\Models\Category; +use App\Models\License; +use App\Models\Manufacturer; +use App\Models\Supplier; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Asset Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating models .. -| -*/ - -// 1 - -// 2 - -// 3 - -// 4 - class LicenseFactory extends Factory { /** @@ -28,7 +15,7 @@ class LicenseFactory extends Factory * * @var string */ - protected $model = \App\Models\License::class; + protected $model = License::class; /** * Define the model's default state. @@ -37,22 +24,20 @@ class LicenseFactory extends Factory */ public function definition() { - - return [ - 'user_id' => 1, - 'name' => $this->faker->name, - 'license_email' => $this->faker->safeEmail, - 'serial' => $this->faker->uuid, + 'user_id' => User::factory()->superuser(), + 'name' => $this->faker->name(), + 'license_email' => $this->faker->safeEmail(), + 'serial' => $this->faker->uuid(), 'notes' => 'Created by DB seeder', 'seats' => $this->faker->numberBetween(1, 10), - 'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get()), + 'purchase_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d'), 'order_number' => $this->faker->numberBetween(1000000, 50000000), 'expiration_date' => $this->faker->dateTimeBetween('now', '+3 years', date_default_timezone_get())->format('Y-m-d H:i:s'), 'reassignable' => $this->faker->boolean(), 'termination_date' => $this->faker->dateTimeBetween('-1 years', 'now', date_default_timezone_get())->format('Y-m-d H:i:s'), - 'supplier_id' => $this->faker->numberBetween(1, 5), - 'category_id' => Category::where('category_type', '=', 'license')->inRandomOrder()->first()->id + 'supplier_id' => Supplier::factory(), + 'category_id' => Category::factory(), ]; } @@ -61,12 +46,16 @@ class LicenseFactory extends Factory return $this->state(function () { $data = [ 'name' => 'Photoshop', - 'manufacturer_id' => 9, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Adobe')->first() ?? Manufacturer::factory()->adobe(); + }, 'purchase_cost' => '299.99', 'seats' => 10, 'purchase_order' => '13503Q', 'maintained' => true, - 'category_id' => 14, + 'category_id' => function () { + return Category::where('name', 'Graphics Software')->first() ?? Category::factory()->licenseGraphicsCategory(); + }, ]; return $data; @@ -78,10 +67,14 @@ class LicenseFactory extends Factory return $this->state(function () { $data = [ 'name' => 'Acrobat', - 'manufacturer_id' => 9, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Adobe')->first() ?? Manufacturer::factory()->adobe(); + }, 'purchase_cost' => '29.99', 'seats' => 10, - 'category_id' => 14, + 'category_id' => function () { + return Category::where('name', 'Graphics Software')->first() ?? Category::factory()->licenseGraphicsCategory(); + }, ]; return $data; @@ -93,10 +86,14 @@ class LicenseFactory extends Factory return $this->state(function () { $data = [ 'name' => 'InDesign', - 'manufacturer_id' => 9, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Adobe')->first() ?? Manufacturer::factory()->adobe(); + }, 'purchase_cost' => '199.99', 'seats' => 10, - 'category_id' => 14, + 'category_id' => function () { + return Category::where('name', 'Graphics Software')->first() ?? Category::factory()->licenseGraphicsCategory(); + }, ]; @@ -109,10 +106,14 @@ class LicenseFactory extends Factory return $this->state(function () { $data = [ 'name' => 'Office', - 'manufacturer_id' => 2, + 'manufacturer_id' => function () { + return Manufacturer::where('name', 'Microsoft')->first() ?? Manufacturer::factory()->microsoft(); + }, 'purchase_cost' => '49.99', 'seats' => 20, - 'category_id' => 15, + 'category_id' => function () { + return Category::where('name', 'Office Software')->first() ?? Category::factory()->licenseOfficeCategory(); + }, ]; return $data; diff --git a/database/factories/LicenseSeatFactory.php b/database/factories/LicenseSeatFactory.php new file mode 100644 index 0000000000..3c6cc4246b --- /dev/null +++ b/database/factories/LicenseSeatFactory.php @@ -0,0 +1,16 @@ + License::factory(), + ]; + } +} diff --git a/database/factories/LocationFactory.php b/database/factories/LocationFactory.php index f6a4bb973b..6db268e8c1 100644 --- a/database/factories/LocationFactory.php +++ b/database/factories/LocationFactory.php @@ -23,8 +23,6 @@ class LocationFactory extends Factory 'currency' => $this->faker->currencyCode(), 'zip' => $this->faker->postcode(), 'image' => rand(1, 9).'.jpg', - ]; } - } diff --git a/database/factories/ManufacturerFactory.php b/database/factories/ManufacturerFactory.php index 427cd0b6db..4e736b8d8a 100644 --- a/database/factories/ManufacturerFactory.php +++ b/database/factories/ManufacturerFactory.php @@ -2,39 +2,10 @@ namespace Database\Factories; +use App\Models\Manufacturer; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -/* -|-------------------------------------------------------------------------- -| Asset Model Factories -|-------------------------------------------------------------------------- -| -| Factories related exclusively to creating models .. -| -*/ - -// 1 - -// 2 - -// 3 - -// 4 - -// 5 - -// 6 - -// 7 - -// 8 - -// 9 - -// 10 - -// 11 - class ManufacturerFactory extends Factory { /** @@ -42,7 +13,7 @@ class ManufacturerFactory extends Factory * * @var string */ - protected $model = \App\Models\Manufacturer::class; + protected $model = Manufacturer::class; /** * Define the model's default state. @@ -52,7 +23,8 @@ class ManufacturerFactory extends Factory public function definition() { return [ - 'user_id' => 1, + 'name' => $this->faker->company(), + 'user_id' => User::factory()->superuser(), 'support_phone' => $this->faker->phoneNumber(), 'url' => $this->faker->url(), 'support_email' => $this->faker->safeEmail(), @@ -66,6 +38,7 @@ class ManufacturerFactory extends Factory 'name' => 'Apple', 'url' => 'https://apple.com', 'support_url' => 'https://support.apple.com', + 'warranty_lookup_url' => 'https://checkcoverage.apple.com', 'image' => 'apple.jpg', ]; }); @@ -78,6 +51,7 @@ class ManufacturerFactory extends Factory 'name' => 'Microsoft', 'url' => 'https://microsoft.com', 'support_url' => 'https://support.microsoft.com', + 'warranty_lookup_url' => 'https://account.microsoft.com/devices', 'image' => 'microsoft.png', ]; }); @@ -90,6 +64,7 @@ class ManufacturerFactory extends Factory 'name' => 'Dell', 'url' => 'https://dell.com', 'support_url' => 'https://support.dell.com', + 'warranty_lookup_url' => 'https://www.dell.com/support/home/en-us/Products/?app=warranty', 'image' => 'dell.png', ]; }); diff --git a/database/factories/SettingFactory.php b/database/factories/SettingFactory.php index 73a9e049dc..1655bd3350 100644 --- a/database/factories/SettingFactory.php +++ b/database/factories/SettingFactory.php @@ -1,25 +1,8 @@ 1, 'per_page' => 20, - 'site_name' => $this->faker->sentence, + 'site_name' => $this->faker->sentence(), 'auto_increment_assets' => false, 'alert_email' => $this->faker->safeEmail(), 'alerts_enabled' => true, 'brand' => 1, - 'default_currency' => $this->faker->currencyCode, + 'default_currency' => $this->faker->currencyCode(), 'locale' => 'en', 'pwd_secure_min' => 10, // Match web setup 'email_domain' => 'test.com', diff --git a/database/factories/StatuslabelFactory.php b/database/factories/StatuslabelFactory.php index 051e8131ee..0b8359dd5b 100644 --- a/database/factories/StatuslabelFactory.php +++ b/database/factories/StatuslabelFactory.php @@ -3,6 +3,7 @@ namespace Database\Factories; use App\Models\Statuslabel; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; class StatuslabelFactory extends Factory @@ -22,10 +23,10 @@ class StatuslabelFactory extends Factory public function definition() { return [ - 'name' => $this->faker->sentence, + 'name' => $this->faker->sentence(), 'created_at' => $this->faker->dateTime(), 'updated_at' => $this->faker->dateTime(), - 'user_id' => 1, + 'user_id' => User::factory()->superuser(), 'deleted_at' => null, 'deployable' => 0, 'pending' => 0, @@ -38,7 +39,7 @@ class StatuslabelFactory extends Factory { return $this->state(function () { return [ - 'notes' => $this->faker->sentence, + 'notes' => $this->faker->sentence(), 'deployable' => 1, 'default_label' => 1, ]; @@ -49,7 +50,7 @@ class StatuslabelFactory extends Factory { return $this->state(function () { return [ - 'notes' => $this->faker->sentence, + 'notes' => $this->faker->sentence(), 'pending' => 1, 'default_label' => 1, ]; diff --git a/database/factories/SupplierFactory.php b/database/factories/SupplierFactory.php index 344dfe7d5b..971cd28990 100644 --- a/database/factories/SupplierFactory.php +++ b/database/factories/SupplierFactory.php @@ -1,24 +1,7 @@ $this->faker->company, - 'address' => $this->faker->streetAddress, - 'address2' => $this->faker->secondaryAddress, - 'city' => $this->faker->city, - 'state' => $this->faker->stateAbbr, - 'zip' => $this->faker->postCode, - 'country' => $this->faker->countryCode, - 'contact' => $this->faker->name, - 'phone' => $this->faker->phoneNumber, - 'fax' => $this->faker->phoneNumber, - 'email' => $this->faker->safeEmail, - 'url' => $this->faker->url, + 'name' => $this->faker->company(), + 'address' => $this->faker->streetAddress(), + 'address2' => $this->faker->secondaryAddress(), + 'city' => $this->faker->city(), + 'state' => $this->faker->stateAbbr(), + 'zip' => $this->faker->postCode(), + 'country' => $this->faker->countryCode(), + 'contact' => $this->faker->name(), + 'phone' => $this->faker->phoneNumber(), + 'fax' => $this->faker->phoneNumber(), + 'email' => $this->faker->safeEmail(), + 'url' => $this->faker->url(), 'notes' => $this->faker->text(191), // Supplier notes can be a max of 255 characters. ]; } diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index bc23625749..2445a351f3 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -2,6 +2,8 @@ namespace Database\Factories; +use App\Models\Company; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; use \Auth; @@ -18,10 +20,9 @@ class UserFactory extends Factory 'activated' => 1, 'address' => $this->faker->address(), 'city' => $this->faker->city(), - 'company_id' => rand(1, 4), + 'company_id' => Company::factory(), 'country' => $this->faker->country(), - 'department_id' => rand(1, 6), - 'email' => $this->faker->safeEmail, + 'email' => $this->faker->safeEmail(), 'employee_num' => $this->faker->numberBetween(3500, 35050), 'first_name' => $this->faker->firstName(), 'jobtitle' => $this->faker->jobTitle(), @@ -30,10 +31,10 @@ class UserFactory extends Factory 'notes' => 'Created by DB seeder', 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'permissions' => '{"user":"0"}', - 'phone' => $this->faker->phoneNumber, - 'state' => $this->faker->stateAbbr, - 'username' => $this->faker->username, - 'zip' => $this->faker->postcode, + 'phone' => $this->faker->phoneNumber(), + 'state' => $this->faker->stateAbbr(), + 'username' => $this->faker->username(), + 'zip' => $this->faker->postcode(), ]; } @@ -64,6 +65,20 @@ class UserFactory extends Factory }); } + public function testAdmin() + { + return $this->state(function () { + return [ + 'first_name' => 'Alison', + 'last_name' => 'Gianotto', + 'username' => 'agianotto@grokability.com', + 'avatar' => '2.jpg', + 'email' => 'agianotto@grokability.com', + 'permissions' => '{"superuser":"1"}', + ]; + }); + } + public function superuser() { return $this->state(function () { @@ -78,7 +93,9 @@ class UserFactory extends Factory return $this->state(function () { return [ 'permissions' => '{"admin":"1"}', - 'manager_id' => rand(1, 2), + 'manager_id' => function () { + return User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin(); + }, ]; }); } @@ -254,6 +271,15 @@ class UserFactory extends Factory }); } + public function viewDepartments() + { + return $this->state(function () { + return [ + 'permissions' => '{"departments.view":"1"}', + ]; + }); + } + public function viewLicenses() { return $this->state(function () { @@ -398,4 +424,12 @@ class UserFactory extends Factory }); } + public function canEditOwnLocation() + { + return $this->state(function () { + return [ + 'permissions' => '{"self.edit_location":"1"}', + ]; + }); + } } diff --git a/database/migrations/2012_12_06_225929_migration_cartalyst_sentry_install_groups.php b/database/migrations/2012_12_06_225929_migration_cartalyst_sentry_install_groups.php index cd45847bc7..55d7318736 100644 --- a/database/migrations/2012_12_06_225929_migration_cartalyst_sentry_install_groups.php +++ b/database/migrations/2012_12_06_225929_migration_cartalyst_sentry_install_groups.php @@ -44,6 +44,8 @@ class MigrationCartalystSentryInstallGroups extends Migration */ public function down() { - Schema::drop('permission_groups'); + // See 2014_11_04_231416_update_group_field_for_reporting.php and 2019_06_12_184327_rename_groups_table.php + Schema::dropIfExists('permission_groups'); + Schema::dropIfExists('groups'); } } diff --git a/database/migrations/2013_11_17_054526_add_physical_to_assets.php b/database/migrations/2013_11_17_054526_add_physical_to_assets.php index 2ccc7c43dc..28d1117201 100755 --- a/database/migrations/2013_11_17_054526_add_physical_to_assets.php +++ b/database/migrations/2013_11_17_054526_add_physical_to_assets.php @@ -26,6 +26,6 @@ class AddPhysicalToAssets extends Migration */ public function down() { - $table->dropColumn('physical'); + // $table->dropColumn('physical'); } } diff --git a/database/migrations/2013_11_25_013244_recreate_licenses_table.php b/database/migrations/2013_11_25_013244_recreate_licenses_table.php index fb18452794..a22349dcd6 100755 --- a/database/migrations/2013_11_25_013244_recreate_licenses_table.php +++ b/database/migrations/2013_11_25_013244_recreate_licenses_table.php @@ -37,7 +37,7 @@ class ReCreateLicensesTable extends Migration */ public function down() { - // - Schema::drop('licenses'); + // This was most likely handled in 2013_11_17_054359_drop_licenses_table.php + Schema::dropIfExists('licenses'); } } diff --git a/database/migrations/2013_11_25_031458_create_license_seats_table.php b/database/migrations/2013_11_25_031458_create_license_seats_table.php index 466ef00870..d023b8ebec 100755 --- a/database/migrations/2013_11_25_031458_create_license_seats_table.php +++ b/database/migrations/2013_11_25_031458_create_license_seats_table.php @@ -31,6 +31,6 @@ class CreateLicenseSeatsTable extends Migration */ public function down() { - // + Schema::dropIfExists('license_seats'); } } diff --git a/database/migrations/2013_11_25_104343_alter_warranty_column_on_assets.php b/database/migrations/2013_11_25_104343_alter_warranty_column_on_assets.php index be62374dce..d63a6ad9b4 100755 --- a/database/migrations/2013_11_25_104343_alter_warranty_column_on_assets.php +++ b/database/migrations/2013_11_25_104343_alter_warranty_column_on_assets.php @@ -23,6 +23,8 @@ class AlterWarrantyColumnOnAssets extends Migration */ public function down() { - // + Schema::table('assets', function ($table) { + $table->renameColumn('warranty_months', 'warrantee_months'); + }); } } diff --git a/database/migrations/2013_12_10_084038_add_eol_on_models_table.php b/database/migrations/2013_12_10_084038_add_eol_on_models_table.php index d8d222deec..97e7b266e6 100755 --- a/database/migrations/2013_12_10_084038_add_eol_on_models_table.php +++ b/database/migrations/2013_12_10_084038_add_eol_on_models_table.php @@ -24,7 +24,7 @@ class AddEolOnModelsTable extends Migration public function down() { Schema::table('models', function ($table) { - $table->dropColumn('old'); + $table->dropColumn('eol'); }); } } diff --git a/database/migrations/2015_07_29_230054_add_thread_id_to_asset_logs_table.php b/database/migrations/2015_07_29_230054_add_thread_id_to_asset_logs_table.php index eefc283e3f..f14dc078cc 100644 --- a/database/migrations/2015_07_29_230054_add_thread_id_to_asset_logs_table.php +++ b/database/migrations/2015_07_29_230054_add_thread_id_to_asset_logs_table.php @@ -105,10 +105,10 @@ */ public function down() { - Schema::table('asset_logs', function (Blueprint $table) { - $table->dropIndex('thread_id'); - $table->dropColumn('thread_id'); - }); + // Schema::table('asset_logs', function (Blueprint $table) { + // $table->dropIndex('thread_id'); + // $table->dropColumn('thread_id'); + // }); } /** diff --git a/database/migrations/2015_09_22_003413_migrate_mac_address.php b/database/migrations/2015_09_22_003413_migrate_mac_address.php index 516b5c2ec7..3c4bf93e15 100644 --- a/database/migrations/2015_09_22_003413_migrate_mac_address.php +++ b/database/migrations/2015_09_22_003413_migrate_mac_address.php @@ -48,13 +48,19 @@ class MigrateMacAddress extends Migration */ public function down() { - // $f = \App\Models\CustomFieldset::where(['name' => 'Asset with MAC Address'])->first(); - $f->fields()->delete(); - $f->delete(); + + if ($f) { + $f->fields()->delete(); + $f->delete(); + } + Schema::table('models', function (Blueprint $table) { $table->renameColumn('deprecated_mac_address', 'show_mac_address'); }); - DB::statement('ALTER TABLE assets CHANGE _snipeit_mac_address mac_address varchar(255)'); + + if (Schema::hasColumn('assets', '_snipeit_mac_address')) { + DB::statement('ALTER TABLE assets CHANGE _snipeit_mac_address mac_address varchar(255)'); + } } } diff --git a/database/migrations/2016_08_23_145619_add_show_in_nav_to_status_labels.php b/database/migrations/2016_08_23_145619_add_show_in_nav_to_status_labels.php index c4e1a18177..5ea26bf4c1 100644 --- a/database/migrations/2016_08_23_145619_add_show_in_nav_to_status_labels.php +++ b/database/migrations/2016_08_23_145619_add_show_in_nav_to_status_labels.php @@ -25,7 +25,7 @@ class AddShowInNavToStatusLabels extends Migration public function down() { Schema::table('status_labels', function (Blueprint $table) { - $table->dropColumn('show_in_nav', 'field_encrypted'); + $table->dropColumn('show_in_nav'); }); } } diff --git a/database/migrations/2017_01_25_063357_fix_utf8_custom_field_column_names.php b/database/migrations/2017_01_25_063357_fix_utf8_custom_field_column_names.php index 72e85698e0..4725cccfe1 100644 --- a/database/migrations/2017_01_25_063357_fix_utf8_custom_field_column_names.php +++ b/database/migrations/2017_01_25_063357_fix_utf8_custom_field_column_names.php @@ -4,6 +4,7 @@ use App\Models\CustomField; use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Str; /** * Fixes issue #2551 where columns got donked if the field name in non-ascii @@ -71,6 +72,25 @@ class FixUtf8CustomFieldColumnNames extends Migration */ public function down() { + // In the up method above, updateLegacyColumnName is called and custom fields in the assets table are prefixed + // with "_snipe_it_", suffixed with "_{id of the CustomField}", and stored in custom_fields.db_column. + // The following reverses those changes. + foreach (CustomField::all() as $field) { + $currentColumnName = $field->db_column; + + // "_snipeit_imei_1" becomes "_snipeit_imei" + $legacyColumnName = (string) Str::of($currentColumnName)->replaceMatches('/_(\d)+$/', ''); + + if (Schema::hasColumn(CustomField::$table_name, $currentColumnName)) { + Schema::table(CustomField::$table_name, function (Blueprint $table) use ($currentColumnName, $legacyColumnName) { + $table->renameColumn( + $currentColumnName, + $legacyColumnName + ); + }); + } + } + Schema::table('custom_fields', function ($table) { $table->dropColumn('db_column'); $table->dropColumn('help_text'); diff --git a/database/migrations/2017_03_10_210807_add_fields_to_manufacturer.php b/database/migrations/2017_03_10_210807_add_fields_to_manufacturer.php index 0d05a680c1..05af7c8316 100644 --- a/database/migrations/2017_03_10_210807_add_fields_to_manufacturer.php +++ b/database/migrations/2017_03_10_210807_add_fields_to_manufacturer.php @@ -28,7 +28,7 @@ class AddFieldsToManufacturer extends Migration */ public function down() { - Schema::table('settings', function ($table) { + Schema::table('manufacturers', function ($table) { $table->dropColumn('url'); $table->dropColumn('support_url'); $table->dropColumn('support_phone'); diff --git a/database/migrations/2021_04_14_180125_add_ids_to_tables.php b/database/migrations/2021_04_14_180125_add_ids_to_tables.php index 07172164fe..bac56466ce 100644 --- a/database/migrations/2021_04_14_180125_add_ids_to_tables.php +++ b/database/migrations/2021_04_14_180125_add_ids_to_tables.php @@ -22,7 +22,7 @@ class AddIdsToTables extends Migration Schema::table('password_resets', function (Blueprint $table) { // Add the id column to the password_resets table if it doesn't yet have one - if (! Schema::hasColumn('password_resets', 'id')) { + if (! Schema::hasColumn('password_resets', 'id') && $this->notUsingSqlite()) { $table->increments('id'); } }); @@ -47,4 +47,9 @@ class AddIdsToTables extends Migration } }); } + + private function notUsingSqlite() + { + return Schema::connection($this->getConnection())->getConnection()->getDriverName() !== 'sqlite'; + } } diff --git a/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php new file mode 100644 index 0000000000..b728e1f22b --- /dev/null +++ b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php @@ -0,0 +1,32 @@ +boolean('autoassign_licenses')->nullable(false)->default(1); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('autoassign_licenses'); + }); + } +} diff --git a/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php b/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php new file mode 100644 index 0000000000..9f5c5aa1e5 --- /dev/null +++ b/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php @@ -0,0 +1,54 @@ +date('asset_eol_date')->after('purchase_date')->nullable()->default(null); + } + }); + + // Chunk the model query to get the models that do have an EOL date + AssetModel::whereNotNull('eol')->chunk(10, function ($models) { + foreach ($models as $model) { + foreach ($model->assets as $asset) { + + if ($asset->purchase_date!='') { + $asset->asset_eol_date = $asset->present()->eol_date(); + $asset->save(); + } + + } + } + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('assets', function (Blueprint $table) { + if (Schema::hasColumn('assets', 'asset_eol_date')) { + $table->dropColumn('asset_eol_date'); + } + }); + } +} diff --git a/database/migrations/2023_01_23_232933_add_vip_to_users.php b/database/migrations/2023_01_23_232933_add_vip_to_users.php new file mode 100644 index 0000000000..344f35d240 --- /dev/null +++ b/database/migrations/2023_01_23_232933_add_vip_to_users.php @@ -0,0 +1,34 @@ +boolean('vip')->nullable()->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + if (Schema::hasColumn('users', 'vip')) { + $table->dropColumn('vip'); + } + }); + } +} diff --git a/database/migrations/2023_02_12_224353_fix_unescaped_customfields_format.php b/database/migrations/2023_02_12_224353_fix_unescaped_customfields_format.php new file mode 100644 index 0000000000..f1779e996a --- /dev/null +++ b/database/migrations/2023_02_12_224353_fix_unescaped_customfields_format.php @@ -0,0 +1,33 @@ +get(); + + foreach($customfields as $customfield){ + $customfield->update(['format' => html_entity_decode($customfield->format)]); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/migrations/2023_02_28_173527_adds_webhook_option_to_settings_table.php b/database/migrations/2023_02_28_173527_adds_webhook_option_to_settings_table.php new file mode 100644 index 0000000000..269a625182 --- /dev/null +++ b/database/migrations/2023_02_28_173527_adds_webhook_option_to_settings_table.php @@ -0,0 +1,54 @@ +string('webhook_selected')->after('slack_botname')->default('slack')->nullable(); + }); + + Schema::table('settings', function (Blueprint $table) { + $table->renameColumn('slack_botname', 'webhook_botname'); + }); + + Schema::table('settings', function (Blueprint $table) { + $table->renameColumn('slack_endpoint', 'webhook_endpoint'); + }); + + Schema::table('settings', function (Blueprint $table) { + $table->renameColumn('slack_channel', 'webhook_channel'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('settings', function (Blueprint $table) { + $table->dropColumn('webhook_selected'); + $table->renameColumn('webhook_botname', 'slack_botname'); + $table->renameColumn('webhook_endpoint', 'slack_endpoint'); + $table->renameColumn('webhook_channel', 'slack_channel'); + }); + } +} diff --git a/database/migrations/2023_03_21_215218_update_slack_setting.php b/database/migrations/2023_03_21_215218_update_slack_setting.php new file mode 100644 index 0000000000..e4fdf75600 --- /dev/null +++ b/database/migrations/2023_03_21_215218_update_slack_setting.php @@ -0,0 +1,38 @@ +get(); + + foreach($settings as $setting){ + $setting->webhook_selected = 'slack'; + $setting->save(); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/migrations/2023_04_12_135822_add_supplier_to_components.php b/database/migrations/2023_04_12_135822_add_supplier_to_components.php new file mode 100644 index 0000000000..447c7850a9 --- /dev/null +++ b/database/migrations/2023_04_12_135822_add_supplier_to_components.php @@ -0,0 +1,48 @@ +integer('supplier_id')->after('user_id')->nullable()->default(null); + } + }); + + Schema::table('consumables', function (Blueprint $table) { + if (!Schema::hasColumn('consumables', 'supplier_id')) { + $table->integer('supplier_id')->after('user_id')->nullable()->default(null); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('components', function (Blueprint $table) { + if (Schema::hasColumn('components', 'supplier_id')) { + $table->dropColumn('supplier_id'); + } + }); + + Schema::table('consumables', function (Blueprint $table) { + if (Schema::hasColumn('consumables', 'supplier_id')) { + $table->dropColumn('supplier_id'); + } + }); + } +} diff --git a/database/migrations/2023_04_25_085912_add_autoadd_to_customfields.php b/database/migrations/2023_04_25_085912_add_autoadd_to_customfields.php new file mode 100644 index 0000000000..918bec9c5c --- /dev/null +++ b/database/migrations/2023_04_25_085912_add_autoadd_to_customfields.php @@ -0,0 +1,34 @@ +boolean('auto_add_to_fieldsets')->nullable()->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('custom_fields', function (Blueprint $table) { + if (Schema::hasColumn('custom_fields', 'auto_add_to_fieldsets')) { + $table->dropColumn('auto_add_to_fieldsets'); + } + }); + } +} diff --git a/database/migrations/2023_04_25_181817_adds_ldap_location_to_settings_table.php b/database/migrations/2023_04_25_181817_adds_ldap_location_to_settings_table.php new file mode 100644 index 0000000000..60c0e31a67 --- /dev/null +++ b/database/migrations/2023_04_25_181817_adds_ldap_location_to_settings_table.php @@ -0,0 +1,32 @@ +string('ldap_location')->after('ldap_country')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('settings', function (Blueprint $table) { + $table->dropColumn('ldap_location'); + }); + } +} diff --git a/database/migrations/2023_04_26_160235_add_warranty_url_to_manufacturers.php b/database/migrations/2023_04_26_160235_add_warranty_url_to_manufacturers.php new file mode 100644 index 0000000000..52a655f2e4 --- /dev/null +++ b/database/migrations/2023_04_26_160235_add_warranty_url_to_manufacturers.php @@ -0,0 +1,32 @@ +string('warranty_lookup_url')->after('support_url')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('manufacturers', function (Blueprint $table) { + $table->dropColumn('warranty_lookup_url'); + }); + } +} diff --git a/database/migrations/2023_05_08_132921_increase_state_to_more_than_3.php b/database/migrations/2023_05_08_132921_increase_state_to_more_than_3.php new file mode 100644 index 0000000000..7ffc0c3860 --- /dev/null +++ b/database/migrations/2023_05_08_132921_increase_state_to_more_than_3.php @@ -0,0 +1,40 @@ +string('state', 191)->nullable()->default(null)->change(); + }); + + Schema::table('suppliers', function (Blueprint $table) { + $table->string('state', 191)->nullable()->default(null)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->string('state', 3)->nullable()->default(null)->change(); + }); + + Schema::table('suppliers', function (Blueprint $table) { + $table->string('state', 32)->nullable()->default(null)->change(); + }); + } +} diff --git a/database/migrations/2023_05_10_001836_add_google_auth_to_settings.php b/database/migrations/2023_05_10_001836_add_google_auth_to_settings.php new file mode 100644 index 0000000000..7f15e0d6e1 --- /dev/null +++ b/database/migrations/2023_05_10_001836_add_google_auth_to_settings.php @@ -0,0 +1,37 @@ +boolean('google_login')->nullable()->default(0); + $table->string('google_client_id')->nullable()->default(null); + $table->string('google_client_secret')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('settings', function (Blueprint $table) { + $table->dropColumn('google_login'); + $table->dropColumn('google_client_id'); + $table->dropColumn('google_client_secret'); + + }); + } +} diff --git a/database/migrations/2023_07_05_092237_change_settings_table_increase_saml_idp_metadata_size.php b/database/migrations/2023_07_05_092237_change_settings_table_increase_saml_idp_metadata_size.php new file mode 100644 index 0000000000..0e200e11b5 --- /dev/null +++ b/database/migrations/2023_07_05_092237_change_settings_table_increase_saml_idp_metadata_size.php @@ -0,0 +1,36 @@ +mediumText('saml_idp_metadata')->nullable()->default(null)->change(); + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('settings', function (Blueprint $table) { + $table->text('saml_idp_metadata')->nullable()->default(null)->change(); + }); + } +} diff --git a/database/migrations/2023_07_06_092507_add_phone_fax_to_locations.php b/database/migrations/2023_07_06_092507_add_phone_fax_to_locations.php new file mode 100644 index 0000000000..d6835ac295 --- /dev/null +++ b/database/migrations/2023_07_06_092507_add_phone_fax_to_locations.php @@ -0,0 +1,54 @@ +string('phone', 20)->after('zip')->nullable()->default(null); + $table->string('fax', 20)->after('zip')->nullable()->default(null); + }); + + Schema::table('companies', function (Blueprint $table) { + $table->string('phone', 20)->after('name')->nullable()->default(null); + $table->string('fax', 20)->after('name')->nullable()->default(null); + }); + + Schema::table('departments', function (Blueprint $table) { + $table->string('phone', 20)->after('name')->nullable()->default(null); + $table->string('fax', 20)->after('name')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('locations', function (Blueprint $table) { + $table->dropColumn('phone'); + $table->dropColumn('fax'); + }); + + Schema::table('companies', function (Blueprint $table) { + $table->dropColumn('phone'); + $table->dropColumn('fax'); + }); + + Schema::table('departments', function (Blueprint $table) { + $table->dropColumn('phone'); + $table->dropColumn('fax'); + }); + } +} diff --git a/database/migrations/2023_07_14_004221_add_show_in_list_view_to_custom_fields.php b/database/migrations/2023_07_14_004221_add_show_in_list_view_to_custom_fields.php new file mode 100644 index 0000000000..227a8bd6c3 --- /dev/null +++ b/database/migrations/2023_07_14_004221_add_show_in_list_view_to_custom_fields.php @@ -0,0 +1,34 @@ +boolean('show_in_listview')->nullable()->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('custom_fields', function (Blueprint $table) { + if (Schema::hasColumn('custom_fields', 'show_in_listview')) { + $table->dropColumn('show_in_listview'); + } + }); + } +} diff --git a/database/seeders/AccessorySeeder.php b/database/seeders/AccessorySeeder.php index 6c4123c08b..31f0c478d4 100644 --- a/database/seeders/AccessorySeeder.php +++ b/database/seeders/AccessorySeeder.php @@ -3,6 +3,9 @@ namespace Database\Seeders; use App\Models\Accessory; +use App\Models\Location; +use App\Models\Supplier; +use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -14,10 +17,45 @@ class AccessorySeeder extends Seeder { Accessory::truncate(); DB::table('accessories_users')->truncate(); - Accessory::factory()->count(1)->appleUsbKeyboard()->create(); - Accessory::factory()->count(1)->appleBtKeyboard()->create(); - Accessory::factory()->count(1)->appleMouse()->create(); - Accessory::factory()->count(1)->microsoftMouse()->create(); + + if (! Location::count()) { + $this->call(LocationSeeder::class); + } + + $locationIds = Location::all()->pluck('id'); + + if (! Supplier::count()) { + $this->call(SupplierSeeder::class); + } + + $supplierIds = Supplier::all()->pluck('id'); + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Accessory::factory()->appleUsbKeyboard()->create([ + 'location_id' => $locationIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); + + Accessory::factory()->appleBtKeyboard()->create([ + 'location_id' => $locationIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); + + Accessory::factory()->appleMouse()->create([ + 'location_id' => $locationIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); + + Accessory::factory()->microsoftMouse()->create([ + 'location_id' => $locationIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); + $src = public_path('/img/demo/accessories/'); $dst = 'accessories'.'/'; diff --git a/database/seeders/ActionlogSeeder.php b/database/seeders/ActionlogSeeder.php index 06eb27bdeb..28191d53b0 100644 --- a/database/seeders/ActionlogSeeder.php +++ b/database/seeders/ActionlogSeeder.php @@ -3,6 +3,9 @@ namespace Database\Seeders; use App\Models\Actionlog; +use App\Models\Asset; +use App\Models\Location; +use App\Models\User; use Illuminate\Database\Seeder; class ActionlogSeeder extends Seeder @@ -10,9 +13,30 @@ class ActionlogSeeder extends Seeder public function run() { Actionlog::truncate(); - Actionlog::factory()->count(300)->assetCheckoutToUser()->create(); - Actionlog::factory()->count(100)->assetCheckoutToLocation()->create(); - + if (! Asset::count()) { + $this->call(AssetSeeder::class); + } + + if (! Location::count()) { + $this->call(LocationSeeder::class); + } + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Actionlog::factory() + ->count(300) + ->assetCheckoutToUser() + ->create(['user_id' => $admin->id]); + + Actionlog::factory() + ->count(100) + ->assetCheckoutToLocation() + ->create(['user_id' => $admin->id]); + + Actionlog::factory() + ->count(20) + ->licenseCheckoutToUser() + ->create(['user_id' => $admin->id]); } } diff --git a/database/seeders/AssetModelSeeder.php b/database/seeders/AssetModelSeeder.php index 0652fbfb84..1fc0b28cd3 100755 --- a/database/seeders/AssetModelSeeder.php +++ b/database/seeders/AssetModelSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; use App\Models\AssetModel; +use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; @@ -13,35 +14,37 @@ class AssetModelSeeder extends Seeder { AssetModel::truncate(); + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + // Laptops - AssetModel::factory()->count(1)->mbp13Model()->create(); // 1 - AssetModel::factory()->count(1)->mbpAirModel()->create(); // 2 - AssetModel::factory()->count(1)->surfaceModel()->create(); // 3 - AssetModel::factory()->count(1)->xps13Model()->create(); // 4 - AssetModel::factory()->count(1)->spectreModel()->create(); // 5 - AssetModel::factory()->count(1)->zenbookModel()->create(); // 6 - AssetModel::factory()->count(1)->yogaModel()->create(); // 7 + AssetModel::factory()->count(1)->mbp13Model()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->mbpAirModel()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->surfaceModel()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->xps13Model()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->spectreModel()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->zenbookModel()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->yogaModel()->create(['user_id' => $admin->id]); // Desktops - AssetModel::factory()->count(1)->macproModel()->create(); // 8 - AssetModel::factory()->count(1)->lenovoI5Model()->create(); // 9 - AssetModel::factory()->count(1)->optiplexModel()->create(); // 10 + AssetModel::factory()->count(1)->macproModel()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->lenovoI5Model()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->optiplexModel()->create(['user_id' => $admin->id]); // Conference Phones - AssetModel::factory()->count(1)->polycomModel()->create(); // 11 - AssetModel::factory()->count(1)->polycomcxModel()->create(); // 12 + AssetModel::factory()->count(1)->polycomModel()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->polycomcxModel()->create(['user_id' => $admin->id]); // Tablets - AssetModel::factory()->count(1)->ipadModel()->create(); // 13 - AssetModel::factory()->count(1)->tab3Model()->create(); // 14 + AssetModel::factory()->count(1)->ipadModel()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->tab3Model()->create(['user_id' => $admin->id]); // Phones - AssetModel::factory()->count(1)->iphone11Model()->create(); // 15 - AssetModel::factory()->count(1)->iphone12Model()->create(); // 16 + AssetModel::factory()->count(1)->iphone11Model()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->iphone12Model()->create(['user_id' => $admin->id]); // Displays - AssetModel::factory()->count(1)->ultrafine()->create(); // 17 - AssetModel::factory()->count(1)->ultrasharp()->create(); // 18 + AssetModel::factory()->count(1)->ultrafine()->create(['user_id' => $admin->id]); + AssetModel::factory()->count(1)->ultrasharp()->create(['user_id' => $admin->id]); $src = public_path('/img/demo/models/'); $dst = 'models'.'/'; diff --git a/database/seeders/AssetSeeder.php b/database/seeders/AssetSeeder.php index c5ea479a34..5fdc09bdb3 100644 --- a/database/seeders/AssetSeeder.php +++ b/database/seeders/AssetSeeder.php @@ -3,6 +3,10 @@ namespace Database\Seeders; use App\Models\Asset; +use App\Models\Location; +use App\Models\Supplier; +use App\Models\User; +use Illuminate\Database\Eloquent\Factories\Sequence; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -10,40 +14,47 @@ use Illuminate\Support\Facades\Storage; class AssetSeeder extends Seeder { + private $admin; + private $locationIds; + private $supplierIds; + public function run() { Asset::truncate(); - Asset::factory()->count(1000)->laptopMbp()->create(); - Asset::factory()->count(50)->laptopMbpPending()->create(); - Asset::factory()->count(50)->laptopMbpArchived()->create(); - Asset::factory()->count(50)->laptopAir()->create(); - Asset::factory()->count(5)->laptopSurface()->create(); - Asset::factory()->count(5)->laptopXps()->create(); - Asset::factory()->count(5)->laptopSpectre()->create(); - Asset::factory()->count(5)->laptopZenbook()->create(); - Asset::factory()->count(3)->laptopYoga()->create(); - Asset::factory()->count(30)->desktopMacpro()->create(); - Asset::factory()->count(30)->desktopLenovoI5()->create(); - Asset::factory()->count(30)->desktopOptiplex()->create(); + $this->ensureLocationsSeeded(); + $this->ensureSuppliersSeeded(); - Asset::factory()->count(5)->confPolycom()->create(); - Asset::factory()->count(2)->confPolycomcx()->create(); + $this->admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + $this->locationIds = Location::all()->pluck('id'); + $this->supplierIds = Supplier::all()->pluck('id'); - Asset::factory()->count(12)->tabletIpad()->create(); - Asset::factory()->count(4)->tabletTab3()->create(); - - Asset::factory()->count(27)->phoneIphone11()->create(); - Asset::factory()->count(40)->phoneIphone12()->create(); - - Asset::factory()->count(10)->ultrafine()->create(); - Asset::factory()->count(10)->ultrasharp()->create(); + Asset::factory()->count(2000)->laptopMbp()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopMbpPending()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopMbpArchived()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopAir()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopSurface()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(5)->laptopXps()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(5)->laptopSpectre()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->laptopZenbook()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->laptopYoga()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->desktopMacpro()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->desktopLenovoI5()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->desktopOptiplex()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(50)->confPolycom()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(20)->confPolycomcx()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(30)->tabletIpad()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(10)->tabletTab3()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(27)->phoneIphone11()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(40)->phoneIphone12()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(20)->ultrafine()->state(new Sequence($this->getState()))->create(); + Asset::factory()->count(20)->ultrasharp()->state(new Sequence($this->getState()))->create(); $del_files = Storage::files('assets'); foreach ($del_files as $del_file) { // iterate files - Log::debug('Deleting: '.$del_files); + Log::debug('Deleting: ' . $del_files); try { - Storage::disk('public')->delete('assets'.'/'.$del_files); + Storage::disk('public')->delete('assets' . '/' . $del_files); } catch (\Exception $e) { Log::debug($e); } @@ -51,4 +62,27 @@ class AssetSeeder extends Seeder DB::table('checkout_requests')->truncate(); } + + private function ensureLocationsSeeded() + { + if (! Location::count()) { + $this->call(LocationSeeder::class); + } + } + + private function ensureSuppliersSeeded() + { + if (! Supplier::count()) { + $this->call(SupplierSeeder::class); + } + } + + private function getState() + { + return fn($sequence) => [ + 'rtd_location_id' => $this->locationIds->random(), + 'supplier_id' => $this->supplierIds->random(), + 'user_id' => $this->admin->id, + ]; + } } diff --git a/database/seeders/CategorySeeder.php b/database/seeders/CategorySeeder.php index 6a554fc825..da542cff9e 100755 --- a/database/seeders/CategorySeeder.php +++ b/database/seeders/CategorySeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; use App\Models\Category; +use App\Models\User; use Illuminate\Database\Seeder; class CategorySeeder extends Seeder @@ -11,20 +12,22 @@ class CategorySeeder extends Seeder { Category::truncate(); - Category::factory()->count(1)->assetLaptopCategory()->create(); // 1 - Category::factory()->count(1)->assetDesktopCategory()->create(); // 2 - Category::factory()->count(1)->assetTabletCategory()->create(); // 3 - Category::factory()->count(1)->assetMobileCategory()->create(); // 4 - Category::factory()->count(1)->assetDisplayCategory()->create(); // 5 - Category::factory()->count(1)->assetVoipCategory()->create(); // 6 - Category::factory()->count(1)->assetConferenceCategory()->create(); // 7 - Category::factory()->count(1)->accessoryKeyboardCategory()->create(); // 8 - Category::factory()->count(1)->accessoryMouseCategory()->create(); // 9 - Category::factory()->count(1)->consumablePaperCategory()->create(); // 10 - Category::factory()->count(1)->consumableInkCategory()->create(); // 11 - Category::factory()->count(1)->componentHddCategory()->create(); // 12 - Category::factory()->count(1)->componentRamCategory()->create(); // 13 - Category::factory()->count(1)->licenseGraphicsCategory()->create(); // 14 - Category::factory()->count(1)->licenseOfficeCategory()->create(); // 15 + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Category::factory()->count(1)->assetLaptopCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->assetDesktopCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->assetTabletCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->assetMobileCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->assetDisplayCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->assetVoipCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->assetConferenceCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->accessoryKeyboardCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->accessoryMouseCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->consumablePaperCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->consumableInkCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->componentHddCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->componentRamCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->licenseGraphicsCategory()->create(['user_id' => $admin->id]); + Category::factory()->count(1)->licenseOfficeCategory()->create(['user_id' => $admin->id]); } } diff --git a/database/seeders/ComponentSeeder.php b/database/seeders/ComponentSeeder.php index 46380e1682..5a80243466 100644 --- a/database/seeders/ComponentSeeder.php +++ b/database/seeders/ComponentSeeder.php @@ -2,7 +2,9 @@ namespace Database\Seeders; +use App\Models\Company; use App\Models\Component; +use App\Models\Location; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; @@ -12,9 +14,34 @@ class ComponentSeeder extends Seeder { Component::truncate(); DB::table('components_assets')->truncate(); - Component::factory()->count(1)->ramCrucial4()->create(); // 1 - Component::factory()->count(1)->ramCrucial8()->create(); // 1 - Component::factory()->count(1)->ssdCrucial120()->create(); // 1 - Component::factory()->count(1)->ssdCrucial240()->create(); // 1 + + if (! Company::count()) { + $this->call(CompanySeeder::class); + } + + $companyIds = Company::all()->pluck('id'); + + if (! Location::count()) { + $this->call(LocationSeeder::class); + } + + $locationIds = Location::all()->pluck('id'); + + Component::factory()->ramCrucial4()->create([ + 'company_id' => $companyIds->random(), + 'location_id' => $locationIds->random(), + ]); + Component::factory()->ramCrucial8()->create([ + 'company_id' => $companyIds->random(), + 'location_id' => $locationIds->random(), + ]); + Component::factory()->ssdCrucial120()->create([ + 'company_id' => $companyIds->random(), + 'location_id' => $locationIds->random(), + ]); + Component::factory()->ssdCrucial240()->create([ + 'company_id' => $companyIds->random(), + 'location_id' => $locationIds->random(), + ]); } } diff --git a/database/seeders/ConsumableSeeder.php b/database/seeders/ConsumableSeeder.php index 240741fe6d..42527e1df8 100644 --- a/database/seeders/ConsumableSeeder.php +++ b/database/seeders/ConsumableSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; use App\Models\Consumable; +use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; @@ -12,8 +13,11 @@ class ConsumableSeeder extends Seeder { Consumable::truncate(); DB::table('consumables_users')->truncate(); - Consumable::factory()->count(1)->cardstock()->create(); // 1 - Consumable::factory()->count(1)->paper()->create(); // 2 - Consumable::factory()->count(1)->ink()->create(); // 3 + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Consumable::factory()->count(1)->cardstock()->create(['user_id' => $admin->id]); + Consumable::factory()->count(1)->paper()->create(['user_id' => $admin->id]); + Consumable::factory()->count(1)->ink()->create(['user_id' => $admin->id]); } } diff --git a/database/seeders/CustomFieldSeeder.php b/database/seeders/CustomFieldSeeder.php index 8776872644..551e05f40f 100644 --- a/database/seeders/CustomFieldSeeder.php +++ b/database/seeders/CustomFieldSeeder.php @@ -38,24 +38,34 @@ class CustomFieldSeeder extends Seeder [ 'custom_field_id' => '1', 'custom_fieldset_id' => '1', + 'order' => 0, + 'required' => 0, ], [ 'custom_field_id' => '2', 'custom_fieldset_id' => '1', + 'order' => 0, + 'required' => 0, ], [ - 'custom_field_id' => '3', - 'custom_fieldset_id' => '2', + 'custom_field_id' => '3', + 'custom_fieldset_id' => '2', + 'order' => 0, + 'required' => 0, ], [ - 'custom_field_id' => '4', - 'custom_fieldset_id' => '2', + 'custom_field_id' => '4', + 'custom_fieldset_id' => '2', + 'order' => 0, + 'required' => 0, ], [ - 'custom_field_id' => '5', - 'custom_fieldset_id' => '2', + 'custom_field_id' => '5', + 'custom_fieldset_id' => '2', + 'order' => 0, + 'required' => 0, ], - ]); + ]); } } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 54fb1e088b..1429604139 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,15 +3,6 @@ namespace Database\Seeders; use App\Models\Setting; -use Database\Seeders\AccessorySeeder; -use Database\Seeders\ActionlogSeeder; -use Database\Seeders\AssetModelSeeder; -use Database\Seeders\AssetSeeder; -use Database\Seeders\CategorySeeder; -use Database\Seeders\CompanySeeder; -use Database\Seeders\ComponentSeeder; -use Database\Seeders\ConsumableSeeder; -use Database\Seeders\CustomFieldSeeder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Artisan; @@ -38,9 +29,9 @@ class DatabaseSeeder extends Seeder $this->call(CompanySeeder::class); $this->call(CategorySeeder::class); $this->call(LocationSeeder::class); + $this->call(DepartmentSeeder::class); $this->call(UserSeeder::class); $this->call(DepreciationSeeder::class); - $this->call(DepartmentSeeder::class); $this->call(ManufacturerSeeder::class); $this->call(SupplierSeeder::class); $this->call(AssetModelSeeder::class); diff --git a/database/seeders/DepartmentSeeder.php b/database/seeders/DepartmentSeeder.php index f82e355edd..7406b97afb 100644 --- a/database/seeders/DepartmentSeeder.php +++ b/database/seeders/DepartmentSeeder.php @@ -3,6 +3,8 @@ namespace Database\Seeders; use App\Models\Department; +use App\Models\Location; +use App\Models\User; use Illuminate\Database\Seeder; class DepartmentSeeder extends Seeder @@ -10,11 +12,43 @@ class DepartmentSeeder extends Seeder public function run() { Department::truncate(); - Department::factory()->count(1)->hr()->create(); // 1 - Department::factory()->count(1)->engineering()->create(); // 2 - Department::factory()->count(1)->marketing()->create(); // 3 - Department::factory()->count(1)->client()->create(); // 4 - Department::factory()->count(1)->product()->create(); // 5 - Department::factory()->count(1)->silly()->create(); // 6 + + if (! Location::count()) { + $this->call(LocationSeeder::class); + } + + $locationIds = Location::all()->pluck('id'); + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Department::factory()->count(1)->hr()->create([ + 'location_id' => $locationIds->random(), + 'user_id' => $admin->id, + ]); + + Department::factory()->count(1)->engineering()->create([ + 'location_id' => $locationIds->random(), + 'user_id' => $admin->id, + ]); + + Department::factory()->count(1)->marketing()->create([ + 'location_id' => $locationIds->random(), + 'user_id' => $admin->id, + ]); + + Department::factory()->count(1)->client()->create([ + 'location_id' => $locationIds->random(), + 'user_id' => $admin->id, + ]); + + Department::factory()->count(1)->product()->create([ + 'location_id' => $locationIds->random(), + 'user_id' => $admin->id, + ]); + + Department::factory()->count(1)->silly()->create([ + 'location_id' => $locationIds->random(), + 'user_id' => $admin->id, + ]); } } diff --git a/database/seeders/DepreciationSeeder.php b/database/seeders/DepreciationSeeder.php index 1dfebd3062..349d8aff53 100644 --- a/database/seeders/DepreciationSeeder.php +++ b/database/seeders/DepreciationSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; use App\Models\Depreciation; +use App\Models\User; use Illuminate\Database\Seeder; class DepreciationSeeder extends Seeder @@ -10,8 +11,11 @@ class DepreciationSeeder extends Seeder public function run() { Depreciation::truncate(); - Depreciation::factory()->count(1)->computer()->create(); // 1 - Depreciation::factory()->count(1)->display()->create(); // 2 - Depreciation::factory()->count(1)->mobilePhones()->create(); // 3 + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Depreciation::factory()->count(1)->computer()->create(['user_id' => $admin->id]); + Depreciation::factory()->count(1)->display()->create(['user_id' => $admin->id]); + Depreciation::factory()->count(1)->mobilePhones()->create(['user_id' => $admin->id]); } } diff --git a/database/seeders/LicenseSeeder.php b/database/seeders/LicenseSeeder.php index 843eeb42f1..4868dd41e1 100644 --- a/database/seeders/LicenseSeeder.php +++ b/database/seeders/LicenseSeeder.php @@ -2,8 +2,11 @@ namespace Database\Seeders; +use App\Models\Category; use App\Models\License; use App\Models\LicenseSeat; +use App\Models\Supplier; +use App\Models\User; use Illuminate\Database\Seeder; class LicenseSeeder extends Seeder @@ -12,9 +15,43 @@ class LicenseSeeder extends Seeder { License::truncate(); LicenseSeat::truncate(); - License::factory()->count(1)->photoshop()->create(); - License::factory()->count(1)->acrobat()->create(); - License::factory()->count(1)->indesign()->create(); - License::factory()->count(1)->office()->create(); + + if (! Category::count()) { + $this->call(CategorySeeder::class); + } + + $categoryIds = Category::all()->pluck('id'); + + if (! Supplier::count()) { + $this->call(SupplierSeeder::class); + } + + $supplierIds = Supplier::all()->pluck('id'); + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + License::factory()->count(1)->photoshop()->create([ + 'category_id' => $categoryIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); + + License::factory()->count(1)->acrobat()->create([ + 'category_id' => $categoryIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); + + License::factory()->count(1)->indesign()->create([ + 'category_id' => $categoryIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); + + License::factory()->count(1)->office()->create([ + 'category_id' => $categoryIds->random(), + 'supplier_id' => $supplierIds->random(), + 'user_id' => $admin->id, + ]); } } diff --git a/database/seeders/ManufacturerSeeder.php b/database/seeders/ManufacturerSeeder.php index fc6a3c34e9..cbd70f4c3d 100644 --- a/database/seeders/ManufacturerSeeder.php +++ b/database/seeders/ManufacturerSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; use App\Models\Manufacturer; +use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; @@ -12,17 +13,20 @@ class ManufacturerSeeder extends Seeder public function run() { Manufacturer::truncate(); - Manufacturer::factory()->count(1)->apple()->create(); // 1 - Manufacturer::factory()->count(1)->microsoft()->create(); // 2 - Manufacturer::factory()->count(1)->dell()->create(); // 3 - Manufacturer::factory()->count(1)->asus()->create(); // 4 - Manufacturer::factory()->count(1)->hp()->create(); // 5 - Manufacturer::factory()->count(1)->lenovo()->create(); // 6 - Manufacturer::factory()->count(1)->lg()->create(); // 7 - Manufacturer::factory()->count(1)->polycom()->create(); // 8 - Manufacturer::factory()->count(1)->adobe()->create(); // 9 - Manufacturer::factory()->count(1)->avery()->create(); // 10 - Manufacturer::factory()->count(1)->crucial()->create(); // 10 + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Manufacturer::factory()->count(1)->apple()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->microsoft()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->dell()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->asus()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->hp()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->lenovo()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->lg()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->polycom()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->adobe()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->avery()->create(['user_id' => $admin->id]); + Manufacturer::factory()->count(1)->crucial()->create(['user_id' => $admin->id]); $src = public_path('/img/demo/manufacturers/'); $dst = 'manufacturers'.'/'; diff --git a/database/seeders/StatuslabelSeeder.php b/database/seeders/StatuslabelSeeder.php index 94cd2140ae..fbc6a9fb66 100755 --- a/database/seeders/StatuslabelSeeder.php +++ b/database/seeders/StatuslabelSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; use App\Models\Statuslabel; +use App\Models\User; use Illuminate\Database\Seeder; class StatuslabelSeeder extends Seeder @@ -10,12 +11,27 @@ class StatuslabelSeeder extends Seeder public function run() { Statuslabel::truncate(); - Statuslabel::factory()->rtd()->create(['name' => 'Ready to Deploy']); - Statuslabel::factory()->pending()->create(['name' => 'Pending']); - Statuslabel::factory()->archived()->create(['name' => 'Archived']); - Statuslabel::factory()->outForDiagnostics()->create(); - Statuslabel::factory()->outForRepair()->create(); - Statuslabel::factory()->broken()->create(); - Statuslabel::factory()->lost()->create(); + + $admin = User::where('permissions->superuser', '1')->first() ?? User::factory()->firstAdmin()->create(); + + Statuslabel::factory()->rtd()->create([ + 'name' => 'Ready to Deploy', + 'user_id' => $admin->id, + ]); + + Statuslabel::factory()->pending()->create([ + 'name' => 'Pending', + 'user_id' => $admin->id, + ]); + + Statuslabel::factory()->archived()->create([ + 'name' => 'Archived', + 'user_id' => $admin->id, + ]); + + Statuslabel::factory()->outForDiagnostics()->create(['user_id' => $admin->id]); + Statuslabel::factory()->outForRepair()->create(['user_id' => $admin->id]); + Statuslabel::factory()->broken()->create(['user_id' => $admin->id]); + Statuslabel::factory()->lost()->create(['user_id' => $admin->id]); } } diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index 04f46e29b4..9c237b169e 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -2,7 +2,10 @@ namespace Database\Seeders; +use App\Models\Company; +use App\Models\Department; use App\Models\User; +use Illuminate\Database\Eloquent\Factories\Sequence; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Log; @@ -17,11 +20,60 @@ class UserSeeder extends Seeder public function run() { User::truncate(); - User::factory()->count(1)->firstAdmin()->create(); - User::factory()->count(1)->snipeAdmin()->create(); - User::factory()->count(3)->superuser()->create(); - User::factory()->count(3)->admin()->create(); - User::factory()->count(50)->viewAssets()->create(); + + if (! Company::count()) { + $this->call(CompanySeeder::class); + } + + $companyIds = Company::all()->pluck('id'); + + if (! Department::count()) { + $this->call(DepartmentSeeder::class); + } + + $departmentIds = Department::all()->pluck('id'); + + User::factory()->count(1)->firstAdmin() + ->state(new Sequence(fn($sequence) => [ + 'company_id' => $companyIds->random(), + 'department_id' => $departmentIds->random(), + ])) + ->create(); + + User::factory()->count(1)->snipeAdmin() + ->state(new Sequence(fn($sequence) => [ + 'company_id' => $companyIds->random(), + 'department_id' => $departmentIds->random(), + ])) + ->create(); + + User::factory()->count(1)->testAdmin() + ->state(new Sequence(fn($sequence) => [ + 'company_id' => $companyIds->random(), + 'department_id' => $departmentIds->random(), + ])) + ->create(); + + User::factory()->count(3)->superuser() + ->state(new Sequence(fn($sequence) => [ + 'company_id' => $companyIds->random(), + 'department_id' => $departmentIds->random(), + ])) + ->create(); + + User::factory()->count(3)->admin() + ->state(new Sequence(fn($sequence) => [ + 'company_id' => $companyIds->random(), + 'department_id' => $departmentIds->random(), + ])) + ->create(); + + User::factory()->count(50)->viewAssets() + ->state(new Sequence(fn($sequence) => [ + 'company_id' => $companyIds->random(), + 'department_id' => $departmentIds->random(), + ])) + ->create(); $src = public_path('/img/demo/avatars/'); $dst = 'avatars'.'/'; diff --git a/package-lock.json b/package-lock.json index b03e7eb62c..a27782777e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1329,9 +1329,9 @@ "dev": true }, "@fortawesome/fontawesome-free": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz", - "integrity": "sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A==" + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz", + "integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==" }, "@jridgewell/gen-mapping": { "version": "0.1.1", @@ -1346,26 +1346,43 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" }, "@jridgewell/set-array": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } }, "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "@jridgewell/trace-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -1405,6 +1422,21 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==" }, + "@swc/helpers": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.17.tgz", + "integrity": "sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==", + "requires": { + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + } + } + }, "@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -1533,9 +1565,9 @@ } }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -1551,9 +1583,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" }, "@types/express": { "version": "4.17.13", @@ -1852,133 +1884,133 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -2033,14 +2065,14 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==" }, "acorn-node": { "version": "1.8.2", @@ -2155,12 +2187,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "optional": true - }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -2200,11 +2226,6 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=" - }, "array-union": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", @@ -2252,58 +2273,6 @@ } } }, - "ast-transform": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", - "integrity": "sha1-dJRAWIh9goPhidlUYAlHvJj+AGI=", - "requires": { - "escodegen": "~1.2.0", - "esprima": "~1.0.4", - "through": "~2.3.4" - }, - "dependencies": { - "escodegen": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz", - "integrity": "sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E=", - "requires": { - "esprima": "~1.0.4", - "estraverse": "~1.5.0", - "esutils": "~1.0.0", - "source-map": "~0.1.30" - } - }, - "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" - }, - "estraverse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", - "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=" - }, - "esutils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", - "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=" - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "ast-types": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", - "integrity": "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk=" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2973,6 +2942,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -3157,11 +3127,11 @@ } }, "bootstrap-datepicker": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.9.0.tgz", - "integrity": "sha1-5L/OP8zhlnh2sh3Ggz7FmUqu0JA=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz", + "integrity": "sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg==", "requires": { - "jquery": ">=1.7.1 <4.0.0" + "jquery": ">=3.4.0 <4.0.0" } }, "bootstrap-daterangepicker": { @@ -3184,9 +3154,9 @@ "integrity": "sha1-EQPWvADPv6jPyaJZmrUYxVZD2j8=" }, "bootstrap-table": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.20.2.tgz", - "integrity": "sha512-6j9zfjjK6VZyJj8KsH+LnGczqglmMvMctGAoEAKDvrQ92ExQbA3mHGYPQr9iPrzoyeGL8+6Dyx6LqJbWmWmBoA==" + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/bootstrap-table/-/bootstrap-table-1.22.0.tgz", + "integrity": "sha512-N1MLgPcIOa9cfwr7CaoLOekKJ9nHq/z8lk6LsC3mLUZq77VeMC/vTh+EqN7+iT8JADmoAsX7RqQbYfVxF9ZCig==" }, "brace-expansion": { "version": "1.1.11", @@ -3205,26 +3175,15 @@ "fill-range": "^7.0.1" } }, - "brfs": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz", - "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==", - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^3.0.2", - "through2": "^2.0.0" - } - }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, "brotli": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", - "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", "requires": { "base64-js": "^1.1.2" } @@ -3396,31 +3355,6 @@ "safe-buffer": "^5.1.2" } }, - "browserify-optional": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz", - "integrity": "sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk=", - "requires": { - "ast-transform": "0.0.0", - "ast-types": "^0.7.0", - "browser-resolve": "^1.8.1" - }, - "dependencies": { - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "requires": { - "resolve": "1.1.7" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - } - } - }, "browserify-rsa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", @@ -3505,11 +3439,6 @@ "ieee754": "^1.1.4" } }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -3626,15 +3555,15 @@ }, "dependencies": { "core-js": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.5.tgz", - "integrity": "sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.1.tgz", + "integrity": "sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==", "optional": true }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "optional": true } } @@ -3950,46 +3879,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", @@ -4048,6 +3937,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -4075,7 +3965,8 @@ "core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true }, "core-js-compat": { "version": "3.23.2", @@ -4406,15 +4297,6 @@ "css-tree": "^1.1.2" } }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "dash-ast": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", @@ -4468,23 +4350,127 @@ } }, "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + } } }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -4659,9 +4645,9 @@ } }, "dompurify": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.7.tgz", - "integrity": "sha512-fsVZLywBd3awZIG3qU4JEdw7DCb0uUCajTfWRrLhsgKjTBd5CIIluPoAkNfco05GuNYQGj4/+bQIhlq96eT9eQ==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.5.tgz", + "integrity": "sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==", "optional": true }, "domutils": { @@ -4768,9 +4754,9 @@ } }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -4827,10 +4813,57 @@ "string.prototype.trimstart": "^1.0.3" } }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "dependencies": { + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" }, "es-to-primitive": { "version": "1.2.1", @@ -4842,71 +4875,6 @@ "is-symbol": "^1.0.2" } }, - "es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - }, - "dependencies": { - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - } - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -4924,26 +4892,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - } - } - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -4953,11 +4901,6 @@ "estraverse": "^4.1.1" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -4978,15 +4921,11 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, - "estree-is-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", - "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==" - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=" + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "dev": true }, "etag": { "version": "1.8.1", @@ -4999,15 +4938,6 @@ "resolved": "https://registry.npmjs.org/eve-raphael/-/eve-raphael-0.5.0.tgz", "integrity": "sha1-F8dUt5K+7z+maE15z1pHxjxM2jA=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -5106,21 +5036,6 @@ } } }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "requires": { - "type": "^2.5.0" - }, - "dependencies": { - "type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" - } - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5143,11 +5058,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", @@ -5313,42 +5223,27 @@ "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" }, "fontkit": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.8.1.tgz", - "integrity": "sha512-BsNCjDoYRxmNWFdAuK1y9bQt+igIxGtTC9u/jSFjR9MKhmI00rP1fwSvERt+5ddE82544l0XH5mzXozQVUy2Tw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz", + "integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==", "requires": { - "babel-runtime": "^6.26.0", - "brfs": "^2.0.0", - "brotli": "^1.2.0", - "browserify-optional": "^1.0.1", - "clone": "^1.0.4", - "deep-equal": "^1.0.0", + "@swc/helpers": "^0.3.13", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "deep-equal": "^2.0.5", "dfa": "^1.2.0", - "restructure": "^0.5.3", - "tiny-inflate": "^1.0.2", - "unicode-properties": "^1.2.2", - "unicode-trie": "^0.3.0" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, - "unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - } + "restructure": "^2.0.1", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.3.1", + "unicode-trie": "^2.0.0" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" } }, "foreach": { @@ -14872,6 +14767,11 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -14959,6 +14859,31 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + }, + "dependencies": { + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } + } + }, "got": { "version": "11.8.5", "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", @@ -15011,17 +14936,45 @@ "ansi-regex": "^2.0.0" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } + } + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -15316,11 +15269,6 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "icheck": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz", - "integrity": "sha1-BtCNo9R65EjBU7Jjm4bprX/fcSg=" - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -15513,6 +15461,33 @@ } } }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "dependencies": { + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } + } + }, "interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -15552,12 +15527,64 @@ "call-bind": "^1.0.0" } }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "dependencies": { + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -15567,6 +15594,15 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -15620,6 +15656,11 @@ "is-extglob": "^2.1.1" } }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -15630,6 +15671,14 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -15654,12 +15703,33 @@ "has-symbols": "^1.0.1" } }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -15680,6 +15750,20 @@ "has-symbols": "^1.0.1" } }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", @@ -15855,9 +15939,9 @@ }, "dependencies": { "core-js": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.5.tgz", - "integrity": "sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.1.tgz", + "integrity": "sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==", "optional": true } } @@ -16276,15 +16360,6 @@ } } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, "lilconfig": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", @@ -16292,19 +16367,18 @@ "dev": true }, "linebreak": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.0.2.tgz", - "integrity": "sha512-bJwSRsJeAmaZYnkcwl5sCQNfSDAhBuXxb6L27tb+qkBRtUQSSTUa5bcgCPD6hFEkRNlpWHfK7nFMmcANU7ZP1w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", "requires": { "base64-js": "0.0.8", - "brfs": "^2.0.2", - "unicode-trie": "^1.0.0" + "unicode-trie": "^2.0.0" }, "dependencies": { "base64-js": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", - "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=" + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==" } } }, @@ -16411,14 +16485,6 @@ "yallist": "^4.0.0" } }, - "magic-string": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", - "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", - "requires": { - "sourcemap-codec": "^1.4.1" - } - }, "md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -16756,11 +16822,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, "no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -17081,19 +17142,6 @@ "is-wsl": "^2.2.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -17329,7 +17377,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "optional": true }, "picocolors": { @@ -18002,11 +18050,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, "prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", @@ -18129,16 +18172,6 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - } - }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -18289,7 +18322,8 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", + "dev": true }, "regenerator-transform": { "version": "0.10.1", @@ -18303,12 +18337,13 @@ } }, "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" } }, "regexpu-core": { @@ -18421,12 +18456,9 @@ } }, "restructure": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/restructure/-/restructure-0.5.4.tgz", - "integrity": "sha1-9U591WNZD7NP1r9Vh2EJrsyyjeg=", - "requires": { - "browserify-optional": "^1.0.0" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", + "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==" }, "retry": { "version": "0.13.1", @@ -18442,7 +18474,7 @@ "rgbcolor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", - "integrity": "sha1-1lBezbMEplldom+ktDMHMGd1lF0=", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", "optional": true }, "rimraf": { @@ -18496,27 +18528,6 @@ "ajv-keywords": "^3.5.2" } }, - "scope-analyzer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.2.tgz", - "integrity": "sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==", - "requires": { - "array-from": "^2.1.1", - "dash-ast": "^2.0.1", - "es6-map": "^0.1.5", - "es6-set": "^0.1.5", - "es6-symbol": "^3.1.1", - "estree-is-function": "^1.0.0", - "get-assigned-identifiers": "^1.1.0" - }, - "dependencies": { - "dash-ast": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", - "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==" - } - } - }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -18576,6 +18587,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -18675,11 +18687,6 @@ "kind-of": "^6.0.2" } }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" - }, "shasum-object": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", @@ -18723,7 +18730,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -18801,11 +18807,6 @@ } } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, "spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -18913,72 +18914,6 @@ "integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==", "optional": true }, - "static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", - "requires": { - "escodegen": "^1.11.1" - } - }, - "static-module": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz", - "integrity": "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==", - "requires": { - "acorn-node": "^1.3.0", - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "^1.11.1", - "has": "^1.0.1", - "magic-string": "0.25.1", - "merge-source-map": "1.0.4", - "object-inspect": "^1.6.0", - "readable-stream": "~2.3.3", - "scope-analyzer": "^2.0.1", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.5", - "through2": "~2.0.3" - }, - "dependencies": { - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "requires": { - "source-map": "^0.5.6" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -18991,6 +18926,14 @@ "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==", "dev": true }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "requires": { + "internal-slot": "^1.0.4" + } + }, "stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -19261,9 +19204,9 @@ } }, "tableexport.jquery.plugin": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/tableexport.jquery.plugin/-/tableexport.jquery.plugin-1.26.0.tgz", - "integrity": "sha512-PMad8npkQviiZG/J0kV6zphmcpNwMglxbxZjGR/7DtcKOTfiOzpcQQFIjHVqpnnKgpHHzOfV6GB9km6EkUAt4A==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/tableexport.jquery.plugin/-/tableexport.jquery.plugin-1.27.0.tgz", + "integrity": "sha512-aJ6XBeqtPqV8P2v8vvKNa54SGp9R4V4CIwaIhA1WTkflvoYaWqCyTmf/O6WH5kKBvDpva+RhLnYwsPHEPwdSsg==", "requires": { "file-saver": ">=2.0.1", "html2canvas": ">=1.0.0", @@ -19282,6 +19225,7 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -19291,12 +19235,14 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -19304,6 +19250,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz", "integrity": "sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ==", + "dev": true, "requires": { "jest-worker": "^27.4.1", "schema-utils": "^3.1.1", @@ -19315,12 +19262,14 @@ "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -19330,7 +19279,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -19454,19 +19404,6 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -19522,28 +19459,12 @@ "dev": true }, "unicode-properties": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz", - "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", "requires": { "base64-js": "^1.3.0", "unicode-trie": "^2.0.0" - }, - "dependencies": { - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, - "unicode-trie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", - "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - } } }, "unicode-property-aliases-ecmascript": { @@ -19553,9 +19474,9 @@ "dev": true }, "unicode-trie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-1.0.0.tgz", - "integrity": "sha512-v5raLKsobbFbWLMoX9+bChts/VhPPj3XpkNr/HbqkirXR1DPk8eo9IYKyvk0MQZFkaoRsFj2Rmaqgi2rfAZYtA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", "requires": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" @@ -19564,7 +19485,7 @@ "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" } } }, @@ -19758,21 +19679,21 @@ } }, "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -19781,33 +19702,88 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "terser": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", + "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + } + }, "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -20117,6 +20093,29 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, "which-typed-array": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", @@ -20147,11 +20146,6 @@ "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -20224,11 +20218,11 @@ } }, "xmldoc": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", - "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz", + "integrity": "sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==", "requires": { - "sax": "^1.2.1" + "sax": "^1.2.4" } }, "xtend": { diff --git a/package.json b/package.json index b3b5f99999..1c97f0fadc 100644 --- a/package.json +++ b/package.json @@ -24,22 +24,21 @@ "vue-template-compiler": "2.4.4" }, "dependencies": { - "@fortawesome/fontawesome-free": "^6.2.1", - "acorn": "^8.8.0", - "acorn-import-assertions": "^1.8.0", + "@fortawesome/fontawesome-free": "^6.4.0", + "acorn": "^8.9.0", + "acorn-import-assertions": "^1.9.0", "admin-lte": "^2.4.18", "ajv": "^6.12.6", "alpinejs": "^3.10.5", "blueimp-file-upload": "^9.34.0", "bootstrap": "^3.4.1", "bootstrap-colorpicker": "^2.5.3", - "bootstrap-datepicker": "^1.9.0", + "bootstrap-datepicker": "^1.10.0", "bootstrap-less": "^3.3.8", - "bootstrap-table": "1.20.2", + "bootstrap-table": "1.22.0", "chart.js": "^2.9.4", "css-loader": "^4.0.0", "ekko-lightbox": "^5.1.1", - "icheck": "^1.0.2", "imagemin": "^8.0.1", "jquery-form-validator": "^2.3.79", "jquery-slimscroll": "^1.3.8", @@ -53,9 +52,9 @@ "papaparse": "^4.3.3", "select2": "4.0.13", "sheetjs": "^2.0.0", - "tableexport.jquery.plugin": "1.26.0", + "tableexport.jquery.plugin": "1.27.0", "tether": "^1.4.0", "vue-resource": "^1.5.2", - "webpack": "^5.74.0" + "webpack": "^5.87.0" } } diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000000..d5edda6884 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,12 @@ +includes: + - ./vendor/nunomaduro/larastan/extension.neon + +parameters: + paths: + - app + - config + - database/migrations + - resources/lang + - resources/views + + level: 4 diff --git a/phpstan.neon.example b/phpstan.neon.example new file mode 100644 index 0000000000..a9bc1a30de --- /dev/null +++ b/phpstan.neon.example @@ -0,0 +1,8 @@ +# Copy this file to "phpstan.neon" and update the parameters section as needed + +includes: + - phpstan.neon.dist + +parameters: + # https://phpstan.org/user-guide/output-format#opening-file-in-an-editor + editorUrl: 'phpstorm://open?file=%%file%%&line=%%line%%' diff --git a/phpunit.xml b/phpunit.xml index bf3fd2dc33..4ee53b57b3 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,22 +1,36 @@ - + app/ - - ./tests/ + + ./tests/Unit + + + ./tests/Feature - + + - + - - + diff --git a/psalm.xml b/psalm.xml new file mode 100644 index 0000000000..4c8b877262 --- /dev/null +++ b/psalm.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/public/css/build/app.css b/public/css/build/app.css index 13b44a11ea..c8fc025597 100644 Binary files a/public/css/build/app.css and b/public/css/build/app.css differ diff --git a/public/css/build/overrides.css b/public/css/build/overrides.css index ec9e3fb85e..5111695ac7 100644 Binary files a/public/css/build/overrides.css and b/public/css/build/overrides.css differ diff --git a/public/css/dist/all.css b/public/css/dist/all.css index 59e1dd4d0e..3313bdac45 100644 Binary files a/public/css/dist/all.css and b/public/css/dist/all.css differ diff --git a/public/css/dist/bootstrap-table.css b/public/css/dist/bootstrap-table.css index b95d3d2b77..c8749ad4b4 100644 Binary files a/public/css/dist/bootstrap-table.css and b/public/css/dist/bootstrap-table.css differ diff --git a/public/css/dist/skins/skin-black-dark.css b/public/css/dist/skins/skin-black-dark.css index 5ba6c5eadd..3e17735603 100644 Binary files a/public/css/dist/skins/skin-black-dark.css and b/public/css/dist/skins/skin-black-dark.css differ diff --git a/public/css/dist/skins/skin-black-dark.min.css b/public/css/dist/skins/skin-black-dark.min.css index 5ba6c5eadd..3e17735603 100644 Binary files a/public/css/dist/skins/skin-black-dark.min.css and b/public/css/dist/skins/skin-black-dark.min.css differ diff --git a/public/css/dist/skins/skin-blue-dark.css b/public/css/dist/skins/skin-blue-dark.css index a393ee578c..c4f2672931 100644 Binary files a/public/css/dist/skins/skin-blue-dark.css and b/public/css/dist/skins/skin-blue-dark.css differ diff --git a/public/css/dist/skins/skin-blue-dark.min.css b/public/css/dist/skins/skin-blue-dark.min.css index a393ee578c..c4f2672931 100644 Binary files a/public/css/dist/skins/skin-blue-dark.min.css and b/public/css/dist/skins/skin-blue-dark.min.css differ diff --git a/public/css/dist/skins/skin-contrast.css b/public/css/dist/skins/skin-contrast.css index b5d7fc4e9b..50dfc577e2 100644 Binary files a/public/css/dist/skins/skin-contrast.css and b/public/css/dist/skins/skin-contrast.css differ diff --git a/public/css/dist/skins/skin-contrast.min.css b/public/css/dist/skins/skin-contrast.min.css index b5d7fc4e9b..50dfc577e2 100644 Binary files a/public/css/dist/skins/skin-contrast.min.css and b/public/css/dist/skins/skin-contrast.min.css differ diff --git a/public/css/dist/skins/skin-green-dark.css b/public/css/dist/skins/skin-green-dark.css index 3fe0a606d3..8e5430e5cd 100644 Binary files a/public/css/dist/skins/skin-green-dark.css and b/public/css/dist/skins/skin-green-dark.css differ diff --git a/public/css/dist/skins/skin-green-dark.min.css b/public/css/dist/skins/skin-green-dark.min.css index 3fe0a606d3..8e5430e5cd 100644 Binary files a/public/css/dist/skins/skin-green-dark.min.css and b/public/css/dist/skins/skin-green-dark.min.css differ diff --git a/public/css/dist/skins/skin-orange-dark.css b/public/css/dist/skins/skin-orange-dark.css index fe7af4f628..1ec2c0701a 100644 Binary files a/public/css/dist/skins/skin-orange-dark.css and b/public/css/dist/skins/skin-orange-dark.css differ diff --git a/public/css/dist/skins/skin-orange-dark.min.css b/public/css/dist/skins/skin-orange-dark.min.css index fe7af4f628..1ec2c0701a 100644 Binary files a/public/css/dist/skins/skin-orange-dark.min.css and b/public/css/dist/skins/skin-orange-dark.min.css differ diff --git a/public/css/dist/skins/skin-purple-dark.css b/public/css/dist/skins/skin-purple-dark.css index e1bd8edb4a..cec9819d7d 100644 Binary files a/public/css/dist/skins/skin-purple-dark.css and b/public/css/dist/skins/skin-purple-dark.css differ diff --git a/public/css/dist/skins/skin-purple-dark.min.css b/public/css/dist/skins/skin-purple-dark.min.css index e1bd8edb4a..cec9819d7d 100644 Binary files a/public/css/dist/skins/skin-purple-dark.min.css and b/public/css/dist/skins/skin-purple-dark.min.css differ diff --git a/public/css/dist/skins/skin-red-dark.css b/public/css/dist/skins/skin-red-dark.css index cbb5b07d14..17d495cbbb 100644 Binary files a/public/css/dist/skins/skin-red-dark.css and b/public/css/dist/skins/skin-red-dark.css differ diff --git a/public/css/dist/skins/skin-red-dark.min.css b/public/css/dist/skins/skin-red-dark.min.css index cbb5b07d14..17d495cbbb 100644 Binary files a/public/css/dist/skins/skin-red-dark.min.css and b/public/css/dist/skins/skin-red-dark.min.css differ diff --git a/public/css/dist/skins/skin-yellow-dark.css b/public/css/dist/skins/skin-yellow-dark.css index 5691df2194..09babaa6ab 100644 Binary files a/public/css/dist/skins/skin-yellow-dark.css and b/public/css/dist/skins/skin-yellow-dark.css differ diff --git a/public/css/dist/skins/skin-yellow-dark.min.css b/public/css/dist/skins/skin-yellow-dark.min.css index 5691df2194..09babaa6ab 100644 Binary files a/public/css/dist/skins/skin-yellow-dark.min.css and b/public/css/dist/skins/skin-yellow-dark.min.css differ diff --git a/public/css/webfonts/fa-brands-400.ttf b/public/css/webfonts/fa-brands-400.ttf index 502f3621e7..774d51ac4b 100644 Binary files a/public/css/webfonts/fa-brands-400.ttf and b/public/css/webfonts/fa-brands-400.ttf differ diff --git a/public/css/webfonts/fa-brands-400.woff2 b/public/css/webfonts/fa-brands-400.woff2 index d801b51f66..71e3185268 100644 Binary files a/public/css/webfonts/fa-brands-400.woff2 and b/public/css/webfonts/fa-brands-400.woff2 differ diff --git a/public/css/webfonts/fa-regular-400.ttf b/public/css/webfonts/fa-regular-400.ttf index e0abe2710f..8a9d6344d1 100644 Binary files a/public/css/webfonts/fa-regular-400.ttf and b/public/css/webfonts/fa-regular-400.ttf differ diff --git a/public/css/webfonts/fa-regular-400.woff2 b/public/css/webfonts/fa-regular-400.woff2 index d736e4b24c..7f021680b9 100644 Binary files a/public/css/webfonts/fa-regular-400.woff2 and b/public/css/webfonts/fa-regular-400.woff2 differ diff --git a/public/css/webfonts/fa-solid-900.ttf b/public/css/webfonts/fa-solid-900.ttf index 13c9489771..993dbe1f95 100644 Binary files a/public/css/webfonts/fa-solid-900.ttf and b/public/css/webfonts/fa-solid-900.ttf differ diff --git a/public/css/webfonts/fa-solid-900.woff2 b/public/css/webfonts/fa-solid-900.woff2 index 3516fdbe33..5c16cd3e8a 100644 Binary files a/public/css/webfonts/fa-solid-900.woff2 and b/public/css/webfonts/fa-solid-900.woff2 differ diff --git a/public/css/webfonts/fa-v4compatibility.ttf b/public/css/webfonts/fa-v4compatibility.ttf index dc2981941d..ab6ae22482 100644 Binary files a/public/css/webfonts/fa-v4compatibility.ttf and b/public/css/webfonts/fa-v4compatibility.ttf differ diff --git a/public/css/webfonts/fa-v4compatibility.woff2 b/public/css/webfonts/fa-v4compatibility.woff2 index 28d46b15ac..9027e38bcd 100644 Binary files a/public/css/webfonts/fa-v4compatibility.woff2 and b/public/css/webfonts/fa-v4compatibility.woff2 differ diff --git a/public/img/demo/manufacturers/dellicon.png b/public/img/demo/manufacturers/dellicon.png new file mode 100644 index 0000000000..899de3ccab Binary files /dev/null and b/public/img/demo/manufacturers/dellicon.png differ diff --git a/public/img/demo/manufacturers/lenovoicon.png b/public/img/demo/manufacturers/lenovoicon.png new file mode 100644 index 0000000000..b8f7967bf8 Binary files /dev/null and b/public/img/demo/manufacturers/lenovoicon.png differ diff --git a/public/img/snipe-logo-bug.png b/public/img/snipe-logo-bug.png new file mode 100644 index 0000000000..423a5b7490 Binary files /dev/null and b/public/img/snipe-logo-bug.png differ diff --git a/public/js/build/app.js b/public/js/build/app.js index 5c1c0197f5..cfbed799e6 100644 Binary files a/public/js/build/app.js and b/public/js/build/app.js differ diff --git a/public/js/build/vendor.js b/public/js/build/vendor.js index b5ee42d9f6..9c591006f2 100644 Binary files a/public/js/build/vendor.js and b/public/js/build/vendor.js differ diff --git a/public/js/dist/all.js b/public/js/dist/all.js index 65f596fac2..4d5e9ac818 100644 Binary files a/public/js/dist/all.js and b/public/js/dist/all.js differ diff --git a/public/js/dist/bootstrap-table.js b/public/js/dist/bootstrap-table.js index 0fafbbff9b..53d6e2d52d 100644 Binary files a/public/js/dist/bootstrap-table.js and b/public/js/dist/bootstrap-table.js differ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 293f8dc3ae..f9faf4e818 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,54 +1,52 @@ { - "/js/build/app.js": "/js/build/app.js?id=f05cc05b9000ba73e1949bcf137d4301", + "/js/build/app.js": "/js/build/app.js?id=82ddaa718cced6fb0be6e8db6f16a0c0", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374", - "/css/build/overrides.css": "/css/build/overrides.css?id=0465141b9ecb0662ba6790c1460f391f", - "/css/build/app.css": "/css/build/app.css?id=c3a896cab26e2093f8be24336b7db1b9", + "/css/build/overrides.css": "/css/build/overrides.css?id=5166569ede5a36802eadeea982686ca6", + "/css/build/app.css": "/css/build/app.css?id=b612c48e78fece2e1e8042ae24cc5f1e", "/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=dc383f8560a8d4adb51d44fb4043e03b", "/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=6f0563e726c2fe4fab4026daaa5bfdf2", - "/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=f343f659ca1d45534d2c2c3cc30fb619", - "/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=57e634d63101d3613f4c73aaa2e3f50a", - "/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=5120ce6a4b70d11bbc84a5125aa31949", + "/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=e6e53eef152bba01a4c666a4d8b01117", + "/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=07273f6ca3c698a39e8fc2075af4fa07", + "/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=c1f33574ecb9d3e69d9b8fe5bd68e101", "/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=7b315b9612b8fde8f9c5b0ddb6bba690", - "/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=713b1205aa2d7c9db282f8cd5754c0e4", + "/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=7d92dea45d94be7e1d4e427c728d335d", "/css/dist/skins/skin-purple.css": "/css/dist/skins/skin-purple.css?id=6fe68325d5356197672c27bc77cedcb4", - "/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=6ea1eecb7f939256c373c92f58749e72", - "/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=1c0f59079342d1a10099bf41d2e46f59", + "/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=8ca888bbc050d9680cbb65021382acba", + "/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=bdfc704731682c67645a2248b0b8d2d7", "/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=76482123f6c70e866d6b971ba91de7bb", - "/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=c0d21166315b7c2cdd4819fa4a5e4d1e", + "/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=e36e83c2aa3c3afdbb8ebe2c0309e91d", "/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=8e538625ebd4b8096e150d1aa483547b", + "/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da", "/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898", - "/css/dist/all.css": "/css/dist/all.css?id=ef030b613d45620b907cf0184a14e868", - "/css/blue.png": "/css/blue.png?id=e83a6c29e04fe851f2122815b2e4b150", - "/css/blue@2x.png": "/css/blue@2x.png?id=51135dd4d24f88f5de0b2414bd51dac5", + "/css/dist/all.css": "/css/dist/all.css?id=ae5d0ce9886bbe4ad4b021c6be19ec36", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", - "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0b834d6c0ecc5bf275a83414eb38efd4", - "/css/webfonts/fa-brands-400.woff2": "/css/webfonts/fa-brands-400.woff2?id=a46924ee2a2a7702ef7fe7ead62fca18", - "/css/webfonts/fa-regular-400.ttf": "/css/webfonts/fa-regular-400.ttf?id=93d1ca4fec25c46c9ac67b07058b3f72", - "/css/webfonts/fa-regular-400.woff2": "/css/webfonts/fa-regular-400.woff2?id=d8373194363409c201ee33fcd48ba574", - "/css/webfonts/fa-solid-900.ttf": "/css/webfonts/fa-solid-900.ttf?id=a7d60e1f645d1b80e0879b2c8e72ed06", - "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=3e1cccc95e0dadb2168d67c2f0f23bf3", - "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=ee335846f3552dc6af2ef7c8cafae1dc", - "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=1ad361f755ce9c96dadb8da2d7318975", - "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=ee4896df8b8f008ce73a9a0c2549aefd", - "/js/build/vendor.js": "/js/build/vendor.js?id=47ecbb4bb3b0e02315f391caadbdf971", - "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=14d9a2affec7b066d20fcba2e6e67ad2", - "/js/dist/all.js": "/js/dist/all.js?id=4f9355ac85d380301f6f62e55b1a6e5e", + "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=e2e2b1797606a266ed55549f5bb5a179", + "/css/webfonts/fa-brands-400.woff2": "/css/webfonts/fa-brands-400.woff2?id=fe912d1c4a7e0e1db87a64eb7e54c945", + "/css/webfonts/fa-regular-400.ttf": "/css/webfonts/fa-regular-400.ttf?id=31a6b5ecfc8d018d0e3a294f0c80e9e9", + "/css/webfonts/fa-regular-400.woff2": "/css/webfonts/fa-regular-400.woff2?id=bf8eabe300a00a3adb0293596987abc4", + "/css/webfonts/fa-solid-900.ttf": "/css/webfonts/fa-solid-900.ttf?id=cd687455c6d6c058e2e9f84f409e2965", + "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=eea38615e7b5dbbaf88c263f2230cc32", + "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=6ebbf5afc34f54463abc2b81ca637364", + "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=67b8a78b7e80e805cfa4ee0421895ba4", + "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=f5935cf8eaf9c1f71da0c9245d730471", + "/js/build/vendor.js": "/js/build/vendor.js?id=3592e07ae9a6d1805a4ea3bd3c034aef", + "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=40e2dc8b5b29e244bb545f78e2a3242b", + "/js/dist/all.js": "/js/dist/all.js?id=ba07d399f23b294f7c4983030b757423", "/js/dist/all-defer.js": "/js/dist/all-defer.js?id=7d1b362ddda912bce36f333cd492191b", "/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=c0d21166315b7c2cdd4819fa4a5e4d1e", + "/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=e36e83c2aa3c3afdbb8ebe2c0309e91d", "/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb", - "/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=1c0f59079342d1a10099bf41d2e46f59", + "/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=bdfc704731682c67645a2248b0b8d2d7", "/css/dist/skins/skin-blue.min.css": "/css/dist/skins/skin-blue.min.css?id=f677207c6cf9678eb539abecb408c374", - "/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=57e634d63101d3613f4c73aaa2e3f50a", + "/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=07273f6ca3c698a39e8fc2075af4fa07", "/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=7b315b9612b8fde8f9c5b0ddb6bba690", - "/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=5120ce6a4b70d11bbc84a5125aa31949", + "/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=c1f33574ecb9d3e69d9b8fe5bd68e101", "/css/dist/skins/skin-red.min.css": "/css/dist/skins/skin-red.min.css?id=44bf834f2110504a793dadec132a5898", - "/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=6ea1eecb7f939256c373c92f58749e72", + "/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=8ca888bbc050d9680cbb65021382acba", "/css/dist/skins/skin-purple.min.css": "/css/dist/skins/skin-purple.min.css?id=6fe68325d5356197672c27bc77cedcb4", - "/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=713b1205aa2d7c9db282f8cd5754c0e4", + "/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=7d92dea45d94be7e1d4e427c728d335d", "/css/dist/skins/skin-orange.min.css": "/css/dist/skins/skin-orange.min.css?id=6f0563e726c2fe4fab4026daaa5bfdf2", - "/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=f343f659ca1d45534d2c2c3cc30fb619", - "/css/dist/skins/skin-contrast.min.css": "/css/dist/skins/skin-contrast.min.css?id=8e538625ebd4b8096e150d1aa483547b" + "/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=e6e53eef152bba01a4c666a4d8b01117", + "/css/dist/skins/skin-contrast.min.css": "/css/dist/skins/skin-contrast.min.css?id=da6c7997d9de2f8329142399f0ce50da" } diff --git a/resources/assets/js/components/alert.vue b/resources/assets/js/components/alert.vue deleted file mode 100644 index 1a20334656..0000000000 --- a/resources/assets/js/components/alert.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - diff --git a/resources/assets/js/components/importer/importer-errors.vue b/resources/assets/js/components/importer/importer-errors.vue deleted file mode 100644 index adc6841d4d..0000000000 --- a/resources/assets/js/components/importer/importer-errors.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - diff --git a/resources/assets/js/components/importer/importer-file.vue b/resources/assets/js/components/importer/importer-file.vue deleted file mode 100644 index eeeed7c722..0000000000 --- a/resources/assets/js/components/importer/importer-file.vue +++ /dev/null @@ -1,325 +0,0 @@ - - - diff --git a/resources/assets/js/components/importer/importer.vue b/resources/assets/js/components/importer/importer.vue deleted file mode 100644 index 474f8f1451..0000000000 --- a/resources/assets/js/components/importer/importer.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - diff --git a/resources/assets/js/snipeit.js b/resources/assets/js/snipeit.js index 62abdafde3..70e4f80a8f 100755 --- a/resources/assets/js/snipeit.js +++ b/resources/assets/js/snipeit.js @@ -185,14 +185,6 @@ $(document).ready(function () { } }); - /* - * iCheck checkbox plugin - */ - - $('input[type="checkbox"].minimal, input[type="radio"].minimal').iCheck({ - checkboxClass: 'icheckbox_minimal-blue', - radioClass: 'iradio_minimal-blue' - }); /* @@ -540,10 +532,16 @@ $(document).ready(function () { var id = '#' + $this.attr('id'); var status = id + '-status'; var $status = $(status); + var delete_id = $(id + '-deleteCheckbox'); + var preview_container = $(id + '-previewContainer'); + + + $status.removeClass('text-success').removeClass('text-danger'); $(status + ' .goodfile').remove(); $(status + ' .badfile').remove(); $(status + ' .previewSize').hide(); + preview_container.hide(); $(id + '-info').html(''); var max_size = $this.data('maxsize'); @@ -554,17 +552,15 @@ $(document).ready(function () { $(id + '-info').append('' + htmlEntities(this.files[i].name) + ' (' + formatBytes(this.files[i].size) + ') '); } - console.log('Max size is: ' + max_size); - console.log('Real size is: ' + total_size); - if (total_size > max_size) { $status.addClass('text-danger').removeClass('help-block').prepend(' ').append(' Upload is ' + formatBytes(total_size) + '.'); } else { - $status.addClass('text-success').removeClass('help-block').prepend(' '); var $preview = $(id + '-imagePreview'); readURL(this, $preview); $preview.fadeIn(); + preview_container.fadeIn(); + delete_id.hide(); } @@ -601,3 +597,32 @@ function htmlEntities(str) { }; })(jQuery); + +/** + * Universal Livewire Select2 integration + * + * How to use: + * + * 1. Set the class of your select2 elements to 'livewire-select2'). + * 2. Name your element to match a property in your Livewire component + * 3. Add an attribute called 'data-livewire-component' that points to $_instance->id (via `{{ }}` if you're in a blade, + * or just $_instance->id if not). + */ +$(function () { + $('.livewire-select2').select2() + + $(document).on('select2:select', '.livewire-select2', function (event) { + var target = $(event.target) + if(!event.target.name || !target.data('livewire-component')) { + console.error("You need to set both name (which should match a Livewire property) and data-livewire-component on your Livewire-ed select2 elements!") + console.error("For data-livewire-component, you probably want to use $_instance->id or {{ $_instance->id }}, as appropriate") + return false + } + window.livewire.find(target.data('livewire-component')).set(event.target.name, this.options[this.selectedIndex].value) + }) + + window.livewire.hook('message.processed', function (el,component) { + $('.livewire-select2').select2(); + }); + +}) \ No newline at end of file diff --git a/resources/assets/js/vue.js b/resources/assets/js/vue.js index 65cd4393c1..a5b903e51c 100644 --- a/resources/assets/js/vue.js +++ b/resources/assets/js/vue.js @@ -26,10 +26,11 @@ Vue.component( require('./components/passport/PersonalAccessTokens.vue').default ); -Vue.component( - 'importer', - require('./components/importer/importer.vue').default -); +// This component has been removed and replaced with a Livewire implementation +// Vue.component( +// 'importer', +// require('./components/importer/importer.vue').default +// ); // This component has been removed and replaced with a Livewire implementation // Vue.component( diff --git a/resources/assets/less/overrides.less b/resources/assets/less/overrides.less index ae427f3392..f5625bd7b4 100644 --- a/resources/assets/less/overrides.less +++ b/resources/assets/less/overrides.less @@ -141,6 +141,9 @@ a.accordion-header { .dropdown-menu li a { //color: inherit; } +.pull-text-right{ + text-align: right !important; +} .main-header .sidebar-toggle:before { content: "\f0c9"; @@ -192,6 +195,9 @@ a.accordion-header { .btn-info.btn-outline { color: #5bc0de; } +.btn-warning{ + background-color:#f39c12 !important; +} .btn-warning.btn-outline { color: #f0ad4e; @@ -496,14 +502,14 @@ h4 { background: #FFFFFF; border-top: 1px solid #dddddd; display: table-row; - + } .row-new-striped > .row:nth-of-type(odd) { background-color: #F8F8F8; border-top: 1px solid #dddddd; display: table-row; - + } .row-new-striped div { @@ -666,23 +672,23 @@ th.css-accessory > .th-inner::before border-radius: 0px; } -.bs-checkbox input { - zoom: 1.5; -} @media screen and (max-width: 511px){ + .tab-content .tab-pane .alert-block { + margin-top: 120px + } .sidebar-menu{ - margin-top:64px; + margin-top:160px; } } @media screen and (max-width: 771px) and (min-width: 512px){ .sidebar-menu { - margin-top:14px + margin-top:160px } } @media screen and (max-width: 1098px) and (min-width: 772px){ .sidebar-menu { - margin-top:51px + margin-top:98px } } @@ -690,4 +696,167 @@ th.css-accessory > .th-inner::before overflow: hidden; white-space: nowrap; text-overflow: ellipsis; -} \ No newline at end of file +} + + +/** Form-stuff overrides for checkboxes and stuff **/ + +label.form-control { + display: grid; + grid-template-columns: 1.8em auto; + gap: 0.5em; + border: 0px; + padding-left: 0px; + background-color: inherit; + color: inherit; + font-size: inherit; + font-weight: inherit; +} + +label.form-control--disabled { + color: #959495; + pointer-events:none; + cursor: not-allowed; +} + +/** --------------------------------------- **/ +/** Start checkbox styles to replace iCheck **/ +/** --------------------------------------- **/ +input[type="checkbox"] { + /* Add if not using autoprefixer */ + -webkit-appearance: none; + appearance: none; + /* For iOS < 15 to remove gradient background */ + background-color: #fff; + /* Not removed via appearance */ + margin: 0; + font: inherit; + color: #959495; + width: 1.8em; + height: 1.8em; + border: 0.05em solid; + border-radius: 0em; + transform: translateY(-0.075em); + display: grid; + place-content: center; + /*Windows High Contrast Mode*/ +} + +/** This sets the display of a checkbox, and what the "fill" checkmark should look like */ + +input[type="checkbox"]::before { + + /** If you want to use the non-checkbox, filled square, use this instead **/ + content: ""; + width: 1em; + height: 1em; + transform: scale(0); + transition: 120ms transform ease-in-out; + box-shadow: inset 1em 1em rgb(211, 211, 211); + + content: ""; + width: 1em; + height: 1em; + clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); + transform: scale(0); + transform-origin: bottom left; + transition: 120ms transform ease-in-out; + box-shadow: inset 1em 1em #428bca; + /* Windows High Contrast Mode */ + background-color: CanvasText; +} + +/** This sets the size of the scale up for the shape we defined above **/ +input[type="checkbox"]:checked::before { + transform: scale(1); +} + +/** This sets the scale and color of the DISABLED but CHECKED checkbox */ +input[type=checkbox]:disabled::before, input[type=radio]:disabled::before { + content: ""; + width: 1em; + height: 1em; + transform: scale(1); + box-shadow: inset 1em 1em rgb(211, 211, 211); +} + +/* This sets the scale and style of a DISABLED checkbox that is NOT checked */ +input[type=checkbox]:disabled:not(:checked)::before, input[type=radio]:disabled:not(:checked)::before { + content: ""; + transform: scale(0); + cursor: not-allowed; + pointer-events:none; +} + +/** this is the color of the checkbox and content on a disabled, checked box **/ +input[type=checkbox]:disabled, input[type=radio]:disabled { + --form-control-color: rgb(211, 211, 211); + color: #959495; + cursor: not-allowed; + pointer-events:none; +} + + +/** Radio styles to replace iCheck **/ + +input[type="radio"] { + appearance: none; + background-color: #fff; + margin: 0; + font: inherit; + color: #959495; + width: 1.8em; + height: 1.8em; + border: 0.05em solid; + border-radius: 50%; + transform: translateY(-0.075em); + display: grid; + place-content: center; +} + +input[type="radio"]::before { + content: ""; + width: 1em; + height: 1em; + border-radius: 50%; + transform: scale(0); + transition: 120ms transform ease-in-out; + box-shadow: inset 1em 1em #428bca; +} + +input[type="radio"]:checked::before { + transform: scale(1); +} + + +/** +* This addresses the column selector in bootstrap-table. Without these two lines, the +* checkbox and the with the label text that BS tables generates will +* end up on two different lines and it looks assy. + */ +.dropdown-item-marker input[type=checkbox] { + font-size: 10px; +} + +.bootstrap-table .fixed-table-toolbar li.dropdown-item-marker label { + font-weight: normal; + display: grid; + grid-template-columns: .1em auto; + gap: 1.5em; +} + +.container.row-striped .col-md-6 { + overflow-wrap:anywhere; +} + +.nav-tabs-custom > .nav-tabs > li { + z-index: 1; +} + +.select2-container .select2-search--inline .select2-search__field{ + padding-left:15px; +} + +/** --------------------------------------- **/ +/** End checkbox styles to replace iCheck **/ +/** --------------------------------------- **/ \ No newline at end of file diff --git a/resources/assets/less/skins/skin-black-dark.less b/resources/assets/less/skins/skin-black-dark.less index cd2c2d1de6..69a393e80d 100644 --- a/resources/assets/less/skins/skin-black-dark.less +++ b/resources/assets/less/skins/skin-black-dark.less @@ -135,6 +135,38 @@ a { #ldapad_test_results.well.well-sm{ color: var(--back-main); } +a.actions { + color:#fff !important; +} +//pagination +.pagination > li >a{ + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover{ + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress{ + background-color: var(--background); +} +a:hover > h2.task_menu{ + color:var(--header); +} +h2.task_menu{ + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{ + background-color:var(--back-main); + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu > li.header{ + background-color:var(--header); + color:var(--link); +} .main-header .navbar, .main-header .logo { background-color: var(--header); diff --git a/resources/assets/less/skins/skin-blue-dark.less b/resources/assets/less/skins/skin-blue-dark.less index a5f5c93988..6c502b1781 100644 --- a/resources/assets/less/skins/skin-blue-dark.less +++ b/resources/assets/less/skins/skin-blue-dark.less @@ -132,6 +132,35 @@ a { #ldapad_test_results.well.well-sm{ color: var(--back-main); } +a.actions { + color:#fff !important; +} +//pagination +.pagination > li >a{ + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover{ + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu{ + background-color: var(--back-main); +} + +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress{ + background-color: var(--background); +} +h2.task_menu{ + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{ + background-color:var(--back-main); + color:var(--link); +} .main-header .navbar, .main-header .logo { background-color: var(--header); @@ -368,6 +397,12 @@ a { color: var(--visited-link) } } +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets']{ + background-color: transparent; +} .row-striped { vertical-align: top; diff --git a/resources/assets/less/skins/skin-contrast.less b/resources/assets/less/skins/skin-contrast.less index f66e76676b..eba7001b0b 100644 --- a/resources/assets/less/skins/skin-contrast.less +++ b/resources/assets/less/skins/skin-contrast.less @@ -84,7 +84,13 @@ color: #fff; } } - +a.btn.btn-link.text-left{ + color:@navy; + border: 1px solid #000; +} +a.btn.btn-link.text-left:hover{ + color:@navy; +} a { color: @navy; @@ -102,10 +108,6 @@ a.btn { &:hover { color: #fff; text-decoration: underline; - - } - &:visited { - color: #fff; } } diff --git a/resources/assets/less/skins/skin-green-dark.less b/resources/assets/less/skins/skin-green-dark.less index 80937c66bd..a69f918acf 100644 --- a/resources/assets/less/skins/skin-green-dark.less +++ b/resources/assets/less/skins/skin-green-dark.less @@ -131,6 +131,35 @@ a { #ldapad_test_results.well.well-sm{ color: var(--back-main); } +a.actions { + color:#fff !important; +} +//pagination +.pagination > li >a{ + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover{ + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu{ + background-color: var(--back-main); +} + +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress{ + background-color: var(--background); +} +h2.task_menu{ + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{ + background-color:var(--back-main); + color:var(--link); +} .main-header .navbar, .main-header .logo { background-color: var(--header); @@ -154,10 +183,6 @@ a { color: var(--text-main); } -a:link { - color: var(--link); -} - .btn-primary.hover { color: var(--nav-link); } @@ -288,10 +313,6 @@ input[type=text], input[type=search] { .nav-tabs-custom, .nav-tabs-custom>.tab-content { background-color: var(--back-main); } -.navbar-nav>.tasks-menu>.dropdown-menu>li.header { - background-color: var(--back-main); - color: var(--header); -} .open>.dropdown-toggle.btn-default { background-color: var(--back-sub); color: var(--header); @@ -327,7 +348,7 @@ input[type=text], input[type=search] { color: var(--text-main); } .skin-green-dark .main-header .navbar .dropdown-menu li a { - color: var(--header); + color: var(--link); } .fixed-table-body thead th .th-inner, .skin-green-dark .sidebar-menu>li.active>a, .skin-green .sidebar-menu>li:hover>a, .sidebar-toggle:hover { background-color: var(--header)!important; @@ -363,6 +384,12 @@ a { color: var(--visited-link) } } +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets']{ + background-color: transparent; +} .row-striped { vertical-align: top; diff --git a/resources/assets/less/skins/skin-orange-dark.less b/resources/assets/less/skins/skin-orange-dark.less index a62403d416..98925b475e 100644 --- a/resources/assets/less/skins/skin-orange-dark.less +++ b/resources/assets/less/skins/skin-orange-dark.less @@ -119,6 +119,35 @@ li.dropdown-item-marker { #ldapad_test_results.well.well-sm{ color: var(--back-main); } +a.actions { + color:#fff !important; +} +//pagination +.pagination > li >a{ + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover{ + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu{ + background-color: var(--back-main); +} + +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress{ + background-color: var(--background); +} +h2.task_menu{ + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{ + background-color:var(--back-main); + color:var(--link); +} .main-header .navbar, .main-header .logo { background-color: var(--header); @@ -352,6 +381,12 @@ input[type=text], input[type=search] { .box-header.with-border { border-bottom: #000; } +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets']{ + background-color: transparent; +} .row-striped { vertical-align: top; diff --git a/resources/assets/less/skins/skin-purple-dark.less b/resources/assets/less/skins/skin-purple-dark.less index 10c8fbfb3c..10868045af 100644 --- a/resources/assets/less/skins/skin-purple-dark.less +++ b/resources/assets/less/skins/skin-purple-dark.less @@ -132,6 +132,32 @@ a { #ldapad_test_results.well.well-sm{ color: var(--back-main); } +//pagination +.pagination > li >a{ + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--button-default); + border-color: var(--light-link); +} +.pagination > .active > a:hover{ + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu{ + background-color: var(--back-main); +} + +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress{ + background-color: var(--background); +} +h2.task_menu{ + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{ + background-color:var(--back-main); + color:var(--link); +} .main-header .navbar, .main-header .logo { background-color: var(--header); @@ -299,7 +325,7 @@ input[type=text], input[type=search] { } .navbar-nav>.tasks-menu>.dropdown-menu>li.header { background-color: var(--back-main); - color: var(--header); + color: var(--link); } .open>.dropdown-toggle.btn-default { background-color: var(--back-sub); diff --git a/resources/assets/less/skins/skin-red-dark.less b/resources/assets/less/skins/skin-red-dark.less index b5e3c96c62..3fded5f067 100644 --- a/resources/assets/less/skins/skin-red-dark.less +++ b/resources/assets/less/skins/skin-red-dark.less @@ -58,8 +58,6 @@ } } - - .btn, .btn:hover { color: #fff; @@ -135,6 +133,32 @@ a { color: var(--back-main); } +//pagination +.pagination > li >a{ + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover{ + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu{ + background-color: var(--back-main); +} + +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress{ + background-color: var(--background); +} +h2.task_menu{ + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{ + background-color:var(--back-main); + color:var(--link); +} .main-header .navbar, .main-header .logo { background-color: var(--header); background: -webkit-linear-gradient(top, var(--header) 0%,var(--header) 100%); @@ -161,14 +185,12 @@ a { a:link { color: var(--link); } - -a:visited { - color: var(--nav-link); -} - a:hover { color: var(--hover-link); } +a:visited { + color: var(--nav-link); +} .far fa-life-ring{ color:var(--link); } @@ -209,7 +231,6 @@ body { } .btn-default{ background-color: var(--back-sub); - color: var(--link); } .btn-default dropdown-toggle { @@ -356,7 +377,6 @@ input[type=text], input[type=search] { } .table-striped>tbody>tr:nth-of-type(even){ background-color: var(--back-sub-alt); - color: var(--text-alt); } #webui>div>div>div>div>div>table>tbody>tr>td>a>i.fa, .box-body, .box-footer, .box-header { color: var(--text-main); @@ -365,21 +385,31 @@ input[type=text], input[type=search] { .box-header.with-border { border-bottom: #000; } +#upload-table tbody > tr.warning > td,#upload-table h3,#upload-table p{ + background-color:#fcf8e3; + color:#000; +} a { color: var(--link); &:link { - color: var(--link) } + color: var(--nav-link); + } &:hover { - color: var(--hover-link); + color: var(--nav-link); text-decoration: underline; } &:visited { - color: var(--visited-link) + color: var(--nav-link); } } - +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets']{ + background-color: transparent; +} .row-striped { vertical-align: top; line-height: 2.6; diff --git a/resources/assets/less/skins/skin-yellow-dark.less b/resources/assets/less/skins/skin-yellow-dark.less index b1688c09ac..c111cb122c 100644 --- a/resources/assets/less/skins/skin-yellow-dark.less +++ b/resources/assets/less/skins/skin-yellow-dark.less @@ -52,7 +52,6 @@ } .btn, .btn:hover { - color: #000; &.btn-primary, .btn-primary:link { background-color: var(--button-default); @@ -60,7 +59,6 @@ color: #545454; } - &a.btn-primary:hover { background-color: var(--button-hover); border-color: var(--button-hover); @@ -77,7 +75,12 @@ color: #545454; } } - +a.actions { + color:#fff !important; +} +a:visited.label-default, a:link.label-default{ + color:#444; +} /** The dropdown is white, so use a darker color */ @@ -125,21 +128,44 @@ a { #ldapad_test_results.well.well-sm{ color: var(--back-main); } +//pagination +.pagination > li >a{ + color: var(--text-main); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--button-default); + border-color: var(--light-link); + color:var(--nav-link); +} +.pagination > .active > a:hover{ + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu{ + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress{ + background-color: var(--background); +} +h2.task_menu{ + color:var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{ + background-color:var(--back-main); + color:var(--link); +} .main-header .navbar, .main-header .logo { background-color: var(--header); background: -webkit-linear-gradient(top, var(--header) 0%,var(--header) 100%); background: linear-gradient(to bottom, var(--header) 0%,var(--header) 100%); border-color: var(--header); } -.label-default{ - background-color:var(--back-sub); -} a.btn.btn-default{ color:var(--nav-link); } .bootstrap-table .fixed-table-container .table thead th .sortable { - color: var(--nav-link); + color: var(--text-main); } .bootstrap-table .fixed-table-toolbar .columns label { color:#000; @@ -329,12 +355,9 @@ input[type=text], input[type=search] { .skin-yellow-dark .main-header .navbar .dropdown-menu li a { color: var(--header); } -div.th-inner{ +tr th div.th-inner { color:var(--text-main); } -.fixed-table-body thead th .th-inner, .skin-yellow-dark, .skin-yellow { - background-color: var(--header)!important; -} .tab-content, .tab-pane { background-color: var(--back-main); color: var(--text-main); diff --git a/resources/lang/af/admin/accessories/general.php b/resources/lang/af/admin/accessories/general.php index fb4968061a..9c8e527625 100644 --- a/resources/lang/af/admin/accessories/general.php +++ b/resources/lang/af/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Opdatering bywerk', 'use_default_eula' => 'Gebruik eerder die primary standaard EULA.', 'use_default_eula_disabled' => 'Gebruik die primêre standaardverlof in plaas daarvan. Geen primêre standaard EULA is ingestel nie. Voeg asseblief een by Instellings.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/af/admin/accessories/message.php b/resources/lang/af/admin/accessories/message.php index 36c2fd100b..68fe79fc31 100644 --- a/resources/lang/af/admin/accessories/message.php +++ b/resources/lang/af/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/af/admin/asset_maintenances/form.php b/resources/lang/af/admin/asset_maintenances/form.php index eb6caf5937..8734717e2a 100644 --- a/resources/lang/af/admin/asset_maintenances/form.php +++ b/resources/lang/af/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Onderhoudstipe', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Titel', - 'start_date' => 'begin', - 'completion_date' => 'voltooi', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'koste', 'is_warranty' => 'Garantieverbetering', - 'asset_maintenance_time' => 'dae', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'notas', - 'update' => 'Opdateer', - 'create' => 'Skep' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/af/admin/categories/message.php b/resources/lang/af/admin/categories/message.php index 85103589b2..6b01196c2b 100644 --- a/resources/lang/af/admin/categories/message.php +++ b/resources/lang/af/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Kategorie is nie opgedateer nie, probeer asseblief weer', - 'success' => 'Kategorie suksesvol opgedateer.' + 'success' => 'Kategorie suksesvol opgedateer.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/af/admin/components/general.php b/resources/lang/af/admin/components/general.php index 61ea3b215d..77bf2f615e 100644 --- a/resources/lang/af/admin/components/general.php +++ b/resources/lang/af/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'oorblywende', 'total' => 'totale', 'update' => 'Opdateer komponent', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/af/admin/components/message.php b/resources/lang/af/admin/components/message.php index a841a29e6d..e2bbfb92ed 100644 --- a/resources/lang/af/admin/components/message.php +++ b/resources/lang/af/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponent is nie nagegaan nie, probeer asseblief weer', 'success' => 'Komponent is suksesvol nagegaan.', - 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.' + 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/af/admin/consumables/message.php b/resources/lang/af/admin/consumables/message.php index 0dca909303..20999a76ff 100644 --- a/resources/lang/af/admin/consumables/message.php +++ b/resources/lang/af/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Verbruiksgoedere is nie nagegaan nie, probeer asseblief weer', 'success' => 'Verbruiksgoedere is suksesvol nagegaan.', - 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.' + 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/af/admin/custom_fields/general.php b/resources/lang/af/admin/custom_fields/general.php index 7137cf3b30..5821f4bbf2 100644 --- a/resources/lang/af/admin/custom_fields/general.php +++ b/resources/lang/af/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Gebruik deur modelle', 'order' => 'Orde', 'create_fieldset' => 'Nuwe Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Nuwe aangepaste veld', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/af/admin/groups/message.php b/resources/lang/af/admin/groups/message.php index 8a9f6e8fa1..5ea896ce7e 100644 --- a/resources/lang/af/admin/groups/message.php +++ b/resources/lang/af/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Groep bestaan ​​reeds!', - 'group_not_found' => 'Groep [: id] bestaan ​​nie.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Die naam veld is nodig', 'success' => array( diff --git a/resources/lang/af/admin/hardware/form.php b/resources/lang/af/admin/hardware/form.php index 2331413364..8f6517acd1 100644 --- a/resources/lang/af/admin/hardware/form.php +++ b/resources/lang/af/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Bevestig bates vir die verwydering van grootmaat', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Hersien die bates vir grootmaatverwydering hieronder. Sodra dit verwyder is, kan hierdie bates herstel word, maar hulle word nie meer geassosieer met enige gebruikers wat hulle tans toegewys is nie.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Jy is op die punt om te verwyder: bate_count bates.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Grootskaalse opdateringsbates', 'bulk_update_help' => 'Met hierdie vorm kan u verskeie bates gelyktydig bywerk. Vul slegs die velde in wat u moet verander. Enige velde wat leeg is, bly onveranderd.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/af/admin/hardware/general.php b/resources/lang/af/admin/hardware/general.php index c6fc9f0bb9..9194e11782 100644 --- a/resources/lang/af/admin/hardware/general.php +++ b/resources/lang/af/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Wysig bate', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Requestable', 'requested' => 'versoek', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Herstel bate', 'pending' => 'hangende', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Bekyk bate', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/af/admin/hardware/message.php b/resources/lang/af/admin/hardware/message.php index a408a43f0c..4612a20d98 100644 --- a/resources/lang/af/admin/hardware/message.php +++ b/resources/lang/af/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Bate is nie herstel nie, probeer asseblief weer', 'success' => 'Bate herstel suksesvol.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'Jou lêer is ingevoer', 'file_delete_success' => 'Jou lêer is suksesvol verwyder', 'file_delete_error' => 'Die lêer kon nie uitgevee word nie', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/af/admin/hardware/table.php b/resources/lang/af/admin/hardware/table.php index 7595033684..1ec32fa16e 100644 --- a/resources/lang/af/admin/hardware/table.php +++ b/resources/lang/af/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In uit', 'checkout_date' => 'Checkout Datum', 'checkoutto' => 'Gekontroleer', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'diff', 'dl_csv' => 'Laai CSV af', diff --git a/resources/lang/af/admin/licenses/general.php b/resources/lang/af/admin/licenses/general.php index 7b4f741389..3eece139af 100644 --- a/resources/lang/af/admin/licenses/general.php +++ b/resources/lang/af/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Oor lisensies', - 'about_licenses' => 'Lisensies word gebruik om sagteware op te spoor. Hulle het \'n gespesifiseerde aantal sitplekke wat aan individue nagekeken kan word', + 'about_licenses_title' => 'Oor lisensies', + 'about_licenses' => 'Lisensies word gebruik om sagteware op te spoor. Hulle het \'n gespesifiseerde aantal sitplekke wat aan individue nagekeken kan word', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Afhandeling Geskiedenis', 'checkout' => 'Checkout License Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Sagteware lisensies', 'user' => 'gebruiker', 'view' => 'Bekyk lisensie', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/af/admin/manufacturers/message.php b/resources/lang/af/admin/manufacturers/message.php index fa3c570978..3a1b017807 100644 --- a/resources/lang/af/admin/manufacturers/message.php +++ b/resources/lang/af/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Vervaardiger bestaan ​​nie.', 'assoc_users' => 'Hierdie vervaardiger word tans geassosieer met ten minste een model en kan nie verwyder word nie. Dateer asseblief jou modelle op om nie meer hierdie vervaardiger te gebruik nie en probeer weer.', diff --git a/resources/lang/af/admin/manufacturers/table.php b/resources/lang/af/admin/manufacturers/table.php index cb869350ab..de3fedaf48 100644 --- a/resources/lang/af/admin/manufacturers/table.php +++ b/resources/lang/af/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Ondersteunings-e-pos', 'support_phone' => 'Ondersteuningsfoon', 'support_url' => 'Ondersteunings-URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Update Fabrikant', 'url' => 'URL', diff --git a/resources/lang/af/admin/models/general.php b/resources/lang/af/admin/models/general.php index 522061cfc7..e036502985 100644 --- a/resources/lang/af/admin/models/general.php +++ b/resources/lang/af/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Herstel Model', 'requestable' => 'Gebruikers kan hierdie model aanvra', 'show_mac_address' => 'Wys MAC adres veld in bates in hierdie model', diff --git a/resources/lang/af/admin/models/message.php b/resources/lang/af/admin/models/message.php index 3c09500b07..6f9f4e4d3e 100644 --- a/resources/lang/af/admin/models/message.php +++ b/resources/lang/af/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model bestaan ​​nie.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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.', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model is nie opgedateer nie, probeer asseblief weer', - 'success' => 'Model suksesvol opgedateer.' + 'success' => 'Model suksesvol opgedateer.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Geen velde is verander nie, so niks is opgedateer nie.', - 'success' => 'Modelle opgedateer.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/af/admin/settings/general.php b/resources/lang/af/admin/settings/general.php index 2b79f41d6a..0d76d3d592 100644 --- a/resources/lang/af/admin/settings/general.php +++ b/resources/lang/af/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'Dit is \'n Active Directory-bediener', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Stuur kennisgewings aan', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Alerts aangeskakel', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Barcode-instellings', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP-instellings', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Site Naam', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT-weergawe', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/af/admin/settings/message.php b/resources/lang/af/admin/settings/message.php index 275f446e5e..3375a85ce0 100644 --- a/resources/lang/af/admin/settings/message.php +++ b/resources/lang/af/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/af/admin/users/general.php b/resources/lang/af/admin/users/general.php index 48ba9cf5c6..735893a729 100644 --- a/resources/lang/af/admin/users/general.php +++ b/resources/lang/af/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Sagteware Uitgesoek na: naam', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Sien gebruiker: naam', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/af/admin/users/message.php b/resources/lang/af/admin/users/message.php index c1b46ab57f..fb48c59da6 100644 --- a/resources/lang/af/admin/users/message.php +++ b/resources/lang/af/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Jy het hierdie bate suksesvol geweier.', 'bulk_manager_warn' => 'Jou gebruikers is suksesvol opgedateer, maar jou bestuurderinskrywing is nie gestoor nie, want die bestuurder wat jy gekies het, was ook in die gebruikerslys om geredigeer te word, en gebruikers mag nie hul eie bestuurder wees nie. Kies asseblief u gebruikers weer, behalwe die bestuurder.', 'user_exists' => 'Gebruiker bestaan ​​reeds!', - 'user_not_found' => 'Gebruiker [: id] bestaan ​​nie.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Die aanmeldingsveld is nodig', 'user_password_required' => 'Die wagwoord is nodig.', 'insufficient_permissions' => 'Onvoldoende Toestemmings.', diff --git a/resources/lang/af/auth/general.php b/resources/lang/af/auth/general.php index 4fc408fd3b..a997ada792 100644 --- a/resources/lang/af/auth/general.php +++ b/resources/lang/af/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Onthou my', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/af/general.php b/resources/lang/af/general.php index 2df45287d2..e15140fd7d 100644 --- a/resources/lang/af/general.php +++ b/resources/lang/af/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'bykomstighede', 'activated' => 'geaktiveer', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Bykomstigheid', 'accessory_report' => 'Toebehoreverslag', 'action' => 'aksie', @@ -27,7 +28,13 @@ return [ 'audit' => 'oudit', 'audit_report' => 'Ouditlogboek', 'assets' => 'bates', + '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', 'avatar_delete' => 'Verwyder Avatar', 'avatar_upload' => 'Laai avatar op', 'back' => 'terug', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'kanselleer', 'categories' => 'kategorieë', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Hierdie program word uitgevoer in die produksiemodus met debugging aangeskakel. Dit kan sensitiewe data blootstel indien u aansoek vir die buitewêreld toeganklik is. Deaktiveer debug-modus deur die APP_DEBUG-waarde in jou .env-lêer te stel na false.', 'delete' => 'verwyder', 'delete_confirm' => 'Are you sure you wish to delete :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'geskrap', 'delete_seats' => 'Plekke verwyder', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'invoer', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Asset Maintenances', 'item' => 'item', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Onvoldoende toestemmings!', 'kits' => 'Predefined Kits', 'language' => 'Taal', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Versoek gekanselleer', 'save' => 'Save', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Kies', 'select_all' => 'Select All', 'search' => 'Soek', @@ -240,8 +254,8 @@ return [ 'signature' => 'Handtekening', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Sommige funksies is afgeskakel vir hierdie installasie.', 'site_name' => 'Site Naam', 'state' => 'staat', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Is jy seker jy wil verwyder', 'submit' => 'Indien', 'target' => 'teiken', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Tyd en datum vertoon', 'total_assets' => 'totale bates', 'total_licenses' => 'totale lisensies', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/af/help.php b/resources/lang/af/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/af/help.php +++ b/resources/lang/af/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/af/localizations.php b/resources/lang/af/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/af/localizations.php +++ b/resources/lang/af/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/af/mail.php b/resources/lang/af/mail.php index 8cf581c0ec..60d990e312 100644 --- a/resources/lang/af/mail.php +++ b/resources/lang/af/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Teken in op jou nuwe Snipe-IT-installasie deur die volgende inligting te gebruik:', 'login' => 'Teken aan:', 'Low_Inventory_Report' => 'Lae voorraadverslag', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'naam', 'new_item_checked' => '\'N Nuwe item is onder u naam nagegaan, besonderhede is hieronder.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Jou Snipe-IT-referenties', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/af/validation.php b/resources/lang/af/validation.php index 2de84f25b4..a4eb0e4316 100644 --- a/resources/lang/af/validation.php +++ b/resources/lang/af/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Die: Attribuut moet ten minste: min items hê.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Jou huidige wagwoord is verkeerd', 'dumbpwd' => 'Daardie wagwoord is te algemeen.', 'statuslabel_type' => 'U moet \'n geldige statusetiket tipe kies', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/am/admin/accessories/general.php b/resources/lang/am/admin/accessories/general.php index e9a2e69ff6..bed7f38fab 100644 --- a/resources/lang/am/admin/accessories/general.php +++ b/resources/lang/am/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Update Accessory', 'use_default_eula' => 'Use the primary default EULA instead.', 'use_default_eula_disabled' => 'Use the primary default EULA instead. No primary default EULA is set. Please add one in Settings.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/am/admin/accessories/message.php b/resources/lang/am/admin/accessories/message.php index a356463064..542f71f03c 100644 --- a/resources/lang/am/admin/accessories/message.php +++ b/resources/lang/am/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/am/admin/asset_maintenances/form.php b/resources/lang/am/admin/asset_maintenances/form.php index 2aa005c45f..785d06b08f 100644 --- a/resources/lang/am/admin/asset_maintenances/form.php +++ b/resources/lang/am/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Maintenance Type', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Title', - 'start_date' => 'Started', - 'completion_date' => 'Completed', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Cost', 'is_warranty' => 'Warranty Improvement', - 'asset_maintenance_time' => 'Days', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Notes', - 'update' => 'Update', - 'create' => 'Create' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/am/admin/categories/message.php b/resources/lang/am/admin/categories/message.php index 48cf5478e1..4e493f68b6 100644 --- a/resources/lang/am/admin/categories/message.php +++ b/resources/lang/am/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Category was not updated, please try again', - 'success' => 'Category updated successfully.' + 'success' => 'Category updated successfully.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/am/admin/components/general.php b/resources/lang/am/admin/components/general.php index f7689a7ad1..5b788a51ec 100644 --- a/resources/lang/am/admin/components/general.php +++ b/resources/lang/am/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Component', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/am/admin/components/message.php b/resources/lang/am/admin/components/message.php index 1d13970f23..0a7dd8d954 100644 --- a/resources/lang/am/admin/components/message.php +++ b/resources/lang/am/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Component was not checked out, please try again', 'success' => 'Component checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/am/admin/consumables/message.php b/resources/lang/am/admin/consumables/message.php index 48a3cfbd9f..c0d0aa7f68 100644 --- a/resources/lang/am/admin/consumables/message.php +++ b/resources/lang/am/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumable was not checked out, please try again', 'success' => 'Consumable checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/am/admin/custom_fields/general.php b/resources/lang/am/admin/custom_fields/general.php index 92bf240a76..1923aa7f4a 100644 --- a/resources/lang/am/admin/custom_fields/general.php +++ b/resources/lang/am/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Used By Models', 'order' => 'Order', 'create_fieldset' => 'New Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'New Custom Field', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/am/admin/groups/message.php b/resources/lang/am/admin/groups/message.php index f14b6339e8..495acaf36b 100644 --- a/resources/lang/am/admin/groups/message.php +++ b/resources/lang/am/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Group already exists!', - 'group_not_found' => 'Group [:id] does not exist.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'The name field is required', 'success' => array( diff --git a/resources/lang/am/admin/hardware/form.php b/resources/lang/am/admin/hardware/form.php index 22aac61d07..6bcb884bab 100644 --- a/resources/lang/am/admin/hardware/form.php +++ b/resources/lang/am/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirm Bulk Delete Assets', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Review the assets for bulk deletion below. Once deleted, these assets can be restored, but they will no longer be associated with any users they are currently assigned to.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'You are about to delete :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Bulk Update Assets', 'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/am/admin/hardware/general.php b/resources/lang/am/admin/hardware/general.php index 67226061b1..b0a48f2ce4 100644 --- a/resources/lang/am/admin/hardware/general.php +++ b/resources/lang/am/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Edit Asset', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Requestable', 'requested' => 'Requested', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restore Asset', 'pending' => 'Pending', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'View Asset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/am/admin/hardware/message.php b/resources/lang/am/admin/hardware/message.php index d2214ce00c..18f3b3fa24 100644 --- a/resources/lang/am/admin/hardware/message.php +++ b/resources/lang/am/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Asset was not restored, please try again', 'success' => 'Asset restored successfully.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Your file has been imported', 'file_delete_success' => 'Your file has been been successfully deleted', 'file_delete_error' => 'The file was unable to be deleted', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/am/admin/hardware/table.php b/resources/lang/am/admin/hardware/table.php index 6166ba8045..10629fd22c 100644 --- a/resources/lang/am/admin/hardware/table.php +++ b/resources/lang/am/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In/Out', 'checkout_date' => 'Checkout Date', 'checkoutto' => 'Checked Out', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Download CSV', diff --git a/resources/lang/am/admin/licenses/general.php b/resources/lang/am/admin/licenses/general.php index 25a536ec56..0187d076a3 100644 --- a/resources/lang/am/admin/licenses/general.php +++ b/resources/lang/am/admin/licenses/general.php @@ -1,8 +1,8 @@ 'About Licenses', - 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', + 'about_licenses_title' => 'About Licenses', + 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Checkout History', 'checkout' => 'Checkout License Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Software Licenses', 'user' => 'User', 'view' => 'View License', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/am/admin/manufacturers/message.php b/resources/lang/am/admin/manufacturers/message.php index 21a4bc5aaf..d6656683ae 100644 --- a/resources/lang/am/admin/manufacturers/message.php +++ b/resources/lang/am/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Manufacturer does not exist.', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', diff --git a/resources/lang/am/admin/manufacturers/table.php b/resources/lang/am/admin/manufacturers/table.php index 4e3ea9904d..38cab6fd91 100644 --- a/resources/lang/am/admin/manufacturers/table.php +++ b/resources/lang/am/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support Email', 'support_phone' => 'Support Phone', 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Update Manufacturer', 'url' => 'URL', diff --git a/resources/lang/am/admin/models/general.php b/resources/lang/am/admin/models/general.php index d2d77e0e8c..7e4a77adbc 100644 --- a/resources/lang/am/admin/models/general.php +++ b/resources/lang/am/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Restore Model', 'requestable' => 'Users may request this model', 'show_mac_address' => 'Show MAC address field in assets in this model', diff --git a/resources/lang/am/admin/models/message.php b/resources/lang/am/admin/models/message.php index e3b29d5b4b..5f47336526 100644 --- a/resources/lang/am/admin/models/message.php +++ b/resources/lang/am/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model does not exist.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model was not updated, please try again', - 'success' => 'Model updated successfully.' + 'success' => 'Model updated successfully.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'No fields were changed, so nothing was updated.', - 'success' => 'Models updated.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/am/admin/settings/general.php b/resources/lang/am/admin/settings/general.php index d41deaf935..92faf85c5f 100644 --- a/resources/lang/am/admin/settings/general.php +++ b/resources/lang/am/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'This is an Active Directory server', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Send alerts to', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Email Alerts Enabled', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Barcode Settings', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP Settings', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Site Name', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/am/admin/settings/message.php b/resources/lang/am/admin/settings/message.php index 174a15fbd9..48b42d1202 100644 --- a/resources/lang/am/admin/settings/message.php +++ b/resources/lang/am/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/am/admin/users/general.php b/resources/lang/am/admin/users/general.php index daa568e8bf..b097ccec69 100644 --- a/resources/lang/am/admin/users/general.php +++ b/resources/lang/am/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'View User :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/am/admin/users/message.php b/resources/lang/am/admin/users/message.php index 247a1b321e..adf26b3229 100644 --- a/resources/lang/am/admin/users/message.php +++ b/resources/lang/am/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'You have successfully declined this asset.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'user_exists' => 'User already exists!', - 'user_not_found' => 'User [:id] does not exist.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'The login field is required', 'user_password_required' => 'The password is required.', 'insufficient_permissions' => 'Insufficient Permissions.', diff --git a/resources/lang/am/auth/general.php b/resources/lang/am/auth/general.php index 78b6780927..4486f090b2 100644 --- a/resources/lang/am/auth/general.php +++ b/resources/lang/am/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Remember Me', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/am/general.php b/resources/lang/am/general.php index f0b6a3f2cf..01779a8854 100644 --- a/resources/lang/am/general.php +++ b/resources/lang/am/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accessories', 'activated' => 'Activated', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Accessory', 'accessory_report' => 'Accessory Report', 'action' => 'Action', @@ -27,7 +28,13 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Audit Log', 'assets' => 'Assets', + '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', 'avatar_delete' => 'Delete Avatar', 'avatar_upload' => 'Upload Avatar', 'back' => 'Back', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Cancel', 'categories' => 'Categories', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the 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.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Import', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Asset Maintenances', 'item' => 'Item', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Insufficient permissions!', 'kits' => 'Predefined Kits', 'language' => 'Language', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Request Canceled', 'save' => 'Save', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Select', 'select_all' => 'Select All', 'search' => 'Search', @@ -240,8 +254,8 @@ return [ 'signature' => 'Signature', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Are you sure you wish to delete', 'submit' => 'Submit', 'target' => 'Target', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Time and Date Display', 'total_assets' => 'total assets', 'total_licenses' => 'total licenses', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/am/help.php b/resources/lang/am/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/am/help.php +++ b/resources/lang/am/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/am/localizations.php b/resources/lang/am/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/am/localizations.php +++ b/resources/lang/am/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/am/mail.php b/resources/lang/am/mail.php index b0ae7de76b..7dd8d6181c 100644 --- a/resources/lang/am/mail.php +++ b/resources/lang/am/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login to your new Snipe-IT installation using the credentials below:', 'login' => 'Login:', 'Low_Inventory_Report' => 'Low Inventory Report', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Name', 'new_item_checked' => 'A new item has been checked out under your name, details are below.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Your Snipe-IT credentials', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/am/validation.php b/resources/lang/am/validation.php index 04f8d65303..df514da6f9 100644 --- a/resources/lang/am/validation.php +++ b/resources/lang/am/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'The :attribute must have at least :min items.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/ar/admin/accessories/general.php b/resources/lang/ar/admin/accessories/general.php index ca72ba694c..44eab533cd 100644 --- a/resources/lang/ar/admin/accessories/general.php +++ b/resources/lang/ar/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'تحديث الملحق', 'use_default_eula' => 'قم باستعمال اتفاقية ترخيص المستخدم الافتراضية الاساسية.', 'use_default_eula_disabled' => 'استخدام (اتفاقية ترخيص المستخدم) الافتراضية الأساسية بدلا من ذلك. لم يتم تحديد (اتفاقية ترخيص المستخدم) الافتراضية الأساسية. الرجاء إضافتها في الإعدادات.', + 'clone' => 'استنساخ الملحق', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/ar/admin/accessories/message.php b/resources/lang/ar/admin/accessories/message.php index 9c4ee00a22..a5b1b7b5e5 100644 --- a/resources/lang/ar/admin/accessories/message.php +++ b/resources/lang/ar/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'لم يتم إخراج الملحق، الرجاء المحاولة مرة أخرى', 'success' => 'تم إخراج الملحق بنجاح.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.' ), diff --git a/resources/lang/ar/admin/asset_maintenances/form.php b/resources/lang/ar/admin/asset_maintenances/form.php index 26921bab04..6c98bfa556 100644 --- a/resources/lang/ar/admin/asset_maintenances/form.php +++ b/resources/lang/ar/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'نوع الصيانة', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'المسمى', - 'start_date' => 'بدأت', - 'completion_date' => 'أنجزت', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'التكلفة', 'is_warranty' => 'تحسين الضمان', - 'asset_maintenance_time' => 'أيام', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'مُلاحظات', - 'update' => 'تعديل', - 'create' => 'إنشاء' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/ar/admin/categories/message.php b/resources/lang/ar/admin/categories/message.php index 275321cecb..4440c670fb 100644 --- a/resources/lang/ar/admin/categories/message.php +++ b/resources/lang/ar/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'لقد فشل تحديث التصنيف، الرجاء المحاولة مرة أخرى', - 'success' => 'تم تحديث التصنيف بنجاح.' + 'success' => 'تم تحديث التصنيف بنجاح.', + 'cannot_change_category_type' => 'لا يمكنك تغيير نوع الفئة بمجرد إنشائها', ), 'delete' => array( diff --git a/resources/lang/ar/admin/components/general.php b/resources/lang/ar/admin/components/general.php index a99b2336f1..538c2e516b 100644 --- a/resources/lang/ar/admin/components/general.php +++ b/resources/lang/ar/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'المتبقية', 'total' => 'المجموع', 'update' => 'تحديث مكون', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/ar/admin/components/message.php b/resources/lang/ar/admin/components/message.php index c2b1931214..9b06c537df 100644 --- a/resources/lang/ar/admin/components/message.php +++ b/resources/lang/ar/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'لم تتم عملية اخراج المكون، الرجاء المحاولة مرة اخرى', 'success' => 'تم إخراج المكون بنجاح.', - 'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.' + 'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.', + 'unavailable' => 'لا توجد عناصر كافية remaining: :remaining متبقية، :requested مطلوبة ', ), 'checkin' => array( diff --git a/resources/lang/ar/admin/consumables/message.php b/resources/lang/ar/admin/consumables/message.php index 8819d48fde..96f256ac50 100644 --- a/resources/lang/ar/admin/consumables/message.php +++ b/resources/lang/ar/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'لم يتم إخراج المادة الإستهلاكية، الرجاء المحاولة مرة اخرى', 'success' => 'تم إخراج المادة الإستهلاكية بنجاح.', - 'user_does_not_exist' => 'هذا المستخدم غير صحيح. الرجاء المحاولة مرة أخرى.' + 'user_does_not_exist' => 'هذا المستخدم غير صحيح. الرجاء المحاولة مرة أخرى.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/ar/admin/custom_fields/general.php b/resources/lang/ar/admin/custom_fields/general.php index 31f1694fa9..2ed06bd1f6 100644 --- a/resources/lang/ar/admin/custom_fields/general.php +++ b/resources/lang/ar/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'مستخدم في الموديلات', 'order' => 'طلب', 'create_fieldset' => 'مجموعة حقول جديدة', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'حقل جديد مخصص', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'غير مكرر', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/ar/admin/groups/message.php b/resources/lang/ar/admin/groups/message.php index 56e9755c0b..3712859192 100644 --- a/resources/lang/ar/admin/groups/message.php +++ b/resources/lang/ar/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'المجموعة موجودة مسبقا!', - 'group_not_found' => 'المجموعة رقم :id غير موجودة.', + 'group_not_found' => 'معرف المجموعة :id غير موجود.', 'group_name_required' => 'حقل الإسم اجباري', 'success' => array( diff --git a/resources/lang/ar/admin/hardware/form.php b/resources/lang/ar/admin/hardware/form.php index 47fbf21429..45c8447eb2 100644 --- a/resources/lang/ar/admin/hardware/form.php +++ b/resources/lang/ar/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'تاكيد إجراء حذف للاُصول المحددة', + 'bulk_restore' => 'تأكيد استعادة الأصول بالجملة', 'bulk_delete_help' => 'الرجاء مراجعة الأصول المحددة للحذف أدناه. بمجرد الحذف، يمكن استعادة هذه الأصول، لكنها لن تكون مرتبطة مع أي من المستخدمين اللذين تم اخراج الأصول لهم من قبل.', + 'bulk_restore_help' => 'مراجعة الأصول للاستعادة بالجملة أدناه. بمجرد إعادتها لن تكون هذه الأصول مرتبطة بأي مستعملين سبق تعيينهم.', 'bulk_delete_warn' => 'أنت على وشك حذف :asset_count من الأصول.', + 'bulk_restore_warn' => 'أنت على وشك استعادة :asset_count الأصول.', 'bulk_update' => 'تحديث للأصول المحددة', 'bulk_update_help' => 'يتيح لك هذا النموذج تحديث عدة أصول دفعة واحدة. قم بملء الحقول التي تحتاج إلى تغييرها. ستظل أية حقول فارغة بدون تغيير. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'معالجة... (قد يستغرق هذا بعض الوقت على ملفات كبيرة)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/ar/admin/hardware/general.php b/resources/lang/ar/admin/hardware/general.php index f6718b34bb..2e3b1dc843 100644 --- a/resources/lang/ar/admin/hardware/general.php +++ b/resources/lang/ar/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'تم حذف هذا الأصل.', 'edit' => 'تعديل الأصل', 'model_deleted' => 'تم حذف موديل الأصول هذا. يجب استعادة الموديل قبل أن تتمكن من استعادة الأصل.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'قابل للطلب', 'requested' => 'تم الطلب', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'استعادة الأصل', 'pending' => 'قيد الانتظار', 'undeployable' => 'غير قابل للتوزيع', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'عرض الأصل', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/ar/admin/hardware/message.php b/resources/lang/ar/admin/hardware/message.php index 4103f9dd7f..8a2611885f 100644 --- a/resources/lang/ar/admin/hardware/message.php +++ b/resources/lang/ar/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'لم تتم استعادة الأصل، يرجى إعادة المحاولة', 'success' => 'تمت استعادة الأصل بنجاح.', + 'bulk_success' => 'تمت استعادة الأصل بنجاح.', + 'nothing_updated' => 'ولم يتم اختيار أي أصول، وبالتالي لم يتم استعادة أي شيء.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'تم استيراد الملف الخاص بك', 'file_delete_success' => 'تم حذف ملفك بنجاح', 'file_delete_error' => 'تعذر حذف الملف', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/ar/admin/hardware/table.php b/resources/lang/ar/admin/hardware/table.php index 84c7afc762..f5c2800398 100644 --- a/resources/lang/ar/admin/hardware/table.php +++ b/resources/lang/ar/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'ادخال \\ اخراج', 'checkout_date' => 'تاريخ الاخراج', 'checkoutto' => 'الاخراج', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'الفرق', 'dl_csv' => 'التنزيل كملف CSV', diff --git a/resources/lang/ar/admin/licenses/general.php b/resources/lang/ar/admin/licenses/general.php index 9a9e0df1b7..3040d05bcb 100644 --- a/resources/lang/ar/admin/licenses/general.php +++ b/resources/lang/ar/admin/licenses/general.php @@ -1,8 +1,8 @@ 'حول التراخيص', - 'about_licenses' => 'تستخدم التراخيص لتتبع البرمجيات. كل لديه عدد محدد من المقاعد التي يمكن اخراجها للأفراد', + 'about_licenses_title' => 'حول التراخيص', + 'about_licenses' => 'تستخدم التراخيص لتتبع البرمجيات. كل لديه عدد محدد من المقاعد التي يمكن اخراجها للأفراد', 'checkin' => 'ادخال مقعد الترخيص', 'checkout_history' => 'أرشيف الاخراج', 'checkout' => 'اخراج مقعد ترخيص', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'تراخيص البرامج', 'user' => 'مستخدم', 'view' => 'عرض الترخيص', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/ar/admin/locations/message.php b/resources/lang/ar/admin/locations/message.php index 9b4b03fc49..547b5db18a 100644 --- a/resources/lang/ar/admin/locations/message.php +++ b/resources/lang/ar/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'هذا الموقع مرتبط حاليا بمستخدم واحد على الأقل ولا يمكن حذفه. يرجى تحديث المستخدمين لم يعد يشيروا إلى هذا الموقع ثم أعد المحاولة. ', 'assoc_assets' => 'هذا الموقع مرتبط حاليا بمادة عرض واحدة على الأقل ولا يمكن حذفها. يرجى تحديث مواد العرض لم تعد تشير إلى هذا الموقع ثم أعد المحاولة. ', 'assoc_child_loc' => 'هذا الموقع هو حاليا أحد الوالدين لموقع طفل واحد على الأقل ولا يمكن حذفه. يرجى تحديث مواقعك لم تعد تشير إلى هذا الموقع ثم أعد المحاولة.', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'الأصول المعينة', + 'current_location' => 'الموقع الحالي', 'create' => array( diff --git a/resources/lang/ar/admin/locations/table.php b/resources/lang/ar/admin/locations/table.php index 1a6ce3f8e9..7a05d8c8e0 100644 --- a/resources/lang/ar/admin/locations/table.php +++ b/resources/lang/ar/admin/locations/table.php @@ -20,21 +20,21 @@ return [ 'parent' => 'الأبوين', 'currency' => 'عملة الموقع', 'ldap_ou' => 'لداب البحث أو', - 'user_name' => 'User Name', - 'department' => 'Department', - 'location' => 'Location', - 'asset_tag' => 'Assets Tag', - 'asset_name' => 'Name', - 'asset_category' => 'Category', - 'asset_manufacturer' => 'Manufacturer', - 'asset_model' => 'Model', - 'asset_serial' => 'Serial', - 'asset_location' => 'Location', - 'asset_checked_out' => 'Checked Out', - 'asset_expected_checkin' => 'Expected Checkin', - 'date' => 'Date:', - 'signed_by_asset_auditor' => 'Signed By (Asset Auditor):', - 'signed_by_finance_auditor' => 'Signed By (Finance Auditor):', - 'signed_by_location_manager' => 'Signed By (Location Manager):', - 'signed_by' => 'Signed Off By:', + 'user_name' => 'اسم المستخدم', + 'department' => 'القسم', + 'location' => 'الموقع', + 'asset_tag' => 'علامة الأصول', + 'asset_name' => 'الإسم', + 'asset_category' => 'الفئة', + 'asset_manufacturer' => 'الجهة المنتجة', + 'asset_model' => 'النموذج', + 'asset_serial' => 'التسلسل', + 'asset_location' => 'المكان', + 'asset_checked_out' => 'الاخراج', + 'asset_expected_checkin' => 'تاريخ الادخال المتوقع', + 'date' => 'التاريخ:', + 'signed_by_asset_auditor' => 'موقعة من قبل (مراجع الأصل):', + 'signed_by_finance_auditor' => 'موقعة من قبل (مراجع الحسابات المالي):', + 'signed_by_location_manager' => 'توقيع بواسطة (مدير الموقع):', + 'signed_by' => 'تم توقيعه من قبل:', ]; diff --git a/resources/lang/ar/admin/manufacturers/message.php b/resources/lang/ar/admin/manufacturers/message.php index 569536b9ff..261039cada 100644 --- a/resources/lang/ar/admin/manufacturers/message.php +++ b/resources/lang/ar/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'الشركة المصنعة غير موجودة.', 'assoc_users' => 'هذه الشركة المصنعة مرتبطة حاليا مع موديل واحد على الأقل وبالتالي لا يمكن حذفها. يرجى تحديث الموديلات الخاصة بك بحيث لا تشير لهذه الشركة المصنعة وحاول مرة أخرى. ', diff --git a/resources/lang/ar/admin/manufacturers/table.php b/resources/lang/ar/admin/manufacturers/table.php index ff5f3cff63..936ef8d762 100644 --- a/resources/lang/ar/admin/manufacturers/table.php +++ b/resources/lang/ar/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'دعم البريد الإلكتروني', 'support_phone' => 'دعم الهاتف', 'support_url' => 'رابط الدعم التقني', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'تحديث الشركة المصنعة', 'url' => 'الرابط', diff --git a/resources/lang/ar/admin/models/general.php b/resources/lang/ar/admin/models/general.php index 94e438651b..df6fda1a4d 100644 --- a/resources/lang/ar/admin/models/general.php +++ b/resources/lang/ar/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'تم حذف هذا الموديل.', 'bulk_delete' => 'حذف موديلات الاصول بالجملة', 'bulk_delete_help' => 'استخدم مربعات الاختيار أدناه لتأكيد حذف موديلات الأصول المحددة. لا يمكن حذف موديلات الأصول التي تحتوي على أصول مرتبطة بها إلى أن يتم ربط الأصول بموديل مختلف.', - 'bulk_delete_warn' => 'أنت على وشك حذف :model_count من موديلات الأصول.', + 'bulk_delete_warn' => 'أنت على وشك حذف نموذج واحد للأصول.|أنت على وشك حذف :model_count من نماذج الأصول.', 'restore' => 'إستعادة الموديل', 'requestable' => 'يمكن للمستخدمين طلب هذا الموديل', 'show_mac_address' => 'عرض حقل عنوان ماك MAC في الأصول لهذا الموديل', diff --git a/resources/lang/ar/admin/models/message.php b/resources/lang/ar/admin/models/message.php index e690990305..5a3cb89382 100644 --- a/resources/lang/ar/admin/models/message.php +++ b/resources/lang/ar/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'الموديل غير موجود.', + 'no_association' => 'غير مرتبط بنموذج.', + 'no_association_fix' => 'سيؤدي هذا إلى كسر الأمور بطرق غريبة وفظيعة. قم بتعديل هذا الأصل الآن لربطه بنموذج.', 'assoc_users' => 'هذا الموديل مرتبط حاليا بواحد أو أكثر من الأصول ولا يمكن حذفه. يرجى حذف الأصول، ثم محاولة الحذف مرة أخرى. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'لم يتم تحديث الموديل، يرجى إعادة المحاولة', - 'success' => 'تم تحديث الموديل بنجاح.' + 'success' => 'تم تحديث الموديل بنجاح.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'لم يتم تغيير أي حقول، لذلك لم يتم تحديث أي شيء.', - 'success' => 'تم تحديث الموديل.' + 'success' => 'تم تحديث النموذج بنجاح. |تم تحديث :model_count نموذج بنجاح.', + 'warn' => 'أنت على وشك تحديث خصائص النموذج التالي model: |أنت على وشك تعديل خصائص :model_count models:', + ), 'bulkdelete' => array( 'error' => 'لم يتم اختيار أي موديلات، لذلك لم يتم حذف أي شيء.', - 'success' => 'تم حذف success_count: من الموديلات!', + 'success' => 'تم حذف النموذج!|تم حذف :success_count نموذج!', 'success_partial' => 'تم حذف:success_count: من الموديلات، ومع ذلك تعذر حذف fail_count: نظرًا لأنها لا تزال تحتوي على أصول مقترنة بها.' ), diff --git a/resources/lang/ar/admin/settings/general.php b/resources/lang/ar/admin/settings/general.php index b235699bc5..923762f0c2 100644 --- a/resources/lang/ar/admin/settings/general.php +++ b/resources/lang/ar/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'إذا كنت ترغب في إرسال نسخة من رسائل البريد الإلكتروني لتسجيل الدخول / الخروج التي يتم إرسالها إلى المستخدمين إلى حساب بريد إلكتروني إضافي، فقم بإدخالها هنا. خلاف ذلك، اترك هذه الخانة فارغة.', 'is_ad' => 'هذا هو ملقم أكتيف ديركتوري', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'تحديث إعدادات الإشعارات', 'alert_email' => 'إرسال تنبيهات إلى', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'التنبيهان ممكنه', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'سيتم تسجيل الخروج من جميع المستخدمين الحاليين، بما في ذلك انت، بمجرد اكتمال الاستعادة.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'إعدادات الباركود', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'إعدادات لداب', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'أدخل اسم مستخدم وكلمة مرور LDAP من الاسم المميز الأساسي DN الذي حددته أعلاه لاختبار ما إذا كان قد تمت تهيئة معلومات تسجيل الدخول إلى LDAP بشكل صحيح أم لا. يجب حفظ تحديث LDAP الخاص بك أولا.', 'ldap_login_sync_help' => 'هذا يختبر فقط أن LDAP يستطيع المزامنة بشكل صحيح. إذا كان استعلام التوثيق الى LDAP الخاص بك غير صحيح، قد لا يزال المستخدمون غير قادرين على تسجيل الدخول. يجب عليك اولا حفظ اي تغييرات في إعدادات LDAP.', 'ldap_manager' => 'LDAP Manager', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'إظهار الصور في رسائل البريد الإلكتروني', 'show_images_in_email_help' => 'قم بإلغاء تحديد هذا المربع إذا كان تثبيت Snipe-IT وراء شبكة VPN أو شبكة مغلقة ولن يتمكن المستخدمون خارج الشبكة من تحميل الصور التي يخدمها هذا التثبيت في رسائل البريد الإلكتروني الخاصة بهم.', 'site_name' => 'اسم الموقع', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'سلاك بوتنام', - 'slack_channel' => 'قناة سلاك', - 'slack_endpoint' => 'نقطة نهاية سلاك', - 'slack_integration' => 'إعدادات سلاك', - 'slack_integration_help' => 'التكامل الأسود اختياري، ولكن نقطة النهاية والقناة مطلوبة إذا كنت ترغب في استخدامها. لتكوين تكامل Slack ، يجب أولاً إنشاء ويب هوك وارد على حساب Slack الخاص بك. انقر على زر اختبار التكامل السوداء لتأكيد أن إعداداتك صحيحة قبل الحفظ. ', - 'slack_integration_help_button' => 'عند الانتهاء من حفظ معلومات Slack الخاصة بك، سوف يظهر زر الفحص.', - 'slack_test_help' => 'اختبر ما إذا كان تكامل Slack الخاص بك قد تم تكوينه بشكل صحيح. لقد قمت بحفظ إعدادات SLACK الخاصة بك.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'قنص-إيت الإصدار', 'support_footer' => 'دعم روابط تذييل الصفحة ', 'support_footer_help' => 'تحديد من يرى الروابط إلى دليل معلومات الدعم للمستخدمين عن طريق القناصة', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/ar/admin/settings/message.php b/resources/lang/ar/admin/settings/message.php index df67acadc5..f5253f571e 100644 --- a/resources/lang/ar/admin/settings/message.php +++ b/resources/lang/ar/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/ar/admin/users/general.php b/resources/lang/ar/admin/users/general.php index e7d0100aee..487400586d 100644 --- a/resources/lang/ar/admin/users/general.php +++ b/resources/lang/ar/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'طباعة كل الممتلكات', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'البرامج المخرجة الى: :name', 'send_email_help' => 'يجب عليك توفير عنوان بريد إلكتروني لهذا المستخدم لإرسال بيانات اعتماده. لا يمكن إرسال بيانات الاعتماد البريدية إلا عند إنشاء المستخدم. يتم تخزين كلمات المرور في تجزئة ذات اتجاه واحد ولا يمكن استرجاعها بمجرد الحفظ.', 'view_user' => 'عرض المستخدم :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'تحذير:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'تم إنشاؤها في:', + 'email_user_creds_on_create' => 'إرسال بيانات دخول هذا المستخدم بالبريد الإلكتروني؟', ]; diff --git a/resources/lang/ar/admin/users/message.php b/resources/lang/ar/admin/users/message.php index 9f76734c37..81c392f699 100644 --- a/resources/lang/ar/admin/users/message.php +++ b/resources/lang/ar/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'لقد رفضت هذا الأصل بنجاح.', 'bulk_manager_warn' => 'تم تحديث المستخدمين بنجاح، ولكن لم يتم حفظ إدخال مديرك لأن المدير الذي حددته كان أيضا في قائمة المستخدمين التي سيتم تعديلها، وقد لا يكون المستخدمون مديرهم الخاص. يرجى تحديد المستخدمين مرة أخرى، باستثناء المدير.', 'user_exists' => 'المستخدم موجود مسبقاً!', - 'user_not_found' => 'المستخدم :id غير موجود.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'حقل تسجيل الدخول اجباري', 'user_password_required' => 'كلمة المرور اجبارية.', 'insufficient_permissions' => 'صلاحيات غير كافية.', diff --git a/resources/lang/ar/auth/general.php b/resources/lang/ar/auth/general.php index 6d1360b7fa..227db5e10c 100644 --- a/resources/lang/ar/auth/general.php +++ b/resources/lang/ar/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'تذكرني', 'username_help_top' => 'أدخل اسم المستخدم الخاص بك ليتم إرسال رابط إعادة تعيين كلمة المرور إلى البريد الإلكتروني.', 'username_help_bottom' => 'قد يكون اسم المستخدم وعنوان البريد الإلكتروني الخاصين بك متماثلين، ولكن قد لا يكونا كذلك، بناءً على الإعدادات الخاصة بك. إذا كنت لا تستطيع تذكر اسم المستخدم الخاص بك، اتصل بالمسؤول. لن يتم إرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني إلى أسماء المستخدمين التي لا تحتوي على عنوان بريد إلكتروني مرتبط بها ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/ar/general.php b/resources/lang/ar/general.php index 9b77333115..9d91a0d9f5 100644 --- a/resources/lang/ar/general.php +++ b/resources/lang/ar/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'ملحقات', 'activated' => 'مفعل', + 'accepted_date' => 'Date Accepted', 'accessory' => 'ملحق', 'accessory_report' => 'تقرير الملحقات', 'action' => 'الإجراء', @@ -27,7 +28,13 @@ return [ 'audit' => 'تدقيق', 'audit_report' => 'سجل التدقيق', 'assets' => 'الأصول', + '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' => 'مسنَدة إلى :name', + 'assignee' => 'Assigned to', 'avatar_delete' => 'حذف الصورة الرمزية', 'avatar_upload' => 'رفع صورة رمزية', 'back' => 'الرجوع للخلف', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'تحرير بالجملة', 'bulk_delete' => 'حذف بالجملة', 'bulk_actions' => 'مجموعة إجراءات', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'حسب الحالة', 'cancel' => 'إلغاء', 'categories' => 'التصنيفات', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'هذا التطبيق يعمل في وضع الإنتاج مع تمكين التصحيح. هذا يمكن أن يعرض البيانات الحساسة إذا كان التطبيق الخاص بك هو في متناول العالم الخارجي. تعطيل وضع التصحيح عن طريق تعيين قيمة APP_DEBUG في ملف .env إلى false.', 'delete' => 'حذف', 'delete_confirm' => 'هل أنت متأكد من حذف :المنتج؟', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'تم حذفها', 'delete_seats' => 'المقاعد المحذوفة', 'deletion_failed' => 'فشل الحذف', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'نوع الملف المقبول هو :types. الحد الأقصى لحجم التحميل المسموح به هو :size.|أنواع الملف المقبول هي :types. الحد الأقصى لحجم التحميل المسموح به هو :size.', 'filetypes_size_help' => 'الحد الأقصى لحجم الرفع المسموح به هو :size.', 'image_filetypes_help' => 'أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. الحد الأقصى المسموح به للتحميل هو :size.', + 'unaccepted_image_type' => 'ملف الصورة هذا غير قابل للقراءة. أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. نوع هذا الملف هو: :mimetype.', 'import' => 'استيراد', 'importing' => 'الاستيراد', 'importing_help' => 'يمكنك استيراد الأصول، الملحقات، التراخيص، المكونات، المواد الاستهلاكية، والمستخدمين عبر ملف CSV.

يجب أن تكون CSV محددة بفواصل وأن يتم تنسيقها مع رؤوس تطابق تلك الموجودة في عينة CSVs في الوثائق.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'صيانة الأصول', 'item' => 'بند', 'item_name' => 'إسم العنصر', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'صلاحيات غير كافية!', 'kits' => 'مجموعات محددة مسبقاً', 'language' => 'لغة', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'الأصول المطلوبة', 'request_canceled' => 'تم إلغاء الطلب', 'save' => 'حفظ', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'تحديد', 'select_all' => 'اختر الكل', 'search' => 'بحث', @@ -240,8 +254,8 @@ return [ 'signature' => 'التوقيع', 'signed_off_by' => 'تم توقيعه من قبل', 'skin' => 'المظهر', - 'slack_msg_note' => 'سيتم إرسال رسالة التراخي', - 'slack_test_msg' => 'مرحباً! يبدو أن التكامل مع Slack مع Snipe-IT يعمل!', + 'webhook_msg_note' => 'سيتم إرسال إشعار عبر الربط البرمجي (webhook)', + 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'التثبيت التجريبي (DEMO): يتم تعطيل بعض الميزات لهذا التثبيت.', 'site_name' => 'إسم الموقع', 'state' => 'المنطقة / الولاية', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'هل تريد بالتأكيد حذفها', 'submit' => 'عرض', 'target' => 'استهداف', - 'toggle_navigation' => 'تبديل القائمة', 'time_and_date_display' => 'عرض الوقت والتاريخ', 'total_assets' => 'إجمالي الأصول', 'total_licenses' => 'مجموع التراخيص', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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_information' => 'سيؤدي هذا إلى دمج :count مستخدمين في مستخدم واحد. حدد المستخدم الذي ترغب في دمج بقية المستخدمين بالأسفل، والأصول المرتبطة ، والتراخيص ، إلخ سيتم نقلها إلى المستخدم المحدد وسيتم وضع علامة على المستخدمين الآخرين كمحذوفين.', + 'warning_merge_information' => 'لا يمكن التراجع عن هذا الإجراء، ويجب أن تستخدم فقط عندما تحتاج إلى دمج المستخدمين بسبب سوء الاستيراد أو المزامنة. تأكد من تشغيل النسخ الاحتياطي أولاً.', + 'no_users_selected' => 'لا يوجد مستخدمين محددين', + 'not_enough_users_selected' => 'يجب اختيارعدد :count مستخدم على الأقل', + 'merge_success' => 'تم دمج :count من المستخدمين بنجاح في :into_username!', + 'merged' => 'دُمِجَت', + 'merged_log_this_user_into' => 'تم دمج هذا المستخدم (رقم :to_id - :to_username) إلى المستخدم رقم :from_id (:from_username) ', + 'merged_log_this_user_from' => 'تم دمج المستخدم رقم :from_id (:from_username) في هذا المستخدم (رقم :to_id - :to_username)', + 'clear_and_save' => 'Clear & Save', + 'update_existing_values' => 'Update Existing Values?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'تم تعطيل إنشاء علامات الأصول التزايدية التلقائية لذلك يجب أن يكون لجميع الصفوف عمود "علامة الأصول" مأهول.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'ملاحظة: تم تمكين إنشاء علامات الأصول التزايدية التلقائية لذلك سيتم إنشاء أصول للصفوف التي لا تحتوي على "علامة الأصول" مأهولة. الصفوف التي تحتوي على "علامة أصول" مأهولة سيتم تحديثها مع المعلومات المقدمة.', + 'send_welcome_email_to_users' => ' Send Welcome Email for new Users?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'تم إنشاء جداول قاعدة البيانات الخاصة بك', + 'setup_migration_output' => 'ناتج الهجرة:', + 'setup_migration_create_user' => 'التالي: إنشاء مستخدم', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/ar/help.php b/resources/lang/ar/help.php index 8b912823d6..4541426293 100644 --- a/resources/lang/ar/help.php +++ b/resources/lang/ar/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'المزيد من المعلومات', - 'audit_help' => 'التحقق من هذا المربع سيؤدي إلى تعديل سجل الأصول لعكس هذا الموقع الجديد. تركه غير محدد سيلاحظ ببساطة الموقع في سجل المراجعة.

لاحظ أن هذا الأصل تم التحقق منه، فهو لن يغير موقع الشخص أو الأصل أو الموقع الذي يتم التحقق منه إليه.', + 'audit_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.', 'assets' => 'الأصول هي العناصر التي يتم تتبعها بواسطة الرقم التسلسلي أو ترميز الأصل. وهي تميل إلى أن تكون ممتلكات ذات قيمة أعلى حيث انه من المهم توثيقها.', diff --git a/resources/lang/ar/localizations.php b/resources/lang/ar/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/ar/localizations.php +++ b/resources/lang/ar/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/ar/mail.php b/resources/lang/ar/mail.php index 2458d43224..8bdbb8f952 100644 --- a/resources/lang/ar/mail.php +++ b/resources/lang/ar/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'قم بتسجيل الدخول إلى التثبيت الجديد من Snipe-IT باستخدام البيانات أدناه:', 'login' => 'تسجيل الدخول:', 'Low_Inventory_Report' => 'تقرير المخزون المنخفض', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'دقيقة الكمية', 'name' => 'اسم', 'new_item_checked' => 'تم فحص عنصر جديد تحت اسمك، التفاصيل أدناه.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'أوراق اعتماد قنص-إيت الخاص بك', 'Accessory_Checkin_Notification' => 'تم تسحيل الملحق', 'Asset_Checkin_Notification' => 'تم تسجيل الأصل', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'تم تسجيل الرخصة', 'Expected_Checkin_Report' => 'تقرير تسجيل الأصول المتوقع', 'Expected_Checkin_Notification' => 'تذكير: تاريخ تحقق :name يقترب من الموعد النهائي', 'Expected_Checkin_Date' => 'من المقرر أن يتم التحقق من الأصول التي تم إخراجها إليك في :date', 'your_assets' => 'عرض الأصول الخاصة بك', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/ar/validation.php b/resources/lang/ar/validation.php index 4e7249c78c..09c2a8d805 100644 --- a/resources/lang/ar/validation.php +++ b/resources/lang/ar/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'يجب أن تحتوي :attribute على الأقل :min من العناصر.', ], '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 موجود.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'كلمة المرور الحالية غير صحيحة', 'dumbpwd' => 'كلمة المرور هذه شائعة جدا.', 'statuslabel_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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/bg/admin/accessories/general.php b/resources/lang/bg/admin/accessories/general.php index b9cd2d55ec..6232a89dd0 100644 --- a/resources/lang/bg/admin/accessories/general.php +++ b/resources/lang/bg/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Обновяване на аксесоар', 'use_default_eula' => 'Използване на EULA по подразбиране.', 'use_default_eula_disabled' => 'Използване на EULA по подразбиране Няма EULA по подразбиране. Добавете я в Настройки.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/bg/admin/accessories/message.php b/resources/lang/bg/admin/accessories/message.php index 5101415a34..f367dfdb13 100644 --- a/resources/lang/bg/admin/accessories/message.php +++ b/resources/lang/bg/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'Аксесоарът не беше изписан. Моля опитайте отново.', 'success' => 'Аксесоарът изписан успешно.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.' ), diff --git a/resources/lang/bg/admin/asset_maintenances/form.php b/resources/lang/bg/admin/asset_maintenances/form.php index 6c038d272c..c2cc72a1cd 100644 --- a/resources/lang/bg/admin/asset_maintenances/form.php +++ b/resources/lang/bg/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Тип на поддръжка на актив', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Заглавие', - 'start_date' => 'Начална дата', - 'completion_date' => 'Крайна дата', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Стойност', 'is_warranty' => 'Подобрение на гаранцията', - 'asset_maintenance_time' => 'Време за поддръжка на актив (в дни)', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Бележки', - 'update' => 'Редакция на поддръжка на актив', - 'create' => 'Създаване на поддръжка на актив' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/bg/admin/categories/message.php b/resources/lang/bg/admin/categories/message.php index fb6fef505b..af9833423a 100644 --- a/resources/lang/bg/admin/categories/message.php +++ b/resources/lang/bg/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Категорията не беше обновена. Моля опитайте отново', - 'success' => 'Категорията е обновена успешно.' + 'success' => 'Категорията е обновена успешно.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/bg/admin/components/general.php b/resources/lang/bg/admin/components/general.php index b55bbc5ae0..46b1033f0e 100644 --- a/resources/lang/bg/admin/components/general.php +++ b/resources/lang/bg/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Оставащо', 'total' => 'Общо', 'update' => 'Обновяване на компонент', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/bg/admin/components/message.php b/resources/lang/bg/admin/components/message.php index 1a83a345f3..0d494276f6 100644 --- a/resources/lang/bg/admin/components/message.php +++ b/resources/lang/bg/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Компонентът не беше отписан, моля опитайте отново.', 'success' => 'Компонентът отписан успешно.', - 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.' + 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/bg/admin/consumables/message.php b/resources/lang/bg/admin/consumables/message.php index a1e21eea01..bb99dbdfb3 100644 --- a/resources/lang/bg/admin/consumables/message.php +++ b/resources/lang/bg/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Консумативът не беше изписан. Моля опитайте отново.', 'success' => 'Консумативът изписан успешно.', - 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.' + 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/bg/admin/custom_fields/general.php b/resources/lang/bg/admin/custom_fields/general.php index 964e7110af..3e9f5877f5 100644 --- a/resources/lang/bg/admin/custom_fields/general.php +++ b/resources/lang/bg/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Използвани от модели ', 'order' => 'Ред', 'create_fieldset' => 'Нов Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Създай нова група от полета', 'create_field' => 'Ново персонализирано поле', 'create_field_title' => 'Създай ново персонализирано поле', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/bg/admin/groups/message.php b/resources/lang/bg/admin/groups/message.php index d27a62e61c..40417df94b 100644 --- a/resources/lang/bg/admin/groups/message.php +++ b/resources/lang/bg/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Групата вече съществува!', - 'group_not_found' => 'Групата [:id] не съществува.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Полето име е задължително', 'success' => array( diff --git a/resources/lang/bg/admin/hardware/form.php b/resources/lang/bg/admin/hardware/form.php index a4e3049ca3..2051ea657f 100644 --- a/resources/lang/bg/admin/hardware/form.php +++ b/resources/lang/bg/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Потвърдете масовото изтриване на активи', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Прегледайте активите, маркирани за масово изтриване. Веднъж изтрити, активите могат да бъдат възстановени, но те вече няма да бъдат асоциирани с потребителите, на които са изписани в момента.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Ще бъдат изтрити :asset_count актива.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Масово обновяване на активи', 'bulk_update_help' => 'Тук можете да обновите множество активи едновременно. Попълнете единствено полетата, които желаете да промените. Всички празни полета няма да бъдат променени.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -40,12 +43,12 @@ return [ 'warranty' => 'Гаранция', 'warranty_expires' => 'Гаранцията изтича', 'years' => 'години', - 'asset_location' => 'Update Asset Location', - 'asset_location_update_default_current' => 'Update default location AND actual location', - 'asset_location_update_default' => 'Update only default location', - 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', - 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', - 'optional_infos' => 'Optional Information', - 'order_details' => 'Order Related Information' + 'asset_location' => 'Обновяване на местоположение', + 'asset_location_update_default_current' => 'Актуализиране на местоположение по подразбиране и текущото местоположение', + 'asset_location_update_default' => 'Актуализиране на местоположението по подразбиране', + 'asset_not_deployable' => 'Актива не може да бъде предоставен. Този активк не може да бъде изписан.', + 'asset_deployable' => 'Актива може да бъде предоставен. Този активк може да бъде изписан.', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', + 'optional_infos' => 'Допълнителна информация', + 'order_details' => 'Информация за състоянието на поръчка' ]; diff --git a/resources/lang/bg/admin/hardware/general.php b/resources/lang/bg/admin/hardware/general.php index 2acde0c4ad..866179b38b 100644 --- a/resources/lang/bg/admin/hardware/general.php +++ b/resources/lang/bg/admin/hardware/general.php @@ -6,23 +6,26 @@ return [ 'archived' => 'Архивиран', 'asset' => 'Актив', 'bulk_checkout' => 'Изписване на активи', - 'bulk_checkin' => 'Checkin Assets', + 'bulk_checkin' => 'Връщане на актив', 'checkin' => 'Връщане на актив', 'checkout' => 'Проверка на активите', 'clone' => 'Копиране на актив', 'deployable' => 'Може да бъде предоставен', - 'deleted' => 'This asset has been deleted.', + 'deleted' => 'Този актив беше изтрит.', 'edit' => 'Редакция на актив', - 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_deleted' => 'Този Модел на актив беше изтрит. Вие трябва да възстановите този модел преди да можете да възстановите актива.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Може да бъде изискван', 'requested' => 'Изискан', - 'not_requestable' => 'Not Requestable', - 'requestable_status_warning' => 'Do not change requestable status', + 'not_requestable' => 'Не може да бъде изискан', + 'requestable_status_warning' => 'Да не се сменя статуса за изискване', 'restore' => 'Възстановяване на актив', 'pending' => 'Предстоящ', 'undeployable' => 'Не може да бъде предоставян', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Преглед на актив', - 'csv_error' => 'You have an error in your CSV file:', + 'csv_error' => 'Имате грешка във вашият CSV файл:', 'import_text' => '

Upload a CSV that contains asset history. The assets and users MUST already exist in the system, or they will be skipped. Matching assets for history import happens against the asset tag. We will try to find a matching user based on the user\'s name you provide, and the criteria you select below. If you do not select any criteria below, it will simply try to match on the username format you configured in the Admin > General Settings. @@ -37,8 +40,9 @@ return [ 'csv_import_match_first' => 'Try to match users by first name (jane) format', 'csv_import_match_email' => 'Try to match users by email as username', 'csv_import_match_username' => 'Try to match users by username', - 'error_messages' => 'Error messages:', + 'error_messages' => 'Съобщение за грешка:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/bg/admin/hardware/message.php b/resources/lang/bg/admin/hardware/message.php index d8ae25ec3b..a1a07b0bdb 100644 --- a/resources/lang/bg/admin/hardware/message.php +++ b/resources/lang/bg/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Активът не беше възстановен. Моля опитайте отново.', 'success' => 'Активът възстановен успешно.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'Вашият файл беше въведен.', 'file_delete_success' => 'Вашият файл беше изтрит успешно.', 'file_delete_error' => 'Файлът не е в състояние да бъде изтрит', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/bg/admin/hardware/table.php b/resources/lang/bg/admin/hardware/table.php index 2e15ec24f6..9408d54a85 100644 --- a/resources/lang/bg/admin/hardware/table.php +++ b/resources/lang/bg/admin/hardware/table.php @@ -4,11 +4,12 @@ return [ 'asset_tag' => 'Инвентарен номер', 'asset_model' => 'Модел', - 'book_value' => 'Current Value', + 'book_value' => 'Текуща стойност', 'change' => 'Предоставяне', 'checkout_date' => 'Дата на изписване', 'checkoutto' => 'Изписан', - 'current_value' => 'Current Value', + 'components_cost' => 'Total Components Cost', + 'current_value' => 'Текуща стойност', 'diff' => 'Разлика', 'dl_csv' => 'Сваляне на CSV', 'eol' => 'EOL', @@ -22,9 +23,9 @@ return [ 'image' => 'Изображение на устройството', 'days_without_acceptance' => 'Дни без да е предаден', 'monthly_depreciation' => 'Месечна Амортизация', - 'assigned_to' => 'Assigned To', - 'requesting_user' => 'Requesting User', - 'requested_date' => 'Requested Date', - 'changed' => 'Changed', - 'icon' => 'Icon', + 'assigned_to' => 'Предоставен на', + 'requesting_user' => 'Изискан от', + 'requested_date' => 'Дата на заявката', + 'changed' => 'Променен', + 'icon' => 'Икона', ]; diff --git a/resources/lang/bg/admin/licenses/general.php b/resources/lang/bg/admin/licenses/general.php index 9ad54be10a..36a5230b5e 100644 --- a/resources/lang/bg/admin/licenses/general.php +++ b/resources/lang/bg/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Относно лицензи', - 'about_licenses' => 'Лицензите се използват за проследяване на софтуер. Те имат определен брой места, които могат да бъдат отписани към лица', + 'about_licenses_title' => 'Относно лицензи', + 'about_licenses' => 'Лицензите се използват за проследяване на софтуер. Те имат определен брой места, които могат да бъдат отписани към лица', 'checkin' => 'Вписване на потребителски лиценз', 'checkout_history' => 'История на изписванията', 'checkout' => 'Изписване на потребителски лиценз', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Софтуерни лицензи', 'user' => 'Потребител', 'view' => 'Преглед на лиценз', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/bg/admin/locations/message.php b/resources/lang/bg/admin/locations/message.php index f08af6ffb2..e6c7f9ec8e 100644 --- a/resources/lang/bg/admin/locations/message.php +++ b/resources/lang/bg/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Местоположението е свързано с поне един потребител и не може да бъде изтрито. Моля, актуализирайте потребителите, така че да не са свързани с това местоположение и опитайте отново. ', 'assoc_assets' => 'Местоположението е свързано с поне един актив и не може да бъде изтрито. Моля, актуализирайте активите, така че да не са свързани с това местоположение и опитайте отново. ', 'assoc_child_loc' => 'В избраното местоположение е присъединено едно или повече местоположения. Моля преместете ги в друго и опитайте отново.', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Изписани Активи', + 'current_location' => 'Текущо местоположение', 'create' => array( diff --git a/resources/lang/bg/admin/locations/table.php b/resources/lang/bg/admin/locations/table.php index 0c4cb1b4a3..d6f4994d2b 100644 --- a/resources/lang/bg/admin/locations/table.php +++ b/resources/lang/bg/admin/locations/table.php @@ -20,19 +20,19 @@ return [ 'parent' => 'Присъединено към', 'currency' => 'Валута на местоположението', 'ldap_ou' => 'Търсене в LDAP OU', - 'user_name' => 'User Name', - 'department' => 'Department', - 'location' => 'Location', - 'asset_tag' => 'Assets Tag', - 'asset_name' => 'Name', - 'asset_category' => 'Category', - 'asset_manufacturer' => 'Manufacturer', - 'asset_model' => 'Model', - 'asset_serial' => 'Serial', - 'asset_location' => 'Location', - 'asset_checked_out' => 'Checked Out', - 'asset_expected_checkin' => 'Expected Checkin', - 'date' => 'Date:', + 'user_name' => 'Потребителско име', + 'department' => 'Отдел', + 'location' => 'Местоположение', + 'asset_tag' => 'Инвентарен номер', + 'asset_name' => 'Име', + 'asset_category' => 'Категория', + 'asset_manufacturer' => 'Производител', + 'asset_model' => 'Модел', + 'asset_serial' => 'Сериен номер', + 'asset_location' => 'Местоположение', + 'asset_checked_out' => 'Изписано на', + 'asset_expected_checkin' => 'Очаквана дата на вписване', + 'date' => 'Дата:', 'signed_by_asset_auditor' => 'Signed By (Asset Auditor):', 'signed_by_finance_auditor' => 'Signed By (Finance Auditor):', 'signed_by_location_manager' => 'Signed By (Location Manager):', diff --git a/resources/lang/bg/admin/manufacturers/message.php b/resources/lang/bg/admin/manufacturers/message.php index 36ce40de1e..b20f677635 100644 --- a/resources/lang/bg/admin/manufacturers/message.php +++ b/resources/lang/bg/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Несъществуващ производител.', 'assoc_users' => 'Този производител е асоцииран с поне един от моделите и не може да бъде изтрит. Моля, променете връзките на моделите по отношение на този производител и опитайте отново. ', diff --git a/resources/lang/bg/admin/manufacturers/table.php b/resources/lang/bg/admin/manufacturers/table.php index c7a478c5cb..5990882ba5 100644 --- a/resources/lang/bg/admin/manufacturers/table.php +++ b/resources/lang/bg/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Email за поддръжка', 'support_phone' => 'Телефон за поддръжка', 'support_url' => 'URL адрес за поддръжка', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Обновяване на производител', 'url' => 'URL адрес', diff --git a/resources/lang/bg/admin/models/general.php b/resources/lang/bg/admin/models/general.php index 1b666e285a..661154b365 100644 --- a/resources/lang/bg/admin/models/general.php +++ b/resources/lang/bg/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Масово изтриване на модели на активите', 'bulk_delete_help' => 'Използвайте квадратчетата за отметка по-долу, за да потвърдите изтриването на избраните модели на активи. Моделите, за които има асоциирани активи, не могат да бъдат изтрити, докато активите не се асоциират с друг модел.', - 'bulk_delete_warn' => 'Ще бъдат изтрити :model_count модели на активи.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Възстановяване на модел', 'requestable' => 'Потребителите могат да поискат този модел', 'show_mac_address' => 'Визуализиране на поле за MAC адрес в активите за този модел', diff --git a/resources/lang/bg/admin/models/message.php b/resources/lang/bg/admin/models/message.php index 5315483d53..206bbd124b 100644 --- a/resources/lang/bg/admin/models/message.php +++ b/resources/lang/bg/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Моделът не съществува.', + 'no_association' => 'NO MODEL ASSOCIATED.', + 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Този модел е асоцииран с един или повече активи и не може да бъде изтрит. Моля изтрийте активите и опитайте отново.', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Моделът не беше обновен. Моля опитайте отново.', - 'success' => 'Моделът обновен успешно.' + 'success' => 'Моделът обновен успешно.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Няма полета, който да са се променили, така че нищо не е осъвременено.', - 'success' => 'Моделите са осъвременени.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Няма избрани модели, така че нищо не бе изтрито.', - 'success' => ':success_count модела бяха изтрити!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count модела бяха изтрити, но :fail_count не бяха, тъй като към тях има асоциирани активи.' ), diff --git a/resources/lang/bg/admin/settings/general.php b/resources/lang/bg/admin/settings/general.php index be7920426f..fc2bc1e10d 100644 --- a/resources/lang/bg/admin/settings/general.php +++ b/resources/lang/bg/admin/settings/general.php @@ -10,10 +10,10 @@ return [ 'admin_cc_email' => 'CC електронна поща', 'admin_cc_email_help' => 'Въведете допълнителни електронни адреси, ако желаете да се изпраща копие на електронните пощи при вписване и изписване на активи.', 'is_ad' => 'Това е активна директория на сървър', - 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alerts' => 'Известия', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Изпращане на нотификации към', - 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', + 'alert_email_help' => 'Е-майл адреси или групов е-маил за известяване, разделен със запетайка', 'alerts_enabled' => 'Включване на известията', 'alert_interval' => 'Изтичаш праг на известия (в дни)', 'alert_inv_threshold' => 'Праг на известия за запаси', @@ -21,20 +21,20 @@ return [ 'allow_user_skin_help_text' => 'Поставянето на отметка тук, ще позволи на потребителя да ползва различна UI тема от основната.', 'asset_ids' => 'ID на активи', 'audit_interval' => 'Одитен интервал', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Ако искадате да правите периодична инвентаризация на вашите активи, въведете интервала в месеци за инвентаризация. Ако въведете този интервал, всички активи ще им се смени датата за следваща инвентаризация.', 'audit_warning_days' => 'Праг за предупреждение за одит', 'audit_warning_days_help' => 'Колко дни предварително трябва да ви предупреждаваме, когато активите са дължими за одит?', - 'auto_increment_assets' => 'Generate auto-incrementing asset tags', + 'auto_increment_assets' => 'Автоматично генериране на инвентарни номера на активите', 'auto_increment_prefix' => 'Префикс (незадължително)', - 'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this', + 'auto_incrementing_help' => 'Първо включете автоматично генериране на инвентарни номера, за да включите тази опция', 'backups' => 'Архивиране', - 'backups_help' => 'Create, download, and restore backups ', - 'backups_restoring' => 'Restoring from Backup', - 'backups_upload' => 'Upload Backup', - 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_help' => 'Създаване, сваляне и възстановяване на архиви ', + 'backups_restoring' => 'Възстановяване от архив', + 'backups_upload' => 'Качване на архив', + 'backups_path' => 'Архивите на сървъра са записани в :path', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', - 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', + 'backups_large' => 'Много големите архиви може да не могат да се възстановят поради изтичане на времето на сесията и ще трябва да се възстановят ръчно през команден ред. ', 'barcode_settings' => 'Настройки на баркод', 'confirm_purge' => 'Потвърдете пречистване ', 'confirm_purge_help' => 'Моля да потвърдите изтриването като въведете думата "DELETE" в полето. Изтриването не може да се прекрати и всички записи който са маркирани за истриване, ще бъдат безвъзвратно изтрити. (Добре е да направите архив преди това.)', @@ -57,7 +57,7 @@ return [ 'barcode_type' => '2D тип на баркод', 'alt_barcode_type' => '1D тип на баркод', 'email_logo_size' => 'Квадратно лого в е-майлът изглежда най-добре. ', - 'enabled' => 'Enabled', + 'enabled' => 'Активно', 'eula_settings' => 'Настройки на EULA', 'eula_markdown' => 'Съдържанието на EULA може да бъде форматирано с Github flavored markdown.', 'favicon' => 'Favicon', @@ -67,7 +67,7 @@ return [ 'footer_text_help' => 'Този текст ще се визуализира в дясната част на футъра. Връзки могат да бъдат добавяни с използването на Github тип markdown. Нови редове, хедър тагове, изображения и т.н. могат да доведат до непредвидими резултати.', 'general_settings' => 'Общи настройки', 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy', - 'general_settings_help' => 'Default EULA and more', + 'general_settings_help' => 'Общи условия и други', 'generate_backup' => 'Създаване на архив', 'header_color' => 'Цвят на хедъра', 'info' => 'Тези настройки позволяват да конфигурирате различни аспекти на Вашата инсталация.', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP настройки', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Въведете валидни LDAP потребител и парола от базовия DN, който указахте по-горе, за да тествате коректната конфигурация. НЕОБХОДИМО Е ДА ЗАПИШЕТЕ LDAP НАСТРОЙКИТЕ ПРЕДИ ТОВА.', 'ldap_login_sync_help' => 'Това единствено проверява дали LDAP може да се синхронизира успешно. Ако вашата LDAP заявка за оторизация не е коректна е възможно потребителите да не могат да влязат. НЕОБХОДИМО Е ДА ЗАПИШЕТЕ LDAP НАСТРОЙКИТЕ ПРЕДИ ТОВА.', 'ldap_manager' => 'LDAP Manager', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Показване на изображения в електронните съобщения', 'show_images_in_email_help' => 'Премахнете отметката, ако Вашата инсталация е достъпна единствено във вътрешната мрежа или през VPN.', 'site_name' => 'Име на системата', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Име на Slack bot', - 'slack_channel' => 'Slack канал', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack настройки', - 'slack_integration_help' => 'Slack интеграцията е по избор, въпреки че крайната цел и канала са задължителни, ако искате да я ползате. За да се конфигурира Slack интеграцията трябва първо да създадете входяща връзка във вашият Slack акаунт. Кликнете на Тест интеграция бутона за да потвърдите, че всичко работи преди да запишете настройките. ', - 'slack_integration_help_button' => 'След запис на Slack информацията ще бъде показан бутон за тест.', - 'slack_test_help' => 'Тест за коректна конфигурация на интеграцията със Slack. НЕОБХОДИМО Е ПЪРВО ДА ЗАПИШЕТЕ SLACK НАСТРОЙКИТЕ.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT версия', 'support_footer' => 'Връзки към Snipe-it поддръжката във футъра', 'support_footer_help' => 'Указва визуализацията на връзки към поддръжката на Snipe-IT и потребителската документация', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'локализация, валута, местен, място, часова зона, международен, интернационализация, език, езици, превод', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/bg/admin/settings/message.php b/resources/lang/bg/admin/settings/message.php index 780610f2f5..0413b59cbd 100644 --- a/resources/lang/bg/admin/settings/message.php +++ b/resources/lang/bg/admin/settings/message.php @@ -27,17 +27,18 @@ return [ ], 'ldap' => [ 'testing' => 'Testing LDAP Connection, Binding & Query ...', - '500' => '500 Server Error. Please check your server logs for more information.', - 'error' => 'Something went wrong :(', + '500' => 'Грешка 500. Моля проверете логовете на сървъра за повече информация.', + 'error' => 'Възникна грешка :(', 'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:', 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/bg/admin/statuslabels/message.php b/resources/lang/bg/admin/statuslabels/message.php index dbe486797f..ef223c21be 100644 --- a/resources/lang/bg/admin/statuslabels/message.php +++ b/resources/lang/bg/admin/statuslabels/message.php @@ -23,7 +23,7 @@ return [ 'help' => [ 'undeployable' => 'Тези активи не могат да бъдат възлагани на никого.', - 'deployable' => 'These assets can be checked out. Once they are assigned, they will assume a meta status of Deployed.', + 'deployable' => 'Тези активи могат да бъдат изписани. След като бъдат изписани, те ще сменят статуса си на Изписани.', 'archived' => 'Тези активи не могат да бъдат отметнати и ще се показват само в архивирания изглед. Това е полезно за запазване на информация за активи за бюджетиране / исторически цели, но задържането им извън ежедневния списък на активите.', 'pending' => 'Тези активи все още не могат да бъдат прехвърляни на никого, често използвани за артикули, които са предназначени за ремонт, но се очаква да се върнат в обръщение.', ], diff --git a/resources/lang/bg/admin/users/general.php b/resources/lang/bg/admin/users/general.php index f9e70019b8..77104b5f05 100644 --- a/resources/lang/bg/admin/users/general.php +++ b/resources/lang/bg/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Печат на всички отдадени', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Софтуерни продукти, изписани на :name', 'send_email_help' => 'Трябва да предоставите е-майл адрес за този потребител за да му се изпратят името и паролата. Изпращането на име и парола може да стане при създаването на потребителя. Паролите се съхраняват криптирани и не могат да се възстановят.', 'view_user' => 'Преглед на потребител :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Само админ може да даде администраторски достъп на потребител.', 'admin_permission_warning' => 'Само потребители с административни права може да дадат админ достъп.', 'remove_group_memberships' => 'Премахни членовете на групата', - 'warning_deletion' => 'ВНИМАНИЕ:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Впиши всички асоцирани настройки към тези потребители', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/bg/admin/users/message.php b/resources/lang/bg/admin/users/message.php index 93fb86a9f7..862278d3fd 100644 --- a/resources/lang/bg/admin/users/message.php +++ b/resources/lang/bg/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Активът беше отказан.', 'bulk_manager_warn' => 'Вашите потребителски профили бяха обновени успешно, обаче вашето управителско вписване не беше запазено, защото управителят, които сте избрали бе в списъка с потребителски профили за промяна и потребителите не могат да бъдат свои управители. Моля изберете вашите потребителски профили отново, с изключение на управителя.', 'user_exists' => 'Потребителят вече съществува!', - 'user_not_found' => 'Потребител [:id] не съществува.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Полето за вход е задължително', 'user_password_required' => 'Паролата е задължителна.', 'insufficient_permissions' => 'Нямате необходимите права.', diff --git a/resources/lang/bg/auth/general.php b/resources/lang/bg/auth/general.php index bab7f4ff23..39b55dfc17 100644 --- a/resources/lang/bg/auth/general.php +++ b/resources/lang/bg/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Запомни ме', 'username_help_top' => 'Въведете вашето потребителско име за да получите линк за смяна на парола.', 'username_help_bottom' => 'Вашето потребителско име и е-майл адрес може да са еднакви или да не са, зависимост от вашата конфигурация. Ако не помните вашето потребителско име се свържете с Администратора.

Потребители които нямат въведен е-майл адрес няма да получат линк за смяна на парола. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/bg/general.php b/resources/lang/bg/general.php index 503ea77a8b..fb647c5069 100644 --- a/resources/lang/bg/general.php +++ b/resources/lang/bg/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Аксесоари', 'activated' => 'Активирано', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Аксесоар', 'accessory_report' => 'Справка за аксесоарите', 'action' => 'Действие', @@ -27,7 +28,13 @@ return [ 'audit' => 'проверка', 'audit_report' => 'Отчет за одита', 'assets' => 'Активи', + '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' => 'Активи предадени на :name', + 'assignee' => 'Assigned to', 'avatar_delete' => 'Изтриване на аватар', 'avatar_upload' => 'Качване на аватар', 'back' => 'Назад', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Групово редактиране', 'bulk_delete' => 'Групово изтриване', 'bulk_actions' => 'Пакетни действия', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'по Статус', 'cancel' => 'Отказ', 'categories' => 'Категории', @@ -66,13 +75,13 @@ return [ 'create' => 'Създаване на нов', 'created' => 'Създадени артикули', 'created_asset' => 'създадени активи', - 'created_at' => 'Created At', - 'created_by' => 'Created By', + 'created_at' => 'Създаден на', + 'created_by' => 'Създаден от', 'record_created' => 'Създаден на', 'updated_at' => 'Обновено на', 'currency' => '$', // this is deprecated 'current' => 'Текущи', - 'current_password' => 'Current Password', + 'current_password' => 'Текуща парола', 'customize_report' => 'Customize Report', 'custom_report' => 'Потребителски справки за активи', 'dashboard' => 'Табло', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Това приложение се изпълнява в режим на производство с разрешено отстраняване на грешки. Това може да изложи чувствителни данни, ако приложението ви е достъпно за външния свят. Забранете режим отстраняване на грешки чрез задаване на стойността APP_DEBUF .env във файла false.', 'delete' => 'Изтриване', 'delete_confirm' => 'Сигурни ли сте, че желаете изтриването на :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Изтрито', 'delete_seats' => 'Изтрити работни места за лиценз', 'deletion_failed' => 'Deletion failed', @@ -101,7 +111,7 @@ return [ 'email_format' => 'Email формат', 'employee_number' => 'Employee Number', 'email_domain_help' => 'Използвайте това за да генерирате email адреси при въвеждане', - 'error' => 'Error', + 'error' => 'Грешка', 'exclude_archived' => 'Exclude Archived Assets', 'exclude_deleted' => 'Exclude Deleted Assets', 'example' => 'Example: ', @@ -139,6 +149,7 @@ return [ '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' => 'Файлов формат в jpg, webp, png, gif и svg. Максимален размер е :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' => 'Зареждане', 'importing' => 'Импортиране', 'importing_help' => 'Може да импортирате активи, аксесоари, лицензи, компоненти, консумативи и потребители чрез CSV файл.

CSV файла трябва да е разделен със запетая и форматирани колони, като тези от примерен CSV файл.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Поддръжки на активи', 'item' => 'Информация', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Нямате необходимите права!', 'kits' => 'Комплекти', 'language' => 'Език', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Заявка отменена', 'save' => 'Запис', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Избор', 'select_all' => 'Select All', 'search' => 'Търсене', @@ -240,8 +254,8 @@ return [ 'signature' => 'Подпис', 'signed_off_by' => 'Signed Off By', 'skin' => 'Тема', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Вашата Slack интеграция с Snipe-IT работи!', + '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!', 'some_features_disabled' => 'DEMO MODE: Някои свойства не са разрешени за тази инсталация.', 'site_name' => 'Име на системата', 'state' => 'Област', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Сигурни ли сте, че искате да изтриете', 'submit' => 'Изпрати', 'target' => 'Цел', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Показване на време и дата', 'total_assets' => 'общо активи', 'total_licenses' => 'общо лицензи', @@ -314,7 +327,7 @@ return [ 'checked_out' => 'Checked Out', 'checked_out_to' => 'Checked out to', 'fields' => 'Fields', - 'last_checkout' => '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.', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/bg/help.php b/resources/lang/bg/help.php index 547178b246..38863d19f2 100644 --- a/resources/lang/bg/help.php +++ b/resources/lang/bg/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Допълнителна информация', - 'audit_help' => 'Отмятането на това поле, ще редактира записа, за да се отрази новото местоположение. Оставайки това поле без отметка ще се отрази местоположението на актива само при одит.

Ако актива е изписан няма да се смени леговата локация.', + 'audit_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.', 'assets' => 'Дълготрайни материални активи (ДМА), за кратко активи, се приемат всички материални ресурси на предприятието, които се използват повече от един отчетен период (за стопански и други цели). Проследават се по техния сериен или инвентарен номер.', diff --git a/resources/lang/bg/localizations.php b/resources/lang/bg/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/bg/localizations.php +++ b/resources/lang/bg/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/bg/mail.php b/resources/lang/bg/mail.php index cfd5aa7a30..8802dfc736 100644 --- a/resources/lang/bg/mail.php +++ b/resources/lang/bg/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Влезте в своята Snipe-IT инсталация използвайки данните по-долу:', 'login' => 'Вход:', 'Low_Inventory_Report' => 'Доклад за нисък запас', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Минимално количество', 'name' => 'Име', 'new_item_checked' => 'Нов артикул беше изписан под вашете име, детайлите са отдолу.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Вашите идентификационни данни за Snipe-IT', 'Accessory_Checkin_Notification' => 'Аксесоарат е вписан', 'Asset_Checkin_Notification' => 'Актива е вписан', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'Лиценза е вписан', 'Expected_Checkin_Report' => 'Очакван рапорт за вписване на актив', 'Expected_Checkin_Notification' => 'Напомняне: :name крайната дата за вписване наближава', 'Expected_Checkin_Date' => 'Наближава срока за връщане на актив който е заведен на Вас, трябва да се върна на :date', 'your_assets' => 'Преглед на вашите активи', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/bg/validation.php b/resources/lang/bg/validation.php index 9ef214a3f7..93d104559f 100644 --- a/resources/lang/bg/validation.php +++ b/resources/lang/bg/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Атрибутът: трябва да има поне: min елементи.', ], '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' => 'Полето на атрибута трябва да е налице.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Текущата ви парола е неправилна', 'dumbpwd' => 'Тази парола е твърде често срещана.', 'statuslabel_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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/ca/admin/accessories/general.php b/resources/lang/ca/admin/accessories/general.php index e9a2e69ff6..bed7f38fab 100644 --- a/resources/lang/ca/admin/accessories/general.php +++ b/resources/lang/ca/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Update Accessory', 'use_default_eula' => 'Use the primary default EULA instead.', 'use_default_eula_disabled' => 'Use the primary default EULA instead. No primary default EULA is set. Please add one in Settings.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/ca/admin/accessories/message.php b/resources/lang/ca/admin/accessories/message.php index a356463064..542f71f03c 100644 --- a/resources/lang/ca/admin/accessories/message.php +++ b/resources/lang/ca/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/ca/admin/asset_maintenances/form.php b/resources/lang/ca/admin/asset_maintenances/form.php index 2aa005c45f..785d06b08f 100644 --- a/resources/lang/ca/admin/asset_maintenances/form.php +++ b/resources/lang/ca/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Maintenance Type', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Title', - 'start_date' => 'Started', - 'completion_date' => 'Completed', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Cost', 'is_warranty' => 'Warranty Improvement', - 'asset_maintenance_time' => 'Days', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Notes', - 'update' => 'Update', - 'create' => 'Create' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/ca/admin/categories/message.php b/resources/lang/ca/admin/categories/message.php index 48cf5478e1..4e493f68b6 100644 --- a/resources/lang/ca/admin/categories/message.php +++ b/resources/lang/ca/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Category was not updated, please try again', - 'success' => 'Category updated successfully.' + 'success' => 'Category updated successfully.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/ca/admin/components/general.php b/resources/lang/ca/admin/components/general.php index f7689a7ad1..5b788a51ec 100644 --- a/resources/lang/ca/admin/components/general.php +++ b/resources/lang/ca/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Component', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/ca/admin/components/message.php b/resources/lang/ca/admin/components/message.php index 1d13970f23..0a7dd8d954 100644 --- a/resources/lang/ca/admin/components/message.php +++ b/resources/lang/ca/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Component was not checked out, please try again', 'success' => 'Component checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/ca/admin/consumables/message.php b/resources/lang/ca/admin/consumables/message.php index 48a3cfbd9f..c0d0aa7f68 100644 --- a/resources/lang/ca/admin/consumables/message.php +++ b/resources/lang/ca/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumable was not checked out, please try again', 'success' => 'Consumable checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/ca/admin/custom_fields/general.php b/resources/lang/ca/admin/custom_fields/general.php index 92bf240a76..1923aa7f4a 100644 --- a/resources/lang/ca/admin/custom_fields/general.php +++ b/resources/lang/ca/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Used By Models', 'order' => 'Order', 'create_fieldset' => 'New Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'New Custom Field', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/ca/admin/groups/message.php b/resources/lang/ca/admin/groups/message.php index f14b6339e8..495acaf36b 100644 --- a/resources/lang/ca/admin/groups/message.php +++ b/resources/lang/ca/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Group already exists!', - 'group_not_found' => 'Group [:id] does not exist.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'The name field is required', 'success' => array( diff --git a/resources/lang/ca/admin/hardware/form.php b/resources/lang/ca/admin/hardware/form.php index 22aac61d07..6bcb884bab 100644 --- a/resources/lang/ca/admin/hardware/form.php +++ b/resources/lang/ca/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirm Bulk Delete Assets', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Review the assets for bulk deletion below. Once deleted, these assets can be restored, but they will no longer be associated with any users they are currently assigned to.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'You are about to delete :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Bulk Update Assets', 'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/ca/admin/hardware/general.php b/resources/lang/ca/admin/hardware/general.php index 67226061b1..b0a48f2ce4 100644 --- a/resources/lang/ca/admin/hardware/general.php +++ b/resources/lang/ca/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Edit Asset', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Requestable', 'requested' => 'Requested', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restore Asset', 'pending' => 'Pending', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'View Asset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/ca/admin/hardware/message.php b/resources/lang/ca/admin/hardware/message.php index d2214ce00c..18f3b3fa24 100644 --- a/resources/lang/ca/admin/hardware/message.php +++ b/resources/lang/ca/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Asset was not restored, please try again', 'success' => 'Asset restored successfully.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Your file has been imported', 'file_delete_success' => 'Your file has been been successfully deleted', 'file_delete_error' => 'The file was unable to be deleted', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/ca/admin/hardware/table.php b/resources/lang/ca/admin/hardware/table.php index 6166ba8045..10629fd22c 100644 --- a/resources/lang/ca/admin/hardware/table.php +++ b/resources/lang/ca/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In/Out', 'checkout_date' => 'Checkout Date', 'checkoutto' => 'Checked Out', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Download CSV', diff --git a/resources/lang/ca/admin/licenses/general.php b/resources/lang/ca/admin/licenses/general.php index 25a536ec56..0187d076a3 100644 --- a/resources/lang/ca/admin/licenses/general.php +++ b/resources/lang/ca/admin/licenses/general.php @@ -1,8 +1,8 @@ 'About Licenses', - 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', + 'about_licenses_title' => 'About Licenses', + 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Checkout History', 'checkout' => 'Checkout License Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Software Licenses', 'user' => 'User', 'view' => 'View License', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/ca/admin/manufacturers/message.php b/resources/lang/ca/admin/manufacturers/message.php index 21a4bc5aaf..d6656683ae 100644 --- a/resources/lang/ca/admin/manufacturers/message.php +++ b/resources/lang/ca/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Manufacturer does not exist.', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', diff --git a/resources/lang/ca/admin/manufacturers/table.php b/resources/lang/ca/admin/manufacturers/table.php index 4e3ea9904d..38cab6fd91 100644 --- a/resources/lang/ca/admin/manufacturers/table.php +++ b/resources/lang/ca/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support Email', 'support_phone' => 'Support Phone', 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Update Manufacturer', 'url' => 'URL', diff --git a/resources/lang/ca/admin/models/general.php b/resources/lang/ca/admin/models/general.php index d2d77e0e8c..7e4a77adbc 100644 --- a/resources/lang/ca/admin/models/general.php +++ b/resources/lang/ca/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Restore Model', 'requestable' => 'Users may request this model', 'show_mac_address' => 'Show MAC address field in assets in this model', diff --git a/resources/lang/ca/admin/models/message.php b/resources/lang/ca/admin/models/message.php index e3b29d5b4b..5f47336526 100644 --- a/resources/lang/ca/admin/models/message.php +++ b/resources/lang/ca/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model does not exist.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model was not updated, please try again', - 'success' => 'Model updated successfully.' + 'success' => 'Model updated successfully.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'No fields were changed, so nothing was updated.', - 'success' => 'Models updated.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/ca/admin/settings/general.php b/resources/lang/ca/admin/settings/general.php index d41deaf935..92faf85c5f 100644 --- a/resources/lang/ca/admin/settings/general.php +++ b/resources/lang/ca/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'This is an Active Directory server', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Send alerts to', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Email Alerts Enabled', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Barcode Settings', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP Settings', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Site Name', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/ca/admin/settings/message.php b/resources/lang/ca/admin/settings/message.php index 174a15fbd9..48b42d1202 100644 --- a/resources/lang/ca/admin/settings/message.php +++ b/resources/lang/ca/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/ca/admin/users/general.php b/resources/lang/ca/admin/users/general.php index daa568e8bf..b097ccec69 100644 --- a/resources/lang/ca/admin/users/general.php +++ b/resources/lang/ca/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'View User :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/ca/admin/users/message.php b/resources/lang/ca/admin/users/message.php index 247a1b321e..adf26b3229 100644 --- a/resources/lang/ca/admin/users/message.php +++ b/resources/lang/ca/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'You have successfully declined this asset.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'user_exists' => 'User already exists!', - 'user_not_found' => 'User [:id] does not exist.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'The login field is required', 'user_password_required' => 'The password is required.', 'insufficient_permissions' => 'Insufficient Permissions.', diff --git a/resources/lang/ca/auth/general.php b/resources/lang/ca/auth/general.php index 78b6780927..4486f090b2 100644 --- a/resources/lang/ca/auth/general.php +++ b/resources/lang/ca/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Remember Me', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/ca/general.php b/resources/lang/ca/general.php index df4ab7975c..540bd4042b 100644 --- a/resources/lang/ca/general.php +++ b/resources/lang/ca/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accessoris', 'activated' => 'Activat', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Accessori', 'accessory_report' => 'Informe d\'Accessoris', 'action' => 'Acció', @@ -27,7 +28,13 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Registre d\'auditoria', 'assets' => 'Recursos', + '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', 'avatar_delete' => 'Delete Avatar', 'avatar_upload' => 'Upload Avatar', 'back' => 'Enrere', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Cancel·la', 'categories' => 'Categories', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Suprimeix', 'delete_confirm' => 'Are you sure you wish to delete :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'S\'ha suprimit', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Import', 'importing' => 'Importing', 'importing_help' => 'Podeu importar recursos, accessoris, llicències, components, consumibles, and usuaris via fitxer CSV.

El CSV cal que estigui delimitat per comes i formatat amb capçaleres que coincideixin amb les de les mostres de CSV a la documentació.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Manteniments de Recursos', 'item' => 'Item', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Insufficient permissions!', 'kits' => 'Predefined Kits', 'language' => 'Language', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Request Canceled', 'save' => 'Save', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Select', 'select_all' => 'Select All', 'search' => 'Search', @@ -240,8 +254,8 @@ return [ 'signature' => 'Signature', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Are you sure you wish to delete', 'submit' => 'Submit', 'target' => 'Target', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Time and Date Display', 'total_assets' => 'recursos totals', 'total_licenses' => 'total licenses', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/ca/help.php b/resources/lang/ca/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/ca/help.php +++ b/resources/lang/ca/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/ca/localizations.php b/resources/lang/ca/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/ca/localizations.php +++ b/resources/lang/ca/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/ca/mail.php b/resources/lang/ca/mail.php index b0ae7de76b..7dd8d6181c 100644 --- a/resources/lang/ca/mail.php +++ b/resources/lang/ca/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login to your new Snipe-IT installation using the credentials below:', 'login' => 'Login:', 'Low_Inventory_Report' => 'Low Inventory Report', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Name', 'new_item_checked' => 'A new item has been checked out under your name, details are below.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Your Snipe-IT credentials', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/ca/validation.php b/resources/lang/ca/validation.php index 04f8d65303..df514da6f9 100644 --- a/resources/lang/ca/validation.php +++ b/resources/lang/ca/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'The :attribute must have at least :min items.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/cs/account/general.php b/resources/lang/cs/account/general.php index 7fc060a849..59d4ab2905 100644 --- a/resources/lang/cs/account/general.php +++ b/resources/lang/cs/account/general.php @@ -1,12 +1,12 @@ 'Personal API Keys', - '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:', + 'personal_api_keys' => 'Osobní API klíče', + 'api_key_warning' => 'Při generování tokenu API se ujistěte, že jej ihned zkopírujete, protože + nebudou viditelné.', + 'api_base_url' => 'Základní adresa API je umístěna na:', '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.', + 'api_token_expiration_time' => 'API tokeny vyprší:', + 'api_reference' => 'Zkontrolujte prosím API reference pro + nalezení konkrétního koncového bodu a další API dokumentaci.', ); diff --git a/resources/lang/cs/admin/accessories/general.php b/resources/lang/cs/admin/accessories/general.php index bb7c198b6b..4c046677f7 100644 --- a/resources/lang/cs/admin/accessories/general.php +++ b/resources/lang/cs/admin/accessories/general.php @@ -17,5 +17,7 @@ return array( 'use_default_eula' => 'Použít primární výchozí EULA.', 'use_default_eula_disabled' => 'Použít výchozí EULA. Žádná výchozí EULA nenastavena. Zadejte novou v nastevení.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'Toto příslušenství ještě nelze odstranit, protože některé jeho položky jsou stále vydány.', ); diff --git a/resources/lang/cs/admin/accessories/message.php b/resources/lang/cs/admin/accessories/message.php index f0d409f5d6..ee85bb132d 100644 --- a/resources/lang/cs/admin/accessories/message.php +++ b/resources/lang/cs/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'Příslušenství nebylo převzato, zkuste to znovu', 'success' => 'Příslušenství úspěšně předáno.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Neplatný uživatel. Zkuste to znovu.' ), diff --git a/resources/lang/cs/admin/asset_maintenances/form.php b/resources/lang/cs/admin/asset_maintenances/form.php index 86d2d92504..7adc3de57c 100644 --- a/resources/lang/cs/admin/asset_maintenances/form.php +++ b/resources/lang/cs/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Druh údržby', + 'asset_maintenance_type' => 'Druh údržby majetku', 'title' => 'Název', - 'start_date' => 'Začátek', - 'completion_date' => 'Dokončeno', + 'start_date' => 'Počáteční datum', + 'completion_date' => 'Datum dokončení', 'cost' => 'Cena', 'is_warranty' => 'Rozšíření záruky', - 'asset_maintenance_time' => 'Dnů', + 'asset_maintenance_time' => 'Doba údržby majetku (ve dnech)', 'notes' => 'Poznámky', - 'update' => 'Aktualizace', - 'create' => 'Vytvořit' + 'update' => 'Upravit údržbu zařízení', + 'create' => 'Založit údržbu zařízení' ]; diff --git a/resources/lang/cs/admin/asset_maintenances/general.php b/resources/lang/cs/admin/asset_maintenances/general.php index 4027be906b..a30bb147c2 100644 --- a/resources/lang/cs/admin/asset_maintenances/general.php +++ b/resources/lang/cs/admin/asset_maintenances/general.php @@ -11,6 +11,6 @@ 'calibration' => 'Kalibrace', 'software_support' => 'Softwarová podpora', 'hardware_support' => 'Hardwarová podpora', - 'configuration_change' => 'Configuration Change', - 'pat_test' => 'PAT Test', + 'configuration_change' => 'Změna konfigurace', + 'pat_test' => 'Test PAT', ]; diff --git a/resources/lang/cs/admin/categories/message.php b/resources/lang/cs/admin/categories/message.php index 2970ef9af8..3381d07484 100644 --- a/resources/lang/cs/admin/categories/message.php +++ b/resources/lang/cs/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Kategorie nebyla aktualizována, zkuste to znovu prosím', - 'success' => 'Kategorie aktualizována úspěšně.' + 'success' => 'Kategorie aktualizována úspěšně.', + 'cannot_change_category_type' => 'Jakmile byla kategorie vytvořena, nelze měnit její typ', ), 'delete' => array( diff --git a/resources/lang/cs/admin/categories/table.php b/resources/lang/cs/admin/categories/table.php index 834a6349b2..c1b2e8ce02 100644 --- a/resources/lang/cs/admin/categories/table.php +++ b/resources/lang/cs/admin/categories/table.php @@ -4,7 +4,7 @@ return array( 'eula_text' => 'EULA', 'id' => 'ID', 'parent' => 'Nadřazená složka', - 'require_acceptance' => 'Míra souhlasu', + 'require_acceptance' => 'Vyžadovat souhlas', 'title' => 'Jméno kategorie majetku', ); diff --git a/resources/lang/cs/admin/components/general.php b/resources/lang/cs/admin/components/general.php index f6f248a861..8c42d75e77 100644 --- a/resources/lang/cs/admin/components/general.php +++ b/resources/lang/cs/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Zbývá', 'total' => 'Celkem', 'update' => 'Upravit díl', + 'checkin_limit' => 'Přijaté množství musí odpovídat, nebo být nižší než :assigned_qty' ); diff --git a/resources/lang/cs/admin/components/message.php b/resources/lang/cs/admin/components/message.php index 35730112ef..02cbd4d354 100644 --- a/resources/lang/cs/admin/components/message.php +++ b/resources/lang/cs/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Díl se nepodařilo předat, zkuste to prosím znovu', 'success' => 'Díl byl v pořádku předán.', - 'user_does_not_exist' => 'Neplatný uživatel. Zkuste to prosím znovu.' + 'user_does_not_exist' => 'Neplatný uživatel. Zkuste to prosím znovu.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/cs/admin/consumables/message.php b/resources/lang/cs/admin/consumables/message.php index ab98153e2e..c3cc881937 100644 --- a/resources/lang/cs/admin/consumables/message.php +++ b/resources/lang/cs/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Spotřební materiál se nepodařilo přidělit, pokuste se o to znovu', 'success' => 'Spotřební materiál byl v pořádku přidělen.', - 'user_does_not_exist' => 'Tento uživatel není platný, zkuste to prosím jinak.' + 'user_does_not_exist' => 'Tento uživatel není platný, zkuste to prosím jinak.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/cs/admin/custom_fields/general.php b/resources/lang/cs/admin/custom_fields/general.php index 6825f868d9..44a277e7ca 100644 --- a/resources/lang/cs/admin/custom_fields/general.php +++ b/resources/lang/cs/admin/custom_fields/general.php @@ -5,8 +5,8 @@ return [ 'manage' => 'Spravovat', 'field' => 'Pole', 'about_fieldsets_title' => 'O sadách polí', - 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.', - 'custom_format' => 'Custom Regex format...', + 'about_fieldsets_text' => 'Sady polí Vám umožňují vytvořit si vlastní hodnoty, které chcete evidovat u modelů majetku.', + 'custom_format' => 'Vlastní formát regexu...', 'encrypt_field' => 'Zašifrovat hodnotu tohoto pole v databázi', 'encrypt_field_help' => 'UPOZORNĚNÍ: Šifrování pole je udělá nevyhledatelné.', 'encrypted' => 'Šifrováno', @@ -27,23 +27,28 @@ return [ 'used_by_models' => 'Užito u modelů', 'order' => 'Pořadí', 'create_fieldset' => 'Nová sada', - 'create_fieldset_title' => 'Create a new fieldset', + 'update_fieldset' => 'Upravit sadu polí', + 'fieldset_does_not_exist' => 'Sada polí neexistuje', + 'fieldset_updated' => 'Sada polí upravena', + 'create_fieldset_title' => 'Vytvořit nový fieldset', 'create_field' => 'Nové vlastní pole', - 'create_field_title' => 'Create a new custom field', + 'create_field_title' => 'Vytvořít vlastní fieldset', 'value_encrypted' => 'Hodnota tohoto pole je zašifrována v databázi. Pouze administrátoři budou moci zobrazit dešifrovanou hodnotu', 'show_in_email' => 'Zahrnout hodnotu této kolonky do e-mailu o vyskladnění pro uživatele? Šifrované kolonky nemohou být součástí e-mailů.', - 'help_text' => 'Help Text', - 'help_text_description' => 'This is optional text that will appear below the form elements while editing an asset to provide context on the field.', - 'about_custom_fields_title' => 'About Custom Fields', - 'about_custom_fields_text' => 'Custom fields allow you to add arbitrary attributes to assets.', - 'add_field_to_fieldset' => 'Add Field to Fieldset', - 'make_optional' => 'Required - click to make optional', - 'make_required' => 'Optional - click to make required', - 'reorder' => 'Reorder', - 'db_field' => 'DB Field', - 'db_convert_warning' => 'WARNING. This field is in the custom fields table as :db_column but should be :expected.', - 'is_unique' => 'This value must be unique across all assets', + 'help_text' => 'Text nápovědy', + 'help_text_description' => 'Toto je volitelný text, který se zobrazí pod formulářovými prvky při úpravách aktiva pro poskytnutí kontextu v poli.', + 'about_custom_fields_title' => 'O vlastních polích', + 'about_custom_fields_text' => 'Vlastní pole umožňují přidat libovolné atributy k aktivům.', + 'add_field_to_fieldset' => 'Přidat pole do fieldsetu', + 'make_optional' => 'Vyžadováno - klikněte pro nastavení na volitelné', + 'make_required' => 'Volitelné - klikněte pro nastavení na vyžadované', + 'reorder' => 'Změnit pořadí', + 'db_field' => 'Databázové pole', + 'db_convert_warning' => 'VAROVÁNÍ. Toto pole je v tabulce vlastních polí jako :db_column, ale mělo by být :expected.', + 'is_unique' => 'Tato hodnota musí být jedinečná pro všechny aktiva', 'unique' => 'Unikátní', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Povolit uživateli vyhledat tyto hodnoty na stránce Zobrazit přiřazené položky', + 'display_in_user_view_table' => 'Viditelné pro uživatele', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/cs/admin/custom_fields/message.php b/resources/lang/cs/admin/custom_fields/message.php index ac35d69c85..a924d7a19e 100644 --- a/resources/lang/cs/admin/custom_fields/message.php +++ b/resources/lang/cs/admin/custom_fields/message.php @@ -51,7 +51,7 @@ return array( 'fieldset_default_value' => array( - 'error' => 'Error validating default fieldset values.', + 'error' => 'Chyba při ověřování hodnot ve fieldsetu.', ), diff --git a/resources/lang/cs/admin/departments/message.php b/resources/lang/cs/admin/departments/message.php index b14cceef5f..b50734586f 100644 --- a/resources/lang/cs/admin/departments/message.php +++ b/resources/lang/cs/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Oddělení neexistuje.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Oddělení s tímto názvem již existuje. ', 'assoc_users' => 'Toto oddělení je momentálně přiřazeno alespoň jednomu uživateli a nelze jej smazat. Aktualizujte své uživatele tak, aby již neodkázali na toto oddělení a zkuste to znovu.', 'create' => array( 'error' => 'Oddělení nebylo vytvořeno, zkuste to prosím znovu.', diff --git a/resources/lang/cs/admin/depreciations/general.php b/resources/lang/cs/admin/depreciations/general.php index cc1c3173be..8eff5ad873 100644 --- a/resources/lang/cs/admin/depreciations/general.php +++ b/resources/lang/cs/admin/depreciations/general.php @@ -6,11 +6,11 @@ return [ 'asset_depreciations' => 'Amortizace majetku', 'create' => 'Vytvořit amortizaci', 'depreciation_name' => 'Jméno amortizace', - 'depreciation_min' => 'Floor Value of Depreciation', + 'depreciation_min' => 'Minimální hodnota odpisu', 'number_of_months' => 'Počet měsíců', 'update' => 'Aktualizovat amortizaci', - 'depreciation_min' => 'Minimum Value after Depreciation', - 'no_depreciations_warning' => 'Warning: - You do not currently have any depreciations set up. - Please set up at least one depreciation to view the depreciation report.', + 'depreciation_min' => 'Minimální hodnota po odpisech', + 'no_depreciations_warning' => 'Upozornění: + V současné době nemáte nastavené žádné odpisy. + Prosím nastavte alespoň jedno odpisování pro zobrazení zprávy o odpisu.', ]; diff --git a/resources/lang/cs/admin/depreciations/table.php b/resources/lang/cs/admin/depreciations/table.php index 85bbeae692..be4807e07f 100644 --- a/resources/lang/cs/admin/depreciations/table.php +++ b/resources/lang/cs/admin/depreciations/table.php @@ -6,6 +6,6 @@ return [ 'months' => 'Měsíců', 'term' => 'Podmínka', 'title' => 'Název ', - 'depreciation_min' => 'Floor Value', + 'depreciation_min' => 'Minimální hodnota', ]; diff --git a/resources/lang/cs/admin/groups/message.php b/resources/lang/cs/admin/groups/message.php index 08724d2bc5..e385c93ccd 100644 --- a/resources/lang/cs/admin/groups/message.php +++ b/resources/lang/cs/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Skupina již existuje!', - 'group_not_found' => 'Skupina [:id] neexistuje.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Název je vyžadován', 'success' => array( diff --git a/resources/lang/cs/admin/groups/titles.php b/resources/lang/cs/admin/groups/titles.php index e4e873934f..1f05b364dd 100644 --- a/resources/lang/cs/admin/groups/titles.php +++ b/resources/lang/cs/admin/groups/titles.php @@ -10,7 +10,7 @@ return [ 'group_admin' => 'Správce skupiny', 'allow' => 'Povolit', 'deny' => 'Zakázat', - 'permission' => 'Permission', - 'grant' => 'Grant', - 'no_permissions' => 'This group has no permissions.' + 'permission' => 'Oprávnění', + 'grant' => 'Udělit', + 'no_permissions' => 'Tato skupina nemá žádná oprávnění.' ]; diff --git a/resources/lang/cs/admin/hardware/form.php b/resources/lang/cs/admin/hardware/form.php index 8c34abdad8..1874499b8c 100644 --- a/resources/lang/cs/admin/hardware/form.php +++ b/resources/lang/cs/admin/hardware/form.php @@ -2,11 +2,14 @@ return [ 'bulk_delete' => 'Potvrzení hromadného odstranění majetku', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Zkontrolujte seznam odstraňovaného majetku níže. Jakmile jej potvrdíte, nebude možné tento majetek obnovit a budou zrušeny i vazby na uživatele, kteří jej měli v držení.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Chystáte se odstranit :asset_count položek majetku.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Hromadná aktualizace majetku', 'bulk_update_help' => 'Tento formulář umožňuje hromadnou editaci majetku. Vyplňte pouze položky, které chcete změnit. Jakékoliv prázné položky zůstanou nezměněny. ', - 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', + 'bulk_update_warn' => 'Chystáte se upravit vlastnosti 1 položky.|Chystáte se upravit vlastnosti :asset_count položek.', 'checkedout_to' => 'Vydané komu', 'checkout_date' => 'Datum vydání', 'checkin_date' => 'Datum převzetí', @@ -40,12 +43,12 @@ return [ 'warranty' => 'Záruka', 'warranty_expires' => 'Záruka končí', 'years' => 'roky', - 'asset_location' => 'Update Asset Location', - 'asset_location_update_default_current' => 'Update default location AND actual location', - 'asset_location_update_default' => 'Update only default location', - 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', - 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Zpracovává se...', - 'optional_infos' => 'Optional Information', - 'order_details' => 'Order Related Information' + 'asset_location' => 'Upravit umístění', + 'asset_location_update_default_current' => 'Aktualizovat výchozí umístění A aktuální umístění', + 'asset_location_update_default' => 'Aktualizovat pouze výchozí umístění', + 'asset_not_deployable' => 'Tento majetek nelze vyskladnit.', + 'asset_deployable' => 'Tento majetek lze vyskladnit.', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', + 'optional_infos' => 'Volitelné informace', + 'order_details' => 'Informace související s objednávkou' ]; diff --git a/resources/lang/cs/admin/hardware/general.php b/resources/lang/cs/admin/hardware/general.php index f581ba6319..e778245824 100644 --- a/resources/lang/cs/admin/hardware/general.php +++ b/resources/lang/cs/admin/hardware/general.php @@ -6,39 +6,43 @@ return [ 'archived' => 'Archivováno', 'asset' => 'Majetek', 'bulk_checkout' => 'Vyskladnit majetek', - 'bulk_checkin' => 'Checkin Assets', + 'bulk_checkin' => 'Převzít majetek', 'checkin' => 'Převzít majetek', 'checkout' => 'Pokladní majetek', 'clone' => 'Klonovat majetek', 'deployable' => 'Připraveno k nasazení', - 'deleted' => 'This asset has been deleted.', + 'deleted' => 'Tento majetek byl odstraněn.', 'edit' => 'Upravit majetek', - 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_deleted' => 'Tento model majetku byl odstraněn. Před obnovením majetku musíte model obnovit.', + 'model_invalid' => 'Model tohoto majetku je neplatný.', + 'model_invalid_fix' => 'Měli byste tento majetek upravit dříve, než jej vydáte, či přijmete.', 'requestable' => 'Lze vyžádat', 'requested' => 'Požadováno', - 'not_requestable' => 'Not Requestable', - 'requestable_status_warning' => 'Do not change requestable status', + 'not_requestable' => 'Nelze vyžádat', + 'requestable_status_warning' => 'Neměnit požadovaný stav', 'restore' => 'Obnovit zařízení', 'pending' => 'Čekající', - 'undeployable' => 'Nepřiřaditelné', + 'undeployable' => 'Nelze vyskladnit', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Zobrazit majetek', - 'csv_error' => 'You have an error in your CSV file:', + 'csv_error' => 'Máte chybu v souboru CSV:', 'import_text' => '

- Upload a CSV that contains asset history. The assets and users MUST already exist in the system, or they will be skipped. Matching assets for history import happens against the asset tag. We will try to find a matching user based on the user\'s name you provide, and the criteria you select below. If you do not select any criteria below, it will simply try to match on the username format you configured in the Admin > General Settings. + Nahrajte CSV obsahující historii aktiv. Majetek a uživatelé MUSÍ již v systému existovat, nebo budou přeskočeni. Odpovídající aktiva se dopárují přes inventární číslo. Pokusíme se najít odpovídající uživatele na základě uživatelského jména a kritérií, která vyberete níže. Pokud nevyberete žádná kritéria níže, pokusíme se data spárovat pomocí uživatelského jména, který jste nakonfigurovali v Admin > Obecná nastavení.

-

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

+

Pole zahrnutá do CSV musí odpovídat hlavičkám: Inventární číslo, Jméno, Datum převzetí majetku, Datum vydání majetku. Všechna další pole budou ignorována.

-

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

+

Odevzdání majetku: prázdná nebo budoucí data automaticky odhlásí majetek přidruženému uživateli. Vyloučením sloupce odevzdání majetku nastaví datum odevzdání na dnešek.

', - 'csv_import_match_f-l' => 'Try to match users by firstname.lastname (jane.smith) format', - 'csv_import_match_initial_last' => 'Try to match users by first initial last name (jsmith) format', - 'csv_import_match_first' => 'Try to match users by first name (jane) format', - 'csv_import_match_email' => 'Try to match users by email as username', - 'csv_import_match_username' => 'Try to match users by username', - 'error_messages' => 'Error messages:', - 'success_messages' => 'Success messages:', - 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Uživatelsky definovaný export' + 'csv_import_match_f-l' => 'Formát jmeno.prijmeni (karel.novak)', + 'csv_import_match_initial_last' => 'Formát jprijmeni (knovak)', + 'csv_import_match_first' => 'Formát jmeno (karel)', + 'csv_import_match_email' => 'Email jako uživatelské jméno', + 'csv_import_match_username' => 'Uživatelské jméno podle uživatelského jména', + 'error_messages' => 'Chybové zprávy:', + 'success_messages' => 'Úspěšné zprávy:', + 'alert_details' => 'Podrobnosti naleznete níže.', + 'custom_export' => 'Uživatelsky definovaný export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/cs/admin/hardware/message.php b/resources/lang/cs/admin/hardware/message.php index 1d7b64934f..66f6bb90a9 100644 --- a/resources/lang/cs/admin/hardware/message.php +++ b/resources/lang/cs/admin/hardware/message.php @@ -5,7 +5,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.', 'does_not_exist' => 'Majetek nenalezen.', - 'does_not_exist_or_not_requestable' => 'That asset does not exist or is not requestable.', + 'does_not_exist_or_not_requestable' => 'Tento majetek neexistuje nebo jej nelze vyskladnit.', 'assoc_users' => 'Majetek je předán svému uživateli a nelze jej odstranit. Před odstraněním jej nejprve převezměte. ', 'create' => [ @@ -17,12 +17,14 @@ return [ 'error' => 'Majetek se nepodařilo upravit, zkuste to prosím znovu', 'success' => 'Majetek úspěšně aktualizován.', 'nothing_updated' => 'Nebyla zvolena žádná pole, nic se tedy neupravilo.', - 'no_assets_selected' => 'No assets were selected, so nothing was updated.', + 'no_assets_selected' => 'Nebyl zvolen žádný majetek, nic se tedy neupravilo.', ], 'restore' => [ 'error' => 'Majetek se nepodařilo obnovit, zkuste to prosím později', 'success' => 'Majetek byl v pořádku obnoven.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Váš soubor byl importován', 'file_delete_success' => 'Váš soubor byl úspěšně odstraněn', 'file_delete_error' => 'Soubor nelze odstranit', + 'header_row_has_malformed_characters' => 'Jeden nebo více sloupců obsahuje v záhlaví poškozené UTF-8 znaky', + 'content_row_has_malformed_characters' => 'Jedna nebo více hodnot v prvním řádku obsahu obsahuje poškozené UTF-8 znaky', ], diff --git a/resources/lang/cs/admin/hardware/table.php b/resources/lang/cs/admin/hardware/table.php index 3f0c7cd0cc..7b60a1b204 100644 --- a/resources/lang/cs/admin/hardware/table.php +++ b/resources/lang/cs/admin/hardware/table.php @@ -4,11 +4,12 @@ return [ 'asset_tag' => 'Označení majetku', 'asset_model' => 'Model', - 'book_value' => 'Current Value', + 'book_value' => 'Aktuální hodnota', 'change' => 'Příjem/Výdej', 'checkout_date' => 'Datum vydání', 'checkoutto' => 'Vydané', - 'current_value' => 'Current Value', + 'components_cost' => 'Total Components Cost', + 'current_value' => 'Aktuální hodnota', 'diff' => 'Rozdíl', 'dl_csv' => 'Stáhnout CSV', 'eol' => 'Konec životnosti', @@ -21,10 +22,10 @@ return [ 'title' => 'Majetek ', 'image' => 'Obrázek zařízení', 'days_without_acceptance' => 'Dní bez schválení', - 'monthly_depreciation' => 'Monthly Depreciation', - 'assigned_to' => 'Assigned To', - 'requesting_user' => 'Requesting User', - 'requested_date' => 'Requested Date', - 'changed' => 'Changed', + 'monthly_depreciation' => 'Měsíční odpisy', + 'assigned_to' => 'Přiděleno', + 'requesting_user' => 'Požaduje uživatel', + 'requested_date' => 'Požadované datum', + 'changed' => 'Upraveno', 'icon' => 'Ikona', ]; diff --git a/resources/lang/cs/admin/kits/general.php b/resources/lang/cs/admin/kits/general.php index f724ecbf07..f1a1f10ab6 100644 --- a/resources/lang/cs/admin/kits/general.php +++ b/resources/lang/cs/admin/kits/general.php @@ -1,50 +1,50 @@ 'About Predefined Kits', - 'about_kits_text' => 'Predefined Kits let you quickly check out a collection of items (assets, licenses, etc) to a user. This can be helpful when your onboarding process is consistent across many users and all users receive the same items.', - 'checkout' => 'Checkout Kit ', - 'create_success' => 'Kit was successfully created.', - 'create' => 'Create Predefined Kit', - 'update' => 'Update Predefined Kit', - 'delete_success' => 'Kit was successfully deleted.', - 'update_success' => 'Kit was successfully updated.', - 'none_models' => 'There are not enough available assets for :model to checkout. :qty are required. ', - 'none_licenses' => 'There are not enough available seats for :license to checkout. :qty are required. ', - 'none_consumables' => 'There are not enough available units of :consumable to checkout. :qty are required. ', - 'none_accessory' => 'There are not enough available units of :accessory to checkout. :qty are required. ', - 'append_accessory' => 'Append Accessory', - 'update_appended_accessory' => 'Update appended Accessory', - 'append_consumable' => 'Append Consumable', - 'update_appended_consumable' => 'Update appended Consumable', - 'append_license' => 'Append license', - 'update_appended_license' => 'Update appended license', - 'append_model' => 'Append model', - 'update_appended_model' => 'Update appended model', - 'license_error' => 'License already attached to kit', - 'license_added_success' => 'License added successfully', - 'license_updated' => 'License was successfully updated', - 'license_none' => 'License does not exist', - 'license_detached' => 'License was successfully detached', - 'consumable_added_success' => 'Consumable added successfully', - 'consumable_updated' => 'Consumable was successfully updated', - 'consumable_error' => 'Consumable already attached to kit', - 'consumable_deleted' => 'Delete was successful', - 'consumable_none' => 'Consumable does not exist', - 'consumable_detached' => 'Consumable was successfully detached', - 'accessory_added_success' => 'Accessory added successfully', - 'accessory_updated' => 'Accessory was successfully updated', - 'accessory_detached' => 'Accessory was successfully detached', - 'accessory_error' => 'Accessory already attached to kit', - 'accessory_deleted' => 'Delete was successful', - 'accessory_none' => 'Accessory does not exist', - 'checkout_success' => 'Checkout was successful', - 'checkout_error' => 'Checkout error', - 'kit_none' => 'Kit does not exist', - 'kit_created' => 'Kit was successfully created', - 'kit_updated' => 'Kit was successfully updated', - 'kit_not_found' => 'Kit not found', - 'kit_deleted' => 'Kit was successfully deleted', - 'kit_model_updated' => 'Model was successfully updated', - 'kit_model_detached' => 'Model was successfully detached', + 'about_kits_title' => 'O předdefinovaných sadách', + 'about_kits_text' => 'Předdefinované sady vám umožní rychle se podívat na sbírku položek (majetek, licence atd.) pro uživatele. To může být užitečné, pokud je váš proces předávání majetku stejný napříč mnoha uživateli a všichni uživatelé obdrží stejné položky.', + 'checkout' => 'Vydat sadu ', + 'create_success' => 'Sada byla úspěšně vytvořena.', + 'create' => 'Vytvořit předdefinovanou sadu', + 'update' => 'Aktualizovat předdefinovanou sadu', + 'delete_success' => 'Sada byla úspěšně smazána.', + 'update_success' => 'Sada byla úspěšně aktualizována.', + 'none_models' => 'Není dostatek dostupných položek pro :model aby mohl být vydán. Potřeba :qty. ', + 'none_licenses' => 'Není dostatek volných licencí :license aby mohl být vydán. Potřeba :qty. ', + 'none_consumables' => 'Není dostatek dostupných položek pro :consumable aby mohl být vydán. Potřeba :qty. ', + 'none_accessory' => 'Není dostatek dostupných položek :accessory aby mohl být vydán. Potřeba :qty. ', + 'append_accessory' => 'Přiložit příslušenství', + 'update_appended_accessory' => 'Aktualizovat přiložené příslušenství', + 'append_consumable' => 'Přiložit spotřební materiál', + 'update_appended_consumable' => 'Upravit přiložený spotřební materiál', + 'append_license' => 'Přiložit licenci', + 'update_appended_license' => 'Upravit přiloženou licenci', + 'append_model' => 'Přiložit model', + 'update_appended_model' => 'Upravit přiložený model', + 'license_error' => 'Licence již je v sadě', + 'license_added_success' => 'Licence byla úspěšně přidána', + 'license_updated' => 'Lincece byla úspěšně aktualizována', + 'license_none' => 'Licence neexistuje', + 'license_detached' => 'Licence úspěšně odpojena', + 'consumable_added_success' => 'Spotřební materiál úspěšně přidán', + 'consumable_updated' => 'Spotřební materiál byl úspěšně upraven', + 'consumable_error' => 'Spotřební materiál již je v sadě', + 'consumable_deleted' => 'Smazání bylo úspěšné', + 'consumable_none' => 'Spotřební materiál neexistuje', + 'consumable_detached' => 'Spotřební materiál byl úspěšně odpojen', + 'accessory_added_success' => 'Příslušenství úspěšně přidáno', + 'accessory_updated' => 'Příslušenství úspěšně aktualizováno', + 'accessory_detached' => 'Příslušenství úspěšně odpojeno', + 'accessory_error' => 'Příslušenství již je připojené k sadě', + 'accessory_deleted' => 'Smazání bylo úspěšné', + 'accessory_none' => 'Příslušenství neexistuje', + 'checkout_success' => 'Vydání proběhlo úspěšně', + 'checkout_error' => 'Chyba vydání', + 'kit_none' => 'Kit neexistuje', + 'kit_created' => 'Kit byl úspěšně vytvořen', + 'kit_updated' => 'Sada byla úspěšně aktualizována', + 'kit_not_found' => 'Sada nenalezena', + 'kit_deleted' => 'Sada byla úspěšně smazána', + 'kit_model_updated' => 'Model byl úspěšně aktualizován', + 'kit_model_detached' => 'Model byl úspěšně odpojen', ]; diff --git a/resources/lang/cs/admin/licenses/general.php b/resources/lang/cs/admin/licenses/general.php index c2b56ec195..896eea554c 100644 --- a/resources/lang/cs/admin/licenses/general.php +++ b/resources/lang/cs/admin/licenses/general.php @@ -1,8 +1,8 @@ 'O licencích', - 'about_licenses' => 'Licence jsou používány ke sledování softwaru. Mají stanovený počet uživatelských licencí, které mohou být přiděleny jednotlivcům', + 'about_licenses_title' => 'O licencích', + 'about_licenses' => 'Licence jsou používány ke sledování softwaru. Mají stanovený počet uživatelských licencí, které mohou být přiděleny jednotlivcům', 'checkin' => 'Převzít jednu licenci', 'checkout_history' => 'Historie', 'checkout' => 'Předat jednu licenci', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Softwarové licence', 'user' => 'Uživatel', 'view' => 'Ukaž licenci', + 'delete_disabled' => 'Tuto položku zatím nelze odstranit, neboť jsou vydány některé license.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Hromadně převzít všechny licence', + 'modal' => 'Tímto převezmete jednu licenci. | Tímto převezmete všech :checkedout_seats_count licencí.', + 'enabled_tooltip' => 'Převzít všechny licence vydané jak uživatelům, tak i zařízením', + 'disabled_tooltip' => 'To nelze provést, neboť není vydaná žádná licence', + 'success' => 'Lincece úspěšně převzata! | Licence úspěšně převzaty!', + 'log_msg' => 'Převzato pomocí hromadného zpracování licencí', + ], + + 'checkout_all' => [ + 'button' => 'Vydat všchny licence', + 'modal' => 'Tímto vydáte jednu licenci prvnímu dostupnému uživateli. | Tímto vydáte všech :available_seats_count licencí dostupným uživatelům, přičemž dostupný uživatel je takový, který ještě nepřevzal tuto licenci a přitom má zapnutou volbu automatického přiřazování licencí.', + 'enabled_tooltip' => 'Vydat všechny (dostupné) licence všem uživatelům', + 'disabled_tooltip' => 'Nelze provést, neboť nejsou volné žádné licence', + 'success' => 'Licence byla úspěšně vydána! | :count licenses licencí bylo úspěšně vydáno!', + 'error_no_seats' => 'Nejsou žádné volné (nevydané) licence.', + 'warn_not_enough_seats' => 'Licence byly přiřazeny :count uživatelům, ale již nezbyly žádné volné.', + 'warn_no_avail_users' => 'Nelze provést, neboť již nezbývají žádní uživatelé, kteří tuto licenci nemají přiřazenu.', + 'log_msg' => 'Vydáno pomocí hromadného zpracování licencí', + + + ], + ], ); diff --git a/resources/lang/cs/admin/licenses/message.php b/resources/lang/cs/admin/licenses/message.php index 9d85ccfb2b..c541538872 100644 --- a/resources/lang/cs/admin/licenses/message.php +++ b/resources/lang/cs/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'License does not exist or you do not have permission to view it.', + 'does_not_exist' => 'Licence neexistuje nebo nemáte oprávnění k jejímu zobrazení.', 'user_does_not_exist' => 'Uživatel neexistuje.', 'asset_does_not_exist' => 'Majetek, který se pokoušíte spojit s touto licencí, neexistuje.', 'owner_doesnt_match_asset' => 'Majetek, který se pokoušíte spojit s touto licencí, vlastní někdo jiný než osoba vybraná v rozbalovací nabídce k této licenci.', diff --git a/resources/lang/cs/admin/locations/message.php b/resources/lang/cs/admin/locations/message.php index 87326d47b4..7286792e86 100644 --- a/resources/lang/cs/admin/locations/message.php +++ b/resources/lang/cs/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Toto umístění je spojeno s alespoň jedním uživatelem a nemůže být smazáno. Aktualizujte uživatele aby nenáleželi k tomuto umístění a zkuste to znovu. ', 'assoc_assets' => 'Toto umístění je spojeno s alespoň jedním majetkem a nemůže být smazáno. Aktualizujte majetky tak aby nenáleželi k tomuto umístění a zkuste to znovu. ', 'assoc_child_loc' => 'Toto umístění je nadřazené alespoň jednomu umístění a nelze jej smazat. Aktualizujte své umístění tak, aby na toto umístění již neodkazovalo a zkuste to znovu. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Přiřazený majetek', + 'current_location' => 'Současné umístění', 'create' => array( diff --git a/resources/lang/cs/admin/locations/table.php b/resources/lang/cs/admin/locations/table.php index 1443c5f250..4feede6729 100644 --- a/resources/lang/cs/admin/locations/table.php +++ b/resources/lang/cs/admin/locations/table.php @@ -30,11 +30,11 @@ return [ 'asset_model' => 'Model', 'asset_serial' => 'Sériové číslo', 'asset_location' => 'Umístění', - 'asset_checked_out' => 'Checked Out', - 'asset_expected_checkin' => 'Expected Checkin', + 'asset_checked_out' => 'Vydané', + 'asset_expected_checkin' => 'Očekávané datum vrácení', 'date' => 'Datum:', - 'signed_by_asset_auditor' => 'Signed By (Asset Auditor):', - 'signed_by_finance_auditor' => 'Signed By (Finance Auditor):', - 'signed_by_location_manager' => 'Signed By (Location Manager):', - 'signed_by' => 'Signed Off By:', + 'signed_by_asset_auditor' => 'Podepsáno (auditor majetku):', + 'signed_by_finance_auditor' => 'Podepsáno (Finanční auditor):', + 'signed_by_location_manager' => 'Podepsáno (Manager):', + 'signed_by' => 'Odepsal:', ]; diff --git a/resources/lang/cs/admin/manufacturers/message.php b/resources/lang/cs/admin/manufacturers/message.php index be73b254ee..cb071e267d 100644 --- a/resources/lang/cs/admin/manufacturers/message.php +++ b/resources/lang/cs/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Výrobce neexistuje.', 'assoc_users' => 'Tento výrobce je uveden minimálně u jednoho modelu a nemůže být smazán. Odstraňte výrobce z modelů a zkuste to znovu. ', diff --git a/resources/lang/cs/admin/manufacturers/table.php b/resources/lang/cs/admin/manufacturers/table.php index 4254e895a7..ea8d942683 100644 --- a/resources/lang/cs/admin/manufacturers/table.php +++ b/resources/lang/cs/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Emailová podpora', 'support_phone' => 'Telefonní podpora', 'support_url' => 'URL podpory', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Upravit Výrobce', 'url' => 'URL', diff --git a/resources/lang/cs/admin/models/general.php b/resources/lang/cs/admin/models/general.php index 04ac152826..64b707d790 100644 --- a/resources/lang/cs/admin/models/general.php +++ b/resources/lang/cs/admin/models/general.php @@ -3,10 +3,10 @@ return array( 'about_models_title' => 'O modelech majetku', 'about_models_text' => 'Modely majetku jsou způsoby seskupení shodných majetků. "MBP 2013", "iPhone 6s" atd.', - 'deleted' => 'This model has been deleted.', + 'deleted' => 'Tento model byl odstraněn.', 'bulk_delete' => 'Hromadné mazání modelů majetku', 'bulk_delete_help' => 'Pomocí zaškrtávacích kolonek potvrďte smazání označených modelů majetku. Modely majetku, ke kterým je přiřazen majetek nemohou být smazány dokud jim přiřazený majetek nebude přeřazen k jinému modulu.', - 'bulk_delete_warn' => 'Chystáte se smazat :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Obnovení Modelu', 'requestable' => 'Uživatelé můžou požádat o tento model', 'show_mac_address' => 'Zobrazovat pole MAC adresa u zařízení tohoto druhu', diff --git a/resources/lang/cs/admin/models/message.php b/resources/lang/cs/admin/models/message.php index 421bf5625e..5e6e5f4efa 100644 --- a/resources/lang/cs/admin/models/message.php +++ b/resources/lang/cs/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model neexistuje.', + 'no_association' => 'BEZ PŘIŘAZENÉHO MODELU.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model nebyl aktualizován, zkuste to prosím znovu', - 'success' => 'Model byl úspěšně aktualizován.' + 'success' => 'Model byl úspěšně aktualizován.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Žádné pole nebyly změněny, takže nic nebylo aktualizováno.', - 'success' => 'Modely byly aktualizovány.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Nebyly vybrány žádné modely, takže nebylo nic smazáno.', - 'success' => ':success_count modelů smazáno!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count modelů smazáno, ale :fail_count nebylo možné smazat protože pořád mají přiřazený majetek.' ), diff --git a/resources/lang/cs/admin/reports/general.php b/resources/lang/cs/admin/reports/general.php index 662535f37f..ea78128896 100644 --- a/resources/lang/cs/admin/reports/general.php +++ b/resources/lang/cs/admin/reports/general.php @@ -2,9 +2,9 @@ return [ 'info' => 'Zvolte možnosti zprávy o majetku.', - 'deleted_user' => 'Deleted user', + 'deleted_user' => 'Odstraněný uživatel', 'send_reminder' => 'Poslat připomínku', 'reminder_sent' => 'Připomínka odeslána', - 'acceptance_deleted' => 'Acceptance request deleted', - 'acceptance_request' => 'Acceptance request' + 'acceptance_deleted' => 'Žádost o přijetí byla smazána', + 'acceptance_request' => 'Žádost o přijetí' ]; \ No newline at end of file diff --git a/resources/lang/cs/admin/settings/general.php b/resources/lang/cs/admin/settings/general.php index 4fdf30f6ae..277d97bd01 100644 --- a/resources/lang/cs/admin/settings/general.php +++ b/resources/lang/cs/admin/settings/general.php @@ -4,16 +4,16 @@ return [ 'ad' => 'Active Directory', 'ad_domain' => 'Doména služby Active Directory', 'ad_domain_help' => 'Toto je někdy stejné jako vaše emailová doména, ale ne vždy.', - 'ad_append_domain_label' => 'Append domain name', - 'ad_append_domain' => 'Append domain name to username field', - 'ad_append_domain_help' => 'User isn\'t required to write "username@domain.local", they can just type "username".', + 'ad_append_domain_label' => 'Uveďte název domény', + 'ad_append_domain' => 'Připojit doménu k uživatelskému jménu', + 'ad_append_domain_help' => 'Uživatel není povinen psát "uzivatel@domena.local", může pouze napsat "uzivatel".', 'admin_cc_email' => 'Ve skryté kopii', 'admin_cc_email_help' => 'Chcete-li poslat kopii e-mailů pro check-in / checkout, které jsou uživatelům zaslány na další e-mailový účet, zadejte je zde. V opačném případě nechte toto pole prázdné.', 'is_ad' => 'Toto je server služby Active Directory', - 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alerts' => 'Výstrahy', + 'alert_title' => 'Aktualizace nastavení oznámení', 'alert_email' => 'Zasílat upozornění na', - 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', + 'alert_email_help' => 'E-mailové adresy nebo distribuční seznamy kterým chcete odesílat výstrahy, oddělené čárkou', 'alerts_enabled' => 'Upozornění zapnutá', 'alert_interval' => 'Mez upozornění na vypršení (ve dnech)', 'alert_inv_threshold' => 'Mez upozornění skladu', @@ -21,23 +21,23 @@ return [ 'allow_user_skin_help_text' => 'Zaškrtnutí tohoto políčka umožní uživateli přepsat vzhled uživatelského rozhraní jiným.', 'asset_ids' => 'ID majetku', 'audit_interval' => 'Interval auditu', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Pokud máte povinnost provádět pravidelný fyzický audit svých aktiv, zadejte interval v měsících, které používáte. Pokud tuto hodnotu aktualizujete, všechna „další data auditu“ pro aktiva s nadcházejícím datem auditu budou aktualizována.', 'audit_warning_days' => 'Prah výstrahy auditu', 'audit_warning_days_help' => 'Kolik dní předem bychom vás měli varovat, když jsou aktiva splatná pro audit?', - 'auto_increment_assets' => 'Generate auto-incrementing asset tags', + 'auto_increment_assets' => 'Generovat automatické inventární číslo položek', 'auto_increment_prefix' => 'Předpona (volitnelná)', - 'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this', + 'auto_incrementing_help' => 'Pro nastavení musíte nejdřív povolit automatickou generaci inventárních čísel', 'backups' => 'Zálohy', - 'backups_help' => 'Create, download, and restore backups ', - 'backups_restoring' => 'Restoring from Backup', - 'backups_upload' => 'Upload Backup', - 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', - 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', - 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', + 'backups_help' => 'Vytvořit, stáhnout a obnovit zálohy ', + 'backups_restoring' => 'Obnovit ze zálohy', + 'backups_upload' => 'Nahrát zálohu', + 'backups_path' => 'Zálohy jsou uloženy v :path', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_logged_out' => 'Všichni stávající uživatelé, včetně vás, budou odhlášeni po dokončení obnovy.', + 'backups_large' => 'Velmi velké zálohy mohou při obnovování způsobit time out chybu a možná budou muset být spuštěny přes příkazový řádek. ', 'barcode_settings' => 'Nastavení čárového kódu', 'confirm_purge' => 'Potvrdit vyčištění', - 'confirm_purge_help' => 'Enter the text "DELETE" in the box below to purge your deleted records. This action cannot be undone and will PERMANENTLY delete all soft-deleted items and users. (You should make a backup first, just to be safe.)', + 'confirm_purge_help' => 'Zadejte text "DELETE" do pole níže pro odstranění odstraněných záznamů. Tato akce nemůže být vrácena zpět a TRVALE smaže všechny položky a uživatele. (Měli byste nejdříve vytvořit zálohu, pro jistotu.)', 'custom_css' => 'Vlastní CSS', 'custom_css_help' => 'Zadejte libovolné vlastní CSS, které chcete použít. Nezahrnujte <style></style> tagy.', 'custom_forgot_pass_url' => 'Uživatelem určená URL adresa pro resetování hesla', @@ -53,38 +53,41 @@ return [ 'display_eol' => 'Zobrazit EOL v tabulkovém zobrazení', 'display_qr' => 'Zobrazit kódy', 'display_alt_barcode' => 'Zobrazit 1D čárový kód', - 'email_logo' => 'Email Logo', + 'email_logo' => 'Email logo', 'barcode_type' => 'Typ 2D čárového kódu', 'alt_barcode_type' => 'Typ 1D čárového kódu', - 'email_logo_size' => 'Square logos in email look best. ', - 'enabled' => 'Enabled', + 'email_logo_size' => 'Čtvercová loga vypadají na mailu nejlépe. ', + 'enabled' => 'Povoleno', 'eula_settings' => 'Nastavení EULA', 'eula_markdown' => 'Tato EULA umožňuje Github markdown.', - 'favicon' => 'Favicon', - 'favicon_format' => 'Accepted filetypes are ico, png, and gif. Other image formats may not work in all browsers.', - 'favicon_size' => 'Favicons should be square images, 16x16 pixels.', + 'favicon' => 'Favicona', + 'favicon_format' => 'Povolené typy souborů jsou ico, png a gif. Ostatní formáty obrázků nemusí fungovat ve všech prohlížečích.', + 'favicon_size' => 'Favikony by měly být čtvercové obrázky, 16 x 16 pixelů.', 'footer_text' => 'Další text do zápatí ', 'footer_text_help' => 'Tento text se zobrazí v pravém zápatí. Odkazy jsou povoleny pomocí Github flavored markdown. Zalamování řádků, záhlaví, obrázky atd. mohou mít za následek nepředvídatelné výsledky.', 'general_settings' => 'Obecné nastavení', - 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy', - 'general_settings_help' => 'Default EULA and more', + 'general_settings_keywords' => 'technická podpora, podpis, přijetí, e-mailový formát, formát uživatelského jména, obrázky, na stránce, náhled, eula, licenční podmínky, hlavní stránka, soukromí', + 'general_settings_help' => 'Výchozí EULA a další', 'generate_backup' => 'Vytvořit zálohu', 'header_color' => 'Barva záhlaví', 'info' => 'Tato nastavení umožňují zvolit určité prvky instalace.', - 'label_logo' => 'Label Logo', - 'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ', + 'label_logo' => 'Logo štítku', + 'label_logo_size' => 'Čtvercová loga vypadají nejlépe - zobrazí se vpravo nahoře v každém inventárním číslem. ', 'laravel' => 'Verze Laravel', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group' => 'Výchozí skupina oprávnění', + 'ldap_default_group_info' => 'Vyberte skupinu, kterou chcete přiřadit novým uživatelům. Nezapomeňte, že uživatel přebírá oprávnění skupiny, která je mu přiřazena.', + 'no_default_group' => 'Žádná výchozí skupina', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', 'ldap_enabled' => 'LDAP povoleno', 'ldap_integration' => 'LDAP integrace', 'ldap_settings' => 'Nastavení LDAP', - 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', + 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate a klíč pro LDAP jsou obvykle užitečné pouze v konfiguracích Google Workspace společně s "Secure LDAP." Oba jsou vyžadovány.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Zadejte platné LDAP uživatelské jméno a heslo ze základu rozlišeného názvu který jste určili výše a vyzkoušejte zda je LDAP přihlašování správně nastavené. NEJPRVE JE TŘEBA ULOŽIT ZMĚNĚNÉ NASTAVENÍ LDAP.', 'ldap_login_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', @@ -115,16 +118,16 @@ return [ 'ldap_emp_num' => 'LDAP číslo zaměstnance', 'ldap_email' => 'LDAP email', 'ldap_test' => 'Test LDAP', - 'ldap_test_sync' => 'Test LDAP Synchronization', + 'ldap_test_sync' => 'Test LDAP synchronizace', 'license' => 'Softwarová licence', 'load_remote_text' => 'Vzdálené skripty', 'load_remote_help_text' => 'Tato instalace Snipe-IT může nahrávat skripty z vnějšího světa.', - 'login' => 'Login Attempts', - 'login_attempt' => 'Login Attempt', - 'login_ip' => 'IP Address', - 'login_success' => 'Success?', + 'login' => 'Pokusů o přihlášení', + 'login_attempt' => 'Pokus o přihlášení', + 'login_ip' => 'IP adresa', + 'login_success' => 'Hotovo?', 'login_user_agent' => 'User Agent', - 'login_help' => 'List of attempted logins', + 'login_help' => 'Seznam pokusů o přihlášení', 'login_note' => 'Přihlásit se Poznámka', 'login_note_help' => 'Volitelně můžete na obrazovce přihlášení zadat několik vět, například pomoci lidem, kteří nalezli ztracené nebo ukradené zařízení. Toto pole akceptuje značku Github flavedmarkdown', 'login_remote_user_text' => 'Volby vzdáleného přihlašování uživatele', @@ -134,8 +137,8 @@ return [ 'login_common_disabled_help' => 'Tato volba vypne ostatní způsoby ověřování. Použijte ji pouze pokud jste si jistí, že už funguje přihlašování REMOTE_USER', 'login_remote_user_custom_logout_url_text' => 'Uživatelsky určená URL adresa odhlašování', 'login_remote_user_custom_logout_url_help' => 'Pokud je zde uvedena adresa URL, uživatelé budou po odhlášení ze Snipe-IT přesměrování na tuto URL. To je užitečné pro správné ukončení relací Authentication providera.', - 'login_remote_user_header_name_text' => 'Custom user name header', - 'login_remote_user_header_name_help' => 'Use the specified header instead of REMOTE_USER', + 'login_remote_user_header_name_text' => 'Záhlaví uživatelského jména', + 'login_remote_user_header_name_help' => 'Použít zadané záhlaví místo REMOTE_USER', 'logo' => 'Logo', 'logo_print_assets' => 'Použijte v tisku', 'logo_print_assets_help' => 'Používat branding na seznamech k tisku ', @@ -147,66 +150,71 @@ return [ 'php' => 'Verze PHP', 'php_info' => 'PHP Info', 'php_overview' => 'PHP', - 'php_overview_keywords' => 'phpinfo, system, info', + 'php_overview_keywords' => 'phpinfo, systém, info', 'php_overview_help' => 'PHP System info', 'php_gd_info' => 'Je nutné nainstalovat php-gd pro zobrazení QR kódů. Více v instalační příručce.', 'php_gd_warning' => 'PHP pluginy pro zpracování obrazu a GD nejsou nainstalovány.', 'pwd_secure_complexity' => 'Složitost hesla', 'pwd_secure_complexity_help' => 'Zvolte pravidla složitosti hesla, která chcete vynutit.', - 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Password cannot be the same as first name, last name, email, or username', - 'pwd_secure_complexity_letters' => 'Require at least one letter', - 'pwd_secure_complexity_numbers' => 'Require at least one number', - 'pwd_secure_complexity_symbols' => 'Require at least one symbol', - 'pwd_secure_complexity_case_diff' => 'Require at least one uppercase and one lowercase', + 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Heslo nemůže být stejné jako křestní jméno, příjmení, e-mail nebo uživatelské jméno', + 'pwd_secure_complexity_letters' => 'Vyžaduje alespoň jedno písmeno', + 'pwd_secure_complexity_numbers' => 'Vyžaduje alespoň jedno číslo', + 'pwd_secure_complexity_symbols' => 'Vyžaduje alespoň jeden symbol', + 'pwd_secure_complexity_case_diff' => 'Vyžaduje alespoň jedno velké písmeno a jedno malé písmeno', 'pwd_secure_min' => 'Minimální znaky hesla', - 'pwd_secure_min_help' => 'Minimum permitted value is 8', + 'pwd_secure_min_help' => 'Minimální povolená hodnota je 8', 'pwd_secure_uncommon' => 'Zabraňte běžným heslům', 'pwd_secure_uncommon_help' => 'To uživatelům zakáže používání běžných hesel z nejvyšších 10 000 hesel hlášených v porušení.', 'qr_help' => 'Nejprve povolte QR kódy', 'qr_text' => 'Text QR kódu', 'saml' => 'SAML', - 'saml_title' => 'Update SAML settings', - 'saml_help' => 'SAML settings', - 'saml_enabled' => 'SAML enabled', - 'saml_integration' => 'SAML Integration', - 'saml_sp_entityid' => 'Entity ID', + 'saml_title' => 'Upravit nastavení SAML', + 'saml_help' => 'Nastavení SAML', + 'saml_enabled' => 'SAML povolen', + 'saml_integration' => 'Integrace SAML', + 'saml_sp_entityid' => 'ID entity', 'saml_sp_acs_url' => 'Assertion Consumer Service (ACS) URL', 'saml_sp_sls_url' => 'Single Logout Service (SLS) URL', - 'saml_sp_x509cert' => 'Public Certificate', + 'saml_sp_x509cert' => 'Veřejný certifikát', 'saml_sp_metadata_url' => 'URL metadat', - 'saml_idp_metadata' => 'SAML IdP Metadata', - 'saml_idp_metadata_help' => 'You can specify the IdP metadata using a URL or XML file.', - 'saml_attr_mapping_username' => 'Attribute Mapping - Username', - 'saml_attr_mapping_username_help' => 'NameID will be used if attribute mapping is unspecified or invalid.', - 'saml_forcelogin_label' => 'SAML Force Login', - 'saml_forcelogin' => 'Make SAML the primary login', - 'saml_forcelogin_help' => 'You can use \'/login?nosaml\' to get to the normal login page.', - 'saml_slo_label' => 'SAML Single Log Out', - 'saml_slo' => 'Send a LogoutRequest to IdP on Logout', - 'saml_slo_help' => 'This will cause the user to be first redirected to the IdP on logout. Leave unchecked if the IdP doesn\'t correctly support SP-initiated SAML SLO.', - 'saml_custom_settings' => 'SAML Custom Settings', - 'saml_custom_settings_help' => 'You can specify additional settings to the onelogin/php-saml library. Use at your own risk.', - 'saml_download' => 'Download Metadata', + 'saml_idp_metadata' => 'SAML IdP metadata', + 'saml_idp_metadata_help' => 'Můžete zadat IdP metadata pomocí URL nebo XML souboru.', + 'saml_attr_mapping_username' => 'Mapování atributů - uživatelské jméno', + 'saml_attr_mapping_username_help' => 'NameID bude použito, pokud není specifikováno nebo není zadané přiřazování atributů.', + 'saml_forcelogin_label' => 'SAML vynucené přihlášení', + 'saml_forcelogin' => 'Nastavit SAML jako primární přihlášení', + 'saml_forcelogin_help' => 'Můžete použít \'/login?nosaml\', abyste se dostali na normální přihlašovací stránku.', + 'saml_slo_label' => 'Single Log Out (SLO) SAML', + 'saml_slo' => 'Odeslat LogoutRequest na idP při odhlášení', + 'saml_slo_help' => 'Toto způsobí, že uživatel bude při odhlášení nejprve přesměrován na IdP. Nechte nezaškrtnuto, pokud IdP nepodporuje SP SAML SLO.', + 'saml_custom_settings' => 'Vlastní nastavení SAML', + 'saml_custom_settings_help' => 'Můžete zadat vlastní nastavení do knihovny onelogin/php-saml. Na vlastní riziko.', + 'saml_download' => 'Stáhnout metadata', 'setting' => 'Nastavení', 'settings' => 'Nastavení', 'show_alerts_in_menu' => 'Zobrazovat upozornění v horní nabídce', 'show_archived_in_list' => 'Archivovaný majetek', 'show_archived_in_list_text' => 'Zobrazit archivovaný majetek ve výpisu „veškerý majetek“', - 'show_assigned_assets' => 'Show assets assigned to assets', - 'show_assigned_assets_help' => 'Display assets which were assigned to the other assets in View User -> Assets, View User -> Info -> Print All Assigned and in Account -> View Assigned Assets.', + 'show_assigned_assets' => 'Zobrazit aktiva přiřazená k aktivům', + 'show_assigned_assets_help' => 'Zobrazí položky, které byly přiřazeny k ostatním položkám v Zobrazit uživatele -> Aktiva, Zobrazit uživatele -> Info -> Vytisknout všechny přiřazené a v účtu -> Zobrazit přiřazené aktiva.', 'show_images_in_email' => 'Zobrazovat obrázky v e-mailech', 'show_images_in_email_help' => 'Zrušte zaškrtnutí této kolonky, pokud je instalace Snipe-IT za VPN nebo uzavřenou sítí a uživatelé mimo síť nebudou moci do svých e-mailů načíst obrázky z této instalace.', 'site_name' => 'Název stránky', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack kanál', - 'slack_endpoint' => 'Slack koncový bod', - 'slack_integration' => 'Nastavení Slack', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Po uložení informací ke Slack se zobrazí tlačítko pro vyzkoušení.', - 'slack_test_help' => 'Zkontrolujte, zda je správně nakonfigurována integrace Slack. MUSÍTE NEJDŘÍVE ULOŽIT NASTAVENÍ SLACK POKUD BYLO ZMĚNĚNO.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Verze Snipe-IT', 'support_footer' => 'Odkazy v zápatí na podporu ', 'support_footer_help' => 'Určete, kdo uvidí odkazy na Snipe-IT podporu a uživatelskou příručku', @@ -216,9 +224,9 @@ return [ 'update' => 'Upravit nastavení', 'value' => 'Hodnota', 'brand' => 'Opatřit značkou', - 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', - 'brand_help' => 'Logo, Site Name', - 'web_brand' => 'Web Branding Type', + 'brand_keywords' => 'zápatí, logo, tisk, motiv, skin, záhlaví, barvy, css', + 'brand_help' => 'Logo, název webu', + 'web_brand' => 'Typ webového brandingu', 'about_settings_title' => 'O nastavení', 'about_settings_text' => 'Tato nastavení umožňují zvolit určité prvky instalace.', 'labels_per_page' => 'Štítků na stránku', @@ -229,7 +237,7 @@ return [ 'privacy_policy' => 'Zásady ochrany soukromí', 'privacy_policy_link_help' => 'Pokud je zde zahrnuta URL adresa, odkaz na zásady ochrany osobních údajů budou obsaženy do zápatí aplikace a pokud bude zahrnuto ve všech e-mailech, které systém odešle, díky čemuž bude odpovídat požadavkům předpisu GDPR. ', 'purge' => 'Vyčištění odstraněných záznamů', - 'purge_deleted' => 'Purge Deleted ', + 'purge_deleted' => 'Vymazat smazané ', 'labels_display_bgutter' => 'Spodní okraj štítku', 'labels_display_sgutter' => 'Boční okraj štítku', 'labels_fontsize' => 'Velikost písma štítku', @@ -274,52 +282,57 @@ return [ 'unique_serial' => 'Neopakující se sériová čísla', 'unique_serial_help_text' => 'Zaškrtnutím tohoto políčka bude vynucena jedinečnost seriových čísel položek majetku', 'zerofill_count' => 'Délka značek majetku včetně zerofill', - 'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.', - 'oauth_title' => 'OAuth API Settings', + 'username_format_help' => 'Toto nastavení bude použito pouze v případě, že není zadáno uživatelské jméno a my pro vás musíme vygenerovat uživatelské jméno.', + 'oauth_title' => 'Nastavení OAuth API', 'oauth' => 'OAuth', - 'oauth_help' => 'Oauth Endpoint Settings', - 'asset_tag_title' => 'Update Asset Tag Settings', - 'barcode_title' => 'Update Barcode Settings', - 'barcodes' => 'Barcodes', - 'barcodes_help_overview' => 'Barcode & QR settings', - 'barcodes_help' => 'This will attempt to delete cached barcodes. This would typically only be used if your barcode settings have changed, or if your Snipe-IT URL has changed. Barcodes will be re-generated when accessed next.', - 'barcodes_spinner' => 'Attempting to delete files...', - 'barcode_delete_cache' => 'Delete Barcode Cache', - 'branding_title' => 'Update Branding Settings', - 'general_title' => 'Update General Settings', - 'mail_test' => 'Send Test', - 'mail_test_help' => 'This will attempt to send a test mail to :replyto.', - 'filter_by_keyword' => 'Filter by setting keyword', - 'security' => 'Security', - 'security_title' => 'Update Security Settings', - 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', - 'security_help' => 'Two-factor, Password Restrictions', - 'groups_keywords' => 'permissions, permission groups, authorization', - 'groups_help' => 'Account permission groups', - 'localization' => 'Localization', - 'localization_title' => 'Update Localization Settings', - 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', - 'localization_help' => 'Language, date display', - 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', - 'asset_tags_help' => 'Incrementing and prefixes', - 'labels' => 'Labels', - 'labels_title' => 'Update Label Settings', - 'labels_help' => 'Label sizes & settings', - 'purge' => 'Purge', - 'purge_keywords' => 'permanently delete', - 'purge_help' => 'Purge Deleted Records', - 'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.', + 'oauth_help' => 'Nastavení koncových bodů Oauth', + 'asset_tag_title' => 'Aktualizovat nastavení inventárních čísel', + 'barcode_title' => 'Aktualizovat nastavení čárového kódu', + 'barcodes' => 'Čárové kódy', + 'barcodes_help_overview' => 'Čárový kód & nastavení QR', + 'barcodes_help' => 'Toto se pokusí odstranit čárové kódy v mezipaměti. Obvykle se používá v případě, kdy došlo ke změně nastavení čárového kódu nebo v případě, že se změnila URL adresa Snipe-IT. Kódy budou vygenerovány znovu.', + 'barcodes_spinner' => 'Pokouším se odstranit soubory...', + 'barcode_delete_cache' => 'Odstranit mezipaměť čárových kódů', + 'branding_title' => 'Aktualizovat nastavení brandingu', + 'general_title' => 'Aktualizovat obecné nastavení', + 'mail_test' => 'Odeslat test', + 'mail_test_help' => 'Pokusím se odeslat testovací e-mail na :replyto.', + 'filter_by_keyword' => 'Filtrovat podle klíčového slova', + 'security' => 'Zabezpečení', + 'security_title' => 'Aktualizovat nastavení zabezpečení', + 'security_keywords' => 'heslo, hesla, požadavky, dvou fázové, dvou-fázové, běžná hesla, vzdálené přihlášení, odhlášení, autentifikace', + 'security_help' => 'Dvou-faktorové, Omezení hesel', + 'groups_keywords' => 'oprávnění, skupiny oprávnění, autorizace', + 'groups_help' => 'Skupiny oprávnění k účtu', + 'localization' => 'Lokalizace', + 'localization_title' => 'Aktualizovat nastavení lokalizace', + 'localization_keywords' => 'lokalizace, měna, místní, místní, časové pásmo, mezinárodní, internatinalizace, jazyk, jazyky, překlad', + 'localization_help' => 'Jazyk, zobrazení data', + 'notifications' => 'Oznámení', + 'notifications_help' => 'E-mailová oznámení a inventura', + 'asset_tags_help' => 'Nárůst a prefixy', + 'labels' => 'Štítky', + 'labels_title' => 'Upravit nastavení štítků', + 'labels_help' => 'Velikost štítků & nastavení', + 'purge' => 'Smazat', + 'purge_keywords' => 'trvale odstranit', + 'purge_help' => 'Vymazat smazané záznamy', + 'ldap_extension_warning' => 'Nevypadá to, že LDAP rozšíření je nainstalováno nebo povoleno na tomto serveru. Stále můžete uložit vaše nastavení, ale budete muset povolit LDAP rozšíření pro PHP, než bude fungovat LDAP synchronizace nebo přihlášení.', 'ldap_ad' => 'LDAP/AD', - 'employee_number' => 'Employee Number', - 'create_admin_user' => 'Create a User ::', - 'create_admin_success' => 'Success! Your admin user has been added!', - 'create_admin_redirect' => 'Click here to go to your app login!', - 'setup_migrations' => 'Database Migrations ::', - 'setup_no_migrations' => 'There was nothing to migrate. Your database tables were already set up!', - 'setup_successful_migrations' => 'Your database tables have been created', - 'setup_migration_output' => 'Migration output:', - 'setup_migration_create_user' => 'Next: Create User', - 'ldap_settings_link' => 'LDAP Settings Page', - 'slack_test' => 'Test Integration', + 'employee_number' => 'Osobní číslo', + 'create_admin_user' => 'Vytvořit uživatele ::', + 'create_admin_success' => 'Úspěch! Administrátorský účet byl přidán!', + 'create_admin_redirect' => 'Klikněte zde pro přihlášení do aplikace!', + 'setup_migrations' => 'Migrace databáze ::', + 'setup_no_migrations' => 'Nebylo co migrovat. Databázové tabulky již byly nastaveny!', + 'setup_successful_migrations' => 'Vaše databázové tabulky byly vytvořeny', + 'setup_migration_output' => 'Výstup migrace:', + 'setup_migration_create_user' => 'Další: Vytvořit uživatele', + 'ldap_settings_link' => 'Nastavení LDAP', + 'slack_test' => 'Test Integrace', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/cs/admin/settings/message.php b/resources/lang/cs/admin/settings/message.php index f2c817d570..8d68c2b531 100644 --- a/resources/lang/cs/admin/settings/message.php +++ b/resources/lang/cs/admin/settings/message.php @@ -11,8 +11,8 @@ return [ 'file_deleted' => 'Záložní soubor byl úspěšně smazán. ', 'generated' => 'Byla úspěšně vytvořena nová záloha.', 'file_not_found' => 'Tento záložní soubor nebyl na serveru nalezen.', - 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', - 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' + 'restore_warning' => 'Ano, obnovit. Potvrzuji, že toto přepíše existující data v databázi. Tato akce taky odhlásí všechny uživatele (včetně vás).', + 'restore_confirm' => 'Jste si jisti, že chcete obnovit databázi z :filename?' ], 'purge' => [ 'error' => 'Během čištění došlo k chybě. ', @@ -20,24 +20,25 @@ return [ 'success' => 'Vymazané záznamy byly úspěšně vyčištěny.', ], 'mail' => [ - 'sending' => 'Sending Test Email...', - 'success' => 'Mail sent!', - 'error' => 'Mail could not be sent.', - 'additional' => 'No additional error message provided. Check your mail settings and your app log.' + 'sending' => 'Odesílání testovacího e-mailu...', + 'success' => 'E-mail odeslán!', + 'error' => 'E-mail se nepodařilo odeslat.', + 'additional' => 'Porobná zpárva o chybě není dostupná. Zkontrolujte nastavení pošty a log.' ], 'ldap' => [ - 'testing' => 'Testing LDAP Connection, Binding & Query ...', - '500' => '500 Server Error. Please check your server logs for more information.', - 'error' => 'Something went wrong :(', - 'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:', - 'testing_authentication' => 'Testing LDAP Authentication...', - 'authentication_success' => 'User authenticated against LDAP successfully!' + 'testing' => 'Testování LDAP připojení, vazby a dotazu ...', + '500' => '500 Server error. Zkontrolujte serverové logy pro více informací.', + 'error' => 'Něco se pokazilo :(', + 'sync_success' => '10 příkladových uživatelů z LDAP serveru podle vašeho nastavení:', + 'testing_authentication' => 'Testování LDAP ověření...', + 'authentication_success' => 'Uživatel byl úspěšně ověřen přes LDAP!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/cs/admin/settings/table.php b/resources/lang/cs/admin/settings/table.php index 22db5c84ed..b2b64e2f6c 100644 --- a/resources/lang/cs/admin/settings/table.php +++ b/resources/lang/cs/admin/settings/table.php @@ -1,6 +1,6 @@ 'Created', - 'size' => 'Size', + 'created' => 'Vytvořeno', + 'size' => 'Velikost', ); diff --git a/resources/lang/cs/admin/statuslabels/message.php b/resources/lang/cs/admin/statuslabels/message.php index 53b8b132f3..39c106b074 100644 --- a/resources/lang/cs/admin/statuslabels/message.php +++ b/resources/lang/cs/admin/statuslabels/message.php @@ -23,7 +23,7 @@ return [ 'help' => [ 'undeployable' => 'Tyto prostředky nelze nikomu přiřadit.', - 'deployable' => 'These assets can be checked out. Once they are assigned, they will assume a meta status of Deployed.', + 'deployable' => 'Tento majetek může být vydán. Jakmile je přiřazen, změní se jeho status na Vydáno.', 'archived' => 'Tyto prostředky nelze odhlásit a zobrazí se pouze v zobrazení Archivováno. To je užitečné pro uchovávání informací o prostředcích pro účely rozpočtování / historických účelů, ale jejich uchování mimo denní seznam aktiv.', 'pending' => 'Tento majetek zatím nemůže být přiřazen nikomu, často používanému pro položky, které jsou určeny k opravě, ale očekává se, že se vrátí do oběhu.', ], diff --git a/resources/lang/cs/admin/users/general.php b/resources/lang/cs/admin/users/general.php index dc8ad1ec6b..c6bad24444 100644 --- a/resources/lang/cs/admin/users/general.php +++ b/resources/lang/cs/admin/users/general.php @@ -17,28 +17,38 @@ return [ 'last_login' => 'Poslední přihlášení', 'ldap_config_text' => 'Nastavení konfigurace LDAP lze nalézt v menu Správce> Nastavení. Vybrané (volitelně) místo bude nastaven pro všechny importované uživatele.', 'print_assigned' => 'Vypsat všechna přiřazení', - 'email_assigned' => 'Email List of All Assigned', - 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'email_assigned' => 'Odeslat seznam aktuálně přiřazeného majetku', + 'user_notified' => 'Uživateli byl zaslán e-mail se seznamem aktuálně přiřazeného majetku.', + 'auto_assign_label' => 'Zahrnout tohoto uživatele do automatického přiřazování licencí', + 'auto_assign_help' => 'Nezahrnout tohoto uživatele do automatického přiřazování licencí', 'software_user' => 'Software vydaný pro :name', - 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', + 'send_email_help' => 'Musíte zadat e-mailovou adresu tohoto uživatele pro odeslání přihlašovacích údajů. Odeslání přihlašovacích údajů lze provést pouze při vytvoření uživatele. Hesla jsou zašifrována a nelze je zjistit po tom, co jsou uložena.', 'view_user' => 'Zobraz uživatele', 'usercsv' => 'CSV soubor', 'two_factor_admin_optin_help' => 'Vaše současná nastavení administrátora umožňují selektivní vynucení dvoufaktorového ověřování. ', - 'two_factor_enrolled' => '2FA Device Enrolled ', - 'two_factor_active' => '2FA Active ', - 'user_deactivated' => 'User cannot login', - 'user_activated' => 'User can login', - 'activation_status_warning' => 'Do not change activation status', - 'group_memberships_helpblock' => 'Only superadmins may edit group memberships.', - 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', - 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', - 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', - 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', - 'update_user_assets_status' => 'Update all assets for these users to this status', - 'checkin_user_properties' => 'Check in all properties associated with these users', - 'remote_label' => 'This is a remote user', - 'remote' => 'Remote', - 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', - 'not_remote_label' => 'This is not a remote user', + 'two_factor_enrolled' => '2FA zařízení přihlášeno ', + 'two_factor_active' => '2FA aktivní ', + 'user_deactivated' => 'Uživatel nemá právo k přihlášení', + 'user_activated' => 'Uživatel se může přihlásit', + 'activation_status_warning' => 'Neměnit stav aktivace', + 'group_memberships_helpblock' => 'Pouze superadmini mohou upravovat členství ve skupině.', + 'superadmin_permission_warning' => 'Pouze superadmini mohou povolit uživateli superadmin přístup.', + 'admin_permission_warning' => 'Pouze uživatelé s právy administrátorů a výše mohou udělit uživatelskému adminovi přístup.', + 'remove_group_memberships' => 'Odebrat členství ve skupině', + 'warning_deletion_information' => 'Chystáte se zaškrtnout VŠECHNY položky od níže uvedených :count uživatelů. Super administrátorská jména jsou zvýrazněna červeně.', + 'update_user_assets_status' => 'Aktualizovat všechny položky pro tyto uživatele na tento stav', + 'checkin_user_properties' => 'Zkontrolujte všechny vlastnosti spojené s těmito uživateli', + 'remote_label' => 'Toto je vzdálený uživatel', + 'remote' => 'Vzdálený', + 'remote_help' => 'To může být užitečné, pokud potřebujete filtrovat vzdálené uživatele, kteří nikdy nebo jen zřídka přicházejí do firmy.', + 'not_remote_label' => 'Toto není vzdálený uživatel', + 'vip_label' => 'VIP uživatel', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Založit uživatele', + 'create_user_page_explanation' => 'Tyto údaje použijtete pro první přihlášení na stránku.', + 'email_credentials' => 'Poslat přihlašovací údaje', + 'email_credentials_text' => 'Odešle moje přihlašovací údaje na e-mailovou adresu výše', + 'next_save_user' => 'Další: Uložení uživatele', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/cs/admin/users/message.php b/resources/lang/cs/admin/users/message.php index 4988416de9..db6b0d3b40 100644 --- a/resources/lang/cs/admin/users/message.php +++ b/resources/lang/cs/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Úspěšně jste odmítli tento majetek.', 'bulk_manager_warn' => 'Uživatelé byli úspěšně aktualizováni, položka správce však nebyla uložena, protože správce, který jste si vybrali, byl také v seznamu uživatelů, který má být upraven, a uživatelé nemusí být jejich vlastní správce. Zvolte své uživatele znovu, kromě správce.', 'user_exists' => 'Uživatel již existuje!', - 'user_not_found' => 'Uživatel [:id] neexistuje.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Přihlašovací pole je povinné', 'user_password_required' => 'Je vyžadováno heslo.', 'insufficient_permissions' => 'Nedostatečná oprávnění.', @@ -14,8 +14,8 @@ return array( 'ldap_not_configured' => 'Integrace LDAP nebyla pro tuto instalaci nakonfigurována.', 'password_resets_sent' => 'Vybraným uživatelům, kteří jsou aktivováni a mají platné e-mailové adresy, byl zaslán odkaz pro obnovení hesla.', 'password_reset_sent' => 'Odkaz pro obnovení hesla byl odeslán na :email!', - 'user_has_no_email' => 'This user does not have an email address in their profile.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_email' => 'Tento uživatel nemá e-mailovou adresu ve svém profilu.', + 'user_has_no_assets_assigned' => 'Tento uživatel nemá přiřazené žádné položky', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Tento uživatel nemá nastaven žádný e-mail.', + 'success' => 'Uživatel byl informován o svém aktuálním majetku.' ) ); \ No newline at end of file diff --git a/resources/lang/cs/admin/users/table.php b/resources/lang/cs/admin/users/table.php index b1c74daaf7..29c51897cb 100644 --- a/resources/lang/cs/admin/users/table.php +++ b/resources/lang/cs/admin/users/table.php @@ -10,7 +10,7 @@ return array( 'email' => 'Email', 'employee_num' => 'Osobní číslo', 'first_name' => 'Jméno', - 'groupnotes' => 'Select a group to assign to the user, remember that a user takes on the permissions of the group they are assigned. Use ctrl+click (or cmd+click on MacOS) to deselect groups.', + 'groupnotes' => 'Vyberte skupinu pro přiřazení k uživateli. Nezapomeňte, že uživatel přebírá oprávnění skupiny, která je jim přidělena. Použitím ctrl + kliknutí (nebo cmd+kliknutí na MacOS) zrušíte výběr.', 'id' => 'ID', 'inherit' => 'Převzít', 'job' => 'Pracovní pozice', diff --git a/resources/lang/cs/auth.php b/resources/lang/cs/auth.php index db310aa1bb..23ed48cd0c 100644 --- a/resources/lang/cs/auth.php +++ b/resources/lang/cs/auth.php @@ -13,8 +13,8 @@ return array( | */ - 'failed' => 'These credentials do not match our records.', - 'password' => 'The provided password is incorrect.', - 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'failed' => 'Tyto přihlašovací údaje neodpovídají žádnému záznamu.', + 'password' => 'Zadané heslo není správné.', + 'throttle' => 'Příliš mnoho pokusů o přihlášení. Zkuste to, prosím, znovu za :seconds vteřin.', ); diff --git a/resources/lang/cs/auth/general.php b/resources/lang/cs/auth/general.php index a31e95336a..f91d81a818 100644 --- a/resources/lang/cs/auth/general.php +++ b/resources/lang/cs/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Pamatovat si mě', 'username_help_top' => 'Zadejte své uživatelské jméno pro zaslání e-mailu s odkazem pro obnovení hesla.', 'username_help_bottom' => 'Vaše uživatelské jméno a e-mailová adresa mohou být stejná, ale nemusí být, záleží na Vašem nastavení. Pokud si nepamatujete Vaše uživatelské jméno, kontaktujte Vašeho správce.

Uživatelským jménům bez přidružené e-mailové adresy nebude zaslán odkaz pro obnovu hesla. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/cs/button.php b/resources/lang/cs/button.php index 24a6d9b706..e674be04c7 100644 --- a/resources/lang/cs/button.php +++ b/resources/lang/cs/button.php @@ -4,7 +4,7 @@ return [ 'actions' => 'Akce', 'add' => 'Přidej nový', 'cancel' => 'Zrušit', - 'checkin_and_delete' => 'Checkin All / Delete User', + 'checkin_and_delete' => 'Vrátit vše / Smazat uživatele', 'delete' => 'Smazat', 'edit' => 'Upravit', 'restore' => 'Obnovit', diff --git a/resources/lang/cs/general.php b/resources/lang/cs/general.php index 5fd7f3c74e..24ab4f4284 100644 --- a/resources/lang/cs/general.php +++ b/resources/lang/cs/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Příslušenství', 'activated' => 'Aktivováno', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Příslušenství', 'accessory_report' => 'Zpráva o doplňcích', 'action' => 'Akce', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Správce', 'add_seats' => 'Přidaná licenční místa', - 'age' => "Age", + 'age' => "Stáří", 'all_assets' => 'Všechna zařízení', 'all' => 'Vše', 'archived' => 'Archivováno', @@ -27,7 +28,13 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Záznamy auditu', 'assets' => 'Zařízení', - 'assigned_to' => 'Assigned to :name', + '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' => 'Přiřazeno :name', + 'assignee' => 'Assigned to', 'avatar_delete' => 'Smazat avatara', 'avatar_upload' => 'Nahrát avatara', 'back' => 'Zpět', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Hromadná úprava', 'bulk_delete' => 'Hromadné odstranění', 'bulk_actions' => 'Hromadné akce', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'podle stavu', 'cancel' => 'Storno', 'categories' => 'Kategorie', @@ -66,8 +75,8 @@ return [ 'create' => 'Vytvořit nové', 'created' => 'Položka vytvořena', 'created_asset' => 'vytvořit majetek', - 'created_at' => 'Created At', - 'created_by' => 'Created By', + 'created_at' => 'Vytvořeno v', + 'created_by' => 'Vytvořil/a', 'record_created' => 'Záznam vytvořen', 'updated_at' => 'Aktualizováno', 'currency' => 'Kč', // this is deprecated @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Tato aplikace běží ve výrobním režimu s povoleným laděním. To znamená že citlivá data mohou být přístupná vnějšímu světu. Deaktivujte režim ladění nastavením hodnoty APP_DEBUG v souboru .env na false.', 'delete' => 'Odstranit', 'delete_confirm' => 'Opravdu chcete smazat :item?', + 'delete_confirm_no_undo' => 'Opravdu chcete odstranit :item? Tuto operaci nelze zvrátit.', 'deleted' => 'Odstraněno', 'delete_seats' => 'Vymazaná licenční místa', 'deletion_failed' => 'Odstranění se nezdařilo', @@ -102,9 +112,9 @@ return [ 'employee_number' => 'Číslo zaměstnance', 'email_domain_help' => 'Toto je použito na generování e-mailových adres při importu', 'error' => 'Chyba', - 'exclude_archived' => 'Exclude Archived Assets', - 'exclude_deleted' => 'Exclude Deleted Assets', - 'example' => 'Example: ', + 'exclude_archived' => 'Vyloučit archivované položky', + 'exclude_deleted' => 'Vyloučit odstraněné položky', + 'example' => 'Příklad: ', 'filastname_format' => 'Iniciál Jména Příjmení (jsmith@example.com)', 'firstname_lastname_format' => 'Jméno Příjmení (jane.smith@example.com)', 'firstname_lastname_underscore_format' => 'Jméno Příjmení (jan_novak@example.com)', @@ -120,7 +130,7 @@ return [ 'files' => 'Soubory', 'file_name' => 'Soubor', 'file_type' => 'Typ souboru', - 'filesize' => 'File Size', + 'filesize' => 'Velikost souboru', 'file_uploads' => 'Nahrání souboru', 'file_upload' => 'Nahrání souboru', 'generate' => 'Vytvořit', @@ -134,20 +144,23 @@ return [ 'id' => 'ID', 'image' => 'Obrázek', 'image_delete' => 'Smazat obrázek', - 'include_deleted' => 'Include Deleted Assets', + 'include_deleted' => 'Zahrnout odstraněné položky', 'image_upload' => 'Nahrát obrázek', 'filetypes_accepted_help' => 'Přijatý typ souboru je :types. Maximální povolená velikost nahrávání je :size.|Přijaté typy souborů jsou :types. Maximální povolená velikost nahrávání je :size.', 'filetypes_size_help' => 'Maximální povolená velikost nahrávání je :size.', 'image_filetypes_help' => 'Podporované typy souborů jsou jpg, png, gif, a svg. Velikost může být nejvýše :size.', + 'unaccepted_image_type' => 'Soubor s obrázkem nebyl čitelný. Přijatelné druhy souborů jsou jpg, webp, png, gif, a svg. Tento soubor je druhu: :mimetype.', 'import' => 'Import', 'importing' => 'Importování', - '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.', + 'importing_help' => 'Prostřednictvím souboru CSV můžete importovat majetek, příslušenství, licence, komponenty, spotřební materiál a uživatele.

CSV by měl být oddělený čárkou a formátovaný s hlavičkami, které odpovídají vzorovému CSV.', 'import-history' => 'Historie importu', 'asset_maintenance' => 'Údržba zařízení', 'asset_maintenance_report' => 'Zpráva o údržbě zařízení', 'asset_maintenances' => 'Záznamy o údržbě zařízení', 'item' => 'Položka', - 'item_name' => 'Item Name', + 'item_name' => 'Název položky', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Nedostatečná oprávnění!', 'kits' => 'Předdefinované sady', 'language' => 'Jazyk', @@ -164,7 +177,7 @@ return [ 'feature_disabled' => 'Tato funkce byla deaktivována pro demo instalaci.', 'location' => 'Lokalita', 'locations' => 'Umístění', - 'logo_size' => 'Square logos look best with Logo + Text. Logo maximum display size is 50px high x 500px wide. ', + 'logo_size' => 'Čtvercová loga vypadají nejlépe s Logo + Text. Maximální velikost loga je 50px vysoká x 500px široká. ', 'logout' => 'Odhlásit', 'lookup_by_tag' => 'Vyhledávání podle značky majetku', 'maintenances' => 'Údržby', @@ -173,7 +186,7 @@ return [ 'manufacturers' => 'Výrobci', 'markdown' => 'Toto pole umožňuje Github flavored markdown.', 'min_amt' => 'Minimální množství', - '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' => 'Minimální počet položek, které by měly být k dispozici před spuštěním výstrahy. Ponechte Min. QTY prázdnou, pokud nechcete dostávat upozornění na malé zásoby.', 'model_no' => 'Modelové č.', 'months' => 'měsíce', 'moreinfo' => 'Další informace', @@ -188,7 +201,7 @@ return [ 'no' => 'Ne', 'notes' => 'Poznámky', 'order_number' => 'Číslo objednávky', - 'only_deleted' => 'Only Deleted Assets', + 'only_deleted' => 'Pouze odstraněné položky', 'page_menu' => 'Zobrazuji _MENU_ položky', 'pagination_info' => 'Zobrazuji _START_ to _END_ of _TOTAL_ položek', 'pending' => 'Čeká na vyřízení', @@ -201,23 +214,24 @@ return [ 'purchase_date' => 'Datum nákupu', 'qty' => 'Množství', 'quantity' => 'Množství', - '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' => 'Máte :count položek pod nebo téměř pod nejnižšími skladovými zásobami', + 'quickscan_checkin' => 'Rychlé skenování přivlastněných počítačů', + 'quickscan_checkin_status' => 'Stav převzetí', 'ready_to_deploy' => 'Připraveno k přidělení', 'recent_activity' => 'Nedávná aktivita', - 'remaining' => 'Remaining', + 'remaining' => 'Zbývá', 'remove_company' => 'Odstraňte sdružení společnosti', 'reports' => 'Reporty', 'restored' => 'obnoveno', - 'restore' => 'Restore', - 'requestable_models' => 'Requestable Models', + 'restore' => 'Obnovit', + 'requestable_models' => 'Požadované modely', 'requested' => 'Požadováno', - 'requested_date' => 'Requested Date', - 'requested_assets' => 'Requested Assets', - 'requested_assets_menu' => 'Requested Assets', + 'requested_date' => 'Požadované datum', + 'requested_assets' => 'Vyžádaný majetek', + 'requested_assets_menu' => 'Vyžádaný majetek', 'request_canceled' => 'Žádost zrušena', 'save' => 'Uložit', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Zvolit', 'select_all' => 'Vybrat vše', 'search' => 'Hledat', @@ -238,22 +252,21 @@ return [ 'show_current' => 'Zobrazit aktuální', 'sign_in' => 'Přihlásit se', 'signature' => 'Podpis', - 'signed_off_by' => 'Signed Off By', + 'signed_off_by' => 'Odepsal:', 'skin' => 'Vzhled', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + 'webhook_msg_note' => 'Oznámení zavolá webhook', + 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'REŽIM DEMO: Některé funkce jsou pro tuto instalaci zakázány.', 'site_name' => 'Název lokality', 'state' => 'Stát', 'status_labels' => 'Označení stavu', 'status' => 'Stav', - 'accept_eula' => 'Acceptance Agreement', + 'accept_eula' => 'Licenční podmínky', 'supplier' => 'Dodavatel', 'suppliers' => 'Dodavatelé', 'sure_to_delete' => 'Opravdu si přejete odstranit', 'submit' => 'Odeslat', 'target' => 'Cíl', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Zobrazení času a data', 'total_assets' => 'celkem zařízení', 'total_licenses' => 'celkem licencí', @@ -263,130 +276,177 @@ return [ 'undeployable' => 'Ne-přiřaditelné', 'unknown_admin' => 'Neznámy správce', 'username_format' => 'Formát uživatelského jména', - 'username' => 'Username', + 'username' => 'Uživatelské jméno', 'update' => 'Aktualizace', - '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' => 'Podporované typy souborů jsou png, gif, jpg, jpeg, doc, docx, pdf, xls, txt, lic, xlsx, xml, rtf, zip, a rar. Velikost může být až :size.', 'uploaded' => 'Nahráno', 'user' => 'Uživatel', 'accepted' => 'přijato', 'declined' => 'zamítnuto', 'unaccepted_asset_report' => 'Nepřijatelné majetky', 'users' => 'Uživatelé', - 'viewall' => 'View All', + 'viewall' => 'Zobrazit vše', 'viewassets' => 'Zobrazit přiřazený majetek', - 'viewassetsfor' => 'View Assets for :name', + 'viewassetsfor' => 'Zobrazit majetky pro :name', 'website' => 'Webová stránka', 'welcome' => 'Vítej, :name', 'years' => 'roky', 'yes' => 'Ano', 'zip' => 'PSČ', 'noimage' => 'Obrázek nebyl nahrán, nebo nebyl nalezen.', - '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' => 'Požadovaný soubor neexistuje.', + 'file_upload_success' => 'Soubor byl úspěšně nahrán!', + 'no_files_uploaded' => 'Soubor byl úspěšně nahrán!', 'token_expired' => 'Platnost relace formuláře vypršela. Prosím zkuste to znovu.', - 'login_enabled' => 'Login Enabled', - 'audit_due' => 'Due for Audit', - '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' => 'Přihlášení povoleno', + 'audit_due' => 'Ke inventuře', + 'audit_overdue' => 'Po termínu inventury', + 'accept' => 'Přijmout :asset', + 'i_accept' => 'Přijímám', + 'i_decline' => 'Odmítám', + 'accept_decline' => 'Přijímat/zamítnout', + 'sign_tos' => 'Podepsáním níže souhlasíte s podmínkami služby:', + 'clear_signature' => 'Vymazat podpis', + 'show_help' => 'Zobrazit nápovědu', + 'hide_help' => 'Skrýt nápovědu', + 'view_all' => 'zobrazit vše', + 'hide_deleted' => 'Skrýt smazané', 'email' => 'Email', - '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: ', - 'checked_out' => 'Checked Out', - '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 category', - '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', - 'assigned' => 'Assigned', - 'asset_count' => 'Asset Count', - 'accessories_count' => 'Accessories Count', - 'consumables_count' => 'Consumables Count', - 'components_count' => 'Components Count', - 'licenses_count' => 'Licenses Count', - 'notification_error' => 'Error:', - 'notification_error_hint' => 'Please check the form below for errors', - 'notification_success' => 'Success:', - 'notification_warning' => 'Warning:', + 'do_not_change' => 'Neměnit', + 'bug_report' => 'Nahlásit chybu', + 'user_manual' => 'Uživatelská příručka', + 'setup_step_1' => 'Krok 1', + 'setup_step_2' => 'Krok 2', + 'setup_step_3' => 'Krok 3', + 'setup_step_4' => 'Krok 4', + 'setup_config_check' => 'Kontrola konfigurace', + 'setup_create_database' => 'Vytvořit databázové tabulky', + 'setup_create_admin' => 'Vytvořit administrátora', + 'setup_done' => 'Hotovo!', + 'bulk_edit_about_to' => 'Tímto upravíte následující možnosti: ', + 'checked_out' => 'K výdeji', + 'checked_out_to' => 'Vydáno', + 'fields' => 'Pole', + 'last_checkout' => 'Naposledy vydáno', + 'due_to_checkin' => 'Následující :count položky mají být zkontrolovány brzy:', + 'expected_checkin' => 'Očekávané datum vrácení', + 'reminder_checked_out_items' => 'Toto je připomínka položek, které vám byly aktuálně dány. Pokud se domníváte, že je něco špatně (něco chybí, nebo se zde objevuje něco, co podle vás nedostanete), napište prosím :reply_to_name na :reply_to_address.', + 'changed' => 'Upraveno', + 'to' => 'Pro', + 'report_fields_info' => '

Vyberte pole, která chcete zahrnout do vlastní sestavy, a klepněte na tlačítko Generovat. Soubor (custom-asset-report-YYYY-mm-dd.csv) se stáhne automaticky a můžete jej otevřít v Excelu.

+

Pokud chcete exportovat pouze některá aktiva, použijte níže uvedené možnosti pro úpravu výsledků.

', + 'range' => '(rozsah)', + 'bom_remark' => 'Přidat BOM (byte-order mark) do tohoto CSV', + 'improvements' => 'Zlepšení', + 'information' => 'Informace', + 'permissions' => 'Oprávnění', + 'managed_ldap' => '(Spravováno přes LDAP)', + 'export' => 'Exportovat', + 'ldap_sync' => 'LDAP synchronizace', + 'ldap_user_sync' => 'LDAP synchronizace uživatelů', + 'synchronize' => 'Synchronizovat', + 'sync_results' => 'Výsledky synchronizace', + 'license_serial' => 'Sériový/produktový klíč', + 'invalid_category' => 'Neplatná kategorie', + 'dashboard_info' => 'Toto je vaše hlavní stránka.', + '60_percent_warning' => '60% Dokončeno (upozornění)', + 'dashboard_empty' => 'Zdá se, že jste ještě nic nepřidali, takže nemáme nic úžasného co bychom vám ukázali. Začněte přidáním něčeho!', + 'new_asset' => 'Nový majetek', + 'new_license' => 'Nová licence', + 'new_accessory' => 'Nové příslušenství', + 'new_consumable' => 'Nový spotřební materiál', + 'collapse' => 'Sbalit', + 'assigned' => 'Přiřazené', + 'asset_count' => 'Počet aktiv', + 'accessories_count' => 'Počet příslušenství', + 'consumables_count' => 'Počet spotřebních materiálů', + 'components_count' => 'Počet komponentů', + 'licenses_count' => 'Počet licencí', + 'notification_error' => 'Chyba:', + 'notification_error_hint' => 'Pro chyby zkontrolujte formulář níže', + 'notification_success' => 'Hotovo:', + 'notification_warning' => 'Pozor:', 'notification_info' => 'Info:', - 'asset_information' => 'Asset Information', - 'model_name' => 'Model Name:', - 'asset_name' => 'Asset Name:', - 'consumable_information' => 'Consumable Information:', - 'consumable_name' => 'Consumable Name:', - 'accessory_information' => 'Accessory Information:', - 'accessory_name' => 'Accessory Name:', - 'clone_item' => 'Clone Item', - 'checkout_tooltip' => 'Check this item out', - 'checkin_tooltip' => 'Check this item in', - 'checkout_user_tooltip' => 'Check this item out to a user', - '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 ', - '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' + 'asset_information' => 'Informace o aktivu', + 'model_name' => 'Model:', + 'asset_name' => 'Název aktiva:', + 'consumable_information' => 'Spotřební informace:', + 'consumable_name' => 'Název sp. materiálu:', + 'accessory_information' => 'Informace o příslušenství:', + 'accessory_name' => 'Název příslušenství:', + 'clone_item' => 'Duplikovat položku', + 'checkout_tooltip' => 'Vydat položku', + 'checkin_tooltip' => 'Převzít položku', + 'checkout_user_tooltip' => 'Vydat položku uživateli', + 'maintenance_mode' => 'Systém je momentálně nedostupný kvůli aktualizaci. Zkuste to, prosím, později.', + 'maintenance_mode_title' => 'Systém je dočasně nedostupný', + 'ldap_import' => 'Heslo by nemělo být spravováno LDAP. (To vám umožní odeslat žádost o obnovení zapomenutého hesla.)', + 'purge_not_allowed' => 'Vymazání smazaných dat bylo v souboru .env zakázáno. Obraťte se na podporu nebo správce systému.', + 'backup_delete_not_allowed' => 'Vymazání záloh bylo v souboru .env zakázáno. Obraťte se na podporu nebo správce systému.', + 'additional_files' => 'Další soubory', + 'shitty_browser' => 'Nebyl zjištěn žádný podpis. Pokud používáte starší prohlížeč, použijte prosím modernější pro dokončení přijetí vašeho majetku.', + 'bulk_soft_delete' =>'Také odstranit tyto uživatele. Historie jejich majetku zůstane neporušená/dokud tvrvale nevymažete smazané záznamy v nastavení správce.', + 'bulk_checkin_delete_success' => 'Vybraní uživatelé byli odstraněni a jejich položky byly odebrány.', + 'bulk_checkin_success' => 'Položky vybraných uživatelů byly odebrány.', + 'set_to_null' => 'Odstranit hodnoty z aktiva|Odstranit hodnoty z :asset_count aktiv ', + '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 – neznámé datum nákupu', + 'assets_by_status' => 'Majetek podle stavu', + 'assets_by_status_type' => 'Majetek podle stavu', + 'pie_chart_type' => 'Typ koláčového grafu na hlavní stránce', + 'hello_name' => 'Ahoj, :name!', + 'unaccepted_profile_warning' => 'Máte :count položek vyžadujících potvrzení. Klikněte zde pro jejich přijetí nebo zamítnutí', + 'start_date' => 'Od', + 'end_date' => 'Do', + 'alt_uploaded_image_thumbnail' => 'Nahraný náhledový obrázek', + 'placeholder_kit' => 'Vyberte sadu', + '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' => 'Souhlasí', + 'false' => 'Nesouhlasí', + 'integration_option' => 'Integration Option', + 'log_does_not_exist' => 'No matching log record exists.', + 'merge_users' => 'Sloučit uživatele', + '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, licences, 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' => 'Nejsou vybráni žádní uživatelé', + '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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Vaše databázové tabulky byly vytvořeny', + 'setup_migration_output' => 'Výstup migrace:', + 'setup_migration_create_user' => 'Další: Založení uživatele', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Potvrdit', + 'autoassign_licenses' => 'Automatické přiřazení licencí', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'Povolí uživateli získávat licence skze hromadnou správu licencí, ať již GUI or CLI. Například pokud si nepřejete, aby externisti nedostávali automaticky licence, náležící pouze zaměstnancům. Licenci jim můžete i nadále přiřazovat ručně, pouze nebudou zahrnuti do hromadného zpracování.', + 'no_autoassign_licenses_help' => 'Nezahrnovat uživatele do hromadného zpracování licencí.', + 'modal_confirm_generic' => 'Jste si jistí?', + 'cannot_be_deleted' => 'Položka nemůže být odstraněna', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/cs/help.php b/resources/lang/cs/help.php index d9d7672bef..e9c6b24e78 100644 --- a/resources/lang/cs/help.php +++ b/resources/lang/cs/help.php @@ -15,11 +15,11 @@ return [ 'more_info_title' => 'Více informací', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', - 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', + 'assets' => 'Majetky jsou položky sledované sériovým nebo inventárním čísle,. Bývají u položek, které mají vyšší hodnotu a kde je důležitá identifikace.', - 'categories' => 'Categories help you organize your items. Some example categories might be "Desktops", "Laptops", "Mobile Phones", "Tablets", and so on, but you can use categories any way that makes sense for you.', + 'categories' => 'Kategorie usnadňují organizovat majetek. Takovou kategorii může být např. "Desktopy", "Notebooky", "Mobilní telefony", "Tablety", apod. Nicméně můžete použít kategorie jakýmkoli způsobem.', 'accessories' => 'Příslušenství je cokoliv, co předáte uživatelům, ale nemá to sériové číslo (nebo je neevidujete), např. myš, nebo klávesnice.', diff --git a/resources/lang/cs/localizations.php b/resources/lang/cs/localizations.php index be2c321861..726d2c685a 100644 --- a/resources/lang/cs/localizations.php +++ b/resources/lang/cs/localizations.php @@ -2,314 +2,315 @@ return [ - 'select_language' => 'Select a language', + 'select_language' => 'Vyberte jazyk', 'languages' => [ - 'en'=> 'English, US', - 'en-GB'=> 'English, UK', - 'af'=> 'Afrikaans', - 'ar'=> 'Arabic', - 'bg'=> 'Bulgarian', - 'zh-CN'=> 'Chinese Simplified', - 'zh-TW'=> 'Chinese Traditional', - 'hr'=> 'Croatian', - 'cs'=> 'Czech', - 'da'=> 'Danish', - 'nl'=> 'Dutch', - 'en-ID'=> 'English, Indonesia', - 'et'=> 'Estonian', - 'fil'=> 'Filipino', - 'fi'=> 'Finnish', - 'fr'=> 'French', - 'de'=> 'German', - 'de-i'=> 'German (Informal)', - 'el'=> 'Greek', - 'he'=> 'Hebrew', - 'hu'=> 'Hungarian', - 'is' => 'Icelandic', - 'id'=> 'Indonesian', - 'ga-IE'=> 'Irish', - 'it'=> 'Italian', - 'ja'=> 'Japanese', - 'ko'=> 'Korean', - 'lv'=>'Latvian', - 'lt'=> 'Lithuanian', - 'mk'=> 'Macedonian', - 'ms'=> 'Malay', + 'en'=> 'Angličtina, USA', + 'en-GB'=> 'Angličtina, UK', + 'af'=> 'Afrikánština', + 'ar'=> 'Arabština', + 'bg'=> 'Bulharština', + 'zh-CN'=> 'Zjednodušená čínština', + 'zh-TW'=> 'Tradiční čínština', + 'hr'=> 'Chorvatština', + 'cs'=> 'Čeština', + 'da'=> 'Dánština', + 'nl'=> 'Holandština', + 'en-ID'=> 'Angličtina, Indie', + 'et'=> 'Estonština', + 'fil'=> 'Filipínština', + 'fi'=> 'Finština', + 'fr'=> 'Francouzština', + 'de'=> 'Němčina', + 'de-i'=> 'Němčina (neformální)', + 'el'=> 'Řečtina', + 'he'=> 'Hebrejština', + 'hu'=> 'Maďarština', + 'is' => 'Islandština', + 'id'=> 'Indonéština', + 'ga-IE'=> 'Irština', + 'it'=> 'Italština', + 'ja'=> 'Japonština', + 'ko'=> 'Korejština', + 'lv'=>'Lotyšština', + 'lt'=> 'Litevština', + 'mk'=> 'Makedonština', + 'ms'=> 'Malajština', 'mi'=> 'Maori', - 'mn'=> 'Mongolian', - 'no'=> 'Norwegian', - 'fa'=> 'Persian', - 'pl'=> 'Polish', - 'pt-PT'=> 'Portuguese', - 'pt-BR'=> 'Portuguese, Brazilian', - 'ro'=> 'Romanian', - 'ru'=> 'Russian', + 'mn'=> 'Mongolština', + 'no'=> 'Norština', + 'fa'=> 'Perština', + 'pl'=> 'Polština', + 'pt-PT'=> 'Portugalština', + 'pt-BR'=> 'Portugalština, brazilština', + 'ro'=> 'Rumunština', + 'ru'=> 'Ruština', 'sr-CS' => 'Serbian (Latin)', - 'sl'=> 'Slovenian', - 'es-ES'=> 'Spanish', - 'es-CO'=> 'Spanish, Colombia', - 'es-MX'=> 'Spanish, Mexico', - 'es-VE'=> 'Spanish, Venezuela', - 'sv-SE'=> 'Swedish', - 'tl'=> 'Tagalog', - 'ta'=> 'Tamil', - 'th'=> 'Thai', - 'tr'=> 'Turkish', - 'uk'=> 'Ukranian', - 'vi'=> 'Vietnamese', - 'cy'=> 'Welsh', - 'zu'=> 'Zulu', + 'sl'=> 'Slovinština', + 'es-ES'=> 'Španělština', + 'es-CO'=> 'Španělština, Kolumbie', + 'es-MX'=> 'Španělština, Mexiko', + 'es-VE'=> 'Španělština, Venezuela', + 'sv-SE'=> 'Švédština', + 'tl'=> 'Tagalština', + 'ta'=> 'Tamilština', + 'th'=> 'Thajština', + 'tr'=> 'Turečtina', + 'uk'=> 'Ukrajinština', + 'vi'=> 'Vietnamština', + 'cy'=> 'Velština', + 'zu'=> 'Zuluština', ], - 'select_country' => 'Select a country', + 'select_country' => 'Zvolte stát', 'countries' => [ - 'AC'=>'Ascension Island', + 'AC'=>'Ostrov Ascension', 'AD'=>'Andorra', - 'AE'=>'United Arab Emirates', - 'AF'=>'Afghanistan', - 'AG'=>'Antigua And Barbuda', + 'AE'=>'Spojené arabské emiráty', + 'AF'=>'Afghánistán', + 'AG'=>'Antigua a Barbuda', 'AI'=>'Anguilla', - 'AL'=>'Albania', - 'AM'=>'Armenia', - 'AN'=>'Netherlands Antilles', + 'AL'=>'Albánie', + 'AM'=>'Arménie', + 'AN'=>'Nizozemské Antily', 'AO'=>'Angola', - 'AQ'=>'Antarctica', + 'AQ'=>'Antarktida', 'AR'=>'Argentina', 'AS'=>'American Samoa', - 'AT'=>'Austria', - 'AU'=>'Australia', + 'AT'=>'Rakousko', + 'AU'=>'Austrálie', 'AW'=>'Aruba', - 'AX'=>'Ã…land', - 'AZ'=>'Azerbaijan', - 'BA'=>'Bosnia And Herzegovina', + 'AX'=>'Åland', + 'AZ'=>'Ázerbardžán', + 'BA'=>'Bosna a Hercegovina', 'BB'=>'Barbados', - 'BE'=>'Belgium', - 'BD'=>'Bangladesh', + 'BE'=>'Belgie', + 'BD'=>'Bangladéš', 'BF'=>'Burkina Faso', - 'BG'=>'Bulgaria', - 'BH'=>'Bahrain', + 'BG'=>'Bulharsko', + 'BH'=>'Bahrajn', 'BI'=>'Burundi', 'BJ'=>'Benin', - 'BM'=>'Bermuda', - 'BN'=>'Brunei Darussalam', - 'BO'=>'Bolivia', - 'BR'=>'Brazil', - 'BS'=>'Bahamas', - 'BT'=>'Bhutan', - 'BV'=>'Bouvet Island', + 'BM'=>'Bermudy', + 'BN'=>'Brunej Darussalam', + 'BO'=>'Bolívie', + 'BR'=>'Brazílie', + 'BS'=>'Bahamy', + 'BT'=>'Bhútán', + 'BV'=>'Bouvetův ostrov', 'BW'=>'Botswana', - 'BY'=>'Belarus', + 'BY'=>'Bělorusko', 'BZ'=>'Belize', - 'CA'=>'Canada', - 'CC'=>'Cocos (Keeling) Islands', - 'CD'=>'Congo (Democratic Republic)', - 'CF'=>'Central African Republic', - 'CG'=>'Congo (Republic)', - 'CH'=>'Switzerland', - 'CI'=>'Côte d\'Ivoire', - 'CK'=>'Cook Islands', + 'CA'=>'Kanada', + 'CC'=>'Kokosové ostrovy', + 'CD'=>'Konžská demokratická republika', + 'CF'=>'Středoafrická republika', + 'CG'=>'Kongo (republika)', + 'CH'=>'Švýcarsko', + 'CI'=>'Pobřeží Slonoviny', + 'CK'=>'Cookovy ostrovy', 'CL'=>'Chile', - 'CM'=>'Cameroon', - 'CN'=>'People\'s Republic of China', - 'CO'=>'Colombia', - 'CR'=>'Costa Rica', - 'CU'=>'Cuba', - 'CV'=>'Cape Verde', - 'CX'=>'Christmas Island', - 'CY'=>'Cyprus', - 'CZ'=>'Czech Republic', - 'DE'=>'Germany', - 'DJ'=>'Djibouti', - 'DK'=>'Denmark', - 'DM'=>'Dominica', - 'DO'=>'Dominican Republic', - 'DZ'=>'Algeria', - 'EC'=>'Ecuador', - 'EE'=>'Estonia', + 'CM'=>'Kamerun', + 'CN'=>'Čínská lidová republika', + 'CO'=>'Kolumbie', + 'CR'=>'Kostarika', + 'CU'=>'Kuba', + 'CV'=>'Kapverdy', + 'CX'=>'Vánoční ostrov', + 'CY'=>'Kypr', + 'CZ'=>'Česká republika', + 'DE'=>'Německo', + 'DJ'=>'Džibutsko', + 'DK'=>'Dánsko', + 'DM'=>'Dominika', + 'DO'=>'Dominikánská republika', + 'DZ'=>'Alžírsko', + 'EC'=>'Ekvádor', + 'EE'=>'Estonsko', 'EG'=>'Egypt', 'ER'=>'Eritrea', - 'ES'=>'Spain', - 'ET'=>'Ethiopia', - 'EU'=>'European Union', - 'FI'=>'Finland', - 'FJ'=>'Fiji', - 'FK'=>'Falkland Islands (Malvinas)', - 'FM'=>'Micronesia, Federated States Of', - 'FO'=>'Faroe Islands', - 'FR'=>'France', + 'ES'=>'Španělsko', + 'ET'=>'Etiopie', + 'EU'=>'Evropská unie', + 'FI'=>'Finsko', + 'FJ'=>'Fidži', + 'FK'=>'Falklandské ostrovy (Malviny)', + 'FM'=>'Mikronésie, Federativní státy', + 'FO'=>'Faerské ostrovy', + 'FR'=>'Francie', 'GA'=>'Gabon', 'GD'=>'Grenada', - 'GE'=>'Georgia', - 'GF'=>'French Guiana', + 'GE'=>'Gruzie', + 'GF'=>'Francouzská Guyana', 'GG'=>'Guernsey', 'GH'=>'Ghana', 'GI'=>'Gibraltar', - 'GL'=>'Greenland', - 'GM'=>'Gambia', + 'GL'=>'Grónsko', + 'GM'=>'Gambie', 'GN'=>'Guinea', 'GP'=>'Guadeloupe', - 'GQ'=>'Equatorial Guinea', - 'GR'=>'Greece', - 'GS'=>'South Georgia And The South Sandwich Islands', + 'GQ'=>'Rovníková Guinea', + 'GR'=>'Řecko', + 'GS'=>'Jižní Georgie a Jižní Sandwichovy ostrovy', 'GT'=>'Guatemala', 'GU'=>'Guam', 'GW'=>'Guinea-Bissau', 'GY'=>'Guyana', 'HK'=>'Hong Kong', - 'HM'=>'Heard And Mc Donald Islands', + 'HM'=>'Heardův ostrov a MacDonaldovy ostrovy', 'HN'=>'Honduras', - 'HR'=>'Croatia (local name: Hrvatska)', + 'HR'=>'Chorvatsko (místní název: Hrvatska)', 'HT'=>'Haiti', - 'HU'=>'Hungary', - 'ID'=>'Indonesia', - 'IE'=>'Ireland', + 'HU'=>'Maďarsko', + 'ID'=>'Indonésie', + 'IE'=>'Irsko', 'IL'=>'Israel', - 'IM'=>'Isle of Man', - 'IN'=>'India', - 'IO'=>'British Indian Ocean Territory', - 'IQ'=>'Iraq', - 'IR'=>'Iran, Islamic Republic Of', - 'IS'=>'Iceland', - 'IT'=>'Italy', + 'IM'=>'Ostrov Man', + 'IN'=>'Indie', + 'IO'=>'Britské území v Indickém oceánu', + 'IQ'=>'Irák', + 'IR'=>'Írán, Islámská republika', + 'IS'=>'Island', + 'IT'=>'Itálie', 'JE'=>'Jersey', - 'JM'=>'Jamaica', - 'JO'=>'Jordan', - 'JP'=>'Japan', - 'KE'=>'Kenya', - 'KG'=>'Kyrgyzstan', - 'KH'=>'Cambodia', + 'JM'=>'Jamajka', + 'JO'=>'Jordánsko', + 'JP'=>'Japonsko', + 'KE'=>'Keňa', + 'KG'=>'Kyrgyzstán', + 'KH'=>'Kambodža', 'KI'=>'Kiribati', - 'KM'=>'Comoros', - 'KN'=>'Saint Kitts And Nevis', - 'KR'=>'Korea, Republic Of', - 'KW'=>'Kuwait', - 'KY'=>'Cayman Islands', - 'KZ'=>'Kazakhstan', - 'LA'=>'Lao People\'s Democratic Republic', - 'LB'=>'Lebanon', - 'LC'=>'Saint Lucia', - 'LI'=>'Liechtenstein', - 'LK'=>'Sri Lanka', - 'LR'=>'Liberia', + 'KM'=>'Komory', + 'KN'=>'Svatý Kryštof a Nevis', + 'KR'=>'Korejská republika', + 'KW'=>'Kuvajt', + 'KY'=>'Kajmanské ostrovy', + 'KZ'=>'Kazachstán', + 'LA'=>'Laoská lidově demokratická republika', + 'LB'=>'Libanon', + 'LC'=>'Svatá Lucie', + 'LI'=>'Lichtenštejnsko', + 'LK'=>'Srí Lanka', + 'LR'=>'Libérie', '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', + 'LT'=>'Litva', + 'LU'=>'Lucembursko', + 'LV'=>'Lotyšsko', + 'LY'=>'Libyjská arabská džamáhíríje', + 'MA'=>'Maroko', + 'MC'=>'Monako', + 'MD'=>'Moldavská republika', + 'ME'=>'Černá Hora', + 'MG'=>'Madagaskar', + 'MH'=>'Marshallovy ostrovy', + 'MK'=>'Makedonie, Bývalá jugoslávská republika', 'ML'=>'Mali', 'MM'=>'Myanmar', - 'MN'=>'Mongolia', - 'MO'=>'Macau', - 'MP'=>'Northern Mariana Islands', - 'MQ'=>'Martinique', - 'MR'=>'Mauritania', + 'MN'=>'Mongolsko', + 'MO'=>'Macao', + 'MP'=>'Severní Mariánské ostrovy', + 'MQ'=>'Martinik', + 'MR'=>'Mauretánie', 'MS'=>'Montserrat', 'MT'=>'Malta', - 'MU'=>'Mauritius', - 'MV'=>'Maldives', + 'MU'=>'Mauricius', + 'MV'=>'Maledivy', 'MW'=>'Malawi', - 'MX'=>'Mexico', - 'MY'=>'Malaysia', - 'MZ'=>'Mozambique', - 'NA'=>'Namibia', - 'NC'=>'New Caledonia', + 'MX'=>'Mexiko', + 'MY'=>'Malajsie', + 'MZ'=>'Mosambik', + 'NA'=>'Namibie', + 'NC'=>'Nová Kaledonie', 'NE'=>'Niger', - 'NF'=>'Norfolk Island', - 'NG'=>'Nigeria', - 'NI'=>'Nicaragua', - 'NL'=>'Netherlands', - 'NO'=>'Norway', - 'NP'=>'Nepal', + 'NF'=>'Ostrov Norfolk', + 'NG'=>'Nigérie', + 'NI'=>'Nikaragua', + 'NL'=>'Nizozemsko', + 'NO'=>'Norsko', + 'NP'=>'Nepál', 'NR'=>'Nauru', 'NU'=>'Niue', - 'NZ'=>'New Zealand', - 'OM'=>'Oman', + 'NZ'=>'Nový Zéland', + 'OM'=>'Omán', 'PA'=>'Panama', 'PE'=>'Peru', - 'PF'=>'French Polynesia', - 'PG'=>'Papua New Guinea', - 'PH'=>'Philippines, Republic of the', - 'PK'=>'Pakistan', - 'PL'=>'Poland', - 'PM'=>'St. Pierre And Miquelon', - 'PN'=>'Pitcairn', - 'PR'=>'Puerto Rico', - 'PS'=>'Palestine', - 'PT'=>'Portugal', + 'PF'=>'Francouzská Polynésie', + 'PG'=>'Papua-Nová Guinea', + 'PH'=>'Filipíny, Republika', + 'PK'=>'Pákistán', + 'PL'=>'Polsko', + 'PM'=>'Saint-Pierre a Miquelon', + 'PN'=>'Pitcairnovy ostrovy', + 'PR'=>'Portoriko', + 'PS'=>'Palestina', + 'PT'=>'Portugalsko', 'PW'=>'Palau', 'PY'=>'Paraguay', - 'QA'=>'Qatar', - 'RE'=>'Reunion', - 'RO'=>'Romania', - 'RS'=>'Serbia', - 'RU'=>'Russian Federation', + 'QA'=>'Katar', + 'RE'=>'Réunion', + 'RO'=>'Rumunsko', + 'RS'=>'Srbsko', + 'RU'=>'Ruská federace', 'RW'=>'Rwanda', - 'SA'=>'Saudi Arabia', - 'UK'=>'Scotland', - 'SB'=>'Solomon Islands', + 'SA'=>'Saúdská Arábie', + 'UK'=>'Skotsko', + 'SB'=>'Šalamounovy ostrovy', 'SC'=>'Seychelles', + 'SS'=>'Jižní Súdán', 'SD'=>'Sudan', - 'SE'=>'Sweden', - 'SG'=>'Singapore', + 'SE'=>'Švédsko', + 'SG'=>'Singapur', 'SH'=>'St. Helena', - 'SI'=>'Slovenia', - 'SJ'=>'Svalbard And Jan Mayen Islands', - 'SK'=>'Slovakia (Slovak Republic)', + 'SI'=>'Slovinsko', + 'SJ'=>'Špicberky a Jan Mayen', + 'SK'=>'Slovensko (Slovenská republika)', 'SL'=>'Sierra Leone', 'SM'=>'San Marino', 'SN'=>'Senegal', - 'SO'=>'Somalia', + 'SO'=>'Somálsko', 'SR'=>'Suriname', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', + 'ST'=>'Svatý Tomáš a Princův ostrov', + 'SU'=>'Sovětský svaz', 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', - 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', - 'TD'=>'Chad', - 'TF'=>'French Southern Territories', + 'SY'=>'Syrská Arabská republika', + 'SZ'=>'Svazijsko', + 'TC'=>'Ostrovy Turks a Caicos', + 'TD'=>'Čad', + 'TF'=>'Francouzská jižní území', 'TG'=>'Togo', - 'TH'=>'Thailand', - 'TJ'=>'Tajikistan', + 'TH'=>'Thajsko', + 'TJ'=>'Tádžikistán', 'TK'=>'Tokelau', - 'TI'=>'East Timor', - 'TM'=>'Turkmenistan', - 'TN'=>'Tunisia', + 'TI'=>'Východní Timor', + 'TM'=>'Turkmenistán', + 'TN'=>'Tunisko', 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', - 'TR'=>'Turkey', - 'TT'=>'Trinidad And Tobago', + 'TP'=>'Východní časovač (starý kód)', + 'TR'=>'Turecko', + 'TT'=>'Trinidad a Tobago', 'TV'=>'Tuvalu', - 'TW'=>'Taiwan', - 'TZ'=>'Tanzania, United Republic Of', - 'UA'=>'Ukraine', + 'TW'=>'Tchaj-wan', + 'TZ'=>'Tanzanie', + 'UA'=>'Ukrajina', 'UG'=>'Uganda', - 'UK'=>'United Kingdom', - 'US'=>'United States', - 'UM'=>'United States Minor Outlying Islands', + 'UK'=>'Spojené království', + 'US'=>'Spojené státy', + 'UM'=>'Menší odlehlé ostrovy USA', 'UY'=>'Uruguay', - 'UZ'=>'Uzbekistan', - 'VA'=>'Vatican City State (Holy See)', - 'VC'=>'Saint Vincent And The Grenadines', + 'UZ'=>'Uzbekistán', + 'VA'=>'Vatikánský městský stát (Holy See)', + 'VC'=>'Svatý Vincenc a Grenadiny', 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', - 'VN'=>'Viet Nam', + 'VG'=>'Britské Panenské ostrovy', + 'VI'=>'Americké Panenské ostrovy', + 'VN'=>'Vietnam', 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', + 'WF'=>'Ostrovy Wallis a Futuna', 'WS'=>'Samoa', - 'YE'=>'Yemen', + 'YE'=>'Jemen', 'YT'=>'Mayotte', - 'ZA'=>'South Africa', - 'ZM'=>'Zambia', + 'ZA'=>'Jihoafrická republika', + 'ZM'=>'Zambie', 'ZW'=>'Zimbabwe', ], ]; \ No newline at end of file diff --git a/resources/lang/cs/mail.php b/resources/lang/cs/mail.php index 5dde30b878..69aba6e49d 100644 --- a/resources/lang/cs/mail.php +++ b/resources/lang/cs/mail.php @@ -1,8 +1,8 @@ 'A user has accepted an item', - 'acceptance_asset_declined' => 'A user has declined an item', + 'acceptance_asset_accepted' => 'Uživatel potvrdil vlastnictví', + 'acceptance_asset_declined' => 'Uživatel zamítl vlastnictví', 'a_user_canceled' => 'Uživatel zrušil žádost o položku na webu', 'a_user_requested' => 'Uživatel požádal o položku na webu', 'accessory_name' => 'Název příslušenství:', @@ -11,7 +11,7 @@ return [ 'asset' => 'Majetek:', 'asset_name' => 'Název majetku:', 'asset_requested' => 'Požadovaný majetek', - 'asset_tag' => 'Asset Tag', + 'asset_tag' => 'Inventární číslo', 'assigned_to' => 'Přiděleno', 'best_regards' => 'S pozdravem,', 'canceled' => 'Zrušeno:', @@ -20,12 +20,12 @@ return [ 'click_to_confirm' => 'Kliknutím na následující odkaz potvrdíte váš účet pro :web:', 'click_on_the_link_accessory' => 'Kliknutím na odkaz v dolní části potvrďte, že jste obdrželi příslušné příslušenství.', 'click_on_the_link_asset' => 'Kliknutím na odkaz v dolní části potvrďte, že jste obdrželi daný produkt.', - 'Confirm_Asset_Checkin' => 'Asset checkin confirmation', - 'Confirm_Accessory_Checkin' => 'Accessory checkin confirmation', - 'Confirm_accessory_delivery' => 'Accessory delivery confirmation', - 'Confirm_license_delivery' => 'License delivery confirmation', - 'Confirm_asset_delivery' => 'Asset delivery confirmation', - 'Confirm_consumable_delivery' => 'Consumable delivery confirmation', + 'Confirm_Asset_Checkin' => 'Potvrzení odevzdání předmětu', + 'Confirm_Accessory_Checkin' => 'Potvrzení odevzdání příslušenství', + 'Confirm_accessory_delivery' => 'Potvrďte dodání příslušenství', + 'Confirm_license_delivery' => 'Potvrdit dodání licence', + 'Confirm_asset_delivery' => 'Potvrďte dodání majetku', + 'Confirm_consumable_delivery' => 'Potvrďte dodání spotřebního zboží', 'current_QTY' => 'Aktuální množství', 'Days' => 'Dní', 'days' => 'Dní', @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Přihlaste se k nové instalaci Snipe-IT pomocí níže uvedených pověření:', 'login' => 'Uživatelské jméno:', 'Low_Inventory_Report' => 'Hlášení o nízkých zásobách', + 'inventory_report' => 'Zpráva o majetku', 'min_QTY' => 'Minimální množství', 'name' => 'Položka', 'new_item_checked' => 'Nová položka byla odevzdána pod vaším jménem, podrobnosti jsou uvedeny níže.', @@ -61,21 +62,23 @@ return [ 'test_mail_text' => 'Toto je test ze systému Snipe-IT Asset Management System. Pokud jste ho dostali, email funguje :)', 'the_following_item' => 'Následující položka byla převzata: ', 'low_inventory_alert' => 'Je zde :count položka která je pod minimálním stavem nebo brzy bude.|Jsou zde :count položky které jsou pod minimálním stavem nebo brzy budou.', - 'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.', + 'assets_warrantee_alert' => 'Je zde :count položka se zárukou končící v následujících :threshold dnech.|Jsou zde :count položek se zárukou končící v následujících :threshold dnech.', '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.', 'to_reset' => 'Pro resetování vašeho hesla vyplňte tento formulář:', 'type' => 'Typ', - '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.', + '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', 'welcome' => 'Vítej uživateli :name', 'welcome_to' => 'Vítejte na :web!', 'your_credentials' => 'Vaše pověření Snipe-IT', - 'Accessory_Checkin_Notification' => 'Accessory checked in', - 'Asset_Checkin_Notification' => 'Asset checked in', - 'License_Checkin_Notification' => 'License checked in', - 'Expected_Checkin_Report' => 'Expected asset checkin report', - 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', - 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', - 'your_assets' => 'View Your Assets', + 'Accessory_Checkin_Notification' => 'Příslušenství přidáno v', + 'Asset_Checkin_Notification' => 'Majetek přidán v', + 'Asset_Checkout_Notification' => 'Asset checked out', + 'License_Checkin_Notification' => 'Licence přidána v', + 'Expected_Checkin_Report' => 'Předpokládaný report o dostupném majetku', + 'Expected_Checkin_Notification' => 'Připomenutí: blížící se lhůta pro :name', + 'Expected_Checkin_Date' => 'Majetek, který vám byl předán, musí být vrácen zpět do :date', + 'your_assets' => 'Zobrazit vaše položky', + 'rights_reserved' => 'Všechna práva vyhrazena.', ]; diff --git a/resources/lang/cs/passwords.php b/resources/lang/cs/passwords.php index 25633b4581..8f5d8e7036 100644 --- a/resources/lang/cs/passwords.php +++ b/resources/lang/cs/passwords.php @@ -1,8 +1,8 @@ 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', - 'user' => 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', - 'token' => 'This password reset token is invalid or expired, or does not match the username provided.', - 'reset' => 'Your password has been reset!', + 'sent' => 'Pokud v našem systému existuje uživatel s touto emailovou adresou, byl odeslán e-mail pro obnovení hesla.', + 'user' => 'Pokud v našem systému existuje uživatel s touto emailovou adresou, byl odeslán e-mail pro obnovení hesla.', + 'token' => 'Tento token pro obnovení hesla je neplatný, vypršel, nebo se neshoduje s zadaným uživatelským jménem.', + 'reset' => 'Heslo úspěšně změněno!', ]; diff --git a/resources/lang/cs/reminders.php b/resources/lang/cs/reminders.php index 98f935329e..8c2cc27917 100644 --- a/resources/lang/cs/reminders.php +++ b/resources/lang/cs/reminders.php @@ -15,7 +15,7 @@ return array( "password" => "Heslo musí mít šest znaků a schodovat se s potvrzujícím heslem.", "user" => "Uživatelské jméno nebo email je chybný", - "token" => 'This password reset token is invalid or expired, or does not match the username provided.', - 'sent' => 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', + "token" => 'Tento token pro obnovení hesla je neplatný, vypršel, nebo se neshoduje s zadaným uživatelským jménem.', + 'sent' => 'Pokud v našem systému existuje uživatel s touto emailovou adresou, byl odeslán e-mail pro obnovení hesla.', ); diff --git a/resources/lang/cs/validation.php b/resources/lang/cs/validation.php index 10b1e970ea..1ea00161e2 100644 --- a/resources/lang/cs/validation.php +++ b/resources/lang/cs/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'Atribut: musí být soubor.', 'filled' => 'Pole atributu: musí mít hodnotu.', 'image' => ':attribute musí být obrázek.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + '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.', @@ -67,6 +67,8 @@ return [ 'array' => 'Atribut musí mít alespoň: min položky.', ], 'starts_with' => ':attribute musí končit jednou z následujících hodnot: :values.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'not_in' => 'Zvolený :attribute je neplatný.', 'numeric' => ':attribute musí být číslo.', 'present' => 'Pole atributu musí být přítomno.', @@ -93,27 +95,16 @@ return [ 'url' => 'Formát :attribute je neplatný.', 'unique_undeleted' => 'Je třeba, aby se :attribute neopakoval.', 'non_circular' => ':attribute nesmí vytvořit kruhový odkaz.', - 'disallow_same_pwd_as_user_fields' => 'Password cannot be the same as the username.', - 'letters' => 'Password must contain at least one letter.', - 'numbers' => 'Password must contain at least one number.', - 'case_diff' => 'Password must use mixed case.', - 'symbols' => 'Password must contain symbols.', + 'disallow_same_pwd_as_user_fields' => 'Heslo nemůže být stejné jako uživatelské jméno.', + 'letters' => 'Heslo musí obsahovat nejméně jedno písmeno.', + 'numbers' => 'Heslo musí obsahovat alespoň jednu číslici.', + 'case_diff' => 'Heslo musí použít smíšené znaky.', + 'symbols' => 'Heslo musí obsahovat symboly.', 'gte' => [ - 'numeric' => 'Value cannot be negative' + 'numeric' => 'Hodnota nemůže být záporná' ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Vaše současné heslo je nesprávné', 'dumbpwd' => 'Toto heslo je příliš běžné.', 'statuslabel_type' => 'Musíte vybrat platný typ štítku stavu', + + // 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 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', + 'termination_date.date_format' => ':attribute musí být platné datum ve formátu RRRR-MM-DD', + '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', + ], /* diff --git a/resources/lang/cy/admin/accessories/general.php b/resources/lang/cy/admin/accessories/general.php index c89cfa68e6..d880f1b16b 100644 --- a/resources/lang/cy/admin/accessories/general.php +++ b/resources/lang/cy/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Diweddaru Ategolyn', 'use_default_eula' => 'Defnyddio\'r prif CTDT diofyn yn lle.', 'use_default_eula_disabled' => 'Defnyddio\'r CTDT diofn yn lle\'r un presennol.Nid oes prif CTDT diofyn wedi gosod. Ychwanegwch un yn gosodiadau os gwelwch yn dda.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/cy/admin/accessories/message.php b/resources/lang/cy/admin/accessories/message.php index e5be37a7e1..3db35e4ced 100644 --- a/resources/lang/cy/admin/accessories/message.php +++ b/resources/lang/cy/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/cy/admin/asset_maintenances/form.php b/resources/lang/cy/admin/asset_maintenances/form.php index 4d531097c3..209803c54d 100644 --- a/resources/lang/cy/admin/asset_maintenances/form.php +++ b/resources/lang/cy/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Manylion Cynnal a Chadw', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Teitl', - 'start_date' => 'Wedi cychwyn', - 'completion_date' => 'Wedi cwbwlhau', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Cost', 'is_warranty' => 'Gwelliant Gwarant', - 'asset_maintenance_time' => 'Dyddiau', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Nodiadau', - 'update' => 'Diweddaru', - 'create' => 'Creu' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/cy/admin/categories/message.php b/resources/lang/cy/admin/categories/message.php index 44f3e21732..c40e5a0f2a 100644 --- a/resources/lang/cy/admin/categories/message.php +++ b/resources/lang/cy/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Ni diweddarwyd y categori, ceisiwch eto o. g. y. dd', - 'success' => 'Categori wedi diweddaru\'n llwyddiannus.' + 'success' => 'Categori wedi diweddaru\'n llwyddiannus.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/cy/admin/components/general.php b/resources/lang/cy/admin/components/general.php index 1685f85492..ea00037160 100644 --- a/resources/lang/cy/admin/components/general.php +++ b/resources/lang/cy/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Yn weddill', 'total' => 'Cyfanswm', 'update' => 'Diweddaru Cydran', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/cy/admin/components/message.php b/resources/lang/cy/admin/components/message.php index fbd08cf4e3..f89aedb4b8 100644 --- a/resources/lang/cy/admin/components/message.php +++ b/resources/lang/cy/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Cydran heb ei nodi allan, ceisiwch eto o. g. y. dd', 'success' => 'Cydran wedi nodi allan yn llwyddiannus.', - '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.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/cy/admin/consumables/message.php b/resources/lang/cy/admin/consumables/message.php index df0a02f33d..f7f5438001 100644 --- a/resources/lang/cy/admin/consumables/message.php +++ b/resources/lang/cy/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Nwydd traul heb ei nodi allan, ceisiwch eto o. g. y. dd', 'success' => 'Nwydd traul wedi nodi allan yn llwyddiannus.', - '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.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/cy/admin/custom_fields/general.php b/resources/lang/cy/admin/custom_fields/general.php index da1a8293f9..ab1cdc3966 100644 --- a/resources/lang/cy/admin/custom_fields/general.php +++ b/resources/lang/cy/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Defnyddir gan modelau', 'order' => 'Trefn', 'create_fieldset' => 'Set maes newydd', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Maes Addasedig newydd', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/cy/admin/groups/message.php b/resources/lang/cy/admin/groups/message.php index e0ee41d447..73fbbb4fb4 100644 --- a/resources/lang/cy/admin/groups/message.php +++ b/resources/lang/cy/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Grwp yn bodoli yn barod!', - 'group_not_found' => 'Nid yw grwp [:id] yn bodoli.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Mae angen llenwi\'r maes enw', 'success' => array( diff --git a/resources/lang/cy/admin/hardware/form.php b/resources/lang/cy/admin/hardware/form.php index 1388f8c66d..432ae56943 100644 --- a/resources/lang/cy/admin/hardware/form.php +++ b/resources/lang/cy/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Cadarnahu Dileu Nifer o Asedau', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Adolygwch yr asedau ar gyfer dileu isod. Ar ôl eu dileu, gellir adfer yr asedau hyn, ond ni fyddant yn gysylltiedig mwyach ag unrhyw ddefnyddwyr y maent wedi\'u neilltuo iddynt ar hyn o bryd.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Rydych am dileu :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Diweddaru Nifer o Asedau', 'bulk_update_help' => 'Mae\'r ffurflen hon yn caniatáu ichi ddiweddaru nifer o asedau ar unwaith. Llenwch y meysydd sydd angen i chi eu newid yn unig. Bydd unrhyw bwlch a adewir yn wag yn aros yr un fath. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/cy/admin/hardware/general.php b/resources/lang/cy/admin/hardware/general.php index 4703afe6e4..9d2b5b2ab9 100644 --- a/resources/lang/cy/admin/hardware/general.php +++ b/resources/lang/cy/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Addasu Ased', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Ar gael', 'requested' => 'Gofynnwyd amdano', 'not_requestable' => 'Ddim ar gael', @@ -21,6 +23,7 @@ return [ 'restore' => 'Adfer Ased', 'pending' => 'Yn disgwl', 'undeployable' => 'Dim ar gael', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Gweld Ased', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/cy/admin/hardware/message.php b/resources/lang/cy/admin/hardware/message.php index f7ced8964c..b38906a244 100644 --- a/resources/lang/cy/admin/hardware/message.php +++ b/resources/lang/cy/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Nid oedd yn bosib adfer yr ased, ceisiwch eto o. g. y. dd', 'success' => 'Ased wedi adfer yn llwyddiannus.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Mae\'ch ffeil wedi\'i mewnforio', 'file_delete_success' => 'Mae eich ffeil wedi\'i dileu yn llwyddiannus', 'file_delete_error' => 'Nid oedd yn bosib dileu\'r ffeil', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/cy/admin/hardware/table.php b/resources/lang/cy/admin/hardware/table.php index 1d5dcb5424..0f2dd62ec3 100644 --- a/resources/lang/cy/admin/hardware/table.php +++ b/resources/lang/cy/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Mewn/Allan', 'checkout_date' => 'Dyddiad Allan', 'checkoutto' => 'Allan', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Gwahaniaeth', 'dl_csv' => 'Lawrlwytho CSV', diff --git a/resources/lang/cy/admin/licenses/general.php b/resources/lang/cy/admin/licenses/general.php index 188dc06251..dc2b1f7108 100644 --- a/resources/lang/cy/admin/licenses/general.php +++ b/resources/lang/cy/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Amdan trwyddedau', - 'about_licenses' => 'Mae trwyddedau yn tracio feddalwedd. May yna nifer o seddi fedrwch nodi yn erbyn unigolion', + 'about_licenses_title' => 'Amdan trwyddedau', + 'about_licenses' => 'Mae trwyddedau yn tracio feddalwedd. May yna nifer o seddi fedrwch nodi yn erbyn unigolion', 'checkin' => 'Nodi sedd trwydded i fewn', 'checkout_history' => 'Hanes nodi allan', 'checkout' => 'Nodi sedd trwydded allan', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Trwyddedau Meddalwedd', 'user' => 'Defnyddiwr', 'view' => 'Gweld Trwydded', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/cy/admin/manufacturers/message.php b/resources/lang/cy/admin/manufacturers/message.php index 80ff96369a..af22998c9c 100644 --- a/resources/lang/cy/admin/manufacturers/message.php +++ b/resources/lang/cy/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Nid yw\'r gwneuthyrwr yn bodoli.', 'assoc_users' => 'Mae\'r gwneuthyrwr yma wedi perthnasu i oleiaf un model a nid yw\'n bosib dileu. Diweddarwch eich modelau i beidio cyfeirio at y gwneuthyrwr yma ac yna ceisiwch eto. ', diff --git a/resources/lang/cy/admin/manufacturers/table.php b/resources/lang/cy/admin/manufacturers/table.php index b9c1dd7c7a..595480dcc8 100644 --- a/resources/lang/cy/admin/manufacturers/table.php +++ b/resources/lang/cy/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Ebost Cefnogaeth', 'support_phone' => 'Rhif ffôn cefnogaeth', 'support_url' => 'Wefan cefnogaeth', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Diweddaru Gwneuthyrwr', 'url' => 'URL', diff --git a/resources/lang/cy/admin/models/general.php b/resources/lang/cy/admin/models/general.php index 757c90d3f0..c0926c19c2 100644 --- a/resources/lang/cy/admin/models/general.php +++ b/resources/lang/cy/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Dileu Nifer o Modelau', 'bulk_delete_help' => 'Rhowch tic yn y bocsys isod i cadarnhau dileu y model. Nid oes modd dileu modelau sydd hefo asedau yn ei erbyn.', - 'bulk_delete_warn' => 'Rydych am dileu :model_count o asedau.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Adfer Model', 'requestable' => 'Gellir defnyddwyr gwneud cais am yr ased yma', 'show_mac_address' => 'Dangos cyfeiriad MAC yn asedau o\'r model yma', diff --git a/resources/lang/cy/admin/models/message.php b/resources/lang/cy/admin/models/message.php index 0a25c9960c..5a02eacee5 100644 --- a/resources/lang/cy/admin/models/message.php +++ b/resources/lang/cy/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Nid yw\'r model yn bodoli.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Ni diweddarwyd y model, ceisiwch eto o.g.y.dd', - 'success' => 'Model wedi diweddaru\'n llwyddiannus.' + 'success' => 'Model wedi diweddaru\'n llwyddiannus.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Dim newid mewn manylder, felly dim byd i diweddaru.', - 'success' => 'Modelau wedi diweddaru.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Dim modelau wedi dewis, felly dim byd i\'w ddileu.', - 'success' => ':success_count model(au) wedi dileu!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(au) wedi\'i dileu, :fail_count heb eu ddileu gan bod asedau wedi perthnasu iddo.' ), diff --git a/resources/lang/cy/admin/settings/general.php b/resources/lang/cy/admin/settings/general.php index 301d15a6cc..a8ef3d5ecc 100644 --- a/resources/lang/cy/admin/settings/general.php +++ b/resources/lang/cy/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Os ydych am i cyfrif ebost derbyn copi o negeseuon i ddefnyddwyr wrth nodi asdedau allan i defnyddwyr ac yn ol i fewn rhowch o yma. Fel arall, gadewch yn wag.', 'is_ad' => 'Mae hwn yn Server Active Directory', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Gyrru rhybuddion i', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Rhybuddion ebost wedi alluogi', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Gosodiadau Barcode', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Gosodiadau LDAP', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Gosodwch cyfrif a chyfrinair LDAP dilys o\'r base DN i profi cysyllted a gweithrediad LDAP. RHAID ARBED Y GOSODIADAU LDAP CYNTAF.', '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', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Dangos lluniau mewn ebyst', 'show_images_in_email_help' => 'Tynnwch y tic or bocs yma os yw eich copi o Snipe-IT tu ol i VPN neu o fewn rhwydwaith caedig os ni fydd yn bosib i defnyddwyr gweld lluniau yn ebyst o\'r system yma.', 'site_name' => 'Enw Safle', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Enwbot Slack', - 'slack_channel' => 'Sianel Slack', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Gosodiadau Slack', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Ar ol arbed eich wybodaeth Slack cewch fotwm profi.', - 'slack_test_help' => 'Profi eich gosodiadau slack. Rhaid i chi arbed eich gosodiadau gyntaf.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Fersiwn Snipe-IT', 'support_footer' => 'Cefnogi lincs ar waelod tudalenau ', 'support_footer_help' => 'Nodi pwy sydd yn gallu gweld y wybodaeth cefnogi ar canllaw defnyddwyr', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labelau', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/cy/admin/settings/message.php b/resources/lang/cy/admin/settings/message.php index 0f8d658573..648788616e 100644 --- a/resources/lang/cy/admin/settings/message.php +++ b/resources/lang/cy/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/cy/admin/users/general.php b/resources/lang/cy/admin/users/general.php index 0fe98f2b55..67fa1dea68 100644 --- a/resources/lang/cy/admin/users/general.php +++ b/resources/lang/cy/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Argraffu Asedau', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Meddalwedd allan i :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Gweld Defnyddiwr :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/cy/admin/users/message.php b/resources/lang/cy/admin/users/message.php index f04c85d285..7760e062f8 100644 --- a/resources/lang/cy/admin/users/message.php +++ b/resources/lang/cy/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Rydych wedi llwyddo I wrthod yr ased yma.', 'bulk_manager_warn' => 'Mae eich defnyddwyr wedi diweddaru\'n llwyddiannus ond mae\'r blwch rheolwr heb newid gan fod y rheolwr yn y rhestr o defnyddwyr. Dewisiwch eto heb cynnwys y rheolwr.', 'user_exists' => 'Defnyddiwr yn bodoli yn barod!', - 'user_not_found' => 'Nid yw defnyddiwr [:id] yn bodoli.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Mae angen llenwi\'r maes login', 'user_password_required' => 'Rhaid gosod cyfrinair.', 'insufficient_permissions' => 'Diffyg Hawliau.', diff --git a/resources/lang/cy/auth/general.php b/resources/lang/cy/auth/general.php index 2494f5150e..46deef4959 100644 --- a/resources/lang/cy/auth/general.php +++ b/resources/lang/cy/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Cofiwch fi', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/cy/general.php b/resources/lang/cy/general.php index a6442a3be8..a62dca8ac6 100644 --- a/resources/lang/cy/general.php +++ b/resources/lang/cy/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Ategolion', 'activated' => 'Actifadu', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Ategolyn', 'accessory_report' => 'Adroddiad Ategolion', 'action' => 'Gweithred', @@ -27,7 +28,13 @@ return [ 'audit' => 'Awdit', 'audit_report' => 'Log Awdit', 'assets' => 'Asedau', + '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', 'avatar_delete' => 'Dileu Avatar', 'avatar_upload' => 'Uwchlwytho Avatar', 'back' => 'Yn ôl', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Canslo', 'categories' => 'Categoriau', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Mae\'r cymhwysiad hwn yn rhedeg yn y modd cynhyrchu gyda debugging wedi\'i alluogi. Gall hyn ddatgelu data sensitif os yw\'ch cais yn hygyrch i\'r byd y tu allan. Analluoga modd dadfygio trwy osod y APP_DEBUG gwerth yn .env ffeil ifalse.', 'delete' => 'Dileu', 'delete_confirm' => 'Ydych chi\'n sicr eich bod eisiau dileu\'r :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Wedi Dileu', 'delete_seats' => 'Seddi wedi dileu', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Mewnforio', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Cynnal a chadw Ased', 'item' => 'Eitem', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Diffyg Hawliau!', 'kits' => 'Predefined Kits', 'language' => 'Iaith', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Cais wedi dileu', 'save' => 'Cadw', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Dewis', 'select_all' => 'Dewis Popeth', 'search' => 'Chwilio', @@ -240,8 +254,8 @@ return [ 'signature' => 'Llofnod', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'MODE DEMO: Mae rhai nodweddion wedi analluogi ar gyfer y gosodiad hwn.', 'site_name' => 'Enw Safle', 'state' => 'Talaith', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Ydych chi\'n sicr eich bod eisiau dileu', 'submit' => 'Cyflwyno', 'target' => 'Targed', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Dangos Dyddiad ac Amser', 'total_assets' => 'cyfanswm asedau', 'total_licenses' => 'cyfanswm trwyddedau', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/cy/help.php b/resources/lang/cy/help.php index ae93bf35cd..7baea163c1 100644 --- a/resources/lang/cy/help.php +++ b/resources/lang/cy/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Mwy o wybodaeth', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/cy/localizations.php b/resources/lang/cy/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/cy/localizations.php +++ b/resources/lang/cy/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/cy/mail.php b/resources/lang/cy/mail.php index ef775012fb..c2f8723bf5 100644 --- a/resources/lang/cy/mail.php +++ b/resources/lang/cy/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Mewngofnodi i\'ch gosodiad Snipe-IT newydd gan ddefnyddio\'r manylion isod:', 'login' => 'Mewngofnodi:', 'Low_Inventory_Report' => 'Adroddiad Inventory Isel', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Nifer Lleiaf', 'name' => 'Enw', 'new_item_checked' => 'Mae eitem newydd wedi\'i gwirio o dan eich enw, mae\'r manylion isod.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Eich manylion defnyddiwr Snipe-IT', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/cy/validation.php b/resources/lang/cy/validation.php index 5371a43915..a8bdb061a9 100644 --- a/resources/lang/cy/validation.php +++ b/resources/lang/cy/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Rhaid i\'r :attribute cael o leiaf :min o eitemau.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Mae eich cyfrinair cyfredol yn anghywir', 'dumbpwd' => 'Mae\'r cyfrinair hwnnw\'n rhy gyffredin.', 'statuslabel_type' => 'Rhaid i chi ddewis math label statws dilys', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/da/account/general.php b/resources/lang/da/account/general.php index 7fc060a849..85326dc4c2 100644 --- a/resources/lang/da/account/general.php +++ b/resources/lang/da/account/general.php @@ -1,12 +1,10 @@ 'Personal API Keys', - '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:', + 'personal_api_keys' => 'Personlige API-nøgler', + 'api_key_warning' => 'Når du genererer en API-nøgle, skal du sørge for at kopiere det ned med det samme, da de ikke vil være synlige for dig igen.', + 'api_base_url' => 'Din basisadressen til API\'en er:', '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.', + 'api_token_expiration_time' => 'API-nøgler er indstillet til at udløbe efter:', + 'api_reference' => 'Se venligst i API-manualen for at finde specifikke API-endpoints og yderligere API-dokumentation.', ); diff --git a/resources/lang/da/admin/accessories/general.php b/resources/lang/da/admin/accessories/general.php index 5be1f1c1d1..5628485ef9 100644 --- a/resources/lang/da/admin/accessories/general.php +++ b/resources/lang/da/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Opdater tilbehør', 'use_default_eula' => 'Brug den primære standard slutbrugerlicens i stedet for.', 'use_default_eula_disabled' => 'Brug den primære standard slutbrugerlicens i stedet for. Ingen primær standard slutbrugerlicens er defineret. Tilføj en under indstillinger.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/da/admin/accessories/message.php b/resources/lang/da/admin/accessories/message.php index 829220a585..48d2e46ae0 100644 --- a/resources/lang/da/admin/accessories/message.php +++ b/resources/lang/da/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'Tilbehør blev ikke tjekket ud, prøv igen', 'success' => 'Tilbehør er tjekket ud.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Den bruger er ikke gyldig. Prøv igen.' ), diff --git a/resources/lang/da/admin/asset_maintenances/form.php b/resources/lang/da/admin/asset_maintenances/form.php index cbc11d3549..7828bc0f29 100644 --- a/resources/lang/da/admin/asset_maintenances/form.php +++ b/resources/lang/da/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Vedligeholdelsestype', + 'asset_maintenance_type' => 'Aktiv-vedligeholdelsestype', 'title' => 'Titel', - 'start_date' => 'Start dato', - 'completion_date' => 'Gennemført', + 'start_date' => 'Startdato', + 'completion_date' => 'Afslutningsdato', 'cost' => 'Omkostninger', 'is_warranty' => 'Garantiforbedring', - 'asset_maintenance_time' => 'Dage', + 'asset_maintenance_time' => 'Aktiv-vedligeholdelsestid (i dage)', 'notes' => 'Noter', - 'update' => 'Opdatering', - 'create' => 'Opret' + 'update' => 'Opdater aktiv-vedligeholdelse', + 'create' => 'Opret aktiv-vedligeholdelse' ]; diff --git a/resources/lang/da/admin/asset_maintenances/general.php b/resources/lang/da/admin/asset_maintenances/general.php index f7eda47405..41019c5f7e 100644 --- a/resources/lang/da/admin/asset_maintenances/general.php +++ b/resources/lang/da/admin/asset_maintenances/general.php @@ -11,6 +11,6 @@ 'calibration' => 'Kalibrering', 'software_support' => 'Software Support', 'hardware_support' => 'Hardware support', - 'configuration_change' => 'Configuration Change', - 'pat_test' => 'PAT Test', + 'configuration_change' => 'Konfigurationsændring', + 'pat_test' => 'PAT-test', ]; diff --git a/resources/lang/da/admin/categories/general.php b/resources/lang/da/admin/categories/general.php index 377c20db08..8f45feb5f5 100644 --- a/resources/lang/da/admin/categories/general.php +++ b/resources/lang/da/admin/categories/general.php @@ -18,6 +18,6 @@ return array( 'update' => 'Opdater kategori', 'use_default_eula' => 'Brug den primære standard slutbrugerlicens i stedet for.', 'use_default_eula_disabled' => 'Brug den primære standard slutbrugerlicens i stedet for. Ingen primær standard slutbrugerlicens er defineret. Tilføj en under indstillinger.', - 'use_default_eula_column' => 'Use default EULA', + 'use_default_eula_column' => 'Brug standard slutbrugerlicensaftale', ); diff --git a/resources/lang/da/admin/categories/message.php b/resources/lang/da/admin/categories/message.php index 6b26b7dc1c..fe3b5c2ef9 100644 --- a/resources/lang/da/admin/categories/message.php +++ b/resources/lang/da/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Kategorien blev ikke opdateret, prøv igen', - 'success' => 'Kategorien blev opdateret.' + 'success' => 'Kategorien blev opdateret.', + 'cannot_change_category_type' => 'Du kan ikke ændre kategoritypen, når først den er blevet oprettet', ), 'delete' => array( diff --git a/resources/lang/da/admin/companies/general.php b/resources/lang/da/admin/companies/general.php index 7595d7941e..511e5de36c 100644 --- a/resources/lang/da/admin/companies/general.php +++ b/resources/lang/da/admin/companies/general.php @@ -2,6 +2,6 @@ return [ 'select_company' => 'Vælg firma', - 'about_companies' => 'About Companies', - 'about_companies_description' => ' You can use companies as a simple informative field, or you can use them to restrict asset visibility and availability to users with a specific company by enabling Full Company Support in your Admin Settings.', + 'about_companies' => 'Om virksomheder', + 'about_companies_description' => 'Du kan bruge virksomheder som et simpelt informationsfelt eller du kan bruge dem til at begrænse aktivets synlighed og tilgængelighed for brugere med en bestemt virksomhed ved at aktivere Full Company Support i dine Admin-indstillinger.', ]; diff --git a/resources/lang/da/admin/components/general.php b/resources/lang/da/admin/components/general.php index 531e82dafd..fa506b7bdf 100644 --- a/resources/lang/da/admin/components/general.php +++ b/resources/lang/da/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Resterende', 'total' => 'Total', 'update' => 'Opdater Komponent', + 'checkin_limit' => 'Antal tjekket ind skal være lig med eller mindre end :assigned_qty' ); diff --git a/resources/lang/da/admin/components/message.php b/resources/lang/da/admin/components/message.php index e095b0841e..41a39eb3e3 100644 --- a/resources/lang/da/admin/components/message.php +++ b/resources/lang/da/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponent blev ikke tjekket ud, prøv igen', 'success' => 'Komponent tjekket ud med succes.', - 'user_does_not_exist' => 'Denne bruger er ugyldig. Prøv igen.' + 'user_does_not_exist' => 'Denne bruger er ugyldig. Prøv igen.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/da/admin/consumables/message.php b/resources/lang/da/admin/consumables/message.php index bddde98446..63313533d1 100644 --- a/resources/lang/da/admin/consumables/message.php +++ b/resources/lang/da/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Forbruget blev ikke tjekket ud, prøv igen', 'success' => 'Forbrugsmaterialet tjekket ud med succes.', - 'user_does_not_exist' => 'Denne bruger er ugyldig. Prøv igen.' + 'user_does_not_exist' => 'Denne bruger er ugyldig. Prøv igen.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/da/admin/custom_fields/general.php b/resources/lang/da/admin/custom_fields/general.php index 19144a5767..31657d9ba4 100644 --- a/resources/lang/da/admin/custom_fields/general.php +++ b/resources/lang/da/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Bruges af modeller', 'order' => 'Ordre', 'create_fieldset' => 'Nyt Feltsæt', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Nyt Brugerdefinerede Felt', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/da/admin/custom_fields/message.php b/resources/lang/da/admin/custom_fields/message.php index f27c3985ec..d2d527d86a 100644 --- a/resources/lang/da/admin/custom_fields/message.php +++ b/resources/lang/da/admin/custom_fields/message.php @@ -51,7 +51,7 @@ return array( 'fieldset_default_value' => array( - 'error' => 'Error validating default fieldset values.', + 'error' => 'Fejl under validering af standard feltsæt-værdier.', ), diff --git a/resources/lang/da/admin/departments/message.php b/resources/lang/da/admin/departments/message.php index bd46d2244a..d6ff5e279e 100644 --- a/resources/lang/da/admin/departments/message.php +++ b/resources/lang/da/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Afdeling findes ikke.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'En afdeling med dette navn findes allerede på denne virksomhedsplacering. Eller vælg et mere specifikt navn for denne afdeling. ', 'assoc_users' => 'Denne afdeling er i øjeblikket knyttet til mindst én bruger og kan ikke slettes. Opdater venligst dine brugere for at ikke længere referere til denne afdeling, og prøv igen. ', 'create' => array( 'error' => 'Afdelingen blev ikke oprettet, prøve igen.', diff --git a/resources/lang/da/admin/depreciations/general.php b/resources/lang/da/admin/depreciations/general.php index 2492ead4b4..486c285c94 100644 --- a/resources/lang/da/admin/depreciations/general.php +++ b/resources/lang/da/admin/depreciations/general.php @@ -6,11 +6,11 @@ return [ 'asset_depreciations' => 'Aktiv Afskrivninger', 'create' => 'Opret afskrivninger', 'depreciation_name' => 'Afskrivningnavn', - 'depreciation_min' => 'Floor Value of Depreciation', + 'depreciation_min' => 'Bæreværdi for afskrivning', 'number_of_months' => 'Antal måneder', 'update' => 'Opdater Afskrivninger', - 'depreciation_min' => 'Minimum Value after Depreciation', - 'no_depreciations_warning' => 'Warning: - You do not currently have any depreciations set up. - Please set up at least one depreciation to view the depreciation report.', + 'depreciation_min' => 'Minimumsværdi efter afskrivning', + 'no_depreciations_warning' => 'Advarsel: + Du har i øjeblikket ikke opsat nogen afskrivninger. + Opsæt mindst én afskrivning for at se afskrivningsrapporten.', ]; diff --git a/resources/lang/da/admin/depreciations/table.php b/resources/lang/da/admin/depreciations/table.php index 525a1491d5..7627a289d4 100644 --- a/resources/lang/da/admin/depreciations/table.php +++ b/resources/lang/da/admin/depreciations/table.php @@ -6,6 +6,6 @@ return [ 'months' => 'Måneder', 'term' => 'Term', 'title' => 'Navn ', - 'depreciation_min' => 'Floor Value', + 'depreciation_min' => 'Bæreværdi', ]; diff --git a/resources/lang/da/admin/groups/message.php b/resources/lang/da/admin/groups/message.php index af83daa1c4..82e1061b11 100644 --- a/resources/lang/da/admin/groups/message.php +++ b/resources/lang/da/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Gruppen eksisterer allerede!', - 'group_not_found' => 'Gruppen [:id] eksisterer ikke.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Navnefeltet er påkrævet', 'success' => array( diff --git a/resources/lang/da/admin/groups/titles.php b/resources/lang/da/admin/groups/titles.php index ffd7d706e1..1b013c5f0e 100644 --- a/resources/lang/da/admin/groups/titles.php +++ b/resources/lang/da/admin/groups/titles.php @@ -10,7 +10,7 @@ return [ 'group_admin' => 'Gruppeadministrator', 'allow' => 'Tillad', 'deny' => 'Afvis', - 'permission' => 'Permission', - 'grant' => 'Grant', - 'no_permissions' => 'This group has no permissions.' + 'permission' => 'Rettighed', + 'grant' => 'Tildel', + 'no_permissions' => 'Denne gruppe har ingen rettigheder.' ]; diff --git a/resources/lang/da/admin/hardware/form.php b/resources/lang/da/admin/hardware/form.php index b014fa940d..e4da67b043 100644 --- a/resources/lang/da/admin/hardware/form.php +++ b/resources/lang/da/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Bekræft massefortegnelser', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Gennemgå aktiver for massesletning nedenfor. Disse aktiver kan gendannes når slettet, men de vil ikke længere være forbundet med eventuelle brugere, de i øjeblikket er tildelt.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Du er i gang med at slette :asset_count aktiver.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Masseopdater Aktiver', 'bulk_update_help' => 'Denne form tillader dig at opdatere flere aktiver på en gang. Udfyld kun de felter der skal ændres. Ikke udfyldte feltet forbilver uændret.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/da/admin/hardware/general.php b/resources/lang/da/admin/hardware/general.php index 6429177b88..344dff99c4 100644 --- a/resources/lang/da/admin/hardware/general.php +++ b/resources/lang/da/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Rediger aktiv', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'kan anmodes', 'requested' => 'Anmodet', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Gendan aktiv', 'pending' => 'Verserende', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Se aktiv', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/da/admin/hardware/message.php b/resources/lang/da/admin/hardware/message.php index 5d673caba8..530cfa6484 100644 --- a/resources/lang/da/admin/hardware/message.php +++ b/resources/lang/da/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Akten blev ikke gendannet, prøv igen', 'success' => 'Asset restaureret med succes.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'Din fil er blevet importeret', 'file_delete_success' => 'Din fil er blevet slettet korrekt', 'file_delete_error' => 'Filen kunne ikke slettes', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/da/admin/hardware/table.php b/resources/lang/da/admin/hardware/table.php index a23e351cac..a7866f995d 100644 --- a/resources/lang/da/admin/hardware/table.php +++ b/resources/lang/da/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Ind ud', 'checkout_date' => 'Checkout dato', 'checkoutto' => 'Tjekket ud', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Download CSV', diff --git a/resources/lang/da/admin/licenses/general.php b/resources/lang/da/admin/licenses/general.php index b8c500395e..2f7e026296 100644 --- a/resources/lang/da/admin/licenses/general.php +++ b/resources/lang/da/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Om licenser', - 'about_licenses' => 'Licenser bruges til at spore software. De har et bestemt antal pladser, der kan tjekkes ud til enkeltpersoner', + 'about_licenses_title' => 'Om licenser', + 'about_licenses' => 'Licenser bruges til at spore software. De har et bestemt antal pladser, der kan tjekkes ud til enkeltpersoner', 'checkin' => 'Checkin Licenssæde', 'checkout_history' => 'Checkout historie', 'checkout' => 'Checkout Licenssæde', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Softwarelicenser', 'user' => 'Bruger', 'view' => 'Se licens', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/da/admin/licenses/message.php b/resources/lang/da/admin/licenses/message.php index 933c063c33..0bf04718ec 100644 --- a/resources/lang/da/admin/licenses/message.php +++ b/resources/lang/da/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'License does not exist or you do not have permission to view it.', + 'does_not_exist' => 'Enten findes licensen ikke eller også har du ikke tilladelse til at se den.', 'user_does_not_exist' => 'Bruger eksisterer ikke.', 'asset_does_not_exist' => 'Aktivet, du forsøger at associere med denne licens, findes ikke.', 'owner_doesnt_match_asset' => 'Aktivet, du forsøger at associere med denne licens, ejes af en anden end den person, der er valgt i Tildelt-rullemenuen.', diff --git a/resources/lang/da/admin/locations/message.php b/resources/lang/da/admin/locations/message.php index 72ef315b6d..90b60f2057 100644 --- a/resources/lang/da/admin/locations/message.php +++ b/resources/lang/da/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Denne placering er i øjeblikket forbundet med mindst en bruger og kan ikke slettes. Opdater dine brugere for ikke længere at henvise til denne placering, og prøv igen.', 'assoc_assets' => 'Denne placering er i øjeblikket forbundet med mindst ét ​​aktiv og kan ikke slettes. Opdater dine aktiver for ikke længere at henvise til denne placering, og prøv igen.', 'assoc_child_loc' => 'Denne placering er for øjeblikket forælder på mindst et barns placering og kan ikke slettes. Opdater dine placeringer for ikke længere at henvise til denne placering, og prøv igen.', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Tildelte aktiver', + 'current_location' => 'Aktuel lokation', 'create' => array( diff --git a/resources/lang/da/admin/locations/table.php b/resources/lang/da/admin/locations/table.php index 425bed91f9..d3d31ecbb2 100644 --- a/resources/lang/da/admin/locations/table.php +++ b/resources/lang/da/admin/locations/table.php @@ -20,21 +20,21 @@ return [ 'parent' => 'Forældre', 'currency' => 'Beliggenhed Valuta', 'ldap_ou' => 'LDAP Search OU', - 'user_name' => 'User Name', - 'department' => 'Department', - 'location' => 'Location', - 'asset_tag' => 'Assets Tag', - 'asset_name' => 'Name', - 'asset_category' => 'Category', - 'asset_manufacturer' => 'Manufacturer', + 'user_name' => 'Brugernavn', + 'department' => 'Afdeling', + 'location' => 'Lokation', + 'asset_tag' => 'Aktivetiket', + 'asset_name' => 'Navn', + 'asset_category' => 'Kategori', + 'asset_manufacturer' => 'Fabrikant', 'asset_model' => 'Model', - 'asset_serial' => 'Serial', - 'asset_location' => 'Location', - 'asset_checked_out' => 'Checked Out', - 'asset_expected_checkin' => 'Expected Checkin', - 'date' => 'Date:', - 'signed_by_asset_auditor' => 'Signed By (Asset Auditor):', - 'signed_by_finance_auditor' => 'Signed By (Finance Auditor):', - 'signed_by_location_manager' => 'Signed By (Location Manager):', - 'signed_by' => 'Signed Off By:', + 'asset_serial' => 'Serienummer', + 'asset_location' => 'Lokation', + 'asset_checked_out' => 'Tjekket ud', + 'asset_expected_checkin' => 'Forventet indtjekning', + 'date' => 'Dato:', + 'signed_by_asset_auditor' => 'Godkendt af (aktivkontrollant):', + 'signed_by_finance_auditor' => 'Godkendt af (finanskontrollant):', + 'signed_by_location_manager' => 'Godkendt af (Lokationsadministrator):', + 'signed_by' => 'Godkendt af:', ]; diff --git a/resources/lang/da/admin/manufacturers/message.php b/resources/lang/da/admin/manufacturers/message.php index 7376b2b1a0..d4c3d73a35 100644 --- a/resources/lang/da/admin/manufacturers/message.php +++ b/resources/lang/da/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Fabrikant eksistere ikke.', 'assoc_users' => 'Denne producent er i øjeblikket forbundet med mindst en model og kan ikke slettes. Opdater dine modeller for ikke længere at henvise til denne producent, og prøv igen.', diff --git a/resources/lang/da/admin/manufacturers/table.php b/resources/lang/da/admin/manufacturers/table.php index 782e75aa9b..5b39e632dd 100644 --- a/resources/lang/da/admin/manufacturers/table.php +++ b/resources/lang/da/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support Email', 'support_phone' => 'Support Telefon', 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Opdater Fabrikant', 'url' => 'URL', diff --git a/resources/lang/da/admin/models/general.php b/resources/lang/da/admin/models/general.php index bd1d932e05..171a02be06 100644 --- a/resources/lang/da/admin/models/general.php +++ b/resources/lang/da/admin/models/general.php @@ -3,10 +3,10 @@ return array( 'about_models_title' => 'Om aktiv modeller', 'about_models_text' => 'Aktiv modeller er en måde at gruppere identiske aktiver. "MBP 2013", "IPhone 6s", osv.', - 'deleted' => 'This model has been deleted.', + 'deleted' => 'Denne model er blevet slettet.', 'bulk_delete' => 'Slet flere aktivmodeller', 'bulk_delete_help' => 'Brug checkboksene nedenfor til at bekræfte sletning af valgte aktivmodeller. Aktivmodeller med tilknyttede aktiver kan ikke slettes før aktivet er knyttet til en anden model.', - 'bulk_delete_warn' => 'Du er ved at slette :model_count aktivmodeller.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Gendanne Model', 'requestable' => 'Brugere kan anmode om denne model', 'show_mac_address' => 'Vis MAC adressefelt i aktiver i denne model', diff --git a/resources/lang/da/admin/models/message.php b/resources/lang/da/admin/models/message.php index 53382a3c1a..b17eec9851 100644 --- a/resources/lang/da/admin/models/message.php +++ b/resources/lang/da/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model findes ikke.', + 'no_association' => 'INGEN MODEL TILKNYTTET.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Modellen blev ikke opdateret, prøv igen', - 'success' => 'Model opdateret.' + 'success' => 'Model opdateret.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Ingen felter blev ændret, så intet er blevet opdateret.', - 'success' => 'Modeller opdateret.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Ingen modeller blev valgt, så intet blev slettet.', - 'success' => ':success_count model(ler) slettet!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(ler) blev slettet; men :fail_count kunne ikke slettes fordi de stadig har aktiver knyttet til sig.' ), diff --git a/resources/lang/da/admin/reports/general.php b/resources/lang/da/admin/reports/general.php index 577718d5db..b6127095a0 100644 --- a/resources/lang/da/admin/reports/general.php +++ b/resources/lang/da/admin/reports/general.php @@ -2,9 +2,9 @@ return [ 'info' => 'Vælg de ønskede muligheder for din aktivrapport.', - 'deleted_user' => 'Deleted user', - 'send_reminder' => 'Send reminder', - 'reminder_sent' => 'Reminder sent', - 'acceptance_deleted' => 'Acceptance request deleted', - 'acceptance_request' => 'Acceptance request' + 'deleted_user' => 'Slettet bruger', + 'send_reminder' => 'Send påmindelse', + 'reminder_sent' => 'Påmindelse sendt', + 'acceptance_deleted' => 'Accept-anmodning slettet', + 'acceptance_request' => 'Anmodning om accept' ]; \ No newline at end of file diff --git a/resources/lang/da/admin/settings/general.php b/resources/lang/da/admin/settings/general.php index 6360a19d68..55666d6ea7 100644 --- a/resources/lang/da/admin/settings/general.php +++ b/resources/lang/da/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Hvis du vil sende en kopi af checkin/checkout emails som er sendt til brugere til en ekstra email konto, så tilføj den her. Ellers efterlad feltet tomt.', 'is_ad' => 'Dette er en Active Directory-server', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Send advarsler til', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Advarsler aktiveret', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Stregkodeindstillinger', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP-indstillinger', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Indtast validt LDAP brugernavn og kodeord fra den basis DN du angav ovenfor for at teste om dit LDAP login er korrekt konfigureret. DU SKAL FØRST OPDATERE og GEMME DINE LDAP INDSTILLINGER.', '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', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Vis billeder i emails', 'show_images_in_email_help' => 'Afkryds denne boks hvis din Snipe-IT installation er bag en VPN eller i et lukket netværk og brugere udenfor netværket vil forhinderes i at anvende billeder fra netværket i deres emails.', 'site_name' => 'Side navn', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slap endepunkt', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration er valgfri, men endpoint og kanal er påkrævet, hvis du ønsker at bruge det. For at konfigurere Slack integration, skal du først oprette en indgående webhook på din Slack konto. Klik på knappen Test Slack Integration for at bekræfte, at dine indstillinger er korrekte, før du gemmer. ', - 'slack_integration_help_button' => 'Nå du har gemt din Slack information, vil testknappen blive synlig.', - 'slack_test_help' => 'Test om din Slack integration er konfigureret korrekt. DU SKAL FØRST OPDATERE OG GEMME DINE SLACK\'s INDSTILLINGER.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Understøt footer links ', 'support_footer_help' => 'Angiv hvem der kan se links i Snipe-IT Support info og brugermanual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/da/admin/settings/message.php b/resources/lang/da/admin/settings/message.php index 82653ef6af..9f95edf605 100644 --- a/resources/lang/da/admin/settings/message.php +++ b/resources/lang/da/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/da/admin/settings/table.php b/resources/lang/da/admin/settings/table.php index 22db5c84ed..3a90e6ba7f 100644 --- a/resources/lang/da/admin/settings/table.php +++ b/resources/lang/da/admin/settings/table.php @@ -1,6 +1,6 @@ 'Created', - 'size' => 'Size', + 'created' => 'Oprettet', + 'size' => 'Størrelse', ); diff --git a/resources/lang/da/admin/statuslabels/message.php b/resources/lang/da/admin/statuslabels/message.php index 98877221e9..f20e581b27 100644 --- a/resources/lang/da/admin/statuslabels/message.php +++ b/resources/lang/da/admin/statuslabels/message.php @@ -23,7 +23,7 @@ return [ 'help' => [ 'undeployable' => 'Disse aktiver kan ikke tildeles nogen.', - 'deployable' => 'These assets can be checked out. Once they are assigned, they will assume a meta status of Deployed.', + 'deployable' => 'Disse aktiver kan tjekkes ud. Når de er tildelt, antager de en metastatus på Deployed.', 'archived' => 'Disse aktiver kan ikke tjekkes ud, og vises kun i arkiveret visning. Dette er nyttigt for at bevare oplysninger om aktiver til budgettering / historiske formål, men bevare dem ud af den daglige aktivliste.', 'pending' => 'Disse aktiver kan endnu ikke tildeles nogen, der ofte bruges til genstande, der er ude til reparation, men forventes at vende tilbage til omløb.', ], diff --git a/resources/lang/da/admin/users/general.php b/resources/lang/da/admin/users/general.php index 1f93ba8891..636c35bfc6 100644 --- a/resources/lang/da/admin/users/general.php +++ b/resources/lang/da/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Udskriv alle tildelte', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checket ud til: navn', 'send_email_help' => 'Du skal angive en e-mail-adresse for denne bruger for at sende dem legitimationsoplysninger. E-mailing af legitimationsoplysninger kan kun gøres ved brugeroprettelse. Adgangskoder gemmes i en envejs hash og kan ikke hentes når de er gemt.', 'view_user' => 'Se bruger :navn', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/da/admin/users/message.php b/resources/lang/da/admin/users/message.php index ae5c9ee0e6..60d4627387 100644 --- a/resources/lang/da/admin/users/message.php +++ b/resources/lang/da/admin/users/message.php @@ -6,16 +6,16 @@ return array( 'declined' => 'Du har afvist dette aktiv.', 'bulk_manager_warn' => 'Dine brugere er blevet opdateret, men din administratorindgang blev ikke gemt, fordi den valgte leder også var på brugerlisten, der skulle redigeres, og brugerne er måske ikke deres egen administrator. Vælg venligst dine brugere igen, undtagen manager.', 'user_exists' => 'Bruger eksistere allerede!', - 'user_not_found' => 'Bruger [: id] findes ikke.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Login-feltet er påkrævet', 'user_password_required' => 'Adgangskoden er påkrævet.', 'insufficient_permissions' => 'Utilstrækkelige tilladelser.', 'user_deleted_warning' => 'Denne bruger er blevet slettet. Du skal gendanne denne bruger for at redigere dem eller tildele dem nye aktiver.', 'ldap_not_configured' => 'LDAP-integration er ikke konfigureret til denne installation.', 'password_resets_sent' => 'De valgte brugere, der er aktiveret og har en gyldig e-mail-adresser, har fået tilsendt et link til nulstilling af adgangskode.', - 'password_reset_sent' => 'A password reset link has been sent to :email!', - 'user_has_no_email' => 'This user does not have an email address in their profile.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'password_reset_sent' => 'Et link til nulstilling af adgangskode er blevet sendt til :email!', + 'user_has_no_email' => 'Denne bruger har ikke en email-adresse i deres profil.', + 'user_has_no_assets_assigned' => 'Denne bruger er ikke tildelt nogen aktiver', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Denne bruger har ikke indsat en email.', + 'success' => 'Brugeren er blevet underrettet om deres aktuelle beholdning.' ) ); \ No newline at end of file diff --git a/resources/lang/da/admin/users/table.php b/resources/lang/da/admin/users/table.php index 09eca46f88..26e7e614ff 100644 --- a/resources/lang/da/admin/users/table.php +++ b/resources/lang/da/admin/users/table.php @@ -10,7 +10,7 @@ return array( 'email' => 'Email', 'employee_num' => 'Medarbejder nr.', 'first_name' => 'Fornavn', - 'groupnotes' => 'Select a group to assign to the user, remember that a user takes on the permissions of the group they are assigned. Use ctrl+click (or cmd+click on MacOS) to deselect groups.', + 'groupnotes' => 'Vælg en gruppe at tildele til brugeren, husk at en bruger får rettighederne for den gruppe, de er tildelt. Brug ctrl+klik (eller cmd+klik på MacOS) for at fravælge grupper.', 'id' => 'ID', 'inherit' => 'Arve', 'job' => 'Job Titel', diff --git a/resources/lang/da/auth.php b/resources/lang/da/auth.php index db310aa1bb..6569980d21 100644 --- a/resources/lang/da/auth.php +++ b/resources/lang/da/auth.php @@ -13,8 +13,8 @@ return array( | */ - 'failed' => 'These credentials do not match our records.', - 'password' => 'The provided password is incorrect.', - 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'failed' => 'Disse oplysninger passer ikke med de gemte.', + 'password' => 'Adgangskoden er forkert.', + 'throttle' => 'For mange loginforsøg. Prøv igen om :seconds sekunder.', ); diff --git a/resources/lang/da/auth/general.php b/resources/lang/da/auth/general.php index b2f805ea14..fc94b96bd7 100644 --- a/resources/lang/da/auth/general.php +++ b/resources/lang/da/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Husk mig', 'username_help_top' => 'Indtast dit brugernavn for at få tilsendt et link til nulstilling af adgangskoden.', 'username_help_bottom' => 'Dit brugernavn og din emailadresse kan være den samme; men din konfiguration kan kæve at de er forskellige. Hvis du ikke kan huske dit brugernavn, så kontakt administratoren.

Brugernavne uden tilhørende emailadresse vil ikke få tilsendt mail med link til reset af kodeord. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/da/button.php b/resources/lang/da/button.php index e127c7b2c7..92dc920c36 100644 --- a/resources/lang/da/button.php +++ b/resources/lang/da/button.php @@ -4,21 +4,21 @@ return [ 'actions' => 'Handlinger', 'add' => 'Tilføj Ny', 'cancel' => 'Annuller', - 'checkin_and_delete' => 'Checkin All / Delete User', + 'checkin_and_delete' => 'Tjek alt ind og slet bruger', 'delete' => 'Slet', 'edit' => 'Rediger', 'restore' => 'Gendan', - 'remove' => 'Remove', + 'remove' => 'Fjern', 'request' => 'Anmodning', 'submit' => 'Send', 'upload' => 'Upload', 'select_file' => 'Vælg fil ...', 'select_files' => 'Vælg filer...', 'generate_labels' => '{1} Generer etiketter [2,*] Generer etiketter', - 'send_password_link' => 'Send Password Reset Link', - 'go' => 'Go', - 'bulk_actions' => 'Bulk Actions', - 'add_maintenance' => 'Add Maintenance', - 'append' => 'Append', - 'new' => 'New', + 'send_password_link' => 'Send link til nulstilling af adgangskode', + 'go' => 'Start', + 'bulk_actions' => 'Massehandlinger', + 'add_maintenance' => 'Tilføj vedligehold', + 'append' => 'Tilføj', + 'new' => 'Ny', ]; diff --git a/resources/lang/da/general.php b/resources/lang/da/general.php index 7417234c89..6f869af168 100644 --- a/resources/lang/da/general.php +++ b/resources/lang/da/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Tilbehør', 'activated' => 'Aktiveret', + 'accepted_date' => 'Dato accepteret', 'accessory' => 'Tilbehør', 'accessory_report' => 'Tilbehørsrapport', 'action' => 'Handling', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Administrator', 'add_seats' => 'Tilføjede pladser', - 'age' => "Age", + 'age' => "Alder", 'all_assets' => 'Alle aktiver', 'all' => 'Alle', 'archived' => 'Arkiveret', @@ -20,14 +21,20 @@ return [ 'asset' => 'Aktiv', 'asset_report' => 'Aktiv Rapport', 'asset_tag' => 'Aktiv Mærkat', - 'asset_tags' => 'Asset Tags', - 'assets_available' => 'Assets available', - 'accept_assets' => 'Accept Assets :name', - 'accept_assets_menu' => 'Accept Assets', + 'asset_tags' => 'Aktivetiketter', + 'assets_available' => 'Tilgængelige aktiver', + 'accept_assets' => 'Accepter aktiver :name', + 'accept_assets_menu' => 'Accepter aktiver', 'audit' => 'Revidere', 'audit_report' => 'Revisionslog', 'assets' => 'Aktiver', - 'assigned_to' => 'Assigned to :name', + 'assets_audited' => 'aktiver revideret', + 'assets_checked_in_count' => 'aktiver tjekket ind', + 'assets_checked_out_count' => 'aktiver tjekket ud', + 'asset_deleted_warning' => 'Dette aktiv er blevet slettet. Du skal gendanne det, før du kan tildele det til nogen.', + 'assigned_date' => 'Dato tildelt', + 'assigned_to' => 'Tildelt :name', + 'assignee' => 'Tildelt', 'avatar_delete' => 'Slet avatar', 'avatar_upload' => 'Upload Avatar', 'back' => 'Tilbage', @@ -35,10 +42,12 @@ return [ 'bulkaudit' => 'Bulk Audit', 'bulkaudit_status' => 'Revisionsstatus', 'bulk_checkout' => 'Masseudtjekning', - 'bulk_edit' => 'Bulk Edit', - 'bulk_delete' => 'Bulk Delete', - 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_edit' => 'Masseredigering', + 'bulk_delete' => 'Massesletning', + 'bulk_actions' => 'Massehandlinger', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'Eget device', + 'byod_help' => 'Denne enhed er ejet af brugeren', 'bystatus' => 'efter status', 'cancel' => 'Annuller', 'categories' => 'Kategorier', @@ -66,14 +75,14 @@ return [ 'create' => 'Opret ny', 'created' => 'Elementet er oprettet', 'created_asset' => 'skabte aktiver', - 'created_at' => 'Created At', - 'created_by' => 'Created By', + 'created_at' => 'Oprettet den', + 'created_by' => 'Oprettet af', 'record_created' => 'Record dannet', 'updated_at' => 'Opdateret kl', 'currency' => '$', // this is deprecated 'current' => 'Aktuelle', - 'current_password' => 'Current Password', - 'customize_report' => 'Customize Report', + 'current_password' => 'Nuværende adgangskode', + 'customize_report' => 'Tilpas rapport', 'custom_report' => 'Tilpasset Aktiv Rapport', 'dashboard' => 'Oversigtspanel', 'days' => 'dage', @@ -83,14 +92,15 @@ return [ 'debug_warning_text' => 'Denne applikation kører i produktionstilstand med debugging aktiveret. Dette kan udsætte følsomme data, hvis din ansøgning er tilgængelig for omverdenen. Deaktiver fejlsøgningsmodus ved at indstille værdien APP_DEBUG i din .env fil til false.', 'delete' => 'Slet', 'delete_confirm' => 'Er du sikker på at du vil slette :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Slettet', 'delete_seats' => 'Slettede pladser', - 'deletion_failed' => 'Deletion failed', + 'deletion_failed' => 'Sletning mislykkedes', 'departments' => 'Afdelinger', 'department' => 'Afdeling', 'deployed' => 'Implementeret', 'depreciation' => 'Afskrivning', - 'depreciations' => 'Depreciations', + 'depreciations' => 'Afskrivninger', 'depreciation_report' => 'Afskrivningsrapport', 'details' => 'Detaljer', 'download' => 'Hent', @@ -99,12 +109,12 @@ return [ 'eol' => 'EOL', 'email_domain' => 'Email domæne', 'email_format' => 'Email formattering', - 'employee_number' => 'Employee Number', + 'employee_number' => 'Medarbejdernummer', 'email_domain_help' => 'Dette bruges til at generere email-adresser ved importering', - 'error' => 'Error', - 'exclude_archived' => 'Exclude Archived Assets', - 'exclude_deleted' => 'Exclude Deleted Assets', - 'example' => 'Example: ', + 'error' => 'Fejl', + 'exclude_archived' => 'Udeluk arkiverede aktiver', + 'exclude_deleted' => 'Udeluk slettede aktiver', + 'example' => 'Eksempel: ', 'filastname_format' => 'Fornavnskarakter Efternavn (jsmith@example.com)', 'firstname_lastname_format' => 'Fornavn Efternavn (jane.smith@example.com)', 'firstname_lastname_underscore_format' => 'Fornavn Efternavn (jane_smith@example.com)', @@ -120,25 +130,26 @@ return [ 'files' => 'Filer', 'file_name' => 'Fil', 'file_type' => 'Filtype', - 'filesize' => 'File Size', + 'filesize' => 'Filstørrelse', 'file_uploads' => 'Filoverførsel', - 'file_upload' => 'File Upload', + 'file_upload' => 'Filupload', 'generate' => 'Skab', - 'generate_labels' => 'Generate Labels', + 'generate_labels' => 'Generer etiketter', 'github_markdown' => 'Dette felt tillader Github flavored markdown.', 'groups' => 'Grupper', 'gravatar_email' => 'Gravatar email addresse', - 'gravatar_url' => 'Change your avatar at Gravatar.com.', + 'gravatar_url' => 'Skift din avatar på Gravatar.com.', 'history' => 'Historik', 'history_for' => 'Historie for', 'id' => 'ID', 'image' => 'Billede', 'image_delete' => 'Slet billede', - 'include_deleted' => 'Include Deleted Assets', + 'include_deleted' => 'Inkludér slettede aktiver', 'image_upload' => 'Upload billede', - '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.', + 'filetypes_accepted_help' => 'Accepteret filtype er :types. Filstørrelsen må højst være :size.|Accepterede filtyper er :types. Filstørrelsen må højst være :size.', + 'filetypes_size_help' => 'Filstørrelsen må højst være :size.', 'image_filetypes_help' => 'Tilladte filtyper er jpg, png, gif, og svg. Maximalt tilladte upload størrelse er :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ér', 'importing' => 'Importerer', 'importing_help' => 'Du kan importere assets, tilbehør, licenser, komponenter, forbrugsvarer og brugere via CSV-fil.

CSV skal være kommasepareret og formateret med overskrifter, der matcher dem i sample CSV\'er i dokumentationen.', @@ -147,7 +158,9 @@ return [ 'asset_maintenance_report' => 'Aktiv vedligeholdelsesrapport', 'asset_maintenances' => 'Vedligeholdelse af aktiv', 'item' => 'Emne', - 'item_name' => 'Item Name', + 'item_name' => 'Emnenavn', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Ingen rettigheder!', 'kits' => 'Prædefinerede Kits', 'language' => 'Sprog', @@ -159,7 +172,7 @@ return [ 'licenses_available' => 'Tilgængelige licenser', 'licenses' => 'Licenser', 'list_all' => 'Vis alle', - 'loading' => 'Loading... please wait....', + 'loading' => 'Indlæser... Vent venligst...', 'lock_passwords' => 'Feltværdien vil ikke blive gemt i en demoinstallation.', 'feature_disabled' => 'Denne funktion er blevet deaktiveret til demoinstallationen.', 'location' => 'Lokation', @@ -168,17 +181,17 @@ return [ 'logout' => 'Log ud', 'lookup_by_tag' => 'Søg på aktivkode', 'maintenances' => 'Vedligeholdelse', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Administrer API-nøgler', 'manufacturer' => 'Producent', 'manufacturers' => 'Producenter', 'markdown' => 'Dette felt tillader Github koder.', 'min_amt' => 'Min. antal', - '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' => 'Mindste antal elementer, der skal være tilgængelige, før en advarsel udløses. Lad minimumsbeholdning være tom, hvis du ikke ønsker at modtage advarsler for lavt lager.', 'model_no' => 'Modelnummer', 'months' => 'måneder', 'moreinfo' => 'Mere Info', 'name' => 'Navn', - 'new_password' => 'New Password', + 'new_password' => 'Ny adgangskode', 'next' => 'Næste', 'next_audit_date' => 'Næste revisionsdato', 'last_audit' => 'Seneste revision', @@ -188,7 +201,7 @@ return [ 'no' => 'Nej', 'notes' => 'Noter', 'order_number' => 'Ordrenummer', - 'only_deleted' => 'Only Deleted Assets', + 'only_deleted' => 'Kun slettede aktiver', 'page_menu' => 'Viser _MENU_ emner', 'pagination_info' => 'Viser _START_ til _END_ af _TOTAL_ emner', 'pending' => 'Afventer', @@ -201,25 +214,26 @@ return [ 'purchase_date' => 'Købsdato', 'qty' => 'STK', 'quantity' => 'Antal', - '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' => 'Du har :count emner under eller næsten under minimumsbeholdning', + 'quickscan_checkin' => 'Hurtig tjek ind ved skanning', + 'quickscan_checkin_status' => 'Status for tjek ind', 'ready_to_deploy' => 'Klar til Implementering', 'recent_activity' => 'Seneste aktivitet', - 'remaining' => 'Remaining', + 'remaining' => 'Resterende', 'remove_company' => 'Fjern association med selskab', 'reports' => 'Rapporter', 'restored' => 'gendannet', - 'restore' => 'Restore', - 'requestable_models' => 'Requestable Models', + 'restore' => 'Gendan', + 'requestable_models' => 'Modeller der kan anmodes om', 'requested' => 'Anmodet', - 'requested_date' => 'Requested Date', - 'requested_assets' => 'Requested Assets', - 'requested_assets_menu' => 'Requested Assets', + 'requested_date' => 'Anmodningsdato', + 'requested_assets' => 'Anmodede aktiver', + 'requested_assets_menu' => 'Anmodede aktiver', 'request_canceled' => 'Anmodning Annulleret', 'save' => 'Gem', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Vælg', - 'select_all' => 'Select All', + 'select_all' => 'Vælg alle', 'search' => 'Søg', 'select_category' => 'Vælg en kategori', 'select_department' => 'Vælg en afdeling', @@ -238,22 +252,21 @@ return [ 'show_current' => 'Vis Aktuelle', 'sign_in' => 'Log ind', 'signature' => 'Underskrift', - 'signed_off_by' => 'Signed Off By', + 'signed_off_by' => 'Godkendt af', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Åh hai! Det ser ud til, at din Slack integration med Snipe-IT virker!', + '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!', 'some_features_disabled' => 'DEMO MODE: Nogle funktioner er deaktiveret for denne installation.', 'site_name' => 'Site Navn', 'state' => 'Stat', 'status_labels' => 'Status labels', 'status' => 'Status', - 'accept_eula' => 'Acceptance Agreement', + 'accept_eula' => 'Licensaftale', 'supplier' => 'Leverandør', 'suppliers' => 'Leverandører', 'sure_to_delete' => 'Er du sikker på, at du vil slette', 'submit' => 'Indsend', 'target' => 'Mål', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Tid og datovisning', 'total_assets' => 'totale aktiver', 'total_licenses' => 'totale licenser', @@ -263,7 +276,7 @@ return [ 'undeployable' => 'Ikke implementerbar', 'unknown_admin' => 'Ukendt Admin', 'username_format' => 'Brugernavn Format', - 'username' => 'Username', + 'username' => 'Brugernavn', 'update' => 'Opdatering', 'upload_filetypes_help' => 'Tilladte filtyper er png, gif, jpg, jpeg, doc, docx, pdf, xls, txt, lic, zip, og rar. Maksimalt tilladte uploadstørrelse er :size.', 'uploaded' => 'uploaded', @@ -274,16 +287,16 @@ return [ 'users' => 'Brugere', 'viewall' => 'Vis alle', 'viewassets' => 'Se Tildelte Aktiver', - 'viewassetsfor' => 'View Assets for :name', + 'viewassetsfor' => 'Se aktiver for :name', 'website' => 'Hjemmeside', 'welcome' => 'Velkommen, :name', 'years' => 'år', 'yes' => 'Ja', 'zip' => 'Postnummer', 'noimage' => 'Intet billede uploadet eller billede ikke fundet.', - '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' => 'Den forespurgte fil findes ikke på serveren.', + 'file_upload_success' => 'Filupload lykkedes!', + 'no_files_uploaded' => 'Filupload lykkedes!', 'token_expired' => 'Din form session er udløbet. Prøv igen.', 'login_enabled' => 'Login aktiveret', 'audit_due' => 'Forfalder til tilsyn', @@ -291,102 +304,149 @@ return [ 'accept' => 'Accepter :asset', 'i_accept' => 'Jeg accepterer', 'i_decline' => 'Jeg afviser', - 'accept_decline' => 'Accept/Decline', + 'accept_decline' => 'Accepter/afvis', 'sign_tos' => 'Bekræft nedenfor for at angive, at du accepterer vilkårene for tjenesten:', 'clear_signature' => 'Ryd signatur', 'show_help' => 'Vis hjælp', 'hide_help' => 'Skjul hjælp', - 'view_all' => 'view all', - 'hide_deleted' => 'Hide Deleted', + 'view_all' => 'vis alle', + 'hide_deleted' => 'Skjul slettede', 'email' => 'Email', - '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: ', - 'checked_out' => 'Checked Out', - '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', + 'do_not_change' => 'Må ikke ændres', + 'bug_report' => 'Rapporter en fejl', + 'user_manual' => 'Brugermanual', + 'setup_step_1' => 'Trin 1', + 'setup_step_2' => 'Trin 2', + 'setup_step_3' => 'Trin 3', + 'setup_step_4' => 'Trin 4', + 'setup_config_check' => 'Kontrollerer opsætning', + 'setup_create_database' => 'Opret databasetabeller', + 'setup_create_admin' => 'Opret admin-bruger', + 'setup_done' => 'Udført!', + 'bulk_edit_about_to' => 'Du skal til at redigere følgende: ', + 'checked_out' => 'Tjekket ud', + 'checked_out_to' => 'Tjekket ud til', + 'fields' => 'Felter', + 'last_checkout' => 'Seneste udtjekket', + 'due_to_checkin' => 'Følgende :count emner skal snart tjekkes ind:', + 'expected_checkin' => 'Forventet tjek ind', + 'reminder_checked_out_items' => 'Dette er en påmindelse om de emner, der for øjeblikket er tjekket ud til dig. Hvis du synes, at denne liste er unøjagtig (noget mangler, eller noget vises her, som du mener du aldrig modtaget), bedes du kontakte :reply_to_name på :reply_to_addresse.', + 'changed' => 'Ændret', + 'to' => 'Til', + 'report_fields_info' => '

Vælg de felter, du gerne vil inkludere i din brugerdefinerede rapport, og klik på Generer. Filen (custom-asset-report-YYYY-mm-dd.csv) downloades automatisk og du kan åbne den i Excel.

+

Hvis du kun ønsker at eksportere visse aktiver, skal du bruge mulighederne nedenfor for at finjustere dine resultater.

', + 'range' => 'Interval', + 'bom_remark' => 'Tilføj et BOM (byte-order mark) til denne CSV', + 'improvements' => 'Forbedringer', '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 category', - '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', - 'assigned' => 'Assigned', - 'asset_count' => 'Asset Count', - 'accessories_count' => 'Accessories Count', - 'consumables_count' => 'Consumables Count', - 'components_count' => 'Components Count', - 'licenses_count' => 'Licenses Count', - 'notification_error' => 'Error:', - 'notification_error_hint' => 'Please check the form below for errors', - 'notification_success' => 'Success:', - 'notification_warning' => 'Warning:', - 'notification_info' => 'Info:', - 'asset_information' => 'Asset Information', - 'model_name' => 'Model Name:', - 'asset_name' => 'Asset Name:', - 'consumable_information' => 'Consumable Information:', - 'consumable_name' => 'Consumable Name:', - 'accessory_information' => 'Accessory Information:', - 'accessory_name' => 'Accessory Name:', - 'clone_item' => 'Clone Item', - 'checkout_tooltip' => 'Check this item out', - 'checkin_tooltip' => 'Check this item in', - 'checkout_user_tooltip' => 'Check this item out to a user', - '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 ', - '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' + 'permissions' => 'Rettigheder', + 'managed_ldap' => '(Administreret via LDAP)', + 'export' => 'Eksportér', + 'ldap_sync' => 'LDAP-synkronisering', + 'ldap_user_sync' => 'LDAP-brugersynkronisering', + 'synchronize' => 'Synkronisér', + 'sync_results' => 'Synkroniseringresultater', + 'license_serial' => 'Serienummer/produktnøgle', + 'invalid_category' => 'Ugyldig kategori', + 'dashboard_info' => 'Dette er din oversigt. Der er mange som den, men denne er din.', + '60_percent_warning' => '60% gennemført (advarsel)', + 'dashboard_empty' => 'Det ser ud til, at du ikke har tilføjet noget endnu, så vi har ikke noget fedt at vise. Kom i gang ved at tilføje nogle aktiver, tilbehør, forbrugsvarer eller licenser nu!', + 'new_asset' => 'Nyt aktiv', + 'new_license' => 'Ny licens', + 'new_accessory' => 'Nyt tilbehør', + 'new_consumable' => 'Ny forbrugsvare', + 'collapse' => 'Skjul', + 'assigned' => 'Tildelt', + 'asset_count' => 'Antal aktiver', + 'accessories_count' => 'Antal tilbehør', + 'consumables_count' => 'Antal forbrugsvarer', + 'components_count' => 'Antal komponenter', + 'licenses_count' => 'Antal licenser', + 'notification_error' => 'Fejl:', + 'notification_error_hint' => 'Tjek venligst nedenstående formular for fejl', + 'notification_success' => 'Succes:', + 'notification_warning' => 'Advarsel:', + 'notification_info' => 'Information:', + 'asset_information' => 'Aktivoplysninger', + 'model_name' => 'Modelnavn:', + 'asset_name' => 'Aktivnavn:', + 'consumable_information' => 'Forbrugsvareoplysninger:', + 'consumable_name' => 'Forbrugsvarenavn:', + 'accessory_information' => 'Tilbehøroplysninger:', + 'accessory_name' => 'Tilbehørsnavn:', + 'clone_item' => 'Klon emne', + 'checkout_tooltip' => 'Tjek dette emne ud', + 'checkin_tooltip' => 'Tjek dette emne ind', + 'checkout_user_tooltip' => 'Tjek dette emne ud til en bruger', + 'maintenance_mode' => 'Tjenesten er midlertidigt utilgængelig grundet systemopdateringer. Tjek venligst tilbage senere.', + 'maintenance_mode_title' => 'Systemet er midlertidigt utilgængeligt', + 'ldap_import' => 'Brugerkodeord bør ikke administreres af LDAP. (Dette giver dig mulighed for at sende glemt adgangskode-anmodninger.)', + 'purge_not_allowed' => 'Fjernelse af slettede data er blevet deaktiveret i .env-filen. Kontakt supporten eller din systemadministrator.', + 'backup_delete_not_allowed' => 'Sletning af sikkerhedskopier er blevet deaktiveret i .env-filen. Kontakt supporten eller din systemadministrator.', + 'additional_files' => 'Yderligere filer', + 'shitty_browser' => 'Ingen signatur fundet. Hvis du bruger en ældre browser, skal du bruge en mere moderne browser til at fuldføre din accept af aktiver.', + 'bulk_soft_delete' =>'Fjern også disse brugere. Deres asset historie vil forblive intakte medmindre/indtil du fjerner slettede poster i administratorindstillingerne.', + 'bulk_checkin_delete_success' => 'Dine valgte brugere er blevet slettet og deres emner er blevet tjekket ind.', + 'bulk_checkin_success' => 'Emnerne for de valgte brugere er blevet tjekket ind.', + 'set_to_null' => 'Slet værdier for dette aktiv|Slet værdier for alle :asset_count aktiver ', + 'set_users_field_to_null' => 'Delete :field values for this user|Delete :field values for all :user_count users ', + 'na_no_purchase_date' => 'Ikke relevant - ingen købsdato angivet', + 'assets_by_status' => 'Aktiver efter status', + 'assets_by_status_type' => 'Aktiver efter statustype', + 'pie_chart_type' => 'Lagkagediagramtype for oversigten', + 'hello_name' => 'Hej, :name!', + 'unaccepted_profile_warning' => 'Du har :count emner, der kræver accept. Klik her for at acceptere eller afvise dem', + 'start_date' => 'Startdato', + 'end_date' => 'Slutdato', + 'alt_uploaded_image_thumbnail' => 'Uploadet miniature', + 'placeholder_kit' => 'Vælg et sæt', + 'file_not_found' => 'Filen blev ikke fundet', + 'preview_not_available' => '(ingen forhåndsvisning)', + 'setup' => 'Opsætning', + 'pre_flight' => 'Forhåndsopsætning', + 'skip_to_main_content' => 'Spring til hovedindhold', + 'toggle_navigation' => 'Åben/luk menu', + 'alerts' => 'Advarsler', + 'tasks_view_all' => 'Vis alle opgaver', + 'true' => 'Sandt', + 'false' => 'Falsk', + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/da/help.php b/resources/lang/da/help.php index 35f5f68611..16fed06c2f 100644 --- a/resources/lang/da/help.php +++ b/resources/lang/da/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Mere information', - 'audit_help' => 'Afkrydsning af dette felt vil redigere aktivposten så den afspejler denne nye placering. Ingen markering angiver blot, placeringen i revisionsloggen.

Bemærk, at hvis dette aktiv er tjekkes ud, det vil ikke ændre placeringen af personen, aktivet eller placeringen, det er tjekket ud til.', + 'audit_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.', 'assets' => 'Aktiver er elementer sporet efter serienummer eller aktiv tag. De har tendens til at være elementer af højere værdi, hvor identificering af en bestemt genstand betyder noget.', diff --git a/resources/lang/da/localizations.php b/resources/lang/da/localizations.php index be2c321861..5eefb4dd4b 100644 --- a/resources/lang/da/localizations.php +++ b/resources/lang/da/localizations.php @@ -2,231 +2,231 @@ return [ - 'select_language' => 'Select a language', + 'select_language' => 'Vælg et sprog', 'languages' => [ - 'en'=> 'English, US', - 'en-GB'=> 'English, UK', + 'en'=> 'Engelsk (US)', + 'en-GB'=> 'Engelsk (UK)', 'af'=> 'Afrikaans', - 'ar'=> 'Arabic', - 'bg'=> 'Bulgarian', - 'zh-CN'=> 'Chinese Simplified', - 'zh-TW'=> 'Chinese Traditional', - 'hr'=> 'Croatian', - 'cs'=> 'Czech', - 'da'=> 'Danish', - 'nl'=> 'Dutch', - 'en-ID'=> 'English, Indonesia', - 'et'=> 'Estonian', - 'fil'=> 'Filipino', - 'fi'=> 'Finnish', - 'fr'=> 'French', - 'de'=> 'German', - 'de-i'=> 'German (Informal)', - 'el'=> 'Greek', - 'he'=> 'Hebrew', - 'hu'=> 'Hungarian', - 'is' => 'Icelandic', - 'id'=> 'Indonesian', - 'ga-IE'=> 'Irish', - 'it'=> 'Italian', - 'ja'=> 'Japanese', - 'ko'=> 'Korean', - 'lv'=>'Latvian', - 'lt'=> 'Lithuanian', - 'mk'=> 'Macedonian', - 'ms'=> 'Malay', + 'ar'=> 'Arabisk', + 'bg'=> 'Bulgarsk', + 'zh-CN'=> 'Kinesisk (forsimplet)', + 'zh-TW'=> 'Kinesisk (traditionel)', + 'hr'=> 'Krotatisk', + 'cs'=> 'Tjekkisk', + 'da'=> 'Dansk', + 'nl'=> 'Hollandsk', + 'en-ID'=> 'Engelsk (Indonesien)', + 'et'=> 'Estisk', + 'fil'=> 'Filippinsk', + 'fi'=> 'Finsk', + 'fr'=> 'Fransk', + 'de'=> 'Tysk', + 'de-i'=> 'Tysk (uformelt)', + 'el'=> 'Græsk', + 'he'=> 'Hebraisk', + 'hu'=> 'Ungarsk', + 'is' => 'Islandsk', + 'id'=> 'Indonesisk', + 'ga-IE'=> 'Irsk', + 'it'=> 'Italiensk', + 'ja'=> 'Japansk', + 'ko'=> 'Koreansk', + 'lv'=>'Lettisk', + 'lt'=> 'Litauisk', + 'mk'=> 'Makedonsk', + 'ms'=> 'Malaysisk', 'mi'=> 'Maori', - 'mn'=> 'Mongolian', - 'no'=> 'Norwegian', - 'fa'=> 'Persian', - 'pl'=> 'Polish', - 'pt-PT'=> 'Portuguese', - 'pt-BR'=> 'Portuguese, Brazilian', - 'ro'=> 'Romanian', - 'ru'=> 'Russian', - 'sr-CS' => 'Serbian (Latin)', - 'sl'=> 'Slovenian', - 'es-ES'=> 'Spanish', - 'es-CO'=> 'Spanish, Colombia', - 'es-MX'=> 'Spanish, Mexico', - 'es-VE'=> 'Spanish, Venezuela', - 'sv-SE'=> 'Swedish', + 'mn'=> 'Mongolsk', + 'no'=> 'Norsk', + 'fa'=> 'Persisk', + 'pl'=> 'Polsk', + 'pt-PT'=> 'Portugisisk', + 'pt-BR'=> 'Portugisisk (Brasilien)', + 'ro'=> 'Rumænsk', + 'ru'=> 'Russisk', + 'sr-CS' => 'Serbisk (latin)', + 'sl'=> 'Slovensk', + 'es-ES'=> 'Spansk', + 'es-CO'=> 'Spansk (Colombia)', + 'es-MX'=> 'Spansk (Mexico)', + 'es-VE'=> 'Spansk (Venezuela)', + 'sv-SE'=> 'Svensk', 'tl'=> 'Tagalog', 'ta'=> 'Tamil', 'th'=> 'Thai', - 'tr'=> 'Turkish', - 'uk'=> 'Ukranian', - 'vi'=> 'Vietnamese', - 'cy'=> 'Welsh', + 'tr'=> 'Tyrkisk', + 'uk'=> 'Ukrainsk', + 'vi'=> 'Vietnamesisk', + 'cy'=> 'Walisisk', 'zu'=> 'Zulu', ], - 'select_country' => 'Select a country', + 'select_country' => 'Vælg et land', 'countries' => [ 'AC'=>'Ascension Island', 'AD'=>'Andorra', - 'AE'=>'United Arab Emirates', + 'AE'=>'Forenede Arabiske Emirater', 'AF'=>'Afghanistan', - 'AG'=>'Antigua And Barbuda', + 'AG'=>'Antigua og Barbuda', 'AI'=>'Anguilla', - 'AL'=>'Albania', - 'AM'=>'Armenia', - 'AN'=>'Netherlands Antilles', + 'AL'=>'Albanien', + 'AM'=>'Armenien', + 'AN'=>'Nederlandske Antiller', 'AO'=>'Angola', - 'AQ'=>'Antarctica', + 'AQ'=>'Antarktis', 'AR'=>'Argentina', - 'AS'=>'American Samoa', - 'AT'=>'Austria', - 'AU'=>'Australia', + 'AS'=>'Amerikansk Samoa', + 'AT'=>'Østrig', + 'AU'=>'Australien', 'AW'=>'Aruba', - 'AX'=>'Ã…land', - 'AZ'=>'Azerbaijan', - 'BA'=>'Bosnia And Herzegovina', + 'AX'=>'Åland', + 'AZ'=>'Aserbajdsjan', + 'BA'=>'Bosnien-Hercegovina', 'BB'=>'Barbados', - 'BE'=>'Belgium', + 'BE'=>'Belgien', 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', - 'BG'=>'Bulgaria', + 'BG'=>'Bulgarien', 'BH'=>'Bahrain', 'BI'=>'Burundi', 'BJ'=>'Benin', 'BM'=>'Bermuda', 'BN'=>'Brunei Darussalam', 'BO'=>'Bolivia', - 'BR'=>'Brazil', + 'BR'=>'Brasilien', 'BS'=>'Bahamas', 'BT'=>'Bhutan', 'BV'=>'Bouvet Island', 'BW'=>'Botswana', - 'BY'=>'Belarus', + 'BY'=>'Belarus / Hviderusland', 'BZ'=>'Belize', 'CA'=>'Canada', - 'CC'=>'Cocos (Keeling) Islands', - 'CD'=>'Congo (Democratic Republic)', - 'CF'=>'Central African Republic', - 'CG'=>'Congo (Republic)', - 'CH'=>'Switzerland', - 'CI'=>'Côte d\'Ivoire', - 'CK'=>'Cook Islands', + 'CC'=>'Cocosøerne (Keelingøerne)', + 'CD'=>'Congo (den Demokratiske Republik)', + 'CF'=>'Centralafrikanske Republik', + 'CG'=>'Congo (Republik)', + 'CH'=>'Schweiz', + 'CI'=>'Elfenbenskysten', + 'CK'=>'Cook-øerne', 'CL'=>'Chile', - 'CM'=>'Cameroon', - 'CN'=>'People\'s Republic of China', + 'CM'=>'Cameroun', + 'CN'=>'Kina (Folkerepublikken)', 'CO'=>'Colombia', 'CR'=>'Costa Rica', 'CU'=>'Cuba', - 'CV'=>'Cape Verde', + 'CV'=>'Kap Verde', 'CX'=>'Christmas Island', - 'CY'=>'Cyprus', - 'CZ'=>'Czech Republic', - 'DE'=>'Germany', + 'CY'=>'Cypern', + 'CZ'=>'Tjekkiet', + 'DE'=>'Tyskland', 'DJ'=>'Djibouti', - 'DK'=>'Denmark', + 'DK'=>'Danmark', 'DM'=>'Dominica', - 'DO'=>'Dominican Republic', - 'DZ'=>'Algeria', + 'DO'=>'Dominikanske Republik', + 'DZ'=>'Algeriet', 'EC'=>'Ecuador', - 'EE'=>'Estonia', - 'EG'=>'Egypt', + 'EE'=>'Estland', + 'EG'=>'Egypten', 'ER'=>'Eritrea', - 'ES'=>'Spain', - 'ET'=>'Ethiopia', - 'EU'=>'European Union', + 'ES'=>'Spanien', + 'ET'=>'Etiopien', + 'EU'=>'Europæiske Union', 'FI'=>'Finland', 'FJ'=>'Fiji', - 'FK'=>'Falkland Islands (Malvinas)', - 'FM'=>'Micronesia, Federated States Of', - 'FO'=>'Faroe Islands', - 'FR'=>'France', + 'FK'=>'Falklandsøerne', + 'FM'=>'Mikronesien (Mikronesiens Forenede Stater)', + 'FO'=>'Færøerne', + 'FR'=>'Frankrig', 'GA'=>'Gabon', 'GD'=>'Grenada', - 'GE'=>'Georgia', - 'GF'=>'French Guiana', + 'GE'=>'Georgien', + 'GF'=>'Fransk Guyana', 'GG'=>'Guernsey', 'GH'=>'Ghana', 'GI'=>'Gibraltar', - 'GL'=>'Greenland', + 'GL'=>'Grønland', 'GM'=>'Gambia', 'GN'=>'Guinea', 'GP'=>'Guadeloupe', - 'GQ'=>'Equatorial Guinea', - 'GR'=>'Greece', - 'GS'=>'South Georgia And The South Sandwich Islands', + 'GQ'=>'Ækvatorialguinea', + 'GR'=>'Grækenland', + 'GS'=>'Sydgeorgien og de Sydlige Sandwichøer', 'GT'=>'Guatemala', 'GU'=>'Guam', 'GW'=>'Guinea-Bissau', 'GY'=>'Guyana', - 'HK'=>'Hong Kong', - 'HM'=>'Heard And Mc Donald Islands', + 'HK'=>'Hongkong', + 'HM'=>'Heard- og McDonaldøerne', 'HN'=>'Honduras', - 'HR'=>'Croatia (local name: Hrvatska)', + 'HR'=>'Kroatien', 'HT'=>'Haiti', - 'HU'=>'Hungary', - 'ID'=>'Indonesia', - 'IE'=>'Ireland', + 'HU'=>'Ungarn', + 'ID'=>'Indonesien', + 'IE'=>'Irland', 'IL'=>'Israel', 'IM'=>'Isle of Man', - 'IN'=>'India', - 'IO'=>'British Indian Ocean Territory', - 'IQ'=>'Iraq', - 'IR'=>'Iran, Islamic Republic Of', - 'IS'=>'Iceland', - 'IT'=>'Italy', + 'IN'=>'Indien', + 'IO'=>'Britiske Territorium i Det Indiske Ocean', + 'IQ'=>'Irak', + 'IR'=>'Iran (den Islamiske Republik)', + 'IS'=>'Island', + 'IT'=>'Italien', 'JE'=>'Jersey', 'JM'=>'Jamaica', 'JO'=>'Jordan', 'JP'=>'Japan', 'KE'=>'Kenya', 'KG'=>'Kyrgyzstan', - 'KH'=>'Cambodia', + 'KH'=>'Cambodja', 'KI'=>'Kiribati', - 'KM'=>'Comoros', - 'KN'=>'Saint Kitts And Nevis', - 'KR'=>'Korea, Republic Of', + 'KM'=>'Comorerne', + 'KN'=>'Saint Christopher og Nevis', + 'KR'=>'Korea (Republikken)', 'KW'=>'Kuwait', - 'KY'=>'Cayman Islands', - 'KZ'=>'Kazakhstan', - 'LA'=>'Lao People\'s Democratic Republic', + 'KY'=>'Caymanøerne', + 'KZ'=>'Kasakhstan', + 'LA'=>'Laos (den Demokratiske Folkerepublik)', 'LB'=>'Lebanon', 'LC'=>'Saint Lucia', 'LI'=>'Liechtenstein', 'LK'=>'Sri Lanka', 'LR'=>'Liberia', 'LS'=>'Lesotho', - 'LT'=>'Lithuania', + 'LT'=>'Litauen', 'LU'=>'Luxembourg', - 'LV'=>'Latvia', - 'LY'=>'Libyan Arab Jamahiriya', - 'MA'=>'Morocco', + 'LV'=>'Letland', + 'LY'=>'Libyen', + 'MA'=>'Marokko', 'MC'=>'Monaco', - 'MD'=>'Moldova, Republic Of', + 'MD'=>'Moldova (Republikken)', 'ME'=>'Montenegro', 'MG'=>'Madagascar', - 'MH'=>'Marshall Islands', - 'MK'=>'Macedonia, The Former Yugoslav Republic Of', + 'MH'=>'Marshalløerne', + 'MK'=>'Makedonien (den Tidligere Jugoslaviske Republik)', 'ML'=>'Mali', - 'MM'=>'Myanmar', - 'MN'=>'Mongolia', - 'MO'=>'Macau', - 'MP'=>'Northern Mariana Islands', + 'MM'=>'Myanmar / Burma', + 'MN'=>'Mongoliet', + 'MO'=>'Macao', + 'MP'=>'Nordmarianerne', 'MQ'=>'Martinique', - 'MR'=>'Mauritania', + 'MR'=>'Mauretanien', 'MS'=>'Montserrat', 'MT'=>'Malta', 'MU'=>'Mauritius', - 'MV'=>'Maldives', + 'MV'=>'Maldiverne', 'MW'=>'Malawi', 'MX'=>'Mexico', 'MY'=>'Malaysia', 'MZ'=>'Mozambique', 'NA'=>'Namibia', - 'NC'=>'New Caledonia', + 'NC'=>'Ny Kaledonien', 'NE'=>'Niger', 'NF'=>'Norfolk Island', 'NG'=>'Nigeria', 'NI'=>'Nicaragua', - 'NL'=>'Netherlands', - 'NO'=>'Norway', + 'NL'=>'Holland', + 'NO'=>'Norge', 'NP'=>'Nepal', 'NR'=>'Nauru', 'NU'=>'Niue', @@ -234,81 +234,82 @@ return [ 'OM'=>'Oman', 'PA'=>'Panama', 'PE'=>'Peru', - 'PF'=>'French Polynesia', - 'PG'=>'Papua New Guinea', - 'PH'=>'Philippines, Republic of the', + 'PF'=>'Fransk Polynesien', + 'PG'=>'Papua Ny Guinea', + 'PH'=>'Filippinerne (Republikken)', 'PK'=>'Pakistan', - 'PL'=>'Poland', - 'PM'=>'St. Pierre And Miquelon', + 'PL'=>'Polen', + 'PM'=>'Saint Pierre og Miquelon', 'PN'=>'Pitcairn', 'PR'=>'Puerto Rico', - 'PS'=>'Palestine', + 'PS'=>'Palæstina', 'PT'=>'Portugal', 'PW'=>'Palau', 'PY'=>'Paraguay', 'QA'=>'Qatar', - 'RE'=>'Reunion', - 'RO'=>'Romania', - 'RS'=>'Serbia', - 'RU'=>'Russian Federation', + 'RE'=>'Réunion', + 'RO'=>'Rumænien', + 'RS'=>'Serbien', + 'RU'=>'Rusland (Den Russiske Føderation)', 'RW'=>'Rwanda', - 'SA'=>'Saudi Arabia', - 'UK'=>'Scotland', - 'SB'=>'Solomon Islands', - 'SC'=>'Seychelles', + 'SA'=>'Saudi-Arabien', + 'UK'=>'Skotland', + 'SB'=>'Salomonøerne', + 'SC'=>'Seychellerne', + 'SS'=>'Sydsudan', 'SD'=>'Sudan', - 'SE'=>'Sweden', + 'SE'=>'Sverige', 'SG'=>'Singapore', - 'SH'=>'St. Helena', - 'SI'=>'Slovenia', - 'SJ'=>'Svalbard And Jan Mayen Islands', - 'SK'=>'Slovakia (Slovak Republic)', + 'SH'=>'Saint Helena', + 'SI'=>'Slovenien', + 'SJ'=>'Svalbard og Jan Mayen-øerne', + 'SK'=>'Slovakiet (den Slovakiske Republik)', 'SL'=>'Sierra Leone', 'SM'=>'San Marino', 'SN'=>'Senegal', - 'SO'=>'Somalia', + 'SO'=>'Somalien', 'SR'=>'Suriname', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', + 'ST'=>'São Tomé og Príncipe', + 'SU'=>'Sovjetunionen', 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', + 'SY'=>'Syrien (den Syriske Arabiske Republik)', 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', - 'TD'=>'Chad', - 'TF'=>'French Southern Territories', + 'TC'=>'Turks- og Caicosøerne', + 'TD'=>'Tchad', + 'TF'=>'Franske Sydterritorier', 'TG'=>'Togo', 'TH'=>'Thailand', 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', - 'TI'=>'East Timor', + 'TI'=>'Østtimor', 'TM'=>'Turkmenistan', - 'TN'=>'Tunisia', + 'TN'=>'Tunesien', 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', - 'TR'=>'Turkey', - 'TT'=>'Trinidad And Tobago', + 'TP'=>'Østtimor (gammel kode)', + 'TR'=>'Tyrkiet', + 'TT'=>'Trinidad og Tobago', 'TV'=>'Tuvalu', 'TW'=>'Taiwan', - 'TZ'=>'Tanzania, United Republic Of', + 'TZ'=>'Tanzania (den Forenede Republik)', 'UA'=>'Ukraine', 'UG'=>'Uganda', - 'UK'=>'United Kingdom', - 'US'=>'United States', - 'UM'=>'United States Minor Outlying Islands', + 'UK'=>'England (UK)', + 'US'=>'USA', + 'UM'=>'USA\'s Mindre Øbesiddelser', 'UY'=>'Uruguay', 'UZ'=>'Uzbekistan', - 'VA'=>'Vatican City State (Holy See)', - 'VC'=>'Saint Vincent And The Grenadines', + 'VA'=>'Vatikanstaten (Holy See)', + 'VC'=>'Saint Vincent og Grenadinerne', 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', - 'VN'=>'Viet Nam', + 'VG'=>'Jomfruøerne (Britiske)', + 'VI'=>'Jomfruøerne (USA)', + 'VN'=>'Vietnam', 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', + 'WF'=>'Wallis- og Futunaøerne', 'WS'=>'Samoa', 'YE'=>'Yemen', 'YT'=>'Mayotte', - 'ZA'=>'South Africa', + 'ZA'=>'Sydafrika', 'ZM'=>'Zambia', 'ZW'=>'Zimbabwe', ], diff --git a/resources/lang/da/mail.php b/resources/lang/da/mail.php index 5019bcbe8f..acd786056b 100644 --- a/resources/lang/da/mail.php +++ b/resources/lang/da/mail.php @@ -1,8 +1,8 @@ 'A user has accepted an item', - 'acceptance_asset_declined' => 'A user has declined an item', + 'acceptance_asset_accepted' => 'En bruger har accepteret et emne', + 'acceptance_asset_declined' => 'En bruger har afvist et emne', 'a_user_canceled' => 'En bruger har annulleret en vareforespørgsel på hjemmesiden', 'a_user_requested' => 'En bruger har anmodet om et emne på hjemmesiden', 'accessory_name' => 'Tilbehør Navn:', @@ -11,7 +11,7 @@ return [ 'asset' => 'aktiv:', 'asset_name' => 'Aktivnavn:', 'asset_requested' => 'Aktiver bedt om', - 'asset_tag' => 'Asset Tag', + 'asset_tag' => 'Inventarnummer', 'assigned_to' => 'Tildelt', 'best_regards' => 'Med venlig hilsen,', 'canceled' => 'annulleret:', @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Log ind på din nye Snipe-IT-installation ved hjælp af nedenstående referencer:', 'login' => 'Log på:', 'Low_Inventory_Report' => 'Lav lagerrapport', + 'inventory_report' => 'Lagerrapport', 'min_QTY' => 'Min QTY', 'name' => 'Navn', 'new_item_checked' => 'En ny vare er blevet tjekket ud under dit navn, detaljerne er nedenfor.', @@ -61,7 +62,7 @@ return [ 'test_mail_text' => 'Dette er en test fra Snipe-IT Asset Management System. Hvis du fik dette, virker mailen :)', 'the_following_item' => 'Følgende vare er blevet kontrolleret i:', 'low_inventory_alert' => 'Der er :count enhed som er under minimum lagertal eller som snart vil være det.|Der er :count enheder som er under minimum lagertal eller som snart vil være det.', - 'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.', + 'assets_warrantee_alert' => 'Der er :count aktiv hvor garantien udløber indenfor de næste :threshold dage.|Der er :count aktiver hvor garantien udløber indenfor de næste :threshold dage.', 'license_expiring_alert' => 'Der er :count licens(er) der udløber indenfor den/de næste :threshold dag(e).', 'to_reset' => 'Nulstille din :web-adgangskode, udfylde denne formular:', 'type' => 'Type', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Dine Snipe-IT Legitimationsoplysninger', 'Accessory_Checkin_Notification' => 'Tilbehør tjekket ind', 'Asset_Checkin_Notification' => 'Asset tjekket ind', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'Licens tjekket ind', 'Expected_Checkin_Report' => 'Forventet asset checkin rapport', 'Expected_Checkin_Notification' => 'Påmindelse: :name checkin deadline nærmer sig', 'Expected_Checkin_Date' => 'Et asset tjekket ud til dig skal tjekkes tilbage den :date', 'your_assets' => 'Se dine assets', + 'rights_reserved' => 'Alle rettigheder forbeholdt.', ]; diff --git a/resources/lang/da/passwords.php b/resources/lang/da/passwords.php index 25633b4581..d55cdf098b 100644 --- a/resources/lang/da/passwords.php +++ b/resources/lang/da/passwords.php @@ -1,8 +1,8 @@ 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', - 'user' => 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', - 'token' => 'This password reset token is invalid or expired, or does not match the username provided.', - 'reset' => 'Your password has been reset!', + 'sent' => 'Hvis brugeren findes med en gyldig email-adresse i vores system, er der blevet sendt en e-mail til gendannelse af adgangskoden.', + 'user' => 'Hvis brugeren findes med en gyldig email-adresse i vores system, er der blevet sendt en e-mail til gendannelse af adgangskoden.', + 'token' => 'Denne nøgle til nulstilling af adgangskode er ugyldig, udløbet eller stemmer ikke overens med det angivne brugernavn.', + 'reset' => 'Din adgangskode er blevet nulstillet!', ]; diff --git a/resources/lang/da/reminders.php b/resources/lang/da/reminders.php index 4f16be94e2..4d0d9f4609 100644 --- a/resources/lang/da/reminders.php +++ b/resources/lang/da/reminders.php @@ -15,7 +15,7 @@ return array( "password" => "Adgangskoder skal være seks tegn og svare til bekræftelsen.", "user" => "Brugernavn eller email adresse er forkert", - "token" => 'This password reset token is invalid or expired, or does not match the username provided.', - 'sent' => 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', + "token" => 'Denne nøgle til nulstilling af adgangskode er ugyldig, udløbet eller stemmer ikke overens med det angivne brugernavn.', + 'sent' => 'Hvis brugeren findes med en gyldig email-adresse i vores system, er der blevet sendt en e-mail til gendannelse af adgangskoden.', ); diff --git a/resources/lang/da/validation.php b/resources/lang/da/validation.php index 24d2130418..412a3d143b 100644 --- a/resources/lang/da/validation.php +++ b/resources/lang/da/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'Attributten skal være en fil.', 'filled' => 'Attributfeltet skal have en værdi.', 'image' => ':attribute skal være et billede.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + '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.', @@ -66,7 +66,9 @@ return [ 'string' => ':attribute skal mindst være :min tegn.', 'array' => 'Attributten skal have mindst: min elementer.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', + 'starts_with' => ':attribute skal starte med en af følgende: :values', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'not_in' => 'Den valgte :attribute er ugyldig.', 'numeric' => ':attribute skal være et tal.', 'present' => 'Attributfeltet skal være til stede.', @@ -93,27 +95,16 @@ return [ 'url' => ':attribute formatet er ugyldigt.', 'unique_undeleted' => ':attribute skal være unik.', 'non_circular' => ':attribute må ikke oprette en cirkulær reference.', - 'disallow_same_pwd_as_user_fields' => 'Password cannot be the same as the username.', - 'letters' => 'Password must contain at least one letter.', - 'numbers' => 'Password must contain at least one number.', - 'case_diff' => 'Password must use mixed case.', - 'symbols' => 'Password must contain symbols.', + 'disallow_same_pwd_as_user_fields' => 'Adgangskoden må ikke være det samme som brugernavnet.', + 'letters' => 'Adgangskoden skal indeholde mindst ét bogstav.', + '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' => 'Value cannot be negative' + 'numeric' => 'Værdien må ikke være negativ' ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Din nuværende adgangskode er forkert', 'dumbpwd' => 'Denne adgangskode er for almindelig.', 'statuslabel_type' => 'Du skal vælge en gyldig statusetiketype', + + // 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 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', + 'termination_date.date_format' => ':attribute skal være en gyldig dato i YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/de-i/admin/accessories/general.php b/resources/lang/de-i/admin/accessories/general.php index ecfb2625ee..49915e7979 100644 --- a/resources/lang/de-i/admin/accessories/general.php +++ b/resources/lang/de-i/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Zubehör aktualisieren', 'use_default_eula' => 'Die Standard EULA stattdessen verwenden.', 'use_default_eula_disabled' => 'Die Standard-EULA verwenden. Es wurde keine Standard-EULA definiert. Bitte füge eine in den Einstellungen hinzu.', + 'clone' => 'Zubehör kopieren', + 'delete_disabled' => 'Dieses Zubehör kann noch nicht gelöscht werden, da einige Artikel noch herausgegeben sind.', ); diff --git a/resources/lang/de-i/admin/accessories/message.php b/resources/lang/de-i/admin/accessories/message.php index b922f5b8d1..3f661c643a 100644 --- a/resources/lang/de-i/admin/accessories/message.php +++ b/resources/lang/de-i/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/de-i/admin/asset_maintenances/form.php b/resources/lang/de-i/admin/asset_maintenances/form.php index f1e4c6ded7..5d06a11327 100644 --- a/resources/lang/de-i/admin/asset_maintenances/form.php +++ b/resources/lang/de-i/admin/asset_maintenances/form.php @@ -4,11 +4,11 @@ 'asset_maintenance_type' => 'Wartungsart', 'title' => 'Bezeichnung', 'start_date' => 'Startdatum', - 'completion_date' => 'Fertigstellungstermin', + 'completion_date' => 'Abschlussdatum', 'cost' => 'Kosten', 'is_warranty' => 'Garantie Verbesserung', - 'asset_maintenance_time' => 'Tage', + 'asset_maintenance_time' => 'Wartungszeit (in Tagen)', 'notes' => 'Notizen', - 'update' => 'Aktualisieren', - 'create' => 'Erstellen' + 'update' => 'Wartung bearbeiten', + 'create' => 'Wartung erstellen' ]; diff --git a/resources/lang/de-i/admin/categories/message.php b/resources/lang/de-i/admin/categories/message.php index 472306a252..bac81f0a6f 100644 --- a/resources/lang/de-i/admin/categories/message.php +++ b/resources/lang/de-i/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Die Kategorie konnte nicht aktualisiert werden, bitte versuche es erneut', - 'success' => 'Die Kategorie wurde erfolgreich aktualisiert.' + 'success' => 'Die Kategorie wurde erfolgreich aktualisiert.', + 'cannot_change_category_type' => 'Sobald der Kategorietyp erstellt wurde, kann dieser nicht mehr angepasst werden', ), 'delete' => array( diff --git a/resources/lang/de-i/admin/components/general.php b/resources/lang/de-i/admin/components/general.php index eaf5a2b62b..fd1f68770c 100644 --- a/resources/lang/de-i/admin/components/general.php +++ b/resources/lang/de-i/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Verbleibend', 'total' => 'Gesamt', 'update' => 'Komponente aktualisieren', + 'checkin_limit' => 'Die angegebene Menge muss gleich oder kleiner sein als :assigned_qty' ); diff --git a/resources/lang/de-i/admin/components/message.php b/resources/lang/de-i/admin/components/message.php index 906bb84ece..5466746668 100644 --- a/resources/lang/de-i/admin/components/message.php +++ b/resources/lang/de-i/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponente konnte nicht herausgegeben werden. Bitte versuche es erneut', 'success' => 'Komponente wurde erfolgreich herausgegeben.', - '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.', + 'unavailable' => 'Nicht genügend verbleibende Komponenten: :remaining verbleibend, :requested angefordert ', ), 'checkin' => array( diff --git a/resources/lang/de-i/admin/consumables/message.php b/resources/lang/de-i/admin/consumables/message.php index 1661f9703c..45d5e12bb4 100644 --- a/resources/lang/de-i/admin/consumables/message.php +++ b/resources/lang/de-i/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Das Verbrauchsmaterial wurde nicht herausgegeben. Bitte versuche es erneut', 'success' => 'Verbrauchsmaterial wurde erfolgreich herausgegeben.', - '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.', + 'unavailable' => 'Es sind nicht genügend Verbrauchsmaterialien für diese Herausgabe vorhanden. Bitte überprüfe die verbleibende Menge. ', ), 'checkin' => array( diff --git a/resources/lang/de-i/admin/custom_fields/general.php b/resources/lang/de-i/admin/custom_fields/general.php index 1c743da54b..ba8aa4d173 100644 --- a/resources/lang/de-i/admin/custom_fields/general.php +++ b/resources/lang/de-i/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Von Modellen benutzt', 'order' => 'Reihenfolge', 'create_fieldset' => 'Neuer Feldsatz', + 'update_fieldset' => 'Feldsatz aktualisieren', + 'fieldset_does_not_exist' => 'Feldsatz :id existiert nicht', + 'fieldset_updated' => 'Feldsatz aktualisiert', 'create_fieldset_title' => 'Neuen Feldsatz erstellen', 'create_field' => 'Neues benutzerdefiniertes Feld', 'create_field_title' => 'Neues benutzerdefiniertes Feld erstellen', @@ -44,6 +47,8 @@ return [ 'db_convert_warning' => 'WARNUNG. Dieses Feld befindet sich in der Tabelle mit benutzerdefinierten Feldern als :db_column sollte aber :expected sein.', 'is_unique' => 'Dieser Wert muss für jedes Asset einzigartig sein', 'unique' => 'Einzigartig', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Erlaube dem Benutzer, an den das Asset herausgegeben wurde, diese Werte auf der Seite "Zugeordnete Assets anzeigen" anzeigen zu lassen', + 'display_in_user_view_table' => 'Für Benutzer sichtbar', + 'auto_add_to_fieldsets' => 'Automatisch zu jedem neuen Feldsatz hinzufügen', + 'add_to_preexisting_fieldsets' => 'Zu allen existierenden Feldsätzen hinzufügen', ]; diff --git a/resources/lang/de-i/admin/departments/message.php b/resources/lang/de-i/admin/departments/message.php index 873ccd8184..07ee07e1d9 100644 --- a/resources/lang/de-i/admin/departments/message.php +++ b/resources/lang/de-i/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Diese Abteilung existiert nicht.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'An diesem Firmenstandort existiert bereits eine Abteilung mit diesem Namen. Oder wähle einen spezifischeren Namen für diese Abteilung. ', 'assoc_users' => 'Diese Abteilung ist im Moment mit mindestens einem Benutzer verknüpft und kann nicht gelöscht werden. Bitte Benutzer aktualisieren und erneut versuchen. ', 'create' => array( 'error' => 'Abteilung wurde nicht erstellt. Bitte versuche es erneut.', diff --git a/resources/lang/de-i/admin/groups/message.php b/resources/lang/de-i/admin/groups/message.php index e74fb5c75f..1a7357a236 100644 --- a/resources/lang/de-i/admin/groups/message.php +++ b/resources/lang/de-i/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Gruppe existiert bereits!', - 'group_not_found' => 'Gruppe [: Id] existiert nicht.', + 'group_not_found' => 'Die Gruppe mit der ID :id existiert nicht.', 'group_name_required' => '"Name" darf nicht leer sein', 'success' => array( diff --git a/resources/lang/de-i/admin/hardware/form.php b/resources/lang/de-i/admin/hardware/form.php index 05b318385c..02f782df66 100644 --- a/resources/lang/de-i/admin/hardware/form.php +++ b/resources/lang/de-i/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Massenlöschung von Assets bestätigen', + 'bulk_restore' => 'Massenwiederherstellung von Assets bestätigen', 'bulk_delete_help' => 'Überprüfe die nachfolgenden Assets für die Massenlöschung. Sobald diese gelöscht sind, können diese zwar wiederhergestellt werden, sind aber dem aktuellen Nutzer nicht mehr zugeordnet.', + 'bulk_restore_help' => 'Überprüfe die Assets für die Massenwiederherstellung. Sobald sie wiederhergestellt sind, werden diese Assets nicht mit Benutzern assoziiert, denen sie zuvor zugewiesen wurden.', 'bulk_delete_warn' => 'Du bist im Begriff :asset_count Assets zu löschen.', + 'bulk_restore_warn' => 'Sie sind dabei, :asset_count Assets wiederherzustellen.', 'bulk_update' => 'Massenaktualisierung von Assets', 'bulk_update_help' => 'Diese Eingabemaske erlaubt Dir die Aktualisierung von mehreren Assets zugleich. Fülle die Felder aus, die Du ändern möchtest. Alle leeren Felder bleiben unverändert. ', 'bulk_update_warn' => 'Du bearbeitest die Eigenschaften eines Assets.|Du bearbeitest die Eigenschaften von :asset_count Assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Nur den Standardort aktualisieren', 'asset_not_deployable' => 'Dieses Asset ist nicht verfügbar und kann nicht herausgegeben werden.', 'asset_deployable' => 'Dieses Asset ist verfügbar und kann herausgegeben werden.', - 'processing_spinner' => 'Wird verarbeitet...', + 'processing_spinner' => 'Verarbeitung... (Dies kann bei großen Dateien etwas Zeit in Anspruch nehmen)', 'optional_infos' => 'Optionale Informationen', 'order_details' => 'Bestellinformationen' ]; diff --git a/resources/lang/de-i/admin/hardware/general.php b/resources/lang/de-i/admin/hardware/general.php index c9af46f9ac..55aaa68f34 100644 --- a/resources/lang/de-i/admin/hardware/general.php +++ b/resources/lang/de-i/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Dieses Asset wurde gelöscht.', 'edit' => 'Asset bearbeiten', 'model_deleted' => 'Dieses Modell für Assets wurde gelöscht. Du musst das Modell wiederherstellen, bevor Du das Asset wiederherstellen kannst.', + 'model_invalid' => 'Das Modell dieses Assets ist ungültig.', + 'model_invalid_fix' => 'Das Asset sollte bearbeitet werden, um dies zu korrigieren, bevor versucht wird, es ein- oder auszuchecken.', 'requestable' => 'Anforderbar', 'requested' => 'Angefordert', 'not_requestable' => 'Kann nicht angefordert werden', @@ -21,6 +23,7 @@ return [ 'restore' => 'Asset wiederherstellen', 'pending' => 'Ausstehende', 'undeployable' => 'Nicht einsetzbar', + 'undeployable_tooltip' => 'Dieses Asset hat eine Statusbezeichnung, die nicht einsetzbar ist und zu diesem Zeitpunkt nicht ausgecheckt werden kann.', 'view' => 'Asset ansehen', 'csv_error' => 'Es gibt einen Fehler in der CSV-Datei:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Fehlermeldungen:', 'success_messages' => 'Erfolgsmeldungen:', 'alert_details' => 'Siehe unten für Details.', - 'custom_export' => 'Benutzerdefinierter Export' + 'custom_export' => 'Benutzerdefinierter Export', + 'mfg_warranty_lookup' => ':manufacturer Garantiestatus Abfrage', ]; diff --git a/resources/lang/de-i/admin/hardware/message.php b/resources/lang/de-i/admin/hardware/message.php index 345ff84cd5..85d74f7013 100644 --- a/resources/lang/de-i/admin/hardware/message.php +++ b/resources/lang/de-i/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Asset wurde nicht wiederhergestellt, bitte versuche es noch einmal', 'success' => 'Asset erfolgreich wiederhergestellt.', + 'bulk_success' => 'Asset erfolgreich wiederhergestellt.', + 'nothing_updated' => 'Es wurden keine Assets ausgewählt, also wurde nichts wiederhergestellt.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Deine Datei wurde importiert', 'file_delete_success' => 'Deine Datei wurde erfolgreich gelöscht', 'file_delete_error' => 'Die Datei konnte nicht gelöscht werden', + 'header_row_has_malformed_characters' => 'Ein oder mehrere Attribute in der Kopfzeile enthalten fehlerhafte UTF-8 Zeichen', + 'content_row_has_malformed_characters' => 'Ein oder mehrere Attribute in der ersten Zeile des Inhalts enthalten fehlerhafte UTF-8-Zeichen', ], diff --git a/resources/lang/de-i/admin/hardware/table.php b/resources/lang/de-i/admin/hardware/table.php index 1bf97c3197..ef6c2e3430 100644 --- a/resources/lang/de-i/admin/hardware/table.php +++ b/resources/lang/de-i/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Eingang/Ausgang', 'checkout_date' => 'Herausgabedatum', 'checkoutto' => 'Herausgegeben', + 'components_cost' => 'Gesamtkosten der Komponenten', 'current_value' => 'Aktueller Wert', 'diff' => 'Differenz', 'dl_csv' => 'CSV Herunterladen', diff --git a/resources/lang/de-i/admin/licenses/general.php b/resources/lang/de-i/admin/licenses/general.php index 8bdf26b9a7..eab1fe6927 100644 --- a/resources/lang/de-i/admin/licenses/general.php +++ b/resources/lang/de-i/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Über Lizenzen', - 'about_licenses' => 'Lizenzen werden verwendet, um Software zu verfolgen. Sie haben eine bestimmte Anzahl von Plätzen, die an Einzelpersonen ausgegeben werden können', + 'about_licenses_title' => 'Über Lizenzen', + 'about_licenses' => 'Lizenzen werden verwendet, um Software zu verfolgen. Sie haben eine bestimmte Anzahl von Plätzen, die an Einzelpersonen ausgegeben werden können', 'checkin' => 'Lizenzaktivierung einbuchen', 'checkout_history' => 'Zuweisungsverlauf', 'checkout' => 'Lizenzaktivierung herausgeben', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Software Lizenzen', 'user' => 'Benutzer', 'view' => 'Lizenz ansehen', + 'delete_disabled' => 'Diese Lizenz kann noch nicht gelöscht werden, da einige Plätze noch ausgecheckt sind.', + 'bulk' => + [ + '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.', + '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', + 'success' => 'Lizenz erfolgreich zurückgenommen! | Alle Lizenzen wurden erfolgreich zurückgenommen!', + 'log_msg' => 'Zurückgenommen über Massen-Zurücknehmen in der Lizenzübersicht', + ], + + 'checkout_all' => [ + 'button' => 'Alle Plätze herausgeben', + 'modal' => 'Diese Aktion wird einen Platz für den ersten verfügbaren Benutzer herausgeben. | Diese Aktion wird alle :available_seats_count Plätze an die ersten verfügbaren Benutzer herausgeben. Ein Benutzer wird als verfügbar für diesen Platz betrachtet, wenn er diese Lizenz noch nicht zugewiesen hat und die "Lizenzen automatisch zuweisen" Eigenschaft auf dem Benutzerkonto aktiviert ist.', + 'enabled_tooltip' => 'ALLE Plätze (oder so viele wie verfügbar sind) an ALLE Benutzer herausgeben', + 'disabled_tooltip' => 'Dies ist deaktiviert, da derzeit keine Sitze verfügbar sind', + 'success' => 'Lizenz erfolgreich herausgegeben! | Alle :count Lizenzen wurden erfolgreich herausgegeben!', + 'error_no_seats' => 'Es gibt keine verbleibenden Plätze für diese Lizenz.', + 'warn_not_enough_seats' => ':count Benutzern wurde diese Lizenz zugewiesen, aber es gibt keine verfügbaren Lizenzplätze mehr.', + 'warn_no_avail_users' => 'Nichts zu tun. Es gibt keine Benutzer, denen diese Lizenz noch nicht zugewiesen ist.', + 'log_msg' => 'Herausgegeben über Massen-Herausgeben in Lizenzübersicht', + + + ], + ], ); diff --git a/resources/lang/de-i/admin/licenses/message.php b/resources/lang/de-i/admin/licenses/message.php index 7647dbc702..828f9bf7d3 100644 --- a/resources/lang/de-i/admin/licenses/message.php +++ b/resources/lang/de-i/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'Die Lizenz existiert nicht oder Sie haben keine Berechtigung, sie anzusehen.', + 'does_not_exist' => 'Die Lizenz existiert nicht oder Du hast keine Berechtigung, sie anzusehen.', 'user_does_not_exist' => 'Benutzer existiert nicht.', 'asset_does_not_exist' => 'Der Gegenstand, mit dem Du diese Lizenz verknüpfen möchtest, existiert nicht.', 'owner_doesnt_match_asset' => 'Der Gegenstand, den Du mit dieser Lizenz verknüpfen möchtest, gehört jemand anderem als der im Dropdown-Feld ausgewählten Person.', diff --git a/resources/lang/de-i/admin/manufacturers/message.php b/resources/lang/de-i/admin/manufacturers/message.php index 0d05766dc2..919e9759e0 100644 --- a/resources/lang/de-i/admin/manufacturers/message.php +++ b/resources/lang/de-i/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Verwenden Sie {LOCALE} und {SERIAL} in Ihrer URL als Variablen, um diese Werte beim Anzeigen von Assets automatisch auszufüllen.', 'does_not_exist' => 'Hersteller existiert nicht.', 'assoc_users' => 'Dieser Hersteller ist derzeit bereits mit einem Model verknüpft und kann nicht gelöscht werden. Bitte trenne Deine Modelle von diesem Hersteller und versuche es erneut. ', diff --git a/resources/lang/de-i/admin/manufacturers/table.php b/resources/lang/de-i/admin/manufacturers/table.php index 254195f9f6..a0c696407a 100644 --- a/resources/lang/de-i/admin/manufacturers/table.php +++ b/resources/lang/de-i/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support per E-Mail', 'support_phone' => 'Support Telefon', 'support_url' => 'Support-URL', + 'warranty_lookup_url' => 'Garantie-Verweis URL', 'update' => 'Hersteller aktualisieren', 'url' => 'URL', diff --git a/resources/lang/de-i/admin/models/general.php b/resources/lang/de-i/admin/models/general.php index 064b20358f..41b2227c00 100644 --- a/resources/lang/de-i/admin/models/general.php +++ b/resources/lang/de-i/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Dieses Modell wurde gelöscht.', 'bulk_delete' => 'Massenlöschen von Asset-Modellen', 'bulk_delete_help' => 'Nutze die nachfolgenden Kontrollkästchen, um die Löschung der Asset-Modelle zu bestätigen. Asset-Modelle, die noch zugewiesene Assets haben, können nur dann gelöscht werden, wenn die enthaltenen Assets einem anderen Asset-Modell zugewiesen werden.', - 'bulk_delete_warn' => 'Du bist im Begriff :model_count Asset-Modelle zu löschen.', + 'bulk_delete_warn' => 'Du bist dabei, ein Asset Modell zu löschen.|Du bist dabei, :model_count Asset Modelle zu löschen.', 'restore' => 'Modell wiederherstellen', 'requestable' => 'Benutzer können dieses Modell anfordern', 'show_mac_address' => 'MAC Adressen Feld anzeigen für Assets mit diesem Modell', diff --git a/resources/lang/de-i/admin/models/message.php b/resources/lang/de-i/admin/models/message.php index 513b23f5fd..d3f9a96995 100644 --- a/resources/lang/de-i/admin/models/message.php +++ b/resources/lang/de-i/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Modell existiert nicht.', + 'no_association' => 'KEIN MODELL ZUGEORDNET.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Modell wurde nicht aktualisiert. Bitte versuch es noch einmal', - 'success' => 'Modell wurde erfolgreich aktualisiert.' + 'success' => 'Modell wurde erfolgreich aktualisiert.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Es wurden keine Felder geändert, somit wurde auch nichts aktualisiert.', - 'success' => 'Modelle aktualisiert.' + 'success' => 'Modell erfolgreich aktualisiert. |:model_count Modelle erfolgreich aktualisiert.', + 'warn' => 'Du bist dabei, die Eigenschaften des folgenden Modells zu aktualisieren: |Du bist dabei, die Eigenschaften der folgenden :model_count Modelle zu bearbeiten:', + ), 'bulkdelete' => array( 'error' => 'Es wurden keine Modelle ausgewählt. Somit wurde auch nichts gelöscht.', - 'success' => ':success_count Modell(e) gelöscht!', + 'success' => 'Modell gelöscht!|:success_count Modelle gelöscht!', 'success_partial' => ':success_count Modell(e) wurden gelöscht. Jedoch konnten :fail_count nicht gelöscht werden, da ihnen noch Assets zugeordnet sind.' ), diff --git a/resources/lang/de-i/admin/settings/general.php b/resources/lang/de-i/admin/settings/general.php index dea51be0f3..be05579c32 100644 --- a/resources/lang/de-i/admin/settings/general.php +++ b/resources/lang/de-i/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Wenn Du eine Kopie der Rücknahme-/Herausgabe-E-Mails, die an Benutzer gehen, auch an zusätzliche E-Mail-Empfänger versenden möchtest, gebe sie hier ein. Ansonsten lass dieses Feld blank.', 'is_ad' => 'Dies ist ein Active Directory Server', 'alerts' => 'Alarme', - 'alert_title' => 'Alarm-Einstellungen aktualisieren', + 'alert_title' => 'Benachrichtigungseinstellungen ändern', 'alert_email' => 'Alarme senden an', 'alert_email_help' => 'E-Mail-Adressen oder Verteilerlisten an die Warnungen gesendet werden sollen, durch Komma getrennt', 'alerts_enabled' => 'E-Mail-Benachrichtigungen aktiviert', @@ -21,7 +21,7 @@ return [ 'allow_user_skin_help_text' => 'Wenn Du dieses Kästchen aktivierst, kann ein Benutzer das Design mit einem anderen überschreiben.', 'asset_ids' => 'Asset IDs', 'audit_interval' => 'Auditintervall', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Wenn Du verpflichtet bist, Deine Assets regelmäßig physisch zu überprüfen, geben das Intervall in Monaten an. Wenn Du diesen Wert aktualisiert, werden alle "nächsten Audittermine" für Assets mit einem anstehenden Prüfungsdatum aktualisiert.', 'audit_warning_days' => 'Audit-Warnschwelle', 'audit_warning_days_help' => 'Wie viele Tage im Voraus sollen wir Dich warnen, wenn Assets zur Prüfung fällig werden?', 'auto_increment_assets' => 'Erzeugen von fortlaufenden Asset Tags', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Aus Backup wiederherstellen', 'backups_upload' => 'Backup hochladen', 'backups_path' => 'Backups auf dem Server werden in :path gespeichert', - 'backups_restore_warning' => 'Wähle die Wiederherstellung um ein Backup wieder herzustellen. (Funktioniert derzeit nicht mit S3 Datenspeicher oder Docker)

Die gesamte :app_name Datebank und alle Uploads werden mit den Inhalten des Backups überschrieben. ', + 'backups_restore_warning' => 'Klicke den Wiederherstellungs-Knopf um ein Backup wiederherzustellen. (Funktioniert derzeit nicht mit S3 Datenspeicher oder Docker.)

Die gesamte :app_name Datenbank und alle hochgeladenen Dateien werden mit den Inhalten des Backups überschrieben. ', 'backups_logged_out' => 'Alle vorhandenen Benutzer, auch Du, werden abgemeldet, sobald Deine Wiederherstellung abgeschlossen ist.', 'backups_large' => 'Sehr große Backups können beim Wiederherstellungsversuch ausfallen (Time-Out) und müssen eventuell über die Kommandozeile ausgeführt werden. ', 'barcode_settings' => 'Barcode Einstellungen', @@ -76,7 +76,8 @@ return [ 'laravel' => 'Laravel Version', 'ldap' => 'LDAP', 'ldap_default_group' => 'Standard-Berechtigungsgruppe', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group_info' => 'Wähle eine Gruppe aus, die neu synchronisierten Benutzern zugewiesen werden soll. Denke daran, dass ein Benutzer die Berechtigungen der zugewiesenen Gruppe übernimmt.', + 'no_default_group' => 'Keine Standardgruppe', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client-seitiger TLS-Schlüssel', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Zertifikat', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP Einstellungen', 'ldap_client_tls_cert_help' => 'Client-seitige TLS-Zertifikat und Schlüssel für LDAP Verbindungen sind in der Regel nur in Google Workspace Konfigurationen mit "Secure LDAP" nützlich. Beide werden benötigt.', 'ldap_client_tls_key' => 'LDAP Client-seitiger TLS-Schlüssel', + 'ldap_location' => 'LDAP Standort', +'ldap_location_help' => 'Das Feld LDAP Standort sollte verwendet werden, wenn keine OU im Basis Bind DN verwendet wird. Leer lassen, wenn eine OU-Suche verwendet wird.', 'ldap_login_test_help' => 'Gib einen gültigen LDAP-Benutzernamen und ein Passwort von der oben angegebenen Basis-DN ein, um zu testen, ob Deine LDAP-Anmeldung korrekt konfiguriert ist. DU MUSST DEINE AKTUALISIERTEN LDAP-EINSTELLUNGEN ZUERST SPEICHERN.', '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', @@ -111,7 +114,7 @@ return [ 'ldap_auth_filter_query' => 'LDAP-Authentifizierungsabfrage', 'ldap_version' => 'LDAP Version', 'ldap_active_flag' => 'LDAP Aktiv-Markierung', - 'ldap_activated_flag_help' => 'Dieser Wert wird benutzt um zu entscheiden, ob synchronisierte Nutzer sich in Snipe-IT anmelden können. Items können unabhängig von ihm zum Nutzer zugewiesen werden. Der Wert sollte der Attributname im AD/LDAP sein und nicht der Wert.

Wenn diesem Feld ein Name zugewiesen wird, der im AD/LDAP nicht existiert bzw. der Wert im AD/LDAP 0 oder false ist wird der Nutzerlogin deaktiviert. Ist der Wert im AD\\LDAP 1 oder true oder jeder beliebige andere Text dann kann sich der Nutzer anmelden. Wenn das Feld im AD leer ist, dann gilt das userAccountControl Attribut, was normalerweise bedeutet, dass sich nicht deaktivierte Nutzer anmelden können.', + 'ldap_activated_flag_help' => 'Dieser Wert wird benutzt, um zu entscheiden, ob synchronisierte Nutzer sich in Snipe-IT anmelden können. Items können unabhängig von ihm zum Nutzer zugewiesen werden. Der Wert sollte der Attributname im AD/LDAP sein und nicht der Wert.

Wenn diesem Feld ein Name zugewiesen wird, der im AD/LDAP nicht existiert bzw. der Wert im AD/LDAP 0 oder false ist wird der Nutzerlogin deaktiviert. Ist der Wert im AD\\LDAP 1 oder true oder jeder beliebige andere Text dann kann sich der Nutzer anmelden. Wenn das Feld im AD leer ist, dann gilt das userAccountControl Attribut, was normalerweise bedeutet, dass sich nicht deaktivierte Nutzer anmelden können.', 'ldap_emp_num' => 'LDAP Mitarbeiternummer', 'ldap_email' => 'LDAP E-Mail', 'ldap_test' => 'LDAP testen', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Bilder in E-Mails anzeigen', 'show_images_in_email_help' => 'Deaktiviere dieses Kästchen, wenn sich Deine Snipe-IT-Installation hinter einem VPN oder einem geschlossenen Netzwerk befindet und Benutzer außerhalb des Netzwerks keine Bilder von dieser Installation in ihren E-Mails laden können.', 'site_name' => 'Seitenname', + 'integrations' => 'Integrationen', 'slack' => 'Slack', - 'slack_title' => 'Slack Einstellungen aktualisieren', - 'slack_help' => 'Slack Einstellungen', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Kanal', - 'slack_endpoint' => 'Slack Endpunkt', - 'slack_integration' => 'Slack Einstellungen', - 'slack_integration_help' => 'Die Slackintegration ist optional. Der Endpunkt und ein channel werden benötigt, wenn man Slack benutzen möchte. Um Slack zu konfigurieren muss zuerst ein eingehender Webhook in Slack eingerichtet werden. Klicke auf Slack Integration testen um zu prüfen, ob die Einstellungen vor dem Speichern korrekt sind. ', - 'slack_integration_help_button' => 'Sobald Du Deine Slack Informationen gespeichert hast, erscheint ein Testknopf.', - 'slack_test_help' => 'Teste, ob die Slack-Integration korrekt konfiguriert ist. ZUERST MÜSSEN DIE AKTUALISIERTEN SLACK EINSTELLUNGEN GESPEICHERT WERDEN.', + 'general_webhook' => 'Allgemeiner Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Teste zum Speichern', + 'webhook_title' => 'Webhook Einstellungen aktualisieren', + 'webhook_help' => 'Integrationseinstellungen', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Kanal', + 'webhook_endpoint' => ':app Endpunkt', + 'webhook_integration' => ':app Einstellungen', + 'webhook_test' =>':app Integration testen', + 'webhook_integration_help' => ':app Integration ist optional, allerdings sind Endpunkt und Kanal erforderlich, wenn du sie verwenden möchtet. Um die :app Integration zu konfigurieren, musst du zuerst in deinem :app Account einen eingehenden Webhook erstellen. Klicke auf den :app Integration testen-Knopf, um zu bestätigen, dass die Einstellungen vor dem Speichern korrekt sind. ', + 'webhook_integration_help_button' => 'Sobald die :app Einstellungen gespeichert wurden, erscheint eine Schaltfläche zum testen.', + 'webhook_test_help' => 'Teste, ob deine :app Integration korrekt konfiguriert ist. DIE AKTUELLEN :app EINSTELLUNGEN MÜSSEN ZUERST GESPEICHERT WERDEN.', 'snipe_version' => 'Snipe-IT Version', 'support_footer' => 'Support-Link in der Fußzeile ', 'support_footer_help' => 'Lege fest, wer die Links zu Snipe-IT Support-Information und Benutzerhandbuch sieht', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'lokalisierung, Währung, lokal, Lokal, Zeitzone, International, Internationalisierung, Sprache, Sprachen, Übersetzung', 'localization_help' => 'Sprache, Datumsanzeige', 'notifications' => 'Benachrichtigungen', - 'notifications_help' => 'E-Mail-Benachrichtigungen, Audit-Einstellungen', + 'notifications_help' => 'E-Mail-Benachrichtigungen & Audit-Einstellungen', 'asset_tags_help' => 'Inkrementieren und Präfixe', 'labels' => 'Etiketten', 'labels_title' => 'Etiketten-Einstellungen aktualisieren', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Weiter: Benutzer erstellen', 'ldap_settings_link' => 'LDAP Einstellungsseite', 'slack_test' => ' Integration testen', + 'google_callback_help' => 'Dies sollte als Callback-URL in den Google OAuth App-Einstellungen in deinem Unternehmen eingegeben werden's Google Developer Konsole .', + 'google_login' => 'Google Workspace Anmeldeeinstellungen', + 'enable_google_login' => 'Anmelden mit Google Workspace für Benutzer aktivieren', + 'enable_google_login_help' => 'Benutzer werden nicht automatisch bereitgestellt. Sie müssen ein bestehendes Konto hier UND in Google Workspace haben, und ihr Benutzername muss mit der E-Mail-Adresse von Google Workspace übereinstimmen. ', + ]; diff --git a/resources/lang/de-i/admin/settings/message.php b/resources/lang/de-i/admin/settings/message.php index d781a93f14..333f6bbc69 100644 --- a/resources/lang/de-i/admin/settings/message.php +++ b/resources/lang/de-i/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'LDAP-Authentifizierung wird getestet...', 'authentication_success' => 'Benutzer wurde erfolgreich gegen LDAP authentifiziert!' ], - 'slack' => [ - 'sending' => 'Slack Testnachricht wird gesendet...', - 'success_pt1' => 'Erfolgreich! Überprüfe die ', - 'success_pt2' => ' kanal für Deine Testnachricht, und klicke auf Speichern unten, um Deine Einstellungen zu speichern.', + 'webhook' => [ + 'sending' => ':app Testnachricht wird gesendet ...', + 'success_pt1' => 'Erfolgreich! Überprüfe den ', + 'success_pt2' => ' Kanal für deine Testnachricht und klicke unten auf SPEICHERN, um die Einstellungen zu sichern.', '500' => '500 Server Fehler.', - 'error' => 'Etwas ist schiefgelaufen.', + 'error' => 'Etwas ist schiefgelaufen. :app antwortete mit: :error_message', + 'error_misc' => 'Etwas ist schiefgelaufen! :( ', ] ]; diff --git a/resources/lang/de-i/admin/users/general.php b/resources/lang/de-i/admin/users/general.php index 2d5d27830d..10b5b0d236 100644 --- a/resources/lang/de-i/admin/users/general.php +++ b/resources/lang/de-i/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Alles Zugewiesene drucken', 'email_assigned' => 'E-Mail-Liste aller Zugewiesenen', 'user_notified' => 'Der Benutzer hat eine Liste seiner aktuell zugewiesenen Artikel per E-Mail erhalten.', + 'auto_assign_label' => 'Diesen Benutzer bei der automatischen Zuweisung berechtigter Lizenzen einbeziehen', + 'auto_assign_help' => 'Diesen Benutzer bei der automatischen Zuweisung von Lizenzen überspringen', 'software_user' => 'Software herausgegeben an :name', 'send_email_help' => 'Du musst eine E-Mail-Adresse angeben, um dem Benutzer Zugangsdaten zu zusenden. Das Versenden von Zugangsdaten ist nur bei der Erstellung eines Benutzers möglich. Passwörter werden in einem Einweg-Hash gespeichert und können danach nicht mehr ausgelesen werden.', 'view_user' => 'Benutzer :name ansehen', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Nur Superadmins dürfen einem Benutzer Superadmin Zugriff gewähren.', 'admin_permission_warning' => 'Nur Benutzer mit Administratorrechten oder höher dürfen einem Benutzer Administratorzugriff gewähren.', 'remove_group_memberships' => 'Gruppenmitgliedschaften entfernen', - 'warning_deletion' => 'WARNUNG:', 'warning_deletion_information' => 'Du bist dabei, ALLE Assets von :count Benutzer(s) einzuchecken. Super-Admins werden rot hervorgehoben.', 'update_user_assets_status' => 'Alle Assets für diese Benutzer auf diesen Status aktualisieren', 'checkin_user_properties' => 'Alle diesen Benutzern zugeordneten Objekte zurücknehmen', @@ -41,4 +42,13 @@ return [ 'remote' => 'Extern', 'remote_help' => 'Dies kann nützlich sein, wenn Du nach externen Benutzern filtern musst, die niemals oder nur selten an Ihre physischen Standorte kommen.', 'not_remote_label' => 'Dies ist kein externer Benutzer', + 'vip_label' => 'VIP Benutzer', + 'vip_help' => 'Dies kann hilfreich sein, um wichtige Personen zu markieren, wenn du möchtest.', + 'create_user' => 'Benutzer erstellen', + 'create_user_page_explanation' => 'Dies sind die Anmeldeinformationen, die Du verwendest, um zum ersten Mal auf die Webseite zuzugreifen.', + 'email_credentials' => 'E-Mail-Anmeldedaten', + 'email_credentials_text' => 'Meine Zugangsdaten an die oben genannte E-Mail-Adresse senden', + 'next_save_user' => 'Weiter: Benutzer speichern', + 'all_assigned_list_generation' => 'Generiert am:', + 'email_user_creds_on_create' => 'Diesem Benutzer seine Zugangsdaten per E-Mail senden?', ]; diff --git a/resources/lang/de-i/admin/users/message.php b/resources/lang/de-i/admin/users/message.php index 047a315400..8216393217 100644 --- a/resources/lang/de-i/admin/users/message.php +++ b/resources/lang/de-i/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Du hast diesen Gegenstand erfolgreich abgelehnt.', 'bulk_manager_warn' => 'Deine Benutzer wurden erfolgreich aktualisiert, aber Dein Manager-Eintrag wurde nicht gespeichert, da der Manager, den Du ausgewählt hast, auch in der zu bearbeitenden Liste war, und Benutzer dürfen nicht ihr eigener Manager sein. Bitte wähle Deine Benutzer erneut aus, ohne den Manager.', 'user_exists' => 'Benutzer existiert bereits!', - 'user_not_found' => 'Benutzer [:id] existiert nicht.', + 'user_not_found' => 'Benutzer existiert nicht.', 'user_login_required' => 'Das Loginfeld ist erforderlich', 'user_password_required' => 'Das Passswortfeld ist erforderlich.', 'insufficient_permissions' => 'Unzureichende Berechtigungen.', @@ -62,6 +62,6 @@ return array( 'inventorynotification' => array( 'error' => 'Für diesen Benutzer ist keine E-Mail-Adresse hinterlegt.', - 'success' => 'The user has been notified about their current inventory.' + 'success' => 'Der Benutzer wurde über sein aktuelles Inventar informiert.' ) ); \ No newline at end of file diff --git a/resources/lang/de-i/auth/general.php b/resources/lang/de-i/auth/general.php index 974ae6fa93..000bb555b4 100644 --- a/resources/lang/de-i/auth/general.php +++ b/resources/lang/de-i/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Benutzername merken', 'username_help_top' => 'Benutzernamen eingeben, um einen Link zum Zurücksetzen des Passwortes per E-Mail zu erhalten.', 'username_help_bottom' => 'Abhängig von der Konfiguration, kann der Benutzername identisch mit ihrer E-Mailadresse sein. Falls Du Deinen Benutzernamen vergessen hast, kontaktiere Deinen Administrator.

Benutzernamen ohne zugeordnete E-Mailadresse erhalten keine E-Mail zum Zurücksetzen des Passwortes. ', - ]; + 'google_login' => 'Oder mit Google Workspace anmelden', + 'google_login_failed' => 'Google-Anmeldung fehlgeschlagen, bitte versuche es erneut.', + +]; diff --git a/resources/lang/de-i/general.php b/resources/lang/de-i/general.php index 1d41e332e0..6577ff7965 100644 --- a/resources/lang/de-i/general.php +++ b/resources/lang/de-i/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Zubehör', 'activated' => 'Aktiviert', + 'accepted_date' => 'Datum akzeptiert', 'accessory' => 'Zubehör', 'accessory_report' => 'Zubehörbericht', 'action' => 'Aktion', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Administrator', 'add_seats' => 'Lizenzen hinzugefügt', - 'age' => "Age", + 'age' => "Alter", 'all_assets' => 'Alle Assets', 'all' => 'Alle', 'archived' => 'Archiviert', @@ -27,7 +28,13 @@ return [ 'audit' => 'Prüfung', 'audit_report' => 'Prüfungsbericht', 'assets' => 'Assets', + 'assets_audited' => 'Assets geprüft', + 'assets_checked_in_count' => 'Asset zurückgenommen', + 'assets_checked_out_count' => 'Assets herausgegeben', + 'asset_deleted_warning' => 'Dieses Asset wurde gelöscht. Du musst es wiederherstellen, bevor Du es jemandem zuweisen kannst.', + 'assigned_date' => 'Zuweisungsdatum', 'assigned_to' => 'Herausgegeben an :name', + 'assignee' => 'Herausgegeben an', 'avatar_delete' => 'Avatar löschen', 'avatar_upload' => 'Avatar hochladen', 'back' => 'Zurück', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Massenbearbeitung', 'bulk_delete' => 'Massenlöschung', 'bulk_actions' => 'Massenaktionen', - 'bulk_checkin_delete' => 'Masseneinchecken der Assets von Benutzern', + 'bulk_checkin_delete' => 'Massen-Check-in / Benutzer löschen', + 'byod' => 'BYOD', + 'byod_help' => 'Dieses Gerät gehört dem Benutzer', 'bystatus' => 'nach Status', 'cancel' => 'Abbrechen', 'categories' => 'Kategorien', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Diese Anwendung läuft im Produktionsmodus mit debugging aktiviert. Dies kann sensible Daten verfügbar machen, wenn Ihre Anwendung öffentlich zugänglich ist. Deaktiviere den Debug-Modus, indem du den APP_DEBUG-Wert in der .env Datei auf false setzt.', 'delete' => 'Löschen', 'delete_confirm' => 'Bist du sicher, dass du :item löschen möchtest?', + 'delete_confirm_no_undo' => 'Möchtest du :item wirklich löschen? Dies kann nicht rückgängig gemacht werden.', 'deleted' => 'Gelöscht', 'delete_seats' => 'Gelöschte Lizenzen', 'deletion_failed' => 'Löschen fehlgeschlagen', @@ -139,6 +149,7 @@ return [ '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' => 'Akzeptierte Dateitypen sind jpg, png, gif und svg. Maximale Uploadgröße ist :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', 'importing' => 'Importiere', 'importing_help' => 'Du kannst Assets, Zubehör, Lizenzen, Komponenten, Verbrauchsmaterialien und Benutzer mittels CSV-Datei importieren.

Die CSV-Datei sollte kommagetrennt sein und eine Kopfzeile enthalten, die mit den Beispiel-CSVs aus der Dokumentation übereinstimmen.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Wartungen', 'item' => 'Gegenstand', 'item_name' => 'Artikelname', + 'import_file' => 'CSV-Datei importieren', + 'import_type' => 'CSV-Import-Typ', 'insufficient_permissions' => 'Fehlende Berechtigungen!', 'kits' => 'Vordefinierte Kits', 'language' => 'Sprache', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Angeforderte Assets', 'request_canceled' => 'Anfrage abgebrochen', 'save' => 'Speichern', + 'select_var' => ':thing auswählen ... ', // this will eventually replace all of our other selects 'select' => 'Auswählen', 'select_all' => 'Alle markieren', 'search' => 'Suche', @@ -240,8 +254,8 @@ return [ 'signature' => 'Unterschrift', 'signed_off_by' => 'Unterschrieben von', 'skin' => 'Skin', - 'slack_msg_note' => 'Eine Slack Nachricht wird gesendet', - 'slack_test_msg' => 'Oh hai! Sieht so aus, als ob deine Slack Integration mit Snipe-IT funktioniert!', + 'webhook_msg_note' => 'Eine Benachrichtigung wird über den Webhook gesendet', + 'webhook_test_msg' => 'Oh hey! Sieht so aus, als ob deine :app Integration mit Snipe-IT funktioniert!', 'some_features_disabled' => 'Einige Funktionen sind für den DEMO-Modus deaktiviert.', 'site_name' => 'Seitenname', 'state' => 'Bundesland', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Bist du dir sicher, dass du das löschen möchtest', 'submit' => 'Abschicken', 'target' => 'Ziel', - 'toggle_navigation' => 'Navigation umschalten', 'time_and_date_display' => 'Zeit- und Datumsanzeige', 'total_assets' => 'Assets', 'total_licenses' => 'Lizenzen', @@ -281,9 +294,9 @@ return [ 'yes' => 'Ja', 'zip' => 'Postleitzahl', 'noimage' => 'Kein Bild hochgeladen oder kein Bild gefunden.', - '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' => 'Die angeforderte Datei existiert nicht.', + 'file_upload_success' => 'Dateiupload erfolgreich!', + 'no_files_uploaded' => 'Dateiupload erfolgreich!', 'token_expired' => 'Deine Sitzung ist abgelaufen. Bitte versuche es erneut.', 'login_enabled' => 'Login aktiviert', 'audit_due' => 'Prüfung fällig', @@ -375,7 +388,8 @@ return [ 'bulk_soft_delete' =>'Auch diese Benutzer soft-löschen. Die Assets-Historie bleibt erhalten, solange/bis die markierten Datensätze nicht in den Admin-Einstellungen endgültig gelöscht werden.', 'bulk_checkin_delete_success' => 'Die ausgewählten Benutzer wurden gelöscht und ihre Assets wurden eingecheckt.', 'bulk_checkin_success' => 'Die Assets der ausgewählten Benutzer wurden eingecheckt.', - 'set_to_null' => 'Werte für dieses Asset|Werte für alle :asset_count Assets löschen ', + 'set_to_null' => 'Werte für dieses Asset|Werte für alle :asset_count Assets löschen ', + 'set_users_field_to_null' => ':field Werte für diesen Benutzer löschen|:field Werte für alle :user_count Benutzer löschen ', 'na_no_purchase_date' => 'N/A - Kein Kaufdatum angegeben', 'assets_by_status' => 'Assets sortiert nach Status', 'assets_by_status_type' => 'Assets sortiert nach Statustyp', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Startdatum', 'end_date' => 'Enddatum', 'alt_uploaded_image_thumbnail' => 'Hochgeladene Miniaturansicht', - 'placeholder_kit' => 'Kit auswählen' + 'placeholder_kit' => 'Kit auswählen', + 'file_not_found' => 'Datei wurde nicht gefunden', + 'preview_not_available' => '(keine Vorschau vorhanden)', + 'setup' => 'Setup', + 'pre_flight' => 'Pre-Flight', + 'skip_to_main_content' => 'Zum Hauptinhalt springen', + 'toggle_navigation' => 'Navigation umschalten', + 'alerts' => 'Benachrichtigungen', + 'tasks_view_all' => 'Alle Aufgaben anzeigen', + 'true' => 'Wahr', + 'false' => 'Falsch', + 'integration_option' => 'Integrationsoptionen', + 'log_does_not_exist' => 'Es existiert kein passender Logeintrag.', + 'merge_users' => 'Benutzer zusammenführen', + 'merge_information' => 'Dies wird die :count Benutzer zu einem einzigen Benutzer zusammenführen. Wähle den Benutzer, in den du die anderen zusammenführen möchtest. Die zugehörigen Assets, Lizenzen, etc. werden in den ausgewählten Benutzer verschoben und die anderen Benutzer werden als gelöscht markiert.', + 'warning_merge_information' => 'Diese Aktion kann NICHT rückgängig gemacht werden und sollte NUR verwendet werden, wenn Benutzer aufgrund eines falschen Imports oder einer fehlerhaften Synchronisation zusammengeführt werden müssen. Stelle sicher, dass zuerst ein Backup erstellt wird.', + 'no_users_selected' => 'Keine Benutzer ausgewählt', + 'not_enough_users_selected' => 'Mindestens :count Benutzer müssen ausgewählt sein', + 'merge_success' => ':count Benutzer wurden erfolgreich zu :into_username zusammengeführt!', + 'merged' => 'zusammengeführt', + 'merged_log_this_user_into' => 'Benutzer (ID :to_id - :to_username) in Benutzer-ID :from_id (:from_username) zusammengeführt ', + 'merged_log_this_user_from' => 'Benutzer-ID :from_id (:from_username) in diesen Benutzer (ID :to_id - :to_username) zusammengeführt', + 'clear_and_save' => 'Löschen & Speichern', + 'update_existing_values' => 'Vorhandene Werte aktualisieren?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Das Generieren von fortlaufenden Asset-Tags ist deaktiviert, daher müssen alle Datensätze die Spalte "Asset Tag" enthalten.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Hinweis: Das Generieren von fortlaufenden Asset-Tags ist aktiviert, daher wird für alle Datensätze, die keinen Asset-Tag angegeben haben, einer erstellt. Datensätze, die einen "Asset Tag" angegeben haben, werden mit den angegebenen Informationen aktualisiert.', + 'send_welcome_email_to_users' => ' Willkommens-E-Mail für neue Benutzer senden?', + 'back_before_importing' => 'Vor dem Importieren sichern?', + 'csv_header_field' => 'CSV-Header-Feld', + 'import_field' => 'Feld importieren', + 'sample_value' => 'Beispielwert', + 'no_headers' => 'Keine Spalten gefunden', + 'error_in_import_file' => 'Beim Lesen der CSV-Datei ist ein Fehler aufgetreten: :error', + 'percent_complete' => ':percent % abgeschlossen', + 'errors_importing' => 'Einige Fehler sind beim Importieren aufgetreten: ', + 'warning' => 'WARNUNG: :warning', + 'success_redirecting' => '"Erfolgreich... Weiterleiten.', + 'setup_successful_migrations' => 'Die Datenbanktabellen wurden erstellt', + 'setup_migration_output' => 'Ausgabe der Migration:', + 'setup_migration_create_user' => 'Weiter: Benutzer erstellen', + 'importer_generic_error' => 'Dein Dateiimport ist abgeschlossen, aber es ist ein Fehler aufgetreten. Dies wird in der Regel durch eine API-Drosselung von Drittanbietern von einem Benachrichtigungs-Webhook (wie z. B. Slack) verursacht und hätte den Import selbst nicht beeinträchtigt, aber du solltest dies bestätigen.', + 'confirm' => 'Bestätigen', + 'autoassign_licenses' => 'Lizenzen automatisch zuweisen', + 'autoassign_licenses_help' => 'Erlaube diesem Benutzer die Zuweisung von Lizenzen über die Benutzeroberfläche für die Massenzuweisung von Lizenzen oder über die CLI-Tools.', + 'autoassign_licenses_help_long' => 'Dies erlaubt es einem Benutzer, Lizenzen über die Massen-Zuweisung GUI oder CLI-Tools zugewiesen zu bekommen. (Zum Beispiel möchten Sie den Auftragnehmern möglicherweise nicht automatisch eine Lizenz zuweisen, die nur Mitarbeitern zur Verfügung stehen würde. Sie können diesen Benutzern weiterhin einzelne Lizenzen zuweisen, aber sie werden nicht in der Lizenzen Massenherausgabe der Benutzer berücksichtigt.)', + 'no_autoassign_licenses_help' => 'Den Benutzer nicht bei der Lizenzen Massen-Zuweisung GUI oder CLI-Tools berücksichtigen.', + 'modal_confirm_generic' => 'Sind Sie sich sicher?', + 'cannot_be_deleted' => 'Dieser Gegenstand kann nicht gelöscht werden', + 'undeployable_tooltip' => 'Dieser Gegenstand kann nicht herausgegeben werden. Überprüfen Sie die verbleibende Menge.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/de-i/help.php b/resources/lang/de-i/help.php index a86416a712..3d44239609 100644 --- a/resources/lang/de-i/help.php +++ b/resources/lang/de-i/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Mehr Info', - 'audit_help' => 'Mit dem aktivieren dieser Option wird der Asset-Datensatz an diesen neuen Ort angepasst. Wenn diese Option nicht aktiviert wird, wird nur der Ort im Audit-Log angezeigt.

Falls das Asset ausgecheckt ist, ändert sich nicht die Position der Person, des Assets oder der Position, an der es ausgecheckt wird.', + 'audit_help' => 'Mit dem aktivieren dieser Option wird der Asset-Datensatz an diesen neuen Ort angepasst. Wenn diese Option nicht aktiviert wird, wird der Ort nur im Audit-Log angezeigt.

Falls das Asset ausgecheckt ist, ändert sich der Ort der Person, des Assets oder des Orts, an den es ausgecheckt ist, nicht.', 'assets' => 'Assets sind Elemente, die mit Seriennummer oder einem Asset-Tag versehen sind. Sie sind meist höhere Werte, bei denen die Identifizierung eines bestimmten Gegenstands von Bedeutung ist.', diff --git a/resources/lang/de-i/localizations.php b/resources/lang/de-i/localizations.php index 0287f56f8f..cbc88166f3 100644 --- a/resources/lang/de-i/localizations.php +++ b/resources/lang/de-i/localizations.php @@ -257,6 +257,7 @@ im Indischen Ozean', 'UK'=>'Schottland', 'SB'=>'Salomon-Inseln', 'SC'=>'Seychellen', + 'SS'=>'Südsudan', 'SD'=>'Sudan', 'SE'=>'Schweden', 'SG'=>'Singapur', @@ -296,7 +297,7 @@ im Indischen Ozean', 'UK'=>'Großbritannien', 'US'=>'USA', 'UM'=>'Kleinere abgelegene Inseln der Vereinigten Staaten', - 'UY'=>'Uruguay', + 'UY'=>'Urugua', 'UZ'=>'Usbekistan', 'VA'=>'Vatikanstadt (Heiliger Stuhl)', 'VC'=>'St. Vincent und die Grenadinen', diff --git a/resources/lang/de-i/mail.php b/resources/lang/de-i/mail.php index 3a2e93f68e..5cebc28d2f 100644 --- a/resources/lang/de-i/mail.php +++ b/resources/lang/de-i/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Melde Diche zu Deiner neuen Snipe-IT-Installation mithilfe der unten stehenden Anmeldeinformationen an:', 'login' => 'Anmelden:', 'Low_Inventory_Report' => 'Bericht über niedrige Lagerbestände', + 'inventory_report' => 'Bestandsbericht', 'min_QTY' => 'Mindestmenge', 'name' => 'Name', 'new_item_checked' => 'Ein neuer Gegenstand wurde unter Ihrem Namen ausgecheckt. Details folgen.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Ihre Snipe-IT Anmeldedaten', 'Accessory_Checkin_Notification' => 'Zubehör zurückgenommen', 'Asset_Checkin_Notification' => 'Asset zurückgenommen', + 'Asset_Checkout_Notification' => 'Asset herausgegeben', 'License_Checkin_Notification' => 'Lizenz zurückgenommen', 'Expected_Checkin_Report' => 'Bericht über erwartete Asset Rückgaben', 'Expected_Checkin_Notification' => 'Erinnerung: :name Rückgabedatum nähert sich', 'Expected_Checkin_Date' => 'Ihr ausgebuchtes Asset ist fällig zur Rückgabe am :date', 'your_assets' => 'Deine Assets anzeigen', + 'rights_reserved' => 'Alle Rechte vorbehalten.', ]; diff --git a/resources/lang/de-i/validation.php b/resources/lang/de-i/validation.php index 4682689119..8a5518141b 100644 --- a/resources/lang/de-i/validation.php +++ b/resources/lang/de-i/validation.php @@ -43,14 +43,14 @@ return [ 'file' => ':attribute muss eine Datei sein.', 'filled' => ':attribute muss einen Wert haben.', 'image' => ':attribute muss ein Bild sein.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + '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.', @@ -67,6 +67,8 @@ return [ 'array' => ':attribute muss mindestens :min Elemente enthalten.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Ihr derzeitiges Passwort ist nicht korrekt', 'dumbpwd' => 'Das Passwort ist zu gebräuchlich.', 'statuslabel_type' => 'Du musst einen gültigen Statuslabel-Typ auswählen', + + // 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 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', + 'termination_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', + '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', + ], /* diff --git a/resources/lang/de/admin/accessories/general.php b/resources/lang/de/admin/accessories/general.php index df84e75ac2..9c2cb6c74a 100644 --- a/resources/lang/de/admin/accessories/general.php +++ b/resources/lang/de/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Zubehör aktualisieren', 'use_default_eula' => 'Die Standard EULA stattdessen verwenden.', 'use_default_eula_disabled' => 'Die Standard EULA stattdessen verwenden. Keine Standard EULA definiert. Bitte fügen Sie eine in den Einstellungen hinzu.', + 'clone' => 'Zubehör duplizieren', + 'delete_disabled' => 'Dieses Zubehör kann noch nicht gelöscht werden, da einige Artikel noch herausgegeben sind.', ); diff --git a/resources/lang/de/admin/accessories/message.php b/resources/lang/de/admin/accessories/message.php index f8e2d31fac..ed6a694aec 100644 --- a/resources/lang/de/admin/accessories/message.php +++ b/resources/lang/de/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/de/admin/asset_maintenances/form.php b/resources/lang/de/admin/asset_maintenances/form.php index 73111e98d2..906fd702ca 100644 --- a/resources/lang/de/admin/asset_maintenances/form.php +++ b/resources/lang/de/admin/asset_maintenances/form.php @@ -4,11 +4,11 @@ 'asset_maintenance_type' => 'Wartungsart', 'title' => 'Bezeichnung', 'start_date' => 'Startdatum', - 'completion_date' => 'Fertigstellungstermin', + 'completion_date' => 'Abschlussdatum', 'cost' => 'Kosten', 'is_warranty' => 'Nachbesserungsarbeiten', - 'asset_maintenance_time' => 'Tage', + 'asset_maintenance_time' => 'Wartungszeit (in Tagen)', 'notes' => 'Anmerkungen', - 'update' => 'Aktualisieren', - 'create' => 'Erstellen' + 'update' => 'Wartung bearbeiten', + 'create' => 'Wartung erstellen' ]; diff --git a/resources/lang/de/admin/categories/message.php b/resources/lang/de/admin/categories/message.php index 7d8e28a195..841317e315 100644 --- a/resources/lang/de/admin/categories/message.php +++ b/resources/lang/de/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Die Kategorie konnte nicht aktualisiert werden, bitte versuchen Sie es erneut', - 'success' => 'Die Kategorie wurde erfolgreich aktualisiert.' + 'success' => 'Die Kategorie wurde erfolgreich aktualisiert.', + 'cannot_change_category_type' => 'Sie können den Kategorietyp nicht ändern, nachdem er erstellt wurde', ), 'delete' => array( diff --git a/resources/lang/de/admin/components/general.php b/resources/lang/de/admin/components/general.php index 7094318204..dffffb2805 100644 --- a/resources/lang/de/admin/components/general.php +++ b/resources/lang/de/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Verbleibend', 'total' => 'Gesamt', 'update' => 'Komponente aktualisieren', + 'checkin_limit' => 'Die angegebene Menge muss gleich oder kleiner sein als :assigned_qty' ); diff --git a/resources/lang/de/admin/components/message.php b/resources/lang/de/admin/components/message.php index d7dd2a0cfe..e65d336fa3 100644 --- a/resources/lang/de/admin/components/message.php +++ b/resources/lang/de/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponente konnte nicht herausgegeben werden. Bitte versuchen Sie es erneut', 'success' => 'Komponente wurde erfolgreich herausgegeben.', - 'user_does_not_exist' => 'Dieser Benutzer ist ungültig. Bitte versuchen Sie es noch einmal.' + 'user_does_not_exist' => 'Dieser Benutzer ist ungültig. Bitte versuchen Sie es noch einmal.', + 'unavailable' => 'Nicht genügend verbleibende Komponenten: :remaining verbleibend, :requested angefordert ', ), 'checkin' => array( diff --git a/resources/lang/de/admin/consumables/message.php b/resources/lang/de/admin/consumables/message.php index 307ca97f47..2e3dc7540e 100644 --- a/resources/lang/de/admin/consumables/message.php +++ b/resources/lang/de/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Das Verbrauchsmaterial wurde nicht herausgegeben. Bitte versuchen Sie es erneut', 'success' => 'Verbrauchsmaterial wurde erfolgreich herausgegeben.', - 'user_does_not_exist' => 'Dieser Benutzer ist ungültig. Bitte versuchen Sie es noch einmal.' + 'user_does_not_exist' => 'Dieser Benutzer ist ungültig. Bitte versuchen Sie es noch einmal.', + 'unavailable' => 'Es sind nicht genügend Verbrauchsmaterialien für diese Herausgabe vorhanden. Bitte überprüfen Sie die verbleibende Menge. ', ), 'checkin' => array( diff --git a/resources/lang/de/admin/custom_fields/general.php b/resources/lang/de/admin/custom_fields/general.php index ce95064549..7b8b31efe1 100644 --- a/resources/lang/de/admin/custom_fields/general.php +++ b/resources/lang/de/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Von Modellen benutzt', 'order' => 'Reihenfolge', 'create_fieldset' => 'Neuer Feldsatz', + 'update_fieldset' => 'Feldsatz aktualisieren', + 'fieldset_does_not_exist' => 'Feldsatz :id existiert nicht', + 'fieldset_updated' => 'Feldsatz aktualisiert', 'create_fieldset_title' => 'Neuen Feldsatz erstellen', 'create_field' => 'Neues benutzerdefiniertes Feld', 'create_field_title' => 'Neues benutzerdefiniertes Feld erstellen', @@ -44,6 +47,8 @@ return [ 'db_convert_warning' => 'WARNUNG. Dieses Feld befindet sich in der Tabelle mit benutzerdefinierten Feldern als :db_column sollte aber :expected sein.', 'is_unique' => 'Dieser Wert muss für jedes Asset einzigartig sein', 'unique' => 'Einzigartig', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Erlaube dem Benutzer, an den das Asset herausgegeben wurde, diese Werte auf der Seite "Zugeordnete Assets anzeigen" anzeigen zu lassen', + 'display_in_user_view_table' => 'Für Benutzer sichtbar', + 'auto_add_to_fieldsets' => 'Automatisch zu jedem neuen Feldsatz hinzufügen', + 'add_to_preexisting_fieldsets' => 'Zu allen existierenden Feldsätzen hinzufügen', ]; diff --git a/resources/lang/de/admin/departments/message.php b/resources/lang/de/admin/departments/message.php index f119ff8643..f6e44786bc 100644 --- a/resources/lang/de/admin/departments/message.php +++ b/resources/lang/de/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Diese Abteilung existiert nicht.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'An diesem Firmenstandort existiert bereits eine Abteilung mit diesem Namen. Oder wählen Sie einen spezifischeren Namen für diese Abteilung. ', 'assoc_users' => 'Diese Abteilung ist im Moment mit mindestens einem Benutzer verknüpft und kann nicht gelöscht werden. Bitte Benutzer aktualisieren, so dass diese Abteilung nicht mehr verknüpft ist und erneut versuchen. ', 'create' => array( 'error' => 'Abteilung wurde nicht erstellt. Bitte versuchen Sie es erneut.', diff --git a/resources/lang/de/admin/groups/message.php b/resources/lang/de/admin/groups/message.php index a11b455217..a05c22473c 100644 --- a/resources/lang/de/admin/groups/message.php +++ b/resources/lang/de/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Gruppe existiert bereits!', - 'group_not_found' => 'Gruppe [: Id] existiert nicht.', + 'group_not_found' => 'Die Gruppe mit der ID :id existiert nicht.', 'group_name_required' => '"Name" darf nicht leer sein', 'success' => array( diff --git a/resources/lang/de/admin/hardware/form.php b/resources/lang/de/admin/hardware/form.php index 9f7175193f..718e27fb64 100644 --- a/resources/lang/de/admin/hardware/form.php +++ b/resources/lang/de/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Massenlöschung von Assets bestätigen', + 'bulk_restore' => 'Massenwiederherstellung von Assets bestätigen', 'bulk_delete_help' => 'Überprüfen Sie die nachfolgenden Assets für die Massenlöschung. Sobald diese gelöscht sind, können diese zwar wiederhergestellt werden, sind aber dem aktuellen Nutzer nicht mehr zugeordnet.', + 'bulk_restore_help' => 'Überprüfen Sie die Assets für die Massenwiederherstellung. Sobald sie wiederhergestellt sind, werden diese Assets nicht mit Benutzern assoziiert, denen sie zuvor zugewiesen wurden.', 'bulk_delete_warn' => 'Sie sind im Begriff :asset_count Assets zu löschen.', + 'bulk_restore_warn' => 'Sie sind dabei, :asset_count Assets wiederherzustellen.', 'bulk_update' => 'Massenaktualisierung von Assets', 'bulk_update_help' => 'Diese Eingabemaske erlaubt Ihnen die Aktualisierung von mehreren Assets zugleich. Füllen Sie die Felder aus welche Sie ändern möchten. Alle leeren Felder bleiben unverändert. ', 'bulk_update_warn' => 'Sie sind dabei, die Eigenschaften eines einzelnen Assets zu bearbeiten. |Sie sind dabei, die Eigenschaften von :asset_count Assets zu bearbeiten.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Nur den Standardort aktualisieren', 'asset_not_deployable' => 'Dieses Asset ist nicht verfügbar und kann nicht herausgegeben werden.', 'asset_deployable' => 'Dieses Asset ist verfügbar und kann herausgegeben werden.', - 'processing_spinner' => 'Wird verarbeitet...', + 'processing_spinner' => 'Verarbeitung... (Dies kann bei großen Dateien etwas Zeit in Anspruch nehmen)', 'optional_infos' => 'Optionale Informationen', 'order_details' => 'Bestellinformationen' ]; diff --git a/resources/lang/de/admin/hardware/general.php b/resources/lang/de/admin/hardware/general.php index 617b9a5bc0..961cff1f87 100644 --- a/resources/lang/de/admin/hardware/general.php +++ b/resources/lang/de/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Dieses Asset wurde gelöscht.', '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' => 'Das Modell dieses Asset ist ungültig.', + 'model_invalid_fix' => 'Das Asset sollte bearbeitet werden, um dies zu korrigieren, bevor versucht wird, es ein- oder auszuchecken.', 'requestable' => 'Anforderbar', 'requested' => 'Angefordert', 'not_requestable' => 'Kann nicht angefordert werden', @@ -21,6 +23,7 @@ return [ 'restore' => 'Asset wiederherstellen', 'pending' => 'Ausstehend', 'undeployable' => 'Nicht einsetzbar', + 'undeployable_tooltip' => 'Dieses Asset hat eine Statusbezeichnung, die nicht einsetzbar ist und zu diesem Zeitpunkt nicht ausgecheckt werden kann.', 'view' => 'Asset ansehen', 'csv_error' => 'Es gibt einen Fehler in der CSV-Datei:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Fehlermeldungen:', 'success_messages' => 'Erfolgsmeldungen:', 'alert_details' => 'Siehe unten für Details.', - 'custom_export' => 'Benutzerdefinierter Export' + 'custom_export' => 'Benutzerdefinierter Export', + 'mfg_warranty_lookup' => ':manufacturer Garantiestatus Abfrage', ]; diff --git a/resources/lang/de/admin/hardware/message.php b/resources/lang/de/admin/hardware/message.php index 21e1ce0ccb..4ac3c63d06 100644 --- a/resources/lang/de/admin/hardware/message.php +++ b/resources/lang/de/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Asset wurde nicht wiederhergestellt, bitte versuchen Sie es noch einmal', 'success' => 'Asset erfolgreich wiederhergestellt.', + 'bulk_success' => 'Asset erfolgreich wiederhergestellt.', + 'nothing_updated' => 'Es wurden keine Assets ausgewählt, also wurde nichts wiederhergestellt.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Ihre Datei wurde importiert', 'file_delete_success' => 'Die Datei wurde erfolgreich gelöscht', 'file_delete_error' => 'Die Datei konnte nicht gelöscht werden', + 'header_row_has_malformed_characters' => 'Ein oder mehrere Attribute in der Kopfzeile enthalten fehlerhafte UTF-8 Zeichen', + 'content_row_has_malformed_characters' => 'Ein oder mehrere Attribute in der ersten Zeile des Inhalts enthalten fehlerhafte UTF-8-Zeichen', ], diff --git a/resources/lang/de/admin/hardware/table.php b/resources/lang/de/admin/hardware/table.php index 8a92d45d29..8cfe2ebde8 100644 --- a/resources/lang/de/admin/hardware/table.php +++ b/resources/lang/de/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Zurücknehmen/Herausgeben', 'checkout_date' => 'Herausgabedatum', 'checkoutto' => 'Herausgegeben', + 'components_cost' => 'Gesamtkosten der Komponenten', 'current_value' => 'Aktueller Wert', 'diff' => 'Differenz', 'dl_csv' => 'CSV Herunterladen', diff --git a/resources/lang/de/admin/licenses/general.php b/resources/lang/de/admin/licenses/general.php index 30e0bf8022..04e84159dd 100644 --- a/resources/lang/de/admin/licenses/general.php +++ b/resources/lang/de/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Über Lizenzen', - 'about_licenses' => 'Lizenzen werden verwendet, um Software zu verfolgen. Sie haben eine bestimmte Anzahl von Plätzen, die an Einzelpersonen ausgegeben werden können', + 'about_licenses_title' => 'Über Lizenzen', + 'about_licenses' => 'Lizenzen werden verwendet, um Software zu verfolgen. Sie haben eine bestimmte Anzahl von Plätzen, die an Einzelpersonen ausgegeben werden können', 'checkin' => 'Lizenz einbuchen', 'checkout_history' => 'Zuweisungsverlauf', 'checkout' => 'Lizenzaktivierung herausgeben', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Software Lizenzen', 'user' => 'Nutzer', 'view' => 'Lizenz ansehen', + 'delete_disabled' => 'Diese Lizenz kann noch nicht gelöscht werden, da einige Plätze noch ausgecheckt sind.', + 'bulk' => + [ + '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.', + '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', + 'success' => 'Lizenz erfolgreich zurückgenommen! | Alle Lizenzen wurden erfolgreich zurückgenommen!', + 'log_msg' => 'Zurückgenommen über Massen-Zurücknehmen in der Lizenzübersicht', + ], + + 'checkout_all' => [ + 'button' => 'Alle Plätze herausgeben', + 'modal' => 'Diese Aktion wird einen Platz für den ersten verfügbaren Benutzer herausgeben. | Diese Aktion wird alle :available_seats_count Plätze an die ersten verfügbaren Benutzer herausgeben. Ein Benutzer wird als verfügbar für diesen Platz betrachtet, wenn er diese Lizenz noch nicht zugewiesen hat und die "Lizenzen automatisch zuweisen" Eigenschaft auf dem Benutzerkonto aktiviert ist.', + 'enabled_tooltip' => 'ALLE Plätze (oder so viele wie verfügbar sind) an ALLE Benutzer herausgeben', + 'disabled_tooltip' => 'Dies ist deaktiviert, da derzeit keine Sitze verfügbar sind', + 'success' => 'Lizenz erfolgreich herausgegeben! | Alle :count Lizenzen wurden erfolgreich herausgegeben!', + 'error_no_seats' => 'Es gibt keine verbleibenden Plätze für diese Lizenz.', + 'warn_not_enough_seats' => ':count Benutzern wurde diese Lizenz zugewiesen, aber es gibt keine verfügbaren Lizenzplätze mehr.', + 'warn_no_avail_users' => 'Nichts zu tun. Es gibt keine Benutzer, denen diese Lizenz noch nicht zugewiesen ist.', + 'log_msg' => 'Herausgegeben über Massen-Herausgeben in Lizenzübersicht', + + + ], + ], ); diff --git a/resources/lang/de/admin/manufacturers/message.php b/resources/lang/de/admin/manufacturers/message.php index 16aa38f4ba..32004717f4 100644 --- a/resources/lang/de/admin/manufacturers/message.php +++ b/resources/lang/de/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Verwenden Sie {LOCALE} und {SERIAL} in Ihrer URL als Variablen, um diese Werte beim Anzeigen von Assets automatisch zu füllen.', 'does_not_exist' => 'Hersteller existiert nicht.', 'assoc_users' => 'Dieser Hersteller ist bereits mit einem Model verknüpft und kann nicht gelöscht werden. Bitte trennen sie Ihre Modelle von diesem Hersteller und versuchen Sie es Erneut.', diff --git a/resources/lang/de/admin/manufacturers/table.php b/resources/lang/de/admin/manufacturers/table.php index 648c50cffe..aadbba6119 100644 --- a/resources/lang/de/admin/manufacturers/table.php +++ b/resources/lang/de/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support per E-Mail', 'support_phone' => 'Support Telefon', 'support_url' => 'Support-URL', + 'warranty_lookup_url' => 'Link zu Garantiebedingungen', 'update' => 'Hersteller aktualisieren', 'url' => 'URL', diff --git a/resources/lang/de/admin/models/general.php b/resources/lang/de/admin/models/general.php index 0580841319..388afe4509 100644 --- a/resources/lang/de/admin/models/general.php +++ b/resources/lang/de/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Dieses Modell wurde gelöscht.', 'bulk_delete' => 'Massenlöschen von Asset-Modellen', 'bulk_delete_help' => 'Nutzen Sie die nachfolgenden Kontrollkästchen, um die Löschung der Asset-Modelle zu bestätigen. Asset-Modelle, die noch zugewiesene Assets haben, können nur dann gelöscht werden, wenn die enthaltenen Assets einem anderen Asset-Modell zugewiesen werden.', - 'bulk_delete_warn' => 'Sie sind im Begriff :model_count Asset-Modelle zu löschen.', + 'bulk_delete_warn' => 'Sie sind dabei, ein Asset Modell zu löschen.|Sie sind dabei, :model_count Asset Modelle zu löschen.', 'restore' => 'Modell wiederherstellen', 'requestable' => 'Benutzer können dieses Modell anfordern', 'show_mac_address' => 'MAC Adressen Feld anzeigen für Assets mit diesses Modell', diff --git a/resources/lang/de/admin/models/message.php b/resources/lang/de/admin/models/message.php index 2c58b2bdbd..058278b00f 100644 --- a/resources/lang/de/admin/models/message.php +++ b/resources/lang/de/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Modell existiert nicht.', + 'no_association' => 'KEINE MODELL ZUGEORDNET.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Modell wurde nicht aktualisiert. Bitte versuch es noch einmal', - 'success' => 'Modell wurde erfolgreich aktualisiert.' + 'success' => 'Modell wurde erfolgreich aktualisiert.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Es wurden keine Felder ausgewählt, somit wurde auch nichts aktualisiert.', - 'success' => 'Modelle aktualisiert.' + 'success' => 'Modell erfolgreich aktualisiert. |:model_count Modelle erfolgreich aktualisiert.', + 'warn' => 'Du bist dabei, die Eigenschaften des folgenden Modells zu aktualisieren: |Du bist dabei, die Eigenschaften der folgenden :model_count Modelle zu bearbeiten:', + ), 'bulkdelete' => array( 'error' => 'Es wurden keine Modelle ausgewählt. Somit wurde auch nichts gelöscht.', - 'success' => ':success_count Modell(e) gelöscht!', + 'success' => 'Modell gelöscht!|:success_count Modelle gelöscht!', 'success_partial' => ':success_count Modell(e) wurden gelöscht. Jedochen konnten :fail_count nicht gelöscht werden, da ihnen noch Assets zugeordnet sind.' ), diff --git a/resources/lang/de/admin/settings/general.php b/resources/lang/de/admin/settings/general.php index 2545499dee..23ca91da7a 100644 --- a/resources/lang/de/admin/settings/general.php +++ b/resources/lang/de/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Wenn Sie eine Kopie der Rücknahme- / Herausgabe-E-Mails, die an Benutzer gehen auch an zusätzliche E-Mail-Empfänger versenden möchten, geben Sie sie hier ein. Ansonsten lassen Sie dieses Feld leer.', 'is_ad' => 'Dies ist ein Active Directory Server', 'alerts' => 'Alarme', - 'alert_title' => 'Alarm-Einstellungen aktualisieren', + 'alert_title' => 'Benachrichtigungseinstellungen ändern', 'alert_email' => 'Alarme senden an', 'alert_email_help' => 'E-Mail-Adressen oder Verteilerlisten an die Warnungen gesendet werden sollen, durch Komma getrennt', 'alerts_enabled' => 'E-Mail-Benachrichtigungen aktiviert', @@ -21,7 +21,7 @@ return [ 'allow_user_skin_help_text' => 'Wenn Sie dieses Kästchen aktivieren, kann ein Benutzer das Design mit einem anderen überschreiben.', 'asset_ids' => 'Asset IDs', 'audit_interval' => 'Auditintervall', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Wenn Sie verpflichtet sind, Ihre Assets regelmäßig physisch zu überprüfen, geben Sie das Intervall in Monaten an. Wenn Sie diesen Wert aktualisieren, werden alle "nächsten Audittermine" für Assets mit einem anstehenden Prüfungsdatum aktualisiert.', 'audit_warning_days' => 'Audit-Warnschwelle', 'audit_warning_days_help' => 'Wie viele Tage im Voraus sollten wir Sie warnen, wenn Vermögenswerte zur Prüfung fällig werden?', 'auto_increment_assets' => 'Erzeugen von fortlaufenden Asset Tags', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Aus Backup wiederherstellen', 'backups_upload' => 'Backup hochladen', 'backups_path' => 'Sicherungen auf dem Server werden in :path gespeichert', - 'backups_restore_warning' => 'Wählen Sie die Wiederherstellung um ein Backup wieder herzustellen. (Funktioniert derzeit nicht mit S3 Datenspeicher oder Docker)

Die gesamte :app_name Datebank und alle Uploads werden mit den Inhalten des Backups überschrieben. ', + 'backups_restore_warning' => 'Klicke den Wiederherstellungs-Knopf um ein Backup wiederherzustellen. (Funktioniert derzeit nicht mit S3 Datenspeicher oder Docker.)

Die gesamte :app_name Datenbank und alle hochgeladenen Dateien werden mit den Inhalten des Backups überschrieben. ', 'backups_logged_out' => 'Alle vorhandenen Benutzer, auch Sie, werden abgemeldet, sobald Ihre Wiederherstellung abgeschlossen ist.', 'backups_large' => 'Sehr große Sicherungen können beim Wiederherstellungsversuch ausfallen (Time-Out) und müssen eventuell über die Kommandozeile ausgeführt werden. ', 'barcode_settings' => 'Barcode Einstellungen', @@ -76,7 +76,8 @@ return [ 'laravel' => 'Laravel Version', 'ldap' => 'LDAP', 'ldap_default_group' => 'Standard-Berechtigungsgruppe', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group_info' => 'Wählen Sie eine Gruppe aus, die neu synchronisierten Benutzern zugewiesen werden soll. Denken Sie daran, dass ein Benutzer die Berechtigungen der zugewiesenen Gruppe übernimmt.', + 'no_default_group' => 'Keine Standardgruppe', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client-seitiger TLS-Schlüssel', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Zertifikat', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP Einstellungen', 'ldap_client_tls_cert_help' => 'Client-seitige TLS-Zertifikat und Schlüssel für LDAP Verbindungen sind in der Regel nur in Google Workspace Konfigurationen mit "Secure LDAP" nützlich. Beide werden benötigt.', 'ldap_client_tls_key' => 'LDAP Client-seitiger TLS-Schlüssel', + 'ldap_location' => 'LDAP Standort', +'ldap_location_help' => 'Das Feld LDAP Standort sollte verwendet werden, wenn keine OU im Basis Bind DN verwendet wird. Leer lassen, wenn eine OU-Suche verwendet wird.', 'ldap_login_test_help' => 'Geben Sie einen gültigen LDAP-Benutzernamen und ein Passwort von der oben angegebenen Basis-DN ein, um zu testen, ob Ihre LDAP-Anmeldung korrekt konfiguriert ist. SIE MÜSSEN IHRE AKTUALISIERTEN LDAP-EINSTELLUNGEN ZUERST SPEICHERN.', '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', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Verwende Bilder in E-Mals', 'show_images_in_email_help' => 'Deaktivieren Sie dieses Kontrollkästchen, wenn sich Ihre Snipe-IT-Installation hinter einem VPN oder einem geschlossenen Netzwerk befindet und Benutzer außerhalb des Netzwerks keine Bilder von dieser Installation in ihre E-Mails laden können.', 'site_name' => 'Seitenname', + 'integrations' => 'Integrationen', 'slack' => 'Slack', - 'slack_title' => 'Slack Einstellungen aktualisieren', - 'slack_help' => 'Slack Einstellungen', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Kanal', - 'slack_endpoint' => 'Slack Endpunkt', - 'slack_integration' => 'Slack Einstellungen', - 'slack_integration_help' => 'Die Slackintegration ist optional. Der Endpunkt und ein channel werden benötigt, wenn man Slack benutzen möchte. Um Slack zu konfigurieren muss zuerst ein eingehender Webhook in Slack eingerichtet werden. Klicken sie auf Slack Integration testen um zu prüfen, ob die Einstellungen vor dem Speichern korrekt sind. ', - 'slack_integration_help_button' => 'Sobald Sie Ihre Slack-Informationen gespeichert haben, erscheint eine Test-Schaltfläche.', - 'slack_test_help' => 'Testen Sie, ob die Slack-Integration korrekt konfiguriert ist. ZUERST MÜSSEN DIE AKTUALISIERTEN SLACK EINSTELLUNGEN GESPEICHERT WERDEN.', + 'general_webhook' => 'Allgemeiner Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Teste zum Speichern', + 'webhook_title' => 'Webhook Einstellungen aktualisieren', + 'webhook_help' => 'Integrationseinstellungen', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Kanal', + 'webhook_endpoint' => ':app Endpunkt', + 'webhook_integration' => ':app Einstellungen', + 'webhook_test' =>':app Integration testen', + 'webhook_integration_help' => ':app Integration ist optional, allerdings sind Endpunkt und Kanal erforderlich, wenn Sie sie verwenden möchten. Um die :app Integration zu konfigurieren, musst du zuerst in deinem :app Account einen eingehenden Webhook erstellen. Klicken Sie auf den :app Integration testen -Knopf, um zu bestätigen, dass die Einstellungen vor dem Speichern korrekt sind. ', + 'webhook_integration_help_button' => 'Sobald Sie Ihre :app Informationen gespeichert haben, erscheint ein Test-Knopf.', + 'webhook_test_help' => 'Testen Sie, ob Ihre :app Integration korrekt konfiguriert ist. SIE MÜSSEN SIE IHRE AKTUELLEN :app EINSTELLUNGEN ZUERST SPEICHERN.', 'snipe_version' => 'Snipe-IT Version', 'support_footer' => 'Fußzeile Support-Link ', 'support_footer_help' => 'Geben Sie an, wer die Links zum Snipe-IT Support-Info und Benutzerhandbuch sieht', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'Lokalisierung, Währung, lokal, Lokal, Zeitzone, International, Internationalisierung, Sprache, Sprachen, Übersetzung', 'localization_help' => 'Sprache, Datumsanzeige', 'notifications' => 'Benachrichtigungen', - 'notifications_help' => 'E-Mail-Benachrichtigungen, Audit-Einstellungen', + 'notifications_help' => 'E-Mail-Benachrichtigungen & Audit-Einstellungen', 'asset_tags_help' => 'Inkrementieren und Präfixe', 'labels' => 'Etiketten', 'labels_title' => 'Etiketten-Einstellungen aktualisieren', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Weiter: Benutzer erstellen', 'ldap_settings_link' => 'LDAP Einstellungsseite', 'slack_test' => ' Integration testen', + 'google_callback_help' => 'Dies sollte als Callback-URL in den Google OAuth App-Einstellungen in deinem Unternehmen eingegeben werden's Google Developer Konsole .', + 'google_login' => 'Google Workspace Anmeldeeinstellungen', + 'enable_google_login' => 'Anmelden mit Google Workspace für Benutzer aktivieren', + 'enable_google_login_help' => 'Benutzer werden nicht automatisch bereitgestellt. Sie müssen ein bestehendes Konto hier UND in Google Workspace haben, und ihr Benutzername muss mit der E-Mail-Adresse von Google Workspace übereinstimmen. ', + ]; diff --git a/resources/lang/de/admin/settings/message.php b/resources/lang/de/admin/settings/message.php index cb769ea5e4..1ca43d7d96 100644 --- a/resources/lang/de/admin/settings/message.php +++ b/resources/lang/de/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'LDAP-Authentifizierung wird getestet...', 'authentication_success' => 'Benutzer wurde erfolgreich gegen LDAP authentifiziert!' ], - 'slack' => [ - 'sending' => 'Slack Testnachricht wird gesendet...', - 'success_pt1' => 'Erfolgreich! Überprüfen Sie die ', - 'success_pt2' => ' Kanal für Ihre Testnachricht und klicken Sie auf Speichern unten, um Ihre Einstellungen zu speichern.', - '500' => '500 Server Fehler.', - 'error' => 'Etwas ist schiefgelaufen.', + 'webhook' => [ + 'sending' => ':app Testnachricht wird gesendet...', + 'success_pt1' => 'Erfolgreich! Überprüfen Sie den ', + 'success_pt2' => ' Kanal für Ihre Testnachricht und klicken Sie auf Speichern, um Ihre Einstellungen zu speichern.', + '500' => '500 Server Error.', + 'error' => 'Etwas ist schief gelaufen. :app antwortete mit: :error_message', + 'error_misc' => 'Etwas ist schiefgelaufen. :( ', ] ]; diff --git a/resources/lang/de/admin/users/general.php b/resources/lang/de/admin/users/general.php index 41e78b0ac3..385e206780 100644 --- a/resources/lang/de/admin/users/general.php +++ b/resources/lang/de/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Alles zugewiesene drucken', 'email_assigned' => 'Alles zugewiesene per Mail zusenden', 'user_notified' => 'Der Benutzer hat eine Liste seiner aktuell zugewiesenen Artikel per E-Mail erhalten.', + 'auto_assign_label' => 'Diesen Benutzer bei der automatischen Zuweisung berechtigter Lizenzen einbeziehen', + 'auto_assign_help' => 'Diesen Benutzer bei der automatischen Zuweisung von Lizenzen überspringen', 'software_user' => 'Software herausgegeben an :name', 'send_email_help' => 'Sie müssen eine E-Mail-Adresse angeben, um dem Benutzer Zugangsdaten zu zusenden. Das Versenden von Zugangsdaten ist nur bei der Erstellung eines Benutzers möglich. Passwörter werden in einem Einweg-Hash gespeichert und können danach nicht mehr ausgelesen werden.', 'view_user' => 'Benutzer :name ansehen', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Nur Superadmins dürfen einem Benutzer Superadmin Zugriff gewähren.', 'admin_permission_warning' => 'Nur Benutzer mit Administratorrechten oder höher dürfen einem Benutzer Administratorzugriff gewähren.', 'remove_group_memberships' => 'Gruppenmitgliedschaften entfernen', - 'warning_deletion' => 'WARNUNG:', 'warning_deletion_information' => 'Sie sind dabei, ALLE Gegenstände der/des :count unten angezeigten Benutzer/-s einzuchecken. Super-Admin-Namen werden rot hervorgehoben.', 'update_user_assets_status' => 'Alle Assets für diese Benutzer auf diesen Status aktualisieren', 'checkin_user_properties' => 'Alle diesen Benutzern zugeordneten Objekte zurücknehmen', @@ -41,4 +42,13 @@ return [ 'remote' => 'Extern', 'remote_help' => 'Dies kann nützlich sein, wenn Sie nach externen Benutzern filtern müssen, die niemals oder nur selten an Ihre physischen Standorte kommen.', 'not_remote_label' => 'Dies ist kein externer Benutzer', + 'vip_label' => 'VIP Benutzer', + 'vip_help' => 'Dies kann hilfreich sein, um wichtige Personen zu markieren, falls man das möchte.', + 'create_user' => 'Benutzer erstellen', + 'create_user_page_explanation' => 'Dies sind die Anmeldeinformationen, die Sie verwenden, um zum ersten Mal auf die Webseite zuzugreifen.', + 'email_credentials' => 'E-Mail-Anmeldedaten', + 'email_credentials_text' => 'Meine Zugangsdaten an die oben genannte E-Mail-Adresse senden', + 'next_save_user' => 'Weiter: Benutzer speichern', + 'all_assigned_list_generation' => 'Generiert am:', + 'email_user_creds_on_create' => 'Diesem Benutzer seine Zugangsdaten per E-Mail senden?', ]; diff --git a/resources/lang/de/admin/users/message.php b/resources/lang/de/admin/users/message.php index b76e1275df..00f60149e4 100644 --- a/resources/lang/de/admin/users/message.php +++ b/resources/lang/de/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Sie haben diesen Gegenstand abgelehnt.', 'bulk_manager_warn' => 'Benutzer erfolgreich geändert. Vorgesetzter sollte auch bearbeitet werden und konnte nicht angepasst werden, weil er sich nicht selbst als Vorgesetzter eingetragen haben kann. Bitte Benutzer ohne den Vorgesetzten nochmal bearbeiten.', 'user_exists' => 'Benutzer existiert bereits!', - 'user_not_found' => 'Benutzer [:id] existiert nicht.', + 'user_not_found' => 'Benutzer existiert nicht.', 'user_login_required' => 'Das Loginfeld ist erforderlich', 'user_password_required' => 'Das Passswortfeld ist erforderlich.', 'insufficient_permissions' => 'Unzureichende Berechtigungen.', @@ -62,6 +62,6 @@ return array( 'inventorynotification' => array( 'error' => 'Für diesen Benutzer ist keine E-Mail-Adresse hinterlegt.', - 'success' => 'The user has been notified about their current inventory.' + 'success' => 'Der Benutzer wurde über sein aktuelles Inventar informiert.' ) ); \ No newline at end of file diff --git a/resources/lang/de/auth/general.php b/resources/lang/de/auth/general.php index 6f8f3411c1..3721bf9c27 100644 --- a/resources/lang/de/auth/general.php +++ b/resources/lang/de/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Angemeldet bleiben', 'username_help_top' => 'Benutzernamen eingeben, um einen Link zum Zurücksetzen des Passwortes per E-Mail zu erhalten.', 'username_help_bottom' => 'Abhängig von der Konfiguration, kann der Benutzername identisch mit ihrer E-Mailadresse sein. Falls Sie ihren Benutzernamen vergessen haben, kontaktieren Sie ihren Administrator.

Benutzernamen ohne zugeordnete E-Mailadresse erhalten keine E-Mail zum Zurücksetzen des Passwortes. ', - ]; + 'google_login' => 'Oder mit Google Workspace anmelden', + 'google_login_failed' => 'Google-Anmeldung fehlgeschlagen, bitte versuche es erneut.', + +]; diff --git a/resources/lang/de/general.php b/resources/lang/de/general.php index aa45dd302f..70fa5573b9 100644 --- a/resources/lang/de/general.php +++ b/resources/lang/de/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Zubehör', 'activated' => 'Aktiviert', + 'accepted_date' => 'Datum akzeptiert', 'accessory' => 'Zubehör', 'accessory_report' => 'Zubehör Bericht', 'action' => 'Aktion', @@ -11,7 +12,7 @@ return [ 'admin' => 'Administrator', 'administrator' => 'Administrator', 'add_seats' => 'Lizenzen hinzugefügt', - 'age' => "Age", + 'age' => "Alter", 'all_assets' => 'Alle Assets', 'all' => 'Alle', 'archived' => 'Archiviert', @@ -27,7 +28,13 @@ return [ 'audit' => 'Prüfung', 'audit_report' => 'Audit-Log', 'assets' => 'Assets', + 'assets_audited' => 'Assets auditiert', + 'assets_checked_in_count' => 'Asset zurückgenommen', + 'assets_checked_out_count' => 'Assets herausgegeben', + 'asset_deleted_warning' => 'Dieses Asset wurde gelöscht. Sie müssen es wiederherstellen, bevor Sie es jemandem zuweisen können.', + 'assigned_date' => 'Zuweisungsdatum', 'assigned_to' => 'Herausgegeben an :name', + 'assignee' => 'Herausgegeben an', 'avatar_delete' => 'Avatar löschen', 'avatar_upload' => 'Avatar hochladen', 'back' => 'Zurück', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Massenbearbeitung', 'bulk_delete' => 'Massenlöschung', 'bulk_actions' => 'Massenaktionen', - 'bulk_checkin_delete' => 'Masseneinchecken der Gegenstände von Benutzern', + 'bulk_checkin_delete' => 'Massen-Zurücknehmen / -Benutzer löschen', + 'byod' => 'BYOD', + 'byod_help' => 'Dieses Gerät gehört dem Benutzer', 'bystatus' => 'nach Status', 'cancel' => 'Abbrechen', 'categories' => 'Kategorien', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Diese Anwendung läuft im Produktionsmodus mit debugging aktiviert. Dies kann sensible Daten verfügbar machen, wenn Ihre Anwendung öffentlich zugänglich ist. Deaktivieren Sie den Debug-Modus, indem Sie den APP_DEBUG-Wert in der .env Datei auf false setzen.', 'delete' => 'Löschen', 'delete_confirm' => 'Sind Sie sicher, dass Sie :item löschen möchten?', + 'delete_confirm_no_undo' => 'Möchtest du :item wirklich löschen? Dies kann nicht rückgängig gemacht werden.', 'deleted' => 'Gelöscht', 'delete_seats' => 'Gelöschte Lizenzen', 'deletion_failed' => 'Löschen fehlgeschlagen', @@ -139,6 +149,7 @@ return [ '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' => 'Akzeptierte Dateitypen sind jpg, png, gif und svg. Maximale Uploadgröße ist :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', 'importing' => 'Importiere', 'importing_help' => 'Sie können Assets, Zubehör, Lizenzen, Komponenten, Verbrauchsmaterialien und Benutzer mittels CSV-Datei importieren.

Die CSV-Datei sollte kommagetrennt sein und eine Kopfzeile enthalten, die mit den Beispiel-CSVs aus der Dokumentation übereinstimmen.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Asset Wartungen', 'item' => 'Gegenstand', 'item_name' => 'Artikelname', + 'import_file' => 'CSV-Datei importieren', + 'import_type' => 'CSV Typ', 'insufficient_permissions' => 'Unzureichende Berechtigungen!', 'kits' => 'Vordefinierte Kits', 'language' => 'Sprache', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Angeforderte Assets', 'request_canceled' => 'Anfrage abgebrochen', 'save' => 'Speichern', + 'select_var' => ':thing auswählen... ', // this will eventually replace all of our other selects 'select' => 'auswählen', 'select_all' => 'Alle markieren', 'search' => 'Suche', @@ -240,8 +254,8 @@ return [ 'signature' => 'Unterschrift', 'signed_off_by' => 'Unterschrieben von', 'skin' => 'Skin', - 'slack_msg_note' => 'Eine Slack Nachricht wird gesendet', - 'slack_test_msg' => 'Oh hai! Sieht so aus, als ob deine Slack Integration mit Snipe-IT funktioniert!', + 'webhook_msg_note' => 'Eine Benachrichtigung wird über den Webhook gesendet', + 'webhook_test_msg' => 'Oh hey! Sieht so aus, als ob Ihre :app Integration mit Snipe-IT funktioniert!', 'some_features_disabled' => 'Einige Funktionen sind für den DEMO-Modus deaktiviert.', 'site_name' => 'Seitenname', 'state' => 'Bundesland', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Sind Sie sich sicher, dass Sie löschen möchten', 'submit' => 'Abschicken', 'target' => 'Ziel', - 'toggle_navigation' => 'Navigation umschalten', 'time_and_date_display' => 'Zeit- und Datumsanzeige', 'total_assets' => 'Gesamte Assets', 'total_licenses' => 'Lizenzen insgesamt', @@ -281,9 +294,9 @@ return [ 'yes' => 'Ja', 'zip' => 'Postleitzahl', 'noimage' => 'Kein Bild hochgeladen oder kein Bild gefunden.', - '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' => 'Die angeforderte Datei existiert nicht.', + 'file_upload_success' => 'Dateiupload erfolgreich!', + 'no_files_uploaded' => 'Dateiupload erfolgreich!', 'token_expired' => 'Ihre Sitzung ist abgelaufen. Bitte versuchen Sie es erneut.', 'login_enabled' => 'Login aktiviert', 'audit_due' => 'Audit fällig', @@ -375,18 +388,65 @@ return [ 'bulk_soft_delete' =>'Die Benutzer auch "soft-löschen". Die Historie der Gegenstände bleibt erhalten, solange die markierten Datensätze nicht in den Admin-Einstellungen endgültig gelöscht werden.', 'bulk_checkin_delete_success' => 'Die ausgewählten Benutzer wurden gelöscht und ihre Gegenstände wurden eingecheckt.', 'bulk_checkin_success' => 'Die Gegenstände für die ausgewählten Benutzer wurden eingecheckt.', - 'set_to_null' => 'Werte für dieses Asset|Werte für alle :asset_count Assets löschen ', + 'set_to_null' => 'Werte für dieses Asset|Werte für alle :asset_count Assets löschen ', + 'set_users_field_to_null' => ':field Werte für diesen Benutzer löschen|:field Werte für alle :user_count Benutzer löschen ', 'na_no_purchase_date' => 'N/A - Kein Kaufdatum angegeben', 'assets_by_status' => 'Assets sortiert nach Status', 'assets_by_status_type' => 'Assets sortiert nach Statustyp', 'pie_chart_type' => 'Dashboard Kreisdiagramm Typ', 'hello_name' => 'Hallo, :name!', - 'unaccepted_profile_warning' => 'Du hast :count Gegenstände, die akzeptiert werden müssen. Klicke hier, um sie anzunehmen oder abzulehnen', + 'unaccepted_profile_warning' => 'Sie haben :count Gegenstände, die akzeptiert werden müssen. Klicken Sie hier, um diese anzunehmen oder abzulehnen', 'start_date' => 'Startdatum', 'end_date' => 'Enddatum', 'alt_uploaded_image_thumbnail' => 'Hochgeladene Miniaturansicht', - 'placeholder_kit' => 'Kit auswählen' + 'placeholder_kit' => 'Kit auswählen', + 'file_not_found' => 'Datei wurde nicht gefunden', + 'preview_not_available' => '(keine Vorschau vorhanden)', + 'setup' => 'Setup', + 'pre_flight' => 'Pre-Flight', + 'skip_to_main_content' => 'Zum Hauptinhalt springen', + 'toggle_navigation' => 'Navigation umschalten', + 'alerts' => 'Benachrichtigungen', + 'tasks_view_all' => 'Alle Aufgaben anzeigen', + 'true' => 'Wahr', + 'false' => 'Falsch', + 'integration_option' => 'Integrationsoptionen', + 'log_does_not_exist' => 'Es existiert kein passender Logeintrag.', + 'merge_users' => 'Benutzer zusammenführen', + 'merge_information' => 'Dies wird die :count Benutzer zu einem einzigen Benutzer zusammenführen. Wählen Sie den Benutzer, in den Sie die anderen zusammenführen möchten und die zugehörigen Assets, Lizenzen, etc. werden in den ausgewählten Benutzer verschoben und die anderen Benutzer werden als gelöscht markiert.', + 'warning_merge_information' => 'Diese Aktion kann NICHT rückgängig gemacht werden und sollte NUR verwendet werden, wenn Sie Benutzer aufgrund eines falschen Imports oder einer fehlerhaften Synchronisation zusammenführen müssen. Stellen Sie sicher, dass Sie zuerst ein Backup ausführen.', + 'no_users_selected' => 'Keine Benutzer ausgewählt', + 'not_enough_users_selected' => 'Mindestens :count Benutzer müssen ausgewählt sein', + 'merge_success' => ':count Benutzer wurden erfolgreich zu :into_username zusammengeführt!', + 'merged' => 'zusammengeführt', + 'merged_log_this_user_into' => 'Diesen Benutzer (ID :to_id - :to_username) in Benutzer-ID :from_id (:from_username) zusammengeführt ', + 'merged_log_this_user_from' => 'Benutzer-ID :from_id (:from_username) in diesen Benutzer zusammengeführt (ID :to_id - :to_username)', + 'clear_and_save' => 'Löschen & Speichern', + 'update_existing_values' => 'Vorhandene Werte aktualisieren?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Das Generieren von fortlaufenden Asset-Tags ist deaktiviert, daher müssen alle Datensätze die Spalte "Asset Tag" enthalten.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Hinweis: Das Generieren von fortlaufenden Asset-Tags ist aktiviert, daher wird für alle Datensätze, die keinen Asset-Tag angegeben haben, einer erstellt. Datensätze, die einen "Asset Tag" angegeben haben, werden mit den angegebenen Informationen aktualisiert.', + 'send_welcome_email_to_users' => ' Willkommens-E-Mail für neue Benutzer senden?', + 'back_before_importing' => 'Vor dem Importieren sichern?', + 'csv_header_field' => 'CSV-Header-Feld', + 'import_field' => 'Feld importieren', + 'sample_value' => 'Beispielwert', + 'no_headers' => 'Keine Spalten gefunden', + 'error_in_import_file' => 'Beim Lesen der CSV-Datei ist ein Fehler aufgetreten: :error', + 'percent_complete' => ':percent % abgeschlossen', + 'errors_importing' => 'Es sind Fehler während des Importierens aufgetreten: ', + 'warning' => 'WARNUNG: :warning', + 'success_redirecting' => '"Erfolgreich... Weiterleiten.', + 'setup_successful_migrations' => 'Die Datenbank-Tabellen wurden erstellt', + 'setup_migration_output' => 'Ausgabe der Migration:', + 'setup_migration_create_user' => 'Weiter: Benutzer erstellen', + 'importer_generic_error' => 'Ihr Dateiimport ist abgeschlossen, aber wir haben Fehler erhalten. Es wird in der Regel durch eine API-Drosselung von Drittanbietern von einem Benachrichtigung-Webhooks (wie Slack) verursacht und hat den Import selbst nicht beeinträchtigt, Sie sollten dies allerdings nachprüfen.', + 'confirm' => 'Bestätigen', + 'autoassign_licenses' => 'Lizenzen automatisch zuweisen', + 'autoassign_licenses_help' => 'Erlaube diesem Benutzer die Zuweisung von Lizenzen über die Benutzeroberfläche für die Massenzuweisung von Lizenzen oder über die CLI-Tools.', + 'autoassign_licenses_help_long' => 'Dies erlaubt es einem Benutzer, Lizenzen über die Massen-Zuweisung GUI oder CLI-Tools zugewiesen zu bekommen. (Zum Beispiel möchten Sie den Auftragnehmern möglicherweise nicht automatisch eine Lizenz zuweisen, die nur Mitarbeitern zur Verfügung stehen würde. Sie können diesen Benutzern weiterhin einzelne Lizenzen zuweisen, aber sie werden nicht in der Lizenzen Massenherausgabe der Benutzer berücksichtigt.)', + 'no_autoassign_licenses_help' => 'Den Benutzer nicht bei der Lizenzen Massen-Zuweisung GUI oder CLI-Tools berücksichtigen.', + 'modal_confirm_generic' => 'Sind Sie sich sicher?', + 'cannot_be_deleted' => 'Dieser Gegenstand kann nicht gelöscht werden', + 'undeployable_tooltip' => 'Dieser Gegenstand kann nicht herausgegeben werden. Überprüfen Sie die verbleibende Menge.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/de/help.php b/resources/lang/de/help.php index 7917ea94ed..a1477fe500 100644 --- a/resources/lang/de/help.php +++ b/resources/lang/de/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Mehr Informationen', - 'audit_help' => 'Mit dem aktivieren dieser Option wird der Asset-Datensatz an diesen neuen Ort angepasst. Wenn diese Option nicht aktiviert wird, wird nur der Ort im Audit-Log angezeigt.

Falls das Asset ausgecheckt ist, ändert sich nicht die Position der Person, des Assets oder der Position, an der es ausgecheckt wird.', + 'audit_help' => 'Mit dem aktivieren dieser Option wird der Asset-Datensatz an diesen neuen Ort angepasst. Wenn diese Option nicht aktiviert wird, wird der Ort nur im Audit-Log angezeigt.

Falls das Asset ausgecheckt ist, ändert sich der Ort der Person, des Assets oder des Orts, an den es ausgecheckt ist, nicht.', 'assets' => 'Assets sind Elemente, die mit Seriennummer oder einem Asset-Tag versehen sind. Sie sind meist höhere Werte, bei denen die Identifizierung eines bestimmten Gegenstands von Bedeutung ist.', diff --git a/resources/lang/de/localizations.php b/resources/lang/de/localizations.php index 0287f56f8f..fa8ede714a 100644 --- a/resources/lang/de/localizations.php +++ b/resources/lang/de/localizations.php @@ -257,6 +257,7 @@ im Indischen Ozean', 'UK'=>'Schottland', 'SB'=>'Salomon-Inseln', 'SC'=>'Seychellen', + 'SS'=>'Südsudan', 'SD'=>'Sudan', 'SE'=>'Schweden', 'SG'=>'Singapur', diff --git a/resources/lang/de/mail.php b/resources/lang/de/mail.php index 482951b0ff..668d871039 100644 --- a/resources/lang/de/mail.php +++ b/resources/lang/de/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Melden Sie sich zu Ihrer neuen Snipe-IT-Installation mithilfe der unten stehenden Anmeldeinformationen an:', 'login' => 'Benutzername:', 'Low_Inventory_Report' => 'Bericht über niedrige Lagerbestände', + 'inventory_report' => 'Bestandsbericht', 'min_QTY' => 'Mindestmenge', 'name' => 'Name', 'new_item_checked' => 'Ein neuer Gegenstand wurde unter Ihrem Namen ausgecheckt. Details folgen.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Ihre Snipe-IT Anmeldedaten', 'Accessory_Checkin_Notification' => 'Zubehör zurückgenommen', 'Asset_Checkin_Notification' => 'Asset zurückgenommen', + 'Asset_Checkout_Notification' => 'Asset herausgegeben', 'License_Checkin_Notification' => 'Lizenz zurückgenommen', 'Expected_Checkin_Report' => 'Bericht über erwartete Asset Rückgaben', 'Expected_Checkin_Notification' => 'Erinnerung: :name Rückgabedatum nähert sich', 'Expected_Checkin_Date' => 'Ihr ausgebuchtes Asset ist fällig zur Rückgabe am :date', 'your_assets' => 'Ihre Assets anzeigen', + 'rights_reserved' => 'Alle Rechte vorbehalten.', ]; diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index a098cb1a5b..fdd14a7ca6 100644 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -43,14 +43,14 @@ return [ 'file' => ':attribute muss eine Datei sein.', 'filled' => 'Das :attribute Feld muss einen Wert haben.', 'image' => ':attribute muss ein Bild sein.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + '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.', @@ -67,6 +67,8 @@ return [ 'array' => ':attribute muss mindestens :min Elemente enthalten.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Ihr derzeitiges Passwort ist nicht korrekt', 'dumbpwd' => 'Das Passwort ist zu gebräuchlich.', 'statuslabel_type' => 'Sie müssen einen gültigen Statuslabel-Typ auswählen', + + // 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 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', + 'termination_date.date_format' => ':attribute muss ein gültiges Datum im Format JJJJ-MM-TT sein', + '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', + ], /* diff --git a/resources/lang/el/admin/accessories/general.php b/resources/lang/el/admin/accessories/general.php index bd09f65ab5..27d61cf7a2 100644 --- a/resources/lang/el/admin/accessories/general.php +++ b/resources/lang/el/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Ενημέρωση αξεσουάρ', 'use_default_eula' => 'Χρησιμοποιήστε την προεπιλεγμένη primary EULA.', 'use_default_eula_disabled' => 'Χρησιμοποιήστε την κύρια προεπιλεγμένη EULA instead. καμία κύρια προεπιλεγμένη άδεια χρήσης τελικού χρήστη δεν έχει οριστεί. Παρακαλείσθε να προσθέσετε μία στις ρυθμίσεις.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/el/admin/accessories/message.php b/resources/lang/el/admin/accessories/message.php index f1b6cf4485..57987c0a5e 100644 --- a/resources/lang/el/admin/accessories/message.php +++ b/resources/lang/el/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'Το αξεσουάρ δεν έχει ελεγχθεί, δοκιμάστε ξανά', 'success' => 'Το αξεσουάρ ολοκληρώθηκε με επιτυχία.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Αυτός ο χρήστης δεν είναι έγκυρος. Παρακαλώ δοκιμάστε ξανά.' ), diff --git a/resources/lang/el/admin/asset_maintenances/form.php b/resources/lang/el/admin/asset_maintenances/form.php index c26efc1ddd..2c118e48c1 100644 --- a/resources/lang/el/admin/asset_maintenances/form.php +++ b/resources/lang/el/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Τύπος Συντήρησης', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Τίτλος', - 'start_date' => 'Εκτελεσμένες', - 'completion_date' => 'Ολοκληρώθηκε', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Κόστος', 'is_warranty' => 'Βελτίωση της εγγύησης', - 'asset_maintenance_time' => 'Ημέρες', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Σημειώσεις', - 'update' => 'Ενημέρωση', - 'create' => 'Δημιουργία' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/el/admin/categories/message.php b/resources/lang/el/admin/categories/message.php index bede79ccd9..f0089b1cbf 100644 --- a/resources/lang/el/admin/categories/message.php +++ b/resources/lang/el/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Η κατηγορία δεν ενημερώθηκε, παρακαλώ δοκιμάστε ξανά', - 'success' => 'Η κατηγορία ενημερώθηκε με επιτυχία.' + 'success' => 'Η κατηγορία ενημερώθηκε με επιτυχία.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/el/admin/components/general.php b/resources/lang/el/admin/components/general.php index acb3e05bbd..173bcc0a39 100644 --- a/resources/lang/el/admin/components/general.php +++ b/resources/lang/el/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Απομένουν', 'total' => 'Σύνολο', 'update' => 'Αναβάθμιση εξαρτήματος', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/el/admin/components/message.php b/resources/lang/el/admin/components/message.php index 79bd1a0c92..6bb850064f 100644 --- a/resources/lang/el/admin/components/message.php +++ b/resources/lang/el/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Το στοιχείο δεν έχει ελεγχθεί, δοκιμάστε ξανά', 'success' => 'Η συνιστώσα ολοκληρώθηκε με επιτυχία.', - 'user_does_not_exist' => 'Αυτός ο χρήστης δεν είναι έγκυρος. Παρακαλώ δοκιμάστε ξανά.' + 'user_does_not_exist' => 'Αυτός ο χρήστης δεν είναι έγκυρος. Παρακαλώ δοκιμάστε ξανά.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/el/admin/consumables/message.php b/resources/lang/el/admin/consumables/message.php index b1a5562653..63a37d64e1 100644 --- a/resources/lang/el/admin/consumables/message.php +++ b/resources/lang/el/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Το αναλώσιμο δεν έχει ελεγχθεί, δοκιμάστε ξανά', 'success' => 'Το αναλώσιμο ελεγχόταν με επιτυχία.', - 'user_does_not_exist' => 'Αυτός ο χρήστης δεν είναι έγκυρος. Παρακαλώ δοκιμάστε ξανά.' + 'user_does_not_exist' => 'Αυτός ο χρήστης δεν είναι έγκυρος. Παρακαλώ δοκιμάστε ξανά.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/el/admin/custom_fields/general.php b/resources/lang/el/admin/custom_fields/general.php index 9a1113de13..e86b0ab3cd 100644 --- a/resources/lang/el/admin/custom_fields/general.php +++ b/resources/lang/el/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Χρησιμοποιήθηκε από τα μοντέλα', 'order' => 'Σειρά', 'create_fieldset' => 'Νέο σύνολο πεδίων', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Νέο προσαρμοσμένο πεδίο', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/el/admin/groups/message.php b/resources/lang/el/admin/groups/message.php index 0baa3f3e0a..6feba4c72f 100644 --- a/resources/lang/el/admin/groups/message.php +++ b/resources/lang/el/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Η ομάδα υπάρχει ήδη!', - 'group_not_found' => 'Ομάδα [: Αναγνωριστικό] δεν υπάρχει.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Το όνομα του πεδίου είναι απαραίτητο', 'success' => array( diff --git a/resources/lang/el/admin/hardware/form.php b/resources/lang/el/admin/hardware/form.php index fb48ccbe5e..f10419bf43 100644 --- a/resources/lang/el/admin/hardware/form.php +++ b/resources/lang/el/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Επιβεβαιώστε μαζική διαγραφή περιουσιακών στοιχείων', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Εξετάστε τα περιουσιακά στοιχεία για μαζική διαγραφή παρακάτω. Μόλις διαγραφεί, αυτά τα περιουσιακά στοιχεία μπορούν να αποκατασταθούν, αλλά αυτά δεν θα είναι πλέον συσχετιζόμενα με οποιοσδήποτε χρήστη που τους έχει ανατεθεί.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Πρόκειται να διαγράψετε: asset_count περιουσιακών στοιχείων.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Μαζική ενημέρωση παγίων', 'bulk_update_help' => 'Αυτή η φόρμα επιτρέπει την ενημέρωση πολλαπλών παγίων ταυτόχρονα. Μόνο συμπληρώστε τα πεδία που θέλετε να αλλάξετε. Οποιαδήποτε πεδίο αριστερά μείνει κενό θα παραμείνει ως αμετάβλητο. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/el/admin/hardware/general.php b/resources/lang/el/admin/hardware/general.php index a0bb7b6b15..9d54e3acaa 100644 --- a/resources/lang/el/admin/hardware/general.php +++ b/resources/lang/el/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Επεξεργασία παγίων', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Επαναληπτικό', 'requested' => 'Ζητήθηκαν', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Επαναφορά παγίου', 'pending' => 'Εκκρεμεί', 'undeployable' => 'Μη διανέμεται', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Προβολή παγίου', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/el/admin/hardware/message.php b/resources/lang/el/admin/hardware/message.php index 80a742a563..465c7faaa3 100644 --- a/resources/lang/el/admin/hardware/message.php +++ b/resources/lang/el/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Το ενεργητικό δεν έχει αποκατασταθεί, δοκιμάστε ξανά', 'success' => 'Τα πάγια επαναφέρθηκαν επιτυχώς.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Το αρχείο σας έχει εισαχθεί', 'file_delete_success' => 'Το αρχείο σας έχει διαγραφεί με επιτυχία', 'file_delete_error' => 'Το αρχείο δεν μπόρεσε να διαγραφεί', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/el/admin/hardware/table.php b/resources/lang/el/admin/hardware/table.php index a4024b9809..e1d5823ad8 100644 --- a/resources/lang/el/admin/hardware/table.php +++ b/resources/lang/el/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Εισερχόμενα/Εξερχόμενα', 'checkout_date' => 'Ημερομηνία αποχώρησης', 'checkoutto' => 'Checked Out', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Κατεβάστε το CSV', diff --git a/resources/lang/el/admin/licenses/general.php b/resources/lang/el/admin/licenses/general.php index da8988b326..20ae283e35 100644 --- a/resources/lang/el/admin/licenses/general.php +++ b/resources/lang/el/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Σχετικά με τις άδειες', - 'about_licenses' => 'Οι άδειες χρησιμοποιούνται για την παρακολούθηση του λογισμικού. Έχουν καθορισμένο αριθμό καθισμάτων που μπορούν να ελέγχονται σε άτομα', + 'about_licenses_title' => 'Σχετικά με τις άδειες', + 'about_licenses' => 'Οι άδειες χρησιμοποιούνται για την παρακολούθηση του λογισμικού. Έχουν καθορισμένο αριθμό καθισμάτων που μπορούν να ελέγχονται σε άτομα', 'checkin' => 'Checkin άδεια', 'checkout_history' => 'Ιστορικό παραγγελίας', 'checkout' => 'Καθίσματα άδειας πληρωμής', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Άδειες λογισμικού', 'user' => 'Χρήστης', 'view' => 'Προβολή άδειας', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/el/admin/manufacturers/message.php b/resources/lang/el/admin/manufacturers/message.php index f2ce522307..1578f071c5 100644 --- a/resources/lang/el/admin/manufacturers/message.php +++ b/resources/lang/el/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Κατασκευαστής δεν υπάρχει.', 'assoc_users' => 'Αυτό κατασκευαστής σχετίζεται με τουλάχιστον ένα μοντέλο και δεν μπορεί να διαγραφεί. Παρακαλούμε να ενημερώσετε τα μοντέλα σας προκειμένου να μην αναφέρονται σε αυτόν τον κατασκευαστή και δοκιμάστε ξανά. ', diff --git a/resources/lang/el/admin/manufacturers/table.php b/resources/lang/el/admin/manufacturers/table.php index 02e516162f..dc193796ea 100644 --- a/resources/lang/el/admin/manufacturers/table.php +++ b/resources/lang/el/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Υποστήριξη ηλεκτρονικού ταχυδρομείου', 'support_phone' => 'Υποστήριξη τηλεφώνου', 'support_url' => 'URL υποστήριξης', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Ενημέρωση Κατασκευαστή', 'url' => 'URL', diff --git a/resources/lang/el/admin/models/general.php b/resources/lang/el/admin/models/general.php index b104707e26..f79e3f312f 100644 --- a/resources/lang/el/admin/models/general.php +++ b/resources/lang/el/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Μαζική διαγραφή μοντέλου Asset', 'bulk_delete_help' => 'Χρησιμοποιήστε τα παρακάτω πλαίσια ελέγχου για να επιβεβαιώσετε τη διαγραφή των επιλεγμένων μοντέλων στοιχείων. Τα μοντέλα στοιχείων που έχουν στοιχεία που σχετίζονται με αυτά δεν μπορούν να διαγραφούν έως ότου τα στοιχεία συσχετιστούν με διαφορετικό μοντέλο.', - 'bulk_delete_warn' => 'Πρόκειται να διαγράψετε: asset_count περιουσιακών στοιχείων.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Επαναφορά μοντέλου', 'requestable' => 'Οι χρήστες μπορούν να αιτηθούν το μοντέλο', 'show_mac_address' => 'Εμφάνιση MAC διευθύνσεων πεδίου σε περιουσιακά στοιχεία σε αυτό το μοντέλο', diff --git a/resources/lang/el/admin/models/message.php b/resources/lang/el/admin/models/message.php index 1afea35d6e..b78c0b84ff 100644 --- a/resources/lang/el/admin/models/message.php +++ b/resources/lang/el/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Το μοντέλο δεν υπάρχει.', + 'no_association' => 'NO MODEL ASSOCIATED.', + 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Αυτό το μοντέλο συσχετίζεται επί του παρόντος με ένα ή περισσότερα στοιχεία και δεν μπορεί να διαγραφεί. Διαγράψτε τα στοιχεία και, στη συνέχεια, δοκιμάστε ξανά τη διαγραφή.', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Μοντέλο δεν ενημερώθηκε, παρακαλώ προσπαθήστε ξανά', - 'success' => 'Το μοντέλο ενημερώθηκε επιτυχώς.' + 'success' => 'Το μοντέλο ενημερώθηκε επιτυχώς.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Δεν άλλαξαν πεδία, επομένως τίποτα δεν ενημερώθηκε.', - 'success' => 'Τα μοντέλα ενημερώθηκαν.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Δεν επιλέχθηκαν πεδία, επομένως τίποτα δεν διαγράφηκε.', - 'success' => ':success_count model(s) Διαγράφηκε!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) μοντέλα διαγράφηκαν, ωστόσο το :fail_count δεν μπόρεσε να διαγραφεί επειδή εξακολουθούν να έχουν στοιχεία που σχετίζονται με αυτά.' ), diff --git a/resources/lang/el/admin/settings/general.php b/resources/lang/el/admin/settings/general.php index cb7200832f..66e3e5626b 100644 --- a/resources/lang/el/admin/settings/general.php +++ b/resources/lang/el/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Εάν θέλετε να στείλετε ένα αντίγραφο checkin/checkout emails που αποστέλλονται στους χρήστες σε έναν επιπλέον λογαριασμό email, εισαγάγετέ το εδώ. Διαφορετικά, αφήστε αυτό το πεδίο κενό.', 'is_ad' => 'Αυτός είναι ένας διακομιστής υπηρεσίας καταλόγου Active Directory', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Αποστολή ειδοποιήσεων προς', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Ειδοποιήσεις ενεργοποιημένες', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Ρυθμίσεις γραμμωτού κώδικα', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Ρυθμίσεις LDAP', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Εισαγάγετε ένα έγκυρο όνομα χρήστη και κωδικό πρόσβασης LDAP από τη βάση DN που καθορίσατε παραπάνω για να ελέγξετε εάν η σύνδεσή LDAP έχει ρυθμιστεί σωστά. ΠΡΩΤΑ ΑΠΟΘΗΚΕΥΣΤΕ ΤΙΣ ΡΥΘΜΙΣΕΙΣ ΣΑΣ ΣΤΟ LDAP.', 'ldap_login_sync_help' => 'Αυτό ελέγχει μόνο ότι το LDAP μπορεί να συγχρονιστεί σωστά. Εάν το Authentication στο LDAP δεν είναι σωστό, οι χρήστες ενδέχεται να μην μπορούν να συνδεθούν. ΠΡΩΤΑ ΑΠΟΘΗΚΕΥΣΤΕ ΤΙΣ ΡΥΘΜΙΣΕΙΣ ΣΑΣ ΣΤΟ LDAP.', 'ldap_manager' => 'LDAP Manager', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Όνομα ιστότοπου', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Χωρίς κανάλι', - 'slack_endpoint' => 'Χαμηλό τελικό σημείο', - 'slack_integration' => 'Ρυθμίσεις χαλαρών', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-It έκδοση', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/el/admin/settings/message.php b/resources/lang/el/admin/settings/message.php index f2ec02dcb7..65649c2443 100644 --- a/resources/lang/el/admin/settings/message.php +++ b/resources/lang/el/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/el/admin/users/general.php b/resources/lang/el/admin/users/general.php index 411559288e..98909a65cd 100644 --- a/resources/lang/el/admin/users/general.php +++ b/resources/lang/el/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Λογισμικό Έγινε έλεγχος σε: όνομα', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Προβολή χρήστη :ονόματος', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/el/admin/users/message.php b/resources/lang/el/admin/users/message.php index 464cd1d08d..53b61578b8 100644 --- a/resources/lang/el/admin/users/message.php +++ b/resources/lang/el/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Έχετε απορρίψει επιτυχώς αυτό το στοιχείο.', 'bulk_manager_warn' => 'Οι χρήστες σας ενημερώθηκαν με επιτυχία, ωστόσο η καταχώριση του διαχειριστή σας δεν αποθηκεύτηκε, επειδή ο διαχειριστής που επιλέξατε ήταν επίσης στη λίστα χρηστών για επεξεργασία και οι χρήστες ενδέχεται να μην είναι ο δικός τους διαχειριστής. Επιλέξτε ξανά τους χρήστες σας, εξαιρουμένου του διαχειριστή.', 'user_exists' => 'Ο χρήστης υπάρχει ήδη!', - 'user_not_found' => 'Ο χρήστης [:id] δεν υπάρχει.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Το πεδίο εισόδου είναι υποχρεωτικό', 'user_password_required' => 'Ο κωδικός είναι απαραίτητος.', 'insufficient_permissions' => 'Δεν έχετε επαρκή δικαιώματα.', diff --git a/resources/lang/el/auth/general.php b/resources/lang/el/auth/general.php index 63acec4fd2..6d155f12bd 100644 --- a/resources/lang/el/auth/general.php +++ b/resources/lang/el/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Να με θυμάσαι', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/el/general.php b/resources/lang/el/general.php index 8b7c7f1d85..adadd876b4 100644 --- a/resources/lang/el/general.php +++ b/resources/lang/el/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Αξεσουάρ', 'activated' => 'Ενεργοποιήθηκε', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Αξεσουάρ', 'accessory_report' => 'Αναφορά αξεσουάρ', 'action' => 'Ενέργεια', @@ -27,7 +28,13 @@ return [ 'audit' => 'Ελεγχος', 'audit_report' => 'Αρχείο ελέγχου', 'assets' => 'Πάγια', + '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', 'avatar_delete' => 'Διαγραφή Avatar', 'avatar_upload' => 'Ανεβάστε την εικόνα προφίλ σας', 'back' => 'Προηγούμενο', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Ακύρωση', 'categories' => 'Kατηγορίες', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Αυτή η εφαρμογή εκτελείται σε λειτουργία παραγωγής με ενεργοποιημένο τον εντοπισμό σφαλμάτων. Αυτό μπορεί να εκθέσει τα ευαίσθητα δεδομένα, εάν η εφαρμογή σας είναι προσβάσιμη στον έξω κόσμο. Απενεργοποιήσετε την κατάσταση λειτουργίας εντοπισμού σφαλμάτων, ορίζοντας την τιμή APP_DEBUG στο αρχείο .env για να false.', 'delete' => 'Διαγραφή', 'delete_confirm' => 'Επιθυμείτε την διαφραφή :item;', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Διαγράφηκε', 'delete_seats' => 'Διαγραμμένα καθίσματα', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Εισαγωγή', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Συντήρηση Παγίου', 'item' => 'Αντικείμενο', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Μη επαρκή δικαιώματα!', 'kits' => 'Predefined Kits', 'language' => 'Γλώσσα', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Το αίτημα ακυρώθηκε', 'save' => 'Αποθήκευση', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Επιλογή', 'select_all' => 'Select All', 'search' => 'Αναζήτηση', @@ -240,8 +254,8 @@ return [ 'signature' => 'Υπογραφή', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'ΛΕΙΤΟΥΡΓΙΑ DEMO: Ορισμένες λειτουργίες είναι απενεργοποιημένες για αυτήν την εγκατάσταση.', 'site_name' => 'Όνομα ιστότοπου', 'state' => 'Κατάσταση', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε', 'submit' => 'Υποβολή', 'target' => 'Στόχος', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Εμφάνιση ώρας και ημερομηνίας', 'total_assets' => 'σύνολο Παγίων', 'total_licenses' => 'σύνολο αδειών', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/el/help.php b/resources/lang/el/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/el/help.php +++ b/resources/lang/el/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/el/localizations.php b/resources/lang/el/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/el/localizations.php +++ b/resources/lang/el/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/el/mail.php b/resources/lang/el/mail.php index 13f16edb42..554b0bf1b5 100644 --- a/resources/lang/el/mail.php +++ b/resources/lang/el/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Συνδεθείτε στη νέα σας εγκατάσταση Snipe-IT χρησιμοποιώντας τα παρακάτω διαπιστευτήρια:', 'login' => 'Σύνδεση:', 'Low_Inventory_Report' => 'Αναφορά χαμηλού αποθέματος', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Ελάχιστη ποσότητα', 'name' => 'Όνομα', 'new_item_checked' => 'Ένα νέο στοιχείο έχει ελεγχθεί με το όνομά σας, οι λεπτομέρειες είναι παρακάτω.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Τα διαπιστευτήρια σας Snipe-IT', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/el/validation.php b/resources/lang/el/validation.php index b3bc8d31aa..8cc695060c 100644 --- a/resources/lang/el/validation.php +++ b/resources/lang/el/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Το χαρακτηριστικό: πρέπει να έχει τουλάχιστον: λεπτά στοιχεία.', ], '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' => 'Πρέπει να υπάρχει το πεδίο ιδιοτήτων: attribute.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Ο τρέχων κωδικός πρόσβασης είναι εσφαλμένος', 'dumbpwd' => 'Αυτός ο κωδικός πρόσβασης είναι πολύ συνηθισμένος.', 'statuslabel_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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/en-GB/admin/accessories/general.php b/resources/lang/en-GB/admin/accessories/general.php index e9a2e69ff6..bed7f38fab 100644 --- a/resources/lang/en-GB/admin/accessories/general.php +++ b/resources/lang/en-GB/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Update Accessory', 'use_default_eula' => 'Use the primary default EULA instead.', 'use_default_eula_disabled' => 'Use the primary default EULA instead. No primary default EULA is set. Please add one in Settings.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/en-GB/admin/accessories/message.php b/resources/lang/en-GB/admin/accessories/message.php index 8fef268853..1652224675 100644 --- a/resources/lang/en-GB/admin/accessories/message.php +++ b/resources/lang/en-GB/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/en-GB/admin/categories/message.php b/resources/lang/en-GB/admin/categories/message.php index 48cf5478e1..4e493f68b6 100644 --- a/resources/lang/en-GB/admin/categories/message.php +++ b/resources/lang/en-GB/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Category was not updated, please try again', - 'success' => 'Category updated successfully.' + 'success' => 'Category updated successfully.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/en-GB/admin/components/general.php b/resources/lang/en-GB/admin/components/general.php index f7689a7ad1..5b788a51ec 100644 --- a/resources/lang/en-GB/admin/components/general.php +++ b/resources/lang/en-GB/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Component', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/en-GB/admin/components/message.php b/resources/lang/en-GB/admin/components/message.php index 1d13970f23..0a7dd8d954 100644 --- a/resources/lang/en-GB/admin/components/message.php +++ b/resources/lang/en-GB/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Component was not checked out, please try again', 'success' => 'Component checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/en-GB/admin/consumables/message.php b/resources/lang/en-GB/admin/consumables/message.php index 48a3cfbd9f..c0d0aa7f68 100644 --- a/resources/lang/en-GB/admin/consumables/message.php +++ b/resources/lang/en-GB/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumable was not checked out, please try again', 'success' => 'Consumable checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/en-GB/admin/custom_fields/general.php b/resources/lang/en-GB/admin/custom_fields/general.php index 69fd114d8a..436c8c5c64 100644 --- a/resources/lang/en-GB/admin/custom_fields/general.php +++ b/resources/lang/en-GB/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Used By Models', 'order' => 'Order', 'create_fieldset' => 'New Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'New Custom Field', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/en-GB/admin/groups/message.php b/resources/lang/en-GB/admin/groups/message.php index f14b6339e8..495acaf36b 100644 --- a/resources/lang/en-GB/admin/groups/message.php +++ b/resources/lang/en-GB/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Group already exists!', - 'group_not_found' => 'Group [:id] does not exist.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'The name field is required', 'success' => array( diff --git a/resources/lang/en-GB/admin/hardware/form.php b/resources/lang/en-GB/admin/hardware/form.php index 22aac61d07..9ccea77139 100644 --- a/resources/lang/en-GB/admin/hardware/form.php +++ b/resources/lang/en-GB/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirm Bulk Delete Assets', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Review the assets for bulk deletion below. Once deleted, these assets can be restored, but they will no longer be associated with any users they are currently assigned to.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users.', 'bulk_delete_warn' => 'You are about to delete :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Bulk Update Assets', 'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing… (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', - 'order_details' => 'Order Related Information' + 'order_details' => 'Order-related Information' ]; diff --git a/resources/lang/en-GB/admin/hardware/general.php b/resources/lang/en-GB/admin/hardware/general.php index 67226061b1..288bb8197e 100644 --- a/resources/lang/en-GB/admin/hardware/general.php +++ b/resources/lang/en-GB/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Edit Asset', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The model of this asset is invalid.', + 'model_invalid_fix' => 'The asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Requestable', 'requested' => 'Requested', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restore Asset', 'pending' => 'Pending', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has an undeployable status label, so cannot be checked out.', 'view' => 'View Asset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/en-GB/admin/hardware/message.php b/resources/lang/en-GB/admin/hardware/message.php index d2214ce00c..bcc20a20f8 100644 --- a/resources/lang/en-GB/admin/hardware/message.php +++ b/resources/lang/en-GB/admin/hardware/message.php @@ -17,12 +17,14 @@ return [ 'error' => 'Asset was not updated, please try again', 'success' => 'Asset updated successfully.', 'nothing_updated' => 'No fields were selected, so nothing was updated.', - 'no_assets_selected' => 'No assets were selected, so nothing was updated.', + 'no_assets_selected' => 'Nothing was updated because no assets were selected.', ], 'restore' => [ 'error' => 'Asset was not restored, please try again', 'success' => 'Asset restored successfully.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'Nothing was restored because no assets were selected.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Your file has been imported', 'file_delete_success' => 'Your file has been been successfully deleted', 'file_delete_error' => 'The file was unable to be deleted', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/en-GB/admin/hardware/table.php b/resources/lang/en-GB/admin/hardware/table.php index 6166ba8045..10629fd22c 100644 --- a/resources/lang/en-GB/admin/hardware/table.php +++ b/resources/lang/en-GB/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In/Out', 'checkout_date' => 'Checkout Date', 'checkoutto' => 'Checked Out', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Download CSV', diff --git a/resources/lang/en-GB/admin/kits/general.php b/resources/lang/en-GB/admin/kits/general.php index f724ecbf07..2a23072760 100644 --- a/resources/lang/en-GB/admin/kits/general.php +++ b/resources/lang/en-GB/admin/kits/general.php @@ -2,7 +2,7 @@ return [ 'about_kits_title' => 'About Predefined Kits', - 'about_kits_text' => 'Predefined Kits let you quickly check out a collection of items (assets, licenses, etc) to a user. This can be helpful when your onboarding process is consistent across many users and all users receive the same items.', + 'about_kits_text' => 'Predefined Kits let you quickly check out a collection of items (assets, licences, etc) to a user. This can be helpful when your onboarding process is consistent across many users and all users receive the same items.', 'checkout' => 'Checkout Kit ', 'create_success' => 'Kit was successfully created.', 'create' => 'Create Predefined Kit', @@ -17,15 +17,15 @@ return [ 'update_appended_accessory' => 'Update appended Accessory', 'append_consumable' => 'Append Consumable', 'update_appended_consumable' => 'Update appended Consumable', - 'append_license' => 'Append license', - 'update_appended_license' => 'Update appended license', + 'append_license' => 'Append licence', + 'update_appended_license' => 'Update appended licence', 'append_model' => 'Append model', 'update_appended_model' => 'Update appended model', - 'license_error' => 'License already attached to kit', - 'license_added_success' => 'License added successfully', - 'license_updated' => 'License was successfully updated', - 'license_none' => 'License does not exist', - 'license_detached' => 'License was successfully detached', + 'license_error' => 'Licence already attached to kit', + 'license_added_success' => 'Licence added successfully', + 'license_updated' => 'Licence was successfully updated', + 'license_none' => 'Licence does not exist', + 'license_detached' => 'Licence was successfully detached', 'consumable_added_success' => 'Consumable added successfully', 'consumable_updated' => 'Consumable was successfully updated', 'consumable_error' => 'Consumable already attached to kit', diff --git a/resources/lang/en-GB/admin/licenses/general.php b/resources/lang/en-GB/admin/licenses/general.php index 25a536ec56..ecd15aa2ef 100644 --- a/resources/lang/en-GB/admin/licenses/general.php +++ b/resources/lang/en-GB/admin/licenses/general.php @@ -1,8 +1,8 @@ 'About Licenses', - 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', + 'about_licenses_title' => 'About Licenses', + 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Checkout History', 'checkout' => 'Checkout License Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Software Licenses', 'user' => 'User', 'view' => 'View License', + 'delete_disabled' => 'This licence cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + '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.', + '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', + 'success' => 'Licence successfully checked in! | All licences were successfully checked in!', + 'log_msg' => 'Checked in via bulk licence checkout in licence GUI', + ], + + 'checkout_all' => [ + 'button' => 'Check Out All Seats', + 'modal' => 'This action will check out one seat to the first available user. | This action will check out all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this licence checked out to them, and the Auto-Assign Licence property is enabled on their user account.', + 'enabled_tooltip' => 'Check out ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'Licence successfully checked out! | :count licences were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this licence.', + 'warn_not_enough_seats' => ':count users were assigned this licence, but we ran out of available licence seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this licence assigned to them.', + 'log_msg' => 'Checked out via bulk licence check out in licence GUI', + + + ], + ], ); diff --git a/resources/lang/en-GB/admin/licenses/message.php b/resources/lang/en-GB/admin/licenses/message.php index dd7e54dea4..2d0965a7af 100644 --- a/resources/lang/en-GB/admin/licenses/message.php +++ b/resources/lang/en-GB/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'License does not exist or you do not have permission to view it.', + 'does_not_exist' => 'Licence does not exist or you do not have permission to view it.', 'user_does_not_exist' => 'User does not exist.', 'asset_does_not_exist' => 'The asset you are trying to associate with this license does not exist.', 'owner_doesnt_match_asset' => 'The asset you are trying to associate with this license is owned by somene other than the person selected in the assigned to dropdown.', diff --git a/resources/lang/en-GB/admin/manufacturers/message.php b/resources/lang/en-GB/admin/manufacturers/message.php index 21a4bc5aaf..d6656683ae 100644 --- a/resources/lang/en-GB/admin/manufacturers/message.php +++ b/resources/lang/en-GB/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Manufacturer does not exist.', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', diff --git a/resources/lang/en-GB/admin/manufacturers/table.php b/resources/lang/en-GB/admin/manufacturers/table.php index 418ddea1eb..e51e8bd9cf 100644 --- a/resources/lang/en-GB/admin/manufacturers/table.php +++ b/resources/lang/en-GB/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support Email', 'support_phone' => 'Support Phone', 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Update Manufacturer', 'url' => 'URL', diff --git a/resources/lang/en-GB/admin/models/general.php b/resources/lang/en-GB/admin/models/general.php index d2d77e0e8c..7e4a77adbc 100644 --- a/resources/lang/en-GB/admin/models/general.php +++ b/resources/lang/en-GB/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Restore Model', 'requestable' => 'Users may request this model', 'show_mac_address' => 'Show MAC address field in assets in this model', diff --git a/resources/lang/en-GB/admin/models/message.php b/resources/lang/en-GB/admin/models/message.php index e3b29d5b4b..1ef2426b91 100644 --- a/resources/lang/en-GB/admin/models/message.php +++ b/resources/lang/en-GB/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model does not exist.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model was not updated, please try again', - 'success' => 'Model updated successfully.' + 'success' => 'Model updated successfully.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'No fields were changed, so nothing was updated.', - 'success' => 'Models updated.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properties of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/en-GB/admin/settings/general.php b/resources/lang/en-GB/admin/settings/general.php index 46649db613..8b4e518b2c 100644 --- a/resources/lang/en-GB/admin/settings/general.php +++ b/resources/lang/en-GB/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'This is an Active Directory server', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Send alerts to', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Alerts Enabled', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Barcode Settings', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP Settings', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Site Name', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack Settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -216,8 +224,8 @@ return [ 'update' => 'Update Settings', 'value' => 'Value', 'brand' => 'Branding', - 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', - 'brand_help' => 'Logo, Site Name & Skin', + 'brand_keywords' => 'footer, logo, print, theme, skin, header, colours, colour, css', + 'brand_help' => 'Logo, Site Name & Skin', 'web_brand' => 'Web Branding Type', 'about_settings_title' => 'About Settings', 'about_settings_text' => 'These settings let you customize certain aspects of your installation.', @@ -299,9 +307,9 @@ return [ 'localization' => 'Localization', 'localization_title' => 'Update Localization Settings', 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', - 'localization_help' => 'Language, Date & Currency Display', + 'localization_help' => 'Language, Date & Currency Display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email Alerts & Audit Settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/en-GB/admin/settings/message.php b/resources/lang/en-GB/admin/settings/message.php index 174a15fbd9..48b42d1202 100644 --- a/resources/lang/en-GB/admin/settings/message.php +++ b/resources/lang/en-GB/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/en-GB/admin/users/general.php b/resources/lang/en-GB/admin/users/general.php index daa568e8bf..e195e2d52a 100644 --- a/resources/lang/en-GB/admin/users/general.php +++ b/resources/lang/en-GB/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licences', + 'auto_assign_help' => 'Skip this user in auto assignment of licences', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'View User :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/en-GB/admin/users/message.php b/resources/lang/en-GB/admin/users/message.php index 247a1b321e..4ca5c37031 100644 --- a/resources/lang/en-GB/admin/users/message.php +++ b/resources/lang/en-GB/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'You have successfully declined this asset.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'user_exists' => 'User already exists!', - 'user_not_found' => 'User [:id] does not exist.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'The login field is required', 'user_password_required' => 'The password is required.', 'insufficient_permissions' => 'Insufficient Permissions.', @@ -62,6 +62,6 @@ return array( 'inventorynotification' => array( 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'success' => 'The user has been notified of their current inventory.' ) ); \ No newline at end of file diff --git a/resources/lang/en-GB/admin/users/table.php b/resources/lang/en-GB/admin/users/table.php index e318d51545..859c879262 100644 --- a/resources/lang/en-GB/admin/users/table.php +++ b/resources/lang/en-GB/admin/users/table.php @@ -10,7 +10,7 @@ return array( 'email' => 'Email', 'employee_num' => 'Employee No.', 'first_name' => 'First Name', - 'groupnotes' => 'Select a group to assign to the user, remember that a user takes on the permissions of the group they are assigned. Use ctrl+click (or cmd+click on MacOS) to deselect groups.', + 'groupnotes' => 'Select a group to assign to the user. Remember that a user takes on the permissions of the group they are assigned. Use ctrl+click (or cmd+click on MacOS) to deselect groups.', 'id' => 'Id', 'inherit' => 'Inherit', 'job' => 'Job Title', diff --git a/resources/lang/en-GB/auth/general.php b/resources/lang/en-GB/auth/general.php index 78b6780927..4486f090b2 100644 --- a/resources/lang/en-GB/auth/general.php +++ b/resources/lang/en-GB/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Remember Me', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index 5e5c3b846a..5fc07d2c20 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accessories', 'activated' => 'Activated', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Accessory', 'accessory_report' => 'Accessory Report', 'action' => 'Action', @@ -27,7 +28,13 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Audit Log', 'assets' => 'Assets', + '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', 'avatar_delete' => 'Delete Avatar', 'avatar_upload' => 'Upload Avatar', 'back' => 'Back', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Check In / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Cancel', 'categories' => 'Categories', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the 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.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Import', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Asset Maintenances', 'item' => 'Item', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Insufficient permissions!', 'kits' => 'Predefined Kits', 'language' => 'Language', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Request Canceled', 'save' => 'Save', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Select', 'select_all' => 'Select All', 'search' => 'Search', @@ -240,8 +254,8 @@ return [ 'signature' => 'Signature', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + 'webhook_msg_note' => 'A notification will be sent via webhook', + 'webhook_test_msg' => 'Oh hello! Looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Are you sure you wish to delete', 'submit' => 'Submit', 'target' => 'Target', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Time and Date Display', 'total_assets' => 'total assets', 'total_licenses' => 'total licenses', @@ -282,8 +295,8 @@ return [ 'zip' => 'Zip', 'noimage' => 'No image uploaded or image not found.', '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_upload_success' => 'File upload successful.', + 'no_files_uploaded' => 'File upload successful.', 'token_expired' => 'Your form session has expired. Please try again.', 'login_enabled' => 'Login Enabled', 'audit_due' => 'Due for Audit', @@ -337,7 +350,7 @@ return [ 'invalid_category' => 'Invalid category', '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!', + '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 licences now!', 'new_asset' => 'New Asset', 'new_license' => 'New License', 'new_accessory' => 'New Accessory', @@ -372,21 +385,68 @@ return [ '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_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 ', - 'na_no_purchase_date' => 'N/A - No purchase date provided', + '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' => '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!', + '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' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licences', + '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 have licences assigned via the bulk-assign license UI or CLI tools. (For example, you might not want contractors to be auto-assigned a licence you would provide to only staff members. You can still individually assign licences to those users, but they will not be included in the Checkout Licence to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the licence UI or CLI tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/en-GB/localizations.php b/resources/lang/en-GB/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/en-GB/localizations.php +++ b/resources/lang/en-GB/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/en-GB/mail.php b/resources/lang/en-GB/mail.php index b0ae7de76b..7dd8d6181c 100644 --- a/resources/lang/en-GB/mail.php +++ b/resources/lang/en-GB/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login to your new Snipe-IT installation using the credentials below:', 'login' => 'Login:', 'Low_Inventory_Report' => 'Low Inventory Report', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Name', 'new_item_checked' => 'A new item has been checked out under your name, details are below.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Your Snipe-IT credentials', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/en-GB/validation.php b/resources/lang/en-GB/validation.php index 04f8d65303..df514da6f9 100644 --- a/resources/lang/en-GB/validation.php +++ b/resources/lang/en-GB/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'The :attribute must have at least :min items.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/en-ID/admin/accessories/general.php b/resources/lang/en-ID/admin/accessories/general.php index 0dfa64429c..f8a41e2d4c 100644 --- a/resources/lang/en-ID/admin/accessories/general.php +++ b/resources/lang/en-ID/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Perbarui Aksesoris', 'use_default_eula' => 'Gunakan standar primer EULA gantinya.', 'use_default_eula_disabled' => ' Gunakan EULA standar utama sebagai gantinya. Tidak ada standar utama EULA diatur. Silakan menambahkan satu di Settings.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/en-ID/admin/accessories/message.php b/resources/lang/en-ID/admin/accessories/message.php index ccd4ad1ea6..0d1b685396 100644 --- a/resources/lang/en-ID/admin/accessories/message.php +++ b/resources/lang/en-ID/admin/accessories/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'The accessory [:id] does not exist.', + 'does_not_exist' => 'Aksesori itu tidak ada.', 'assoc_users' => 'Aksesori saat ini memiliki :count item untuk pengguna. Silahkan cek di aksesoris dan dan coba lagi. ', 'create' => array( @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/en-ID/admin/asset_maintenances/form.php b/resources/lang/en-ID/admin/asset_maintenances/form.php index 095d05bd6e..8231c162b1 100644 --- a/resources/lang/en-ID/admin/asset_maintenances/form.php +++ b/resources/lang/en-ID/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Jenis Pemeliharaan Aset', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Judul', - 'start_date' => 'Tanggal Mulai', - 'completion_date' => 'Tanggal selesai', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Biaya', 'is_warranty' => 'Peningkatan garansi', - 'asset_maintenance_time' => 'Waktu Maintenance aset (dalam hari)', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Catatan', - 'update' => 'Update Maintenance Aset', - 'create' => 'Erstellen' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/en-ID/admin/categories/message.php b/resources/lang/en-ID/admin/categories/message.php index e90c0d8a58..a3b42e7d86 100644 --- a/resources/lang/en-ID/admin/categories/message.php +++ b/resources/lang/en-ID/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Kategori gagal diupdate, silahkan coba lagi', - 'success' => 'Kategori berhasil diupdate.' + 'success' => 'Kategori berhasil diupdate.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/en-ID/admin/components/general.php b/resources/lang/en-ID/admin/components/general.php index fe356c0f41..333100a348 100644 --- a/resources/lang/en-ID/admin/components/general.php +++ b/resources/lang/en-ID/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Sisa', 'total' => 'Total', 'update' => 'Perbaharui Komponen', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/en-ID/admin/components/message.php b/resources/lang/en-ID/admin/components/message.php index 1cf5256a01..073e1b8a21 100644 --- a/resources/lang/en-ID/admin/components/message.php +++ b/resources/lang/en-ID/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponen tidak bisa dikeluarkan, silahkan coba kembali', 'success' => 'Komponen berhasil dikeluarkan.', - 'user_does_not_exist' => 'Pengguna tidak cocok. Silahkan coba lagi.' + 'user_does_not_exist' => 'Pengguna tidak cocok. Silahkan coba lagi.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/en-ID/admin/consumables/message.php b/resources/lang/en-ID/admin/consumables/message.php index d1d176ad56..61574c9cc2 100644 --- a/resources/lang/en-ID/admin/consumables/message.php +++ b/resources/lang/en-ID/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumable tidak diperiksa, silakan coba lagi', 'success' => 'Consumable berhasil diperiksa.', - 'user_does_not_exist' => 'Pengguna tidak valid. Silakan coba lagi.' + 'user_does_not_exist' => 'Pengguna tidak valid. Silakan coba lagi.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/en-ID/admin/custom_fields/general.php b/resources/lang/en-ID/admin/custom_fields/general.php index d3fe02fa88..78d92f6e85 100644 --- a/resources/lang/en-ID/admin/custom_fields/general.php +++ b/resources/lang/en-ID/admin/custom_fields/general.php @@ -28,6 +28,9 @@ return [ 'used_by_models' => 'Digunakan oleh Model', 'order' => 'Pesanan', 'create_fieldset' => 'Atur bidang baru', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Kostum field baru', 'create_field_title' => 'Create a new custom field', @@ -47,4 +50,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/en-ID/admin/groups/message.php b/resources/lang/en-ID/admin/groups/message.php index 8c399400ab..a4176a1791 100644 --- a/resources/lang/en-ID/admin/groups/message.php +++ b/resources/lang/en-ID/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Grup sudah ada!', - 'group_not_found' => 'Group [:id] tidak ada.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Nama field diperlukan', 'success' => array( diff --git a/resources/lang/en-ID/admin/hardware/form.php b/resources/lang/en-ID/admin/hardware/form.php index 344a8dd6f4..3aa0d44448 100644 --- a/resources/lang/en-ID/admin/hardware/form.php +++ b/resources/lang/en-ID/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Konfirmasi hapus semua aset', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Tinjau aset untuk penghapusan massal di bawah ini. Setelah dihapus, aset ini dapat dipulihkan, namun tidak akan dikaitkan lagi dengan pengguna yang saat ini mereka tentukan.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Anda akan menghapus :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Perbarui Aset secara massal', 'bulk_update_help' => 'Formulir ini memungkinkan Anda untuk memperbarui beberapa aset sekaligus. Hanya mengisi kolom yang Anda butuhkan untuk mengubah. Setiap bidang dibiarkan kosong tidak berubah. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/en-ID/admin/hardware/general.php b/resources/lang/en-ID/admin/hardware/general.php index 550d2d7c1f..363fbd506d 100644 --- a/resources/lang/en-ID/admin/hardware/general.php +++ b/resources/lang/en-ID/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Aset ini telah dihapus.', 'edit' => 'Edit Asset', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Permintaan', 'requested' => 'Diminta', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Kembalikan Aset', 'pending' => 'Tertunda', 'undeployable' => 'Tidak dapat disebarkan', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Lihat aset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/en-ID/admin/hardware/message.php b/resources/lang/en-ID/admin/hardware/message.php index a952b4ccf7..beefe7a850 100644 --- a/resources/lang/en-ID/admin/hardware/message.php +++ b/resources/lang/en-ID/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Aset tidak dikembalikan, coba lagi', 'success' => 'Aset Berhasil dikembalikan.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'File Anda telah diimpor', 'file_delete_success' => 'File anda telah berhasil dihapus', 'file_delete_error' => 'File tidak dapat dihapus', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/en-ID/admin/hardware/table.php b/resources/lang/en-ID/admin/hardware/table.php index 888b03487c..553b6a1d24 100644 --- a/resources/lang/en-ID/admin/hardware/table.php +++ b/resources/lang/en-ID/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Masuk/keluar', 'checkout_date' => 'Tanggal Check out', 'checkoutto' => 'Memeriksa', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Unduh CSV', diff --git a/resources/lang/en-ID/admin/licenses/general.php b/resources/lang/en-ID/admin/licenses/general.php index b1abe81765..7365f2abc0 100644 --- a/resources/lang/en-ID/admin/licenses/general.php +++ b/resources/lang/en-ID/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Tentang Lisensi', - 'about_licenses' => 'Lisensi digunakan untuk melacak perangkat lunak. Mereka memiliki sejumlah seat tertentu yang bisa diperiksa ke individu', + 'about_licenses_title' => 'Tentang Lisensi', + 'about_licenses' => 'Lisensi digunakan untuk melacak perangkat lunak. Mereka memiliki sejumlah seat tertentu yang bisa diperiksa ke individu', 'checkin' => 'Daftar lisensi seat', 'checkout_history' => 'Periksa riwayat', 'checkout' => 'Periksa lisensi seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Lisensi perangkat lunak', 'user' => 'Pengguna', 'view' => 'Lihat lisensi', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/en-ID/admin/manufacturers/message.php b/resources/lang/en-ID/admin/manufacturers/message.php index 80fc1fa8bf..b1d69901c4 100644 --- a/resources/lang/en-ID/admin/manufacturers/message.php +++ b/resources/lang/en-ID/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Produsen tidak ada.', 'assoc_users' => 'Produsen ini saat ini terkait dengan setidaknya satu model dan tidak dapat dihapus. Perbarui model Anda agar tidak lagi mereferensikan produsen ini dan coba lagi. ', diff --git a/resources/lang/en-ID/admin/manufacturers/table.php b/resources/lang/en-ID/admin/manufacturers/table.php index 6920c5459e..1e730b49dc 100644 --- a/resources/lang/en-ID/admin/manufacturers/table.php +++ b/resources/lang/en-ID/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Email pendukung', 'support_phone' => 'Telepon pendukung', 'support_url' => 'URL pendukung', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Perbarui produsen', 'url' => 'URL', diff --git a/resources/lang/en-ID/admin/models/general.php b/resources/lang/en-ID/admin/models/general.php index 6d2af65653..d083b8c5fe 100644 --- a/resources/lang/en-ID/admin/models/general.php +++ b/resources/lang/en-ID/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk hapus model aset', 'bulk_delete_help' => 'Gunakan kotak centang di bawah untuk mengkonfirmasi penghapusan model aset yang dipilih. Model aset yang memiliki aset yang terkait dengannya tidak dapat dihapus sampai aset dikaitkan dengan model yang berbeda.', - 'bulk_delete_warn' => 'Anda akan menghapus: model aset model_count.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Kembalikan model', 'requestable' => 'Pengguna dapat meminta model ini', 'show_mac_address' => 'Tampilkan bidang alamat MAC dalam aset model ini', diff --git a/resources/lang/en-ID/admin/models/message.php b/resources/lang/en-ID/admin/models/message.php index 995b58d058..995e452e2c 100644 --- a/resources/lang/en-ID/admin/models/message.php +++ b/resources/lang/en-ID/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model tidak ada.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model tidak diperbarui, silahkan dicoba lagi', - 'success' => 'Model berhasil diperbarui.' + 'success' => 'Model berhasil diperbarui.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Tidak ada bidang yang berubah, jadi tidak ada yang diperbarui.', - 'success' => 'Model diperbarui.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Tidak ada model yang dipilih, jadi tidak ada yang dihapus.', - 'success' => ':success_count model(s) dihapus!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) telah dihapus, namun: fail_count tidak dapat dihapus karena mereka masih memiliki aset yang terkait dengannya.' ), diff --git a/resources/lang/en-ID/admin/settings/general.php b/resources/lang/en-ID/admin/settings/general.php index 44d1c4f45c..184a32f4f5 100644 --- a/resources/lang/en-ID/admin/settings/general.php +++ b/resources/lang/en-ID/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Jika Anda ingin mengirim salinan email checkin / checkout yang dikirimkan ke pengguna akun email tambahan, masukkan di sini. Jika tidak, biarkan bidang ini kosong.', 'is_ad' => 'Ini adalah server aktif direktori', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Kirim peringatan kepada', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Peringatan Email Diaktifkan', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Pengaturan Kode batang', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Pengaturan LDAP', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Masukkan nama pengguna dan kata sandi LDAP yang sah dari DN dasar yang anda tentukan di atas untuk menguji apakah proses masuk LDAP anda dikonfigurasi dengan benar. ANDA HARUS MENYIMPAN PENGATURAN LDAP YANG ANDA PERBARUI PERTAMA.', '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', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Tampilkan gambar dalam email', 'show_images_in_email_help' => 'Hapus centang kotak ini jika instalasi Snipe-IT Anda berada di belakang VPN atau jaringan tertutup dan pengguna di luar jaringan tidak akan dapat memuat gambar yang disajikan dari instalasi ini di email mereka.', 'site_name' => 'Nama Situs', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Nama Bot Slack', - 'slack_channel' => 'Saluran Slack', - 'slack_endpoint' => 'Titik Akhir Slack', - 'slack_integration' => 'Pengaturan Slack', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Setelah Anda menyimpan informasi Slack Anda, tombol tes akan muncul.', - 'slack_test_help' => 'Uji apakah integrasi Slack Anda dikonfigurasi dengan benar. ANDA HARUS MENYIMPAN SETELAN PENGATURAN KESELAMATAN ANDA PERTAMA.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Versi Snipe-IT', 'support_footer' => 'Link footer pendukung ', 'support_footer_help' => 'Tentukan siapa yang melihat tautan ke informasi pendukung dan panduan pengguna Snipe-IT', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/en-ID/admin/settings/message.php b/resources/lang/en-ID/admin/settings/message.php index 4ee2c6480e..245317714b 100644 --- a/resources/lang/en-ID/admin/settings/message.php +++ b/resources/lang/en-ID/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/en-ID/admin/users/general.php b/resources/lang/en-ID/admin/users/general.php index 65808a9103..e2d68f50b9 100644 --- a/resources/lang/en-ID/admin/users/general.php +++ b/resources/lang/en-ID/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Cetak semua yang ditetapkan', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software diperiksa untuk :name', 'send_email_help' => 'Anda harus menyediakan sebuah alamat email untuk pengguna ini untuk dikirimkan kredesial pada mereka. Kredensial penyuratan/email hanya dapat dilakukan pada pembuatan pengguna. Kata sandi disimpan dalam sebuah hash satu-arah dan tidak dapat diterima lagi setelah disimpan.', 'view_user' => 'Lihat pengguna :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/en-ID/admin/users/message.php b/resources/lang/en-ID/admin/users/message.php index 1182464314..8908970755 100644 --- a/resources/lang/en-ID/admin/users/message.php +++ b/resources/lang/en-ID/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Anda sudah berhasil menolak aset ini.', 'bulk_manager_warn' => 'Pengguna anda sudah berhasil diperbarui, namun entri manajer anda tidak disimpan karena manajer yang anda pilih juga berada dalam daftar pengguna untuk disunting, dan pengguna mungkin bukan manajer mereka sendiri. Silahkan pilih pengguna anda lagi, tidak termasuk manajernya.', 'user_exists' => 'Pengguna sudah ada!', - 'user_not_found' => 'Pengguna [:id] tidak ada.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Bidang masuk diperlukan', 'user_password_required' => 'Kata sandi diperlukan.', 'insufficient_permissions' => 'Izin tidak cukup.', diff --git a/resources/lang/en-ID/auth/general.php b/resources/lang/en-ID/auth/general.php index 78ff6893fd..350b085378 100644 --- a/resources/lang/en-ID/auth/general.php +++ b/resources/lang/en-ID/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Ingatkan saya', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/en-ID/general.php b/resources/lang/en-ID/general.php index 72fcf7f364..8223b57ea1 100644 --- a/resources/lang/en-ID/general.php +++ b/resources/lang/en-ID/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Aksesoris', 'activated' => 'Diaktifkan', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Aksesoris', 'accessory_report' => 'Laporan Aksesori', 'action' => 'Langkah', @@ -27,7 +28,13 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Audit Log', 'assets' => 'Aset', + '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', 'avatar_delete' => 'Hapus Avatar', 'avatar_upload' => 'Unggah Avatar', 'back' => 'Kembali', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Batal', 'categories' => 'Kategori', @@ -83,6 +92,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.', 'deleted' => 'Dihapus', 'delete_seats' => 'Tempat dihapus', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Impor', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Pemeliharaan Aset', 'item' => 'Item', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Tidak ada hak akses!', 'kits' => 'Predefined Kits', 'language' => 'Bahasa', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Permintaan dibatalkan', 'save' => 'Simpan', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Pilih', 'select_all' => 'Select All', 'search' => 'Cari', @@ -240,8 +254,8 @@ return [ 'signature' => 'Tanda tangan', 'signed_off_by' => 'Signed Off By', 'skin' => 'Tema', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Beberapa fitur dinonaktifkan untuk penginstalan ini.', 'site_name' => 'Nama Situs', 'state' => 'Negara', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Apakah anda yakin ingin menghapus', 'submit' => 'Kirim', 'target' => 'Target', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Tampilan Waktu dan Tanggal', 'total_assets' => 'total aset', 'total_licenses' => 'total lisensi', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/en-ID/help.php b/resources/lang/en-ID/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/en-ID/help.php +++ b/resources/lang/en-ID/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/en-ID/localizations.php b/resources/lang/en-ID/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/en-ID/localizations.php +++ b/resources/lang/en-ID/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/en-ID/mail.php b/resources/lang/en-ID/mail.php index 2a31bfd40f..5b1aca8b92 100644 --- a/resources/lang/en-ID/mail.php +++ b/resources/lang/en-ID/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login ke instalasi Snipe-IT baru Anda dengan menggunakan kredensial di bawah ini:', 'login' => 'Masuk:', 'Low_Inventory_Report' => 'Laporan Inventaris Rendah', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'QTY minimum', 'name' => 'Nama', 'new_item_checked' => 'Item baru sudah diperiksa atas nama anda, rinciannya dibawah ini.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Kredensial Snipe-IT Anda', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/en-ID/validation.php b/resources/lang/en-ID/validation.php index f44b950f13..193c8f4094 100644 --- a/resources/lang/en-ID/validation.php +++ b/resources/lang/en-ID/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Atribut :setidaknya harus memiliki :item min.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Kata sandi anda saat ini salah', 'dumbpwd' => 'Kata sandi itu terlalu umum.', 'statuslabel_type' => 'Anda harus pilih jenis label status yang valid', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/en/admin/accessories/general.php b/resources/lang/en/admin/accessories/general.php index e9a2e69ff6..bed7f38fab 100644 --- a/resources/lang/en/admin/accessories/general.php +++ b/resources/lang/en/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Update Accessory', 'use_default_eula' => 'Use the primary default EULA instead.', 'use_default_eula_disabled' => 'Use the primary default EULA instead. No primary default EULA is set. Please add one in Settings.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/en/admin/accessories/message.php b/resources/lang/en/admin/accessories/message.php index a356463064..542f71f03c 100644 --- a/resources/lang/en/admin/accessories/message.php +++ b/resources/lang/en/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/en/admin/components/general.php b/resources/lang/en/admin/components/general.php index f7689a7ad1..5b788a51ec 100644 --- a/resources/lang/en/admin/components/general.php +++ b/resources/lang/en/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Component', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/en/admin/components/message.php b/resources/lang/en/admin/components/message.php index 1d13970f23..0a7dd8d954 100644 --- a/resources/lang/en/admin/components/message.php +++ b/resources/lang/en/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Component was not checked out, please try again', 'success' => 'Component checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/en/admin/consumables/message.php b/resources/lang/en/admin/consumables/message.php index 48a3cfbd9f..c0d0aa7f68 100644 --- a/resources/lang/en/admin/consumables/message.php +++ b/resources/lang/en/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumable was not checked out, please try again', 'success' => 'Consumable checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/en/admin/custom_fields/general.php b/resources/lang/en/admin/custom_fields/general.php index 92bf240a76..cb4ab3730a 100644 --- a/resources/lang/en/admin/custom_fields/general.php +++ b/resources/lang/en/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Used By Models', 'order' => 'Order', 'create_fieldset' => 'New Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'New Custom Field', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,9 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', + 'show_in_listview' => 'Show in list views by default. Authorized users will still be able to show/hide via the column selector.', + 'show_in_listview_short' => 'Show in lists', + ]; diff --git a/resources/lang/en/admin/groups/message.php b/resources/lang/en/admin/groups/message.php index f14b6339e8..495acaf36b 100644 --- a/resources/lang/en/admin/groups/message.php +++ b/resources/lang/en/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Group already exists!', - 'group_not_found' => 'Group [:id] does not exist.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'The name field is required', 'success' => array( diff --git a/resources/lang/en/admin/hardware/form.php b/resources/lang/en/admin/hardware/form.php index 22aac61d07..6bcb884bab 100644 --- a/resources/lang/en/admin/hardware/form.php +++ b/resources/lang/en/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirm Bulk Delete Assets', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Review the assets for bulk deletion below. Once deleted, these assets can be restored, but they will no longer be associated with any users they are currently assigned to.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'You are about to delete :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Bulk Update Assets', 'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/en/admin/hardware/general.php b/resources/lang/en/admin/hardware/general.php index 67226061b1..dd7d74e433 100644 --- a/resources/lang/en/admin/hardware/general.php +++ b/resources/lang/en/admin/hardware/general.php @@ -12,15 +12,19 @@ return [ 'clone' => 'Clone Asset', 'deployable' => 'Deployable', 'deleted' => 'This asset has been deleted.', + 'delete_confirm' => 'Are you sure you want to delete this asset?', 'edit' => 'Edit Asset', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Requestable', 'requested' => 'Requested', 'not_requestable' => 'Not Requestable', - 'requestable_status_warning' => 'Do not change requestable status', + 'requestable_status_warning' => 'Do not change requestable status', 'restore' => 'Restore Asset', 'pending' => 'Pending', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'View Asset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +44,7 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', + 'user_department' => 'User Department', ]; diff --git a/resources/lang/en/admin/hardware/message.php b/resources/lang/en/admin/hardware/message.php index d2214ce00c..18f3b3fa24 100644 --- a/resources/lang/en/admin/hardware/message.php +++ b/resources/lang/en/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Asset was not restored, please try again', 'success' => 'Asset restored successfully.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Your file has been imported', 'file_delete_success' => 'Your file has been been successfully deleted', 'file_delete_error' => 'The file was unable to be deleted', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/en/admin/hardware/table.php b/resources/lang/en/admin/hardware/table.php index 6166ba8045..10629fd22c 100644 --- a/resources/lang/en/admin/hardware/table.php +++ b/resources/lang/en/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In/Out', 'checkout_date' => 'Checkout Date', 'checkoutto' => 'Checked Out', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Download CSV', diff --git a/resources/lang/en/admin/licenses/general.php b/resources/lang/en/admin/licenses/general.php index 25a536ec56..0187d076a3 100644 --- a/resources/lang/en/admin/licenses/general.php +++ b/resources/lang/en/admin/licenses/general.php @@ -1,8 +1,8 @@ 'About Licenses', - 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', + 'about_licenses_title' => 'About Licenses', + 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Checkout History', 'checkout' => 'Checkout License Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Software Licenses', 'user' => 'User', 'view' => 'View License', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/en/admin/manufacturers/message.php b/resources/lang/en/admin/manufacturers/message.php index 21a4bc5aaf..d6656683ae 100644 --- a/resources/lang/en/admin/manufacturers/message.php +++ b/resources/lang/en/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Manufacturer does not exist.', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', diff --git a/resources/lang/en/admin/manufacturers/table.php b/resources/lang/en/admin/manufacturers/table.php index 4e3ea9904d..38cab6fd91 100644 --- a/resources/lang/en/admin/manufacturers/table.php +++ b/resources/lang/en/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support Email', 'support_phone' => 'Support Phone', 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Update Manufacturer', 'url' => 'URL', diff --git a/resources/lang/en/admin/models/general.php b/resources/lang/en/admin/models/general.php index d2d77e0e8c..7e4a77adbc 100644 --- a/resources/lang/en/admin/models/general.php +++ b/resources/lang/en/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Restore Model', 'requestable' => 'Users may request this model', 'show_mac_address' => 'Show MAC address field in assets in this model', diff --git a/resources/lang/en/admin/models/message.php b/resources/lang/en/admin/models/message.php index e3b29d5b4b..77c2d88b5f 100644 --- a/resources/lang/en/admin/models/message.php +++ b/resources/lang/en/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model does not exist.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model was not updated, please try again', - 'success' => 'Model updated successfully.' + 'success' => 'Model updated successfully.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'No fields were changed, so nothing was updated.', - 'success' => 'Models updated.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/en/admin/settings/general.php b/resources/lang/en/admin/settings/general.php index 2ae3dba996..9c038a87be 100644 --- a/resources/lang/en/admin/settings/general.php +++ b/resources/lang/en/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'This is an Active Directory server', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Send alerts to', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Email Alerts Enabled', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Barcode Settings', @@ -86,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP Settings', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -198,16 +200,21 @@ return [ '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.', 'site_name' => 'Site Name', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -302,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -323,7 +330,6 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', - 'label2_enable' => 'New Label Engine', 'label2_enable_help' => 'Switch to the new label engine. Note: You will need to save this setting before setting others.', 'label2_template' => 'Template', @@ -341,10 +347,13 @@ return [ 'label2_2d_target_help' => 'The URL the 2D barcode points to when scanned', 'label2_fields' => 'Field Definitions', 'label2_fields_help' => 'Fields can be added, removed, and reordered in the left column. For each field, multiple options for Label and DataSource can be added, removed, and reordered in the right column.', - 'help_asterisk_bold' => 'Text entered as **text** will be displayed as bold', 'help_blank_to_use' => 'Leave blank to use the value from :setting_name', 'help_default_will_use' => ':default will use the value from :setting_name', 'default' => 'Default', 'none' => 'None', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', ]; diff --git a/resources/lang/en/admin/settings/message.php b/resources/lang/en/admin/settings/message.php index 174a15fbd9..48b42d1202 100644 --- a/resources/lang/en/admin/settings/message.php +++ b/resources/lang/en/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/en/admin/users/general.php b/resources/lang/en/admin/users/general.php index daa568e8bf..b097ccec69 100644 --- a/resources/lang/en/admin/users/general.php +++ b/resources/lang/en/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'View User :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/en/admin/users/message.php b/resources/lang/en/admin/users/message.php index 247a1b321e..adf26b3229 100644 --- a/resources/lang/en/admin/users/message.php +++ b/resources/lang/en/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'You have successfully declined this asset.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'user_exists' => 'User already exists!', - 'user_not_found' => 'User [:id] does not exist.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'The login field is required', 'user_password_required' => 'The password is required.', 'insufficient_permissions' => 'Insufficient Permissions.', diff --git a/resources/lang/en/auth/general.php b/resources/lang/en/auth/general.php index 78b6780927..4486f090b2 100644 --- a/resources/lang/en/auth/general.php +++ b/resources/lang/en/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Remember Me', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index acc00501ed..4831845721 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accessories', 'activated' => 'Activated', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Accessory', 'accessory_report' => 'Accessory Report', 'action' => 'Action', @@ -27,7 +28,13 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Audit Log', 'assets' => 'Assets', + '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', 'avatar_delete' => 'Delete Avatar', 'avatar_upload' => 'Upload Avatar', 'back' => 'Back', @@ -38,7 +45,7 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', 'byod' => 'BYOD', 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', @@ -85,6 +92,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the 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.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -141,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Import', '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.', @@ -150,6 +159,8 @@ return [ 'asset_maintenances' => 'Asset Maintenances', 'item' => 'Item', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Insufficient permissions!', 'kits' => 'Predefined Kits', 'language' => 'Language', @@ -220,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Request Canceled', 'save' => 'Save', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Select', 'select_all' => 'Select All', 'search' => 'Search', @@ -242,8 +254,8 @@ return [ 'signature' => 'Signature', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', @@ -252,10 +264,9 @@ return [ 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', 'suppliers' => 'Suppliers', - 'sure_to_delete' => 'Are you sure you wish to delete', + 'sure_to_delete' => 'Are you sure you wish to delete', 'submit' => 'Submit', 'target' => 'Target', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Time and Date Display', 'total_assets' => 'total assets', 'total_licenses' => 'total licenses', @@ -357,8 +368,8 @@ return [ 'notification_warning' => 'Warning:', 'notification_info' => 'Info:', 'asset_information' => 'Asset Information', - 'model_name' => 'Model Name:', - 'asset_name' => 'Asset Name:', + 'model_name' => 'Model Name', + 'asset_name' => 'Asset Name', 'consumable_information' => 'Consumable Information:', 'consumable_name' => 'Consumable Name:', 'accessory_information' => 'Accessory Information:', @@ -377,7 +388,8 @@ return [ '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_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', @@ -387,8 +399,80 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'cancel_request' => 'Cancel this item request', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', + 'serial_number' => 'Serial Number', + 'item_notes' => ':item Notes', + 'item_name_var' => ':item Name', + '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', + 'checkout_location' => 'Checkout to Location', + 'image_filename' => 'Image Filename', + 'do_not_import' => 'Do Not Import', + 'vip' => 'VIP', + 'avatar' => 'Avatar', + 'gravatar' => 'Gravatar Email', + 'currency' => 'Currency', + 'address2' => 'Address Line 2', + 'import_note' => 'Imported using csv importer', + ], - - -]; \ No newline at end of file +]; diff --git a/resources/lang/en/help.php b/resources/lang/en/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/en/help.php +++ b/resources/lang/en/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/en/mail.php b/resources/lang/en/mail.php index b0ae7de76b..7dd8d6181c 100644 --- a/resources/lang/en/mail.php +++ b/resources/lang/en/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login to your new Snipe-IT installation using the credentials below:', 'login' => 'Login:', 'Low_Inventory_Report' => 'Low Inventory Report', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Name', 'new_item_checked' => 'A new item has been checked out under your name, details are below.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Your Snipe-IT credentials', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 04f8d65303..df514da6f9 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'The :attribute must have at least :min items.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/es-CO/account/general.php b/resources/lang/es-CO/account/general.php index 7fc060a849..27118e2f3a 100644 --- a/resources/lang/es-CO/account/general.php +++ b/resources/lang/es-CO/account/general.php @@ -1,12 +1,12 @@ 'Personal API Keys', - '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:', + 'personal_api_keys' => 'Claves API personales', + 'api_key_warning' => 'Al generar un token API, asegúrate de copiarlo inmediatamente ya que + no será visible de nuevo.', + 'api_base_url' => 'La url base de tu API es:', '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.', + 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', + 'api_reference' => 'Por favor, revise la referencia API para + encontrar endpoints específicos de la API y documentación adicional de la API.', ); diff --git a/resources/lang/es-CO/admin/accessories/general.php b/resources/lang/es-CO/admin/accessories/general.php index 619cd9c1e5..1b74602d34 100644 --- a/resources/lang/es-CO/admin/accessories/general.php +++ b/resources/lang/es-CO/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Actualizar Accesorio', 'use_default_eula' => 'En su lugar, use el EULA por defecto.', 'use_default_eula_disabled' => 'En su lugar, use el EULA por defecto. No esta configurado un EULA por defecto. Por favor agregue uno en Configuración.', + 'clone' => 'Clonar accesorio', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/es-CO/admin/accessories/message.php b/resources/lang/es-CO/admin/accessories/message.php index 806ce547a5..6b32dc76a1 100644 --- a/resources/lang/es-CO/admin/accessories/message.php +++ b/resources/lang/es-CO/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'El accesorio no fue retirado, por favor vuelva a intentarlo', 'success' => 'Accesorio retirado correctamente.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Este usuario es inválido. Inténtalo 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 22cfe26eda..d8345ceddb 100644 --- a/resources/lang/es-CO/admin/asset_maintenances/form.php +++ b/resources/lang/es-CO/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Tipo de Mantenimiento', + 'asset_maintenance_type' => 'Tipo de Mantenimiento de Equipo', 'title' => 'Puesto', - 'start_date' => 'Comenzado', - 'completion_date' => 'Terminado', + 'start_date' => 'Fecha de inicio', + 'completion_date' => 'Fecha de Terminación', 'cost' => 'Precio', 'is_warranty' => 'Mejora de la Garantía', - 'asset_maintenance_time' => 'Dias', + 'asset_maintenance_time' => 'Tiempo de Mantenimiento de Equipo (en días)', 'notes' => 'Notas', - 'update' => 'Actualizar', - 'create' => 'Crear' + 'update' => 'Actualizar Mantenimiento de Equipo', + 'create' => 'Crear Mantenimiento de Equipo' ]; diff --git a/resources/lang/es-CO/admin/categories/message.php b/resources/lang/es-CO/admin/categories/message.php index d0536f8f77..91c0367a5d 100644 --- a/resources/lang/es-CO/admin/categories/message.php +++ b/resources/lang/es-CO/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'La categoría no se actualizó, por favor, inténtalo de nuevo', - 'success' => 'Categoría actualizada con éxito.' + 'success' => 'Categoría actualizada con éxito.', + 'cannot_change_category_type' => 'No se puede cambiar el tipo de categoría una vez que se ha creado', ), 'delete' => array( diff --git a/resources/lang/es-CO/admin/components/general.php b/resources/lang/es-CO/admin/components/general.php index 271344e965..3a63af3506 100644 --- a/resources/lang/es-CO/admin/components/general.php +++ b/resources/lang/es-CO/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', + 'checkin_limit' => 'La cantidad de checkins 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 81125e81be..5d7c4720b8 100644 --- a/resources/lang/es-CO/admin/components/message.php +++ b/resources/lang/es-CO/admin/components/message.php @@ -23,7 +23,8 @@ return array( '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.' + 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/es-CO/admin/consumables/message.php b/resources/lang/es-CO/admin/consumables/message.php index c1762b0ff1..716adf4129 100644 --- a/resources/lang/es-CO/admin/consumables/message.php +++ b/resources/lang/es-CO/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'El consumible no fue retirado, por favor, inténtalo de nuevo', 'success' => 'Consumible retirado con éxito.', - 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.' + 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo de nuevo.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/es-CO/admin/custom_fields/general.php b/resources/lang/es-CO/admin/custom_fields/general.php index 58723a24ec..f987f9f9c5 100644 --- a/resources/lang/es-CO/admin/custom_fields/general.php +++ b/resources/lang/es-CO/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Usado por Modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo Fieldset', + 'update_fieldset' => 'Actualizar grupo de campos', + 'fieldset_does_not_exist' => 'Grupo de campos :id no existe', + 'fieldset_updated' => 'Grupo de campos actualizado', 'create_fieldset_title' => 'Crear nuevo grupo de campos', 'create_field' => 'Nuevo Campo Personalizado', 'create_field_title' => 'Crear nuevo campo personalizado', @@ -44,6 +47,8 @@ return [ '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' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Permitir al usuario ver estos valores en su página Ver Recursos asignados', + 'display_in_user_view_table' => 'Visible para el usuario', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/es-CO/admin/custom_fields/message.php b/resources/lang/es-CO/admin/custom_fields/message.php index 49bac21a9c..e436dd4b5c 100644 --- a/resources/lang/es-CO/admin/custom_fields/message.php +++ b/resources/lang/es-CO/admin/custom_fields/message.php @@ -51,7 +51,7 @@ return array( 'fieldset_default_value' => array( - 'error' => 'Error validating default fieldset values.', + '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 d56a74ecfb..f31bc3a97d 100644 --- a/resources/lang/es-CO/admin/departments/message.php +++ b/resources/lang/es-CO/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'El departamento no existe.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Ya existe un departamento con ese nombre en la ubicación de la empresa. 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. ', 'create' => array( 'error' => 'El departamento no fue creado, por favor, inténtalo de nuevo.', diff --git a/resources/lang/es-CO/admin/groups/message.php b/resources/lang/es-CO/admin/groups/message.php index 921da8509c..1a3e32d18d 100644 --- a/resources/lang/es-CO/admin/groups/message.php +++ b/resources/lang/es-CO/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'El grupo ya existe!', - 'group_not_found' => 'El grupo[:id] no existe.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'El campo nombre es requerido', 'success' => array( diff --git a/resources/lang/es-CO/admin/hardware/form.php b/resources/lang/es-CO/admin/hardware/form.php index 9f712af2a7..dd1ceb1211 100644 --- a/resources/lang/es-CO/admin/hardware/form.php +++ b/resources/lang/es-CO/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirma la Eliminación Masiva de Equipos', + 'bulk_restore' => 'Confirm Bulk Restore Assets', '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_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Estás a punto de eliminar :asset_count equipos.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', '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 activo.|Está a punto de editar las propiedades de :asset_count activos.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Actualizar sólo la ubicación predeterminada', 'asset_not_deployable' => 'Ese estado de activos no es desplegable. Este activo no puede ser verificado.', 'asset_deployable' => 'Ese estado de activos no es desplegable. Este activo no puede ser verificado.', - 'processing_spinner' => 'Procesando...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Información opcional', 'order_details' => 'Información relacionada con el pedido' ]; diff --git a/resources/lang/es-CO/admin/hardware/general.php b/resources/lang/es-CO/admin/hardware/general.php index 3333041087..75cd1782c3 100644 --- a/resources/lang/es-CO/admin/hardware/general.php +++ b/resources/lang/es-CO/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Este activo ha sido borrado.', 'edit' => 'Editar Equipo', 'model_deleted' => 'El modelo de este activo ha sido borrado. Debe restaurar el modelo antes de restaurar o crear el activo.', + 'model_invalid' => 'El modelo de este activo no es válido.', + 'model_invalid_fix' => 'El Activo debe ser editado para corregir esto antes de intentar retirarlo o asignarlo.', 'requestable' => 'Puede Solicitarse', 'requested' => 'Solicitado', 'not_requestable' => 'No solicitable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restaurar equipo', 'pending' => 'Equipos Pendiente', 'undeployable' => 'No desplegable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Ver Equipo', 'csv_error' => 'Tiene un error en su archivo CSV:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ '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' + 'custom_export' => 'Exportación personalizada', + 'mfg_warranty_lookup' => 'Búsqueda del estado de Garantía para :manufacturer', ]; diff --git a/resources/lang/es-CO/admin/hardware/message.php b/resources/lang/es-CO/admin/hardware/message.php index c0fbd1ec32..3c91f8b5e5 100644 --- a/resources/lang/es-CO/admin/hardware/message.php +++ b/resources/lang/es-CO/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'El equipo no fue restaurado, por favor intente nuevamente', 'success' => 'Equipo restaurado correctamente.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Tu archivo ha sido importado', 'file_delete_success' => 'Tu archivo ha sido eliminado con éxito', 'file_delete_error' => 'No pudimos eliminar tu archivo', + 'header_row_has_malformed_characters' => 'Uno o más atributos en la fila del encabezado contienen caracteres UTF-8 mal formados', + 'content_row_has_malformed_characters' => 'Uno o más atributos en la primera fila de contenido contienen caracteres UTF-8 mal formados', ], diff --git a/resources/lang/es-CO/admin/hardware/table.php b/resources/lang/es-CO/admin/hardware/table.php index 029f7da5da..dd675b03e0 100644 --- a/resources/lang/es-CO/admin/hardware/table.php +++ b/resources/lang/es-CO/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Operación', 'checkout_date' => 'Fecha de devolución', 'checkoutto' => 'Asignado a', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Valor Actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', diff --git a/resources/lang/es-CO/admin/licenses/general.php b/resources/lang/es-CO/admin/licenses/general.php index 8a5d6db90e..ed7d6408e3 100644 --- a/resources/lang/es-CO/admin/licenses/general.php +++ b/resources/lang/es-CO/admin/licenses/general.php @@ -1,8 +1,8 @@ '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', + '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', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Licencias Software', 'user' => 'Usuario', 'view' => 'Ver Licencias', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/es-CO/admin/licenses/message.php b/resources/lang/es-CO/admin/licenses/message.php index 182b6ce2e1..869a00dd84 100644 --- a/resources/lang/es-CO/admin/licenses/message.php +++ b/resources/lang/es-CO/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'License does not exist or you do not have permission to view it.', + 'does_not_exist' => 'La licencia no existe o no tiene permiso para verla.', 'user_does_not_exist' => 'Usuario inexistente.', 'asset_does_not_exist' => 'El equipo que intentas asignar a esta licencia no existe.', 'owner_doesnt_match_asset' => 'El equipo al que estas intentando asignar esta licenciam, está asignado a un usuario diferente que el de la licencia.', diff --git a/resources/lang/es-CO/admin/locations/message.php b/resources/lang/es-CO/admin/locations/message.php index f6d51df14e..49a4e627aa 100644 --- a/resources/lang/es-CO/admin/locations/message.php +++ b/resources/lang/es-CO/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'La ubicación esta asociada con al menos un usuario, por lo que no puede eliminarse. Actualiza la información de tus usuarios para que no la usen, e inténtalo de nuevo. ', 'assoc_assets' => 'La ubicación esta asociada con al menos un equipo, por lo que no puede eliminarse. Por favor actualiza la información de tus equipos para que no la usen, e inténtalo de nuevo. ', 'assoc_child_loc' => 'La ubicación esta asociada con al menos una ubicación hija, por lo que no puede eliminarse. Actualiza la información de tus ubicaciones para desasociarlas, e inténtalo de nuevo. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Activos asignados', + 'current_location' => 'Ubicación Actual', 'create' => array( diff --git a/resources/lang/es-CO/admin/manufacturers/message.php b/resources/lang/es-CO/admin/manufacturers/message.php index 342dd1e565..f86e446410 100644 --- a/resources/lang/es-CO/admin/manufacturers/message.php +++ b/resources/lang/es-CO/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'El fabricante no existe.', 'assoc_users' => 'Este Fabricante está asociado al menos a un modelo y no puede ser eliminado', diff --git a/resources/lang/es-CO/admin/manufacturers/table.php b/resources/lang/es-CO/admin/manufacturers/table.php index 972d33b71b..ed1956383c 100644 --- a/resources/lang/es-CO/admin/manufacturers/table.php +++ b/resources/lang/es-CO/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Email de soporte', 'support_phone' => 'Teléfono de soporte', 'support_url' => 'URL de soporte', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Actualizar Fabricante', 'url' => 'URL', diff --git a/resources/lang/es-CO/admin/models/general.php b/resources/lang/es-CO/admin/models/general.php index 2750cbcd51..02a4b68d6a 100644 --- a/resources/lang/es-CO/admin/models/general.php +++ b/resources/lang/es-CO/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Este modelo fue eliminado.', '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ás a punto de eliminar: los modelos de activo model_count.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', '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', diff --git a/resources/lang/es-CO/admin/models/message.php b/resources/lang/es-CO/admin/models/message.php index bc244948d0..b38b9d1cf3 100644 --- a/resources/lang/es-CO/admin/models/message.php +++ b/resources/lang/es-CO/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Modelo inexistente.', + 'no_association' => 'NINGUN MODELO ASOCIADO.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'El modelo no pudo ser actualizado, por favor inténtalo de nuevo', - 'success' => 'El modelo fue actualizado exitosamente.' + 'success' => 'El modelo fue actualizado exitosamente.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Ningún campo ha cambiado, no hay nada que actualizar.', - 'success' => 'Los modelos fueron actualizados.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Ningún modelo fue seleccionado, no se eliminó nada.', - 'success' => '¡:success_count modelo(s) eliminado(s)!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count modelos fueron eliminados, sin embargo, :fail_count no pudieron ser eliminados debido a que aún tienen equipos asociados a ellos.' ), diff --git a/resources/lang/es-CO/admin/reports/general.php b/resources/lang/es-CO/admin/reports/general.php index 19efc0b08a..55cc3c2853 100644 --- a/resources/lang/es-CO/admin/reports/general.php +++ b/resources/lang/es-CO/admin/reports/general.php @@ -2,9 +2,9 @@ return [ 'info' => 'Selecciona las opciones de tu informe de Equipos.', - 'deleted_user' => 'Deleted user', - 'send_reminder' => 'Send reminder', - 'reminder_sent' => 'Reminder sent', - 'acceptance_deleted' => 'Acceptance request deleted', - 'acceptance_request' => 'Acceptance request' + 'deleted_user' => 'Usuario eliminado', + 'send_reminder' => 'Enviar recordatorio', + 'reminder_sent' => 'Recordatorio enviado', + 'acceptance_deleted' => 'Solicitud de aceptación eliminada', + 'acceptance_request' => 'Solicitud de aceptación' ]; \ No newline at end of file diff --git a/resources/lang/es-CO/admin/settings/general.php b/resources/lang/es-CO/admin/settings/general.php index ed9cc1ea55..416af4a84b 100644 --- a/resources/lang/es-CO/admin/settings/general.php +++ b/resources/lang/es-CO/admin/settings/general.php @@ -10,10 +10,10 @@ return [ 'admin_cc_email' => 'Email CC', 'admin_cc_email_help' => 'Si deseas enviar una notificación por correo electrónico de las asignaciones de activos que se envían a los usuarios a una cuenta adicional, ingrésela aquí. De lo contrario, deja este campo en blanco.', 'is_ad' => 'Este es un servidor de Directorio Activo', - 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alerts' => 'Alertas', + 'alert_title' => 'Actualizar ajustes de notificación', 'alert_email' => 'Enviar alertas a', - 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', + 'alert_email_help' => 'Direcciones de correo electrónico o listas de distribución a las que desea que se envíen alertas, separadas por comas', 'alerts_enabled' => 'Alertas habilitadas', 'alert_interval' => 'Limite de alertas de expiración (en días)', 'alert_inv_threshold' => 'Umbral de alerta del inventario', @@ -21,20 +21,20 @@ return [ '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', 'audit_interval' => 'Intervalo de auditoría', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Si se le exige auditoría física regular de sus activos, ingrese 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 próxima fecha de auditoría.', 'audit_warning_days' => 'Umbral de advertencia de auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación debemos advertirle cuándo se deben auditar los activos?', - 'auto_increment_assets' => 'Generate auto-incrementing asset tags', + 'auto_increment_assets' => 'Generar etiquetas de activos autoincrementales', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this', + 'auto_incrementing_help' => 'Habilitar etiquetas de activos autoincrementales primero para establecer esto', 'backups' => 'Copias de seguridad', - 'backups_help' => 'Create, download, and restore backups ', - 'backups_restoring' => 'Restoring from Backup', - 'backups_upload' => 'Upload Backup', - 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', - 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', - 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', + 'backups_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' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_logged_out' => 'Todos los usuarios existentes, incluido usted, se cerrará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.)', @@ -57,7 +57,7 @@ return [ 'barcode_type' => 'Tipo de códigos de barras 2D', 'alt_barcode_type' => 'Tipo de códigos de barras 1D', 'email_logo_size' => 'Los logotipos cuadrados en el correo electrónico se ven mejor. ', - 'enabled' => 'Enabled', + 'enabled' => 'Habilitado', 'eula_settings' => 'Configuración EULA', 'eula_markdown' => 'Este EULS permite makrdown estilo Github.', 'favicon' => 'Favicon', @@ -66,8 +66,8 @@ return [ 'footer_text' => 'Texto Adicional de Pie de Página ', 'footer_text_help' => 'Este texto aparecerá en el lado derecho del pie de página. Los enlaces son permitidos usando el formato flavored de GitHub. Saltos de línea, cabeceras, imágenes, etc, pueden resultar impredecibles.', 'general_settings' => 'Configuración General', - 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy', - 'general_settings_help' => 'Default EULA and more', + 'general_settings_keywords' => 'soporte de la empresa, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, eula, tos, tablero, privacidad', + 'general_settings_help' => 'EULA por defecto y más', 'generate_backup' => 'Generar Respaldo', 'header_color' => 'Color de encabezado', 'info' => 'Estos parámetros permirten personalizar ciertos aspectos de la aplicación.', @@ -75,19 +75,22 @@ return [ 'label_logo_size' => 'Los logos cuadrados se ven mejor - se mostrarán en la parte superior derecha de cada etiqueta de activo. ', 'laravel' => 'Versión de Laravel', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', - 'ldap_help' => 'LDAP/Active Directory', - 'ldap_client_tls_key' => 'LDAP Client TLS Key', - 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', + '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' => 'LDAP/Directorio Activo', + 'ldap_client_tls_key' => 'Llave TLS del cliente LDAP', + 'ldap_client_tls_cert' => 'Certificado LDAP TLS del lado cliente', 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Ajustes LDAP', - 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', - 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + '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_key' => 'Llave TLS del cliente LDAP', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', '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_manager' => 'LDAP Manager', + '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_cert' => 'Certificado de validación SSL LDAP', @@ -111,20 +114,20 @@ return [ 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'This value is used to determine whether a synced user can login to Snipe-IT. It does not affect the ability to check items in or out to them, and should be the attribute name within your AD/LDAP, not the value.

If this field is set to a field name that does not exist in your AD/LDAP, or the value in the AD/LDAP field is set to 0 or false, user login will be disabled. If the value in the AD/LDAP field is set to 1 or true or any other text means the user can log in. When the field is blank in your AD, we respect the userAccountControl attribute, which usually allows non-suspended users to log in.', + '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_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'Email LDAP', - 'ldap_test' => 'Test LDAP', - 'ldap_test_sync' => 'Test LDAP Synchronization', + 'ldap_test' => 'Probar LDAP', + 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de Software', 'load_remote_text' => 'Scripts remotos', 'load_remote_help_text' => 'Esta instalación de Snipe-IT puede cargar scripts desde fuera.', - 'login' => 'Login Attempts', - 'login_attempt' => 'Login Attempt', - 'login_ip' => 'IP Address', - 'login_success' => 'Success?', - 'login_user_agent' => 'User Agent', - 'login_help' => 'List of attempted logins', + 'login' => 'Intentos de inicio de sesión', + 'login_attempt' => 'Intento de inicio de sesión', + 'login_ip' => 'Dirección IP', + 'login_success' => '¿Éxito?', + 'login_user_agent' => 'Navegador', + 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de inicio de sesión', 'login_note_help' => 'Opcionalmente incluya algunas oraciones en su pantalla de inicio de sesión, por ejemplo para ayudar a las personas que han encontrado un dispositivo perdido o robado. Este campo acepta Github con sabor markdown', 'login_remote_user_text' => 'Opciones de inicio de sesión de usuario remoto', @@ -145,19 +148,19 @@ return [ 'optional' => 'opcional', 'per_page' => 'Resultados por página', 'php' => 'Versión de PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'Información PHP', 'php_overview' => 'PHP', - 'php_overview_keywords' => 'phpinfo, system, info', - 'php_overview_help' => 'PHP System info', + '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_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.', - 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Password cannot be the same as first name, last name, email, or username', - 'pwd_secure_complexity_letters' => 'Require at least one letter', - 'pwd_secure_complexity_numbers' => 'Require at least one number', - 'pwd_secure_complexity_symbols' => 'Require at least one symbol', - 'pwd_secure_complexity_case_diff' => 'Require at least one uppercase and one lowercase', + 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el nombre, apellido, correo electrónico o nombre de usuario', + 'pwd_secure_complexity_letters' => 'Requiere al menos una letra', + 'pwd_secure_complexity_numbers' => 'Requiere al menos un número', + 'pwd_secure_complexity_symbols' => 'Requiere al menos un símbolo', + 'pwd_secure_complexity_case_diff' => 'Requiere al menos una mayúscula y una minúscula', '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', @@ -165,8 +168,8 @@ return [ 'qr_help' => 'Activa Códigos QR antes para poder ver esto', 'qr_text' => 'Texto Código QR', 'saml' => 'SAML', - 'saml_title' => 'Update SAML settings', - 'saml_help' => 'SAML settings', + 'saml_title' => 'Actualizar ajustes de SAML', + 'saml_help' => 'Configuración SAML', 'saml_enabled' => 'SAML activado', 'saml_integration' => 'Integración SAML', 'saml_sp_entityid' => 'ID de la entidad', @@ -178,7 +181,7 @@ return [ '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_forcelogin_label' => 'SAML Force Login', + '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_slo_label' => 'Cerrar sesión única SAML', @@ -186,7 +189,7 @@ return [ '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_download' => 'Download Metadata', + 'saml_download' => 'Descargar metadatos', 'setting' => 'Parámetro', 'settings' => 'Configuración', 'show_alerts_in_menu' => 'Mostrar alertas en el menú superior', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Nombre del sitio', + 'integrations' => 'Integraciones', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Nombre de bot en Slack', - 'slack_channel' => 'Canal en Slack', - 'slack_endpoint' => 'Terminal en Slack', - 'slack_integration' => 'Configuración Slack', - 'slack_integration_help' => 'La integración con Slack es opcional, sin embargo el endpoint y el canal son requeridos si desea usarlo. Para configurar la integración de Slack, primero debe crear un webhook entrante en su cuenta de Slack. Haga clic en el botón Probar Integración Slack para confirmar que su configuración es correcta antes de guardar. ', - 'slack_integration_help_button' => 'Una vez que haya guardado su información de Slack, aparecerá un botón de prueba.', - 'slack_test_help' => 'Pruebe si su integración de Slack está configurada correctamente. Debe Guardar Primero su configuracion Slack Actualizada.', + 'general_webhook' => 'Webhook general', + '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_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.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlaces de Soporte de Pie de Página ', 'support_footer_help' => 'Especifica quien ve los enlaces de información de Soporte y Manual de Usuarios de Snipe-IT', @@ -216,8 +224,8 @@ return [ 'update' => 'Actualizar Parámetros', 'value' => 'Valor', 'brand' => 'Marca', - 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', - 'brand_help' => 'Logo, Site Name', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, 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.', @@ -229,7 +237,7 @@ return [ 'privacy_policy' => 'Política de Privacidad', 'privacy_policy_link_help' => 'Si incluye una URL aquí, un enlace a su Política de Privacidad será incluido al pie de la aplicación y en cualquier correo electrónico que envíe el sistema, de conformidad con la ley GDPR. ', 'purge' => 'Purgar registros eliminados', - 'purge_deleted' => 'Purge Deleted ', + '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', @@ -275,51 +283,56 @@ return [ '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', 'username_format_help' => 'Esta configuración sólo será utilizada por el proceso de importación si no se proporciona un nombre de usuario y tenemos que generar un nombre de usuario para usted.', - 'oauth_title' => 'OAuth API Settings', + 'oauth_title' => 'Configuración de la API de OAuth', 'oauth' => 'OAuth', - 'oauth_help' => 'Oauth Endpoint Settings', - 'asset_tag_title' => 'Update Asset Tag Settings', - 'barcode_title' => 'Update Barcode Settings', - 'barcodes' => 'Barcodes', - 'barcodes_help_overview' => 'Barcode & QR settings', - 'barcodes_help' => 'This will attempt to delete cached barcodes. This would typically only be used if your barcode settings have changed, or if your Snipe-IT URL has changed. Barcodes will be re-generated when accessed next.', - 'barcodes_spinner' => 'Attempting to delete files...', - 'barcode_delete_cache' => 'Delete Barcode Cache', - 'branding_title' => 'Update Branding Settings', - 'general_title' => 'Update General Settings', - 'mail_test' => 'Send Test', - 'mail_test_help' => 'This will attempt to send a test mail to :replyto.', - 'filter_by_keyword' => 'Filter by setting keyword', - 'security' => 'Security', - 'security_title' => 'Update Security Settings', - 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', - 'security_help' => 'Two-factor, Password Restrictions', - 'groups_keywords' => 'permissions, permission groups, authorization', - 'groups_help' => 'Account permission groups', - 'localization' => 'Localization', - 'localization_title' => 'Update Localization Settings', - 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', - 'localization_help' => 'Language, date display', - 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', - 'asset_tags_help' => 'Incrementing and prefixes', - 'labels' => 'Labels', - 'labels_title' => 'Update Label Settings', - 'labels_help' => 'Label sizes & settings', - 'purge' => 'Purge', - 'purge_keywords' => 'permanently delete', - 'purge_help' => 'Purge Deleted Records', - 'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.', + 'oauth_help' => 'Configuración de Endpoint Oauth', + 'asset_tag_title' => 'Actualizar ajustes de etiqueta 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', + 'barcodes_help' => 'Esto intentará eliminar códigos de barras en caché. Esto normalmente sólo se usaría si la configuración del código de barras ha cambiado, o si la URL de Snipe-IT ha cambiado. Los códigos de barras se regenerarán cuando se acceda a continuación.', + 'barcodes_spinner' => 'Intentando eliminar archivos...', + 'barcode_delete_cache' => 'Borrar caché de código de barras', + 'branding_title' => 'Actualizar ajustes de marca', + 'general_title' => 'Actualizar ajustes generales', + 'mail_test' => 'Enviar prueba', + 'mail_test_help' => 'Esto intentará enviar un correo de prueba a :replyto.', + 'filter_by_keyword' => 'Filtrar por palabra clave', + 'security' => 'Seguridad', + 'security_title' => 'Actualizar ajustes de seguridad', + 'security_keywords' => 'contraseña, contraseñas, requisitos, dos factores, dos factores, contraseñas comunes, inicio de sesión remoto, autenticación', + 'security_help' => 'Restricciones de contraseña, dos factores', + 'groups_keywords' => 'permisos, grupos de permisos, autorización', + 'groups_help' => 'Grupos de permisos de cuenta', + 'localization' => 'Ubicación', + 'localization_title' => 'Actualizar ajustes de Ubicación', + 'localization_keywords' => 'ubicación, moneda, local, locale, zona horaria, zona horaria, internacional, internacionalización, idioma, idioma, traducción', + 'localization_help' => 'Idioma, fecha mostrada', + 'notifications' => 'Notificaciones', + 'notifications_help' => 'Configuración de alertas por email y auditoría', + 'asset_tags_help' => 'Incrementando y prefijos', + 'labels' => 'Etiquetas', + 'labels_title' => 'Actualizar ajustes de Etiquetas', + 'labels_help' => 'Tamaños de etiqueta & ajustes', + 'purge' => 'Purgar', + 'purge_keywords' => 'eliminar permanentemente', + 'purge_help' => 'Purgar registros eliminados', + 'ldap_extension_warning' => 'No parece que la extensión LDAP esté instalada o habilitada en este servidor. Todavía puede guardar su configuración, pero necesitará habilitar la extensión LDAP para PHP antes de que funcione la sincronización LDAP o el inicio de sesión.', 'ldap_ad' => 'LDAP/AD', - 'employee_number' => 'Employee Number', - 'create_admin_user' => 'Create a User ::', - 'create_admin_success' => 'Success! Your admin user has been added!', - 'create_admin_redirect' => 'Click here to go to your app login!', - 'setup_migrations' => 'Database Migrations ::', - 'setup_no_migrations' => 'There was nothing to migrate. Your database tables were already set up!', - 'setup_successful_migrations' => 'Your database tables have been created', - 'setup_migration_output' => 'Migration output:', - 'setup_migration_create_user' => 'Next: Create User', - 'ldap_settings_link' => 'LDAP Settings Page', - 'slack_test' => 'Test Integration', + 'employee_number' => 'Número de empleado', + 'create_admin_user' => 'Crear Usuario ::', + 'create_admin_success' => '¡Éxito! ¡Tu 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!', + 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', + 'setup_migration_output' => 'Salida de Migración:', + 'setup_migration_create_user' => 'Siguiente: Crear usuario', + 'ldap_settings_link' => 'Página de ajustes LDAP', + 'slack_test' => 'Prueba de integración de ', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/es-CO/admin/settings/message.php b/resources/lang/es-CO/admin/settings/message.php index 89eb5b4553..c11560074e 100644 --- a/resources/lang/es-CO/admin/settings/message.php +++ b/resources/lang/es-CO/admin/settings/message.php @@ -11,8 +11,8 @@ return [ 'file_deleted' => 'El archivo de respaldo fue eliminado satisfactoriamente. ', 'generated' => 'Un nuevo archivo de respaldo fue creado satisfactoriamente.', 'file_not_found' => 'El archivo de respaldo no se ha encontrado en el servidor.', - 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', - 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' + 'restore_warning' => 'Sí, restaurarlo. Reconozco que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', + 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], 'purge' => [ 'error' => 'Ha ocurrido un error mientras se realizaba el purgado. ', @@ -20,24 +20,25 @@ return [ 'success' => 'Registros eliminados correctamente purgados.', ], 'mail' => [ - 'sending' => 'Sending Test Email...', - 'success' => 'Mail sent!', - 'error' => 'Mail could not be sent.', - 'additional' => 'No additional error message provided. Check your mail settings and your app log.' + '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.' ], 'ldap' => [ - 'testing' => 'Testing LDAP Connection, Binding & Query ...', - '500' => '500 Server Error. Please check your server logs for more information.', - 'error' => 'Something went wrong :(', - 'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:', - 'testing_authentication' => 'Testing LDAP Authentication...', - 'authentication_success' => 'User authenticated against LDAP successfully!' + 'testing' => 'Probando conexión LDAP, Binding & Query ...', + '500' => 'Error 500 del servidor. Por favor, compruebe los registros 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...', + 'authentication_success' => 'Usuario autenticado contra LDAP con éxito!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', - 'success_pt1' => 'Success! Check the ', - 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', - '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'webhook' => [ + 'sending' => 'Enviando mensaje de prueba de :app...', + 'success_pt1' => '¡Éxito! Comprueba 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', + 'error_misc' => 'Algo salió mal. :( ', ] ]; diff --git a/resources/lang/es-CO/admin/settings/table.php b/resources/lang/es-CO/admin/settings/table.php index 22db5c84ed..f1fd5c550f 100644 --- a/resources/lang/es-CO/admin/settings/table.php +++ b/resources/lang/es-CO/admin/settings/table.php @@ -1,6 +1,6 @@ 'Created', - 'size' => 'Size', + 'created' => 'Creado', + 'size' => 'Tamaño', ); diff --git a/resources/lang/es-CO/admin/users/general.php b/resources/lang/es-CO/admin/users/general.php index 8bf6e3b24e..8638775748 100644 --- a/resources/lang/es-CO/admin/users/general.php +++ b/resources/lang/es-CO/admin/users/general.php @@ -17,8 +17,10 @@ return [ 'last_login' => 'Último acceso', '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' => 'Email List of All Assigned', - 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'email_assigned' => 'Lista de Correos Asignados', + 'user_notified' => 'Se ha enviado un correo al usuario con sus artículos actualmente asignados.', + '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', 'send_email_help' => 'Debe proporcionar una dirección de correo electrónico para este usuario para enviarle credenciales. Únicamente pueden enviarse 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', @@ -26,19 +28,27 @@ return [ 'two_factor_admin_optin_help' => 'La actual configuración de administración permite cumplimiento selectivo de autenticación de dos factores. ', 'two_factor_enrolled' => 'Dispositivo 2FA inscrito ', 'two_factor_active' => '2FA activo ', - 'user_deactivated' => 'User cannot login', - 'user_activated' => 'User can login', - 'activation_status_warning' => 'Do not change activation status', - 'group_memberships_helpblock' => 'Only superadmins may edit group memberships.', - 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', - 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', - 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', - 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', - 'update_user_assets_status' => 'Update all assets for these users to this status', - 'checkin_user_properties' => 'Check in all properties associated with these users', - 'remote_label' => 'This is a remote user', - 'remote' => 'Remote', - 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', - 'not_remote_label' => 'This is not a remote user', + 'user_deactivated' => 'Usuario no puede iniciar sesión', + 'user_activated' => 'Usuario puede iniciar sesión', + 'activation_status_warning' => 'No cambiar el estado de activación', + 'group_memberships_helpblock' => 'Sólo los superadministradores pueden editar pertenencias a grupo.', + '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ás a punto de disponibilizar TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de Super Admintradores 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', + '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.', + 'not_remote_label' => 'Este no es un usuario remoto', + 'vip_label' => 'Usuario VIP', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Crear un usuario', + 'create_user_page_explanation' => 'Esta es la información de la cuenta que usará para acceder al sitio por primera vez.', + 'email_credentials' => 'Credenciales de email', + 'email_credentials_text' => 'Enviar mis credenciales a la dirección de correo de arriba', + 'next_save_user' => 'Siguiente: Guardar usuario', + 'all_assigned_list_generation' => 'Generado el:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/es-CO/admin/users/message.php b/resources/lang/es-CO/admin/users/message.php index 4d533c9bb7..553636ace1 100644 --- a/resources/lang/es-CO/admin/users/message.php +++ b/resources/lang/es-CO/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Ha declinado con éxito este equipo.', 'bulk_manager_warn' => 'Sus usuarios han sido correctamente actualizados, de todos modos la entrada de administrador no fue guardada porque el administrador seleccionado también estaba en la lista de usuarios a ser editada, y los usuarios no pueden ser sus propior administradores. Vuelva a seleccionar los usuarios, excluyendo al administrador.', 'user_exists' => 'El Usuario ya existe!', - 'user_not_found' => 'Usuario [:id] no existe.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'El campo Usuario es obligatorio', 'user_password_required' => 'El password es obligatorio.', 'insufficient_permissions' => 'No tiene permiso.', @@ -14,8 +14,8 @@ return array( 'ldap_not_configured' => 'La integración con LDAP no ha sido configurada para esta instalación.', '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' => 'This user does not have an email address in their profile.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_email' => 'Este usuario no tiene una dirección de correo electrónico en su perfil.', + 'user_has_no_assets_assigned' => 'Este usuario no tiene ningún activo asignado', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Este usuario no tiene ningún correo electrónico.', + 'success' => 'El usuario ha sido notificado sobre su inventario actual.' ) ); \ No newline at end of file diff --git a/resources/lang/es-CO/auth/general.php b/resources/lang/es-CO/auth/general.php index a525440d17..dd8c671d6a 100644 --- a/resources/lang/es-CO/auth/general.php +++ b/resources/lang/es-CO/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Recordarme', 'username_help_top' => 'Ingresa tu nombre de usuario para enviar un enlace de restablecimiento de contraseña.', 'username_help_bottom' => 'Tu nombre de usuario y correo electrónico pueden ser el mismo, pero puede que no lo sean, dependiendo de tu configuración. Si no recuerdas tu nombre de usuario, ponte en contacto con el administrador.

A los nombres de usuario que no tengan un correo electrónico asociado, no se les enviará link de cambio de contraseña. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/es-CO/button.php b/resources/lang/es-CO/button.php index 3c47e5cda8..10cbfec787 100644 --- a/resources/lang/es-CO/button.php +++ b/resources/lang/es-CO/button.php @@ -4,7 +4,7 @@ return [ 'actions' => 'Acciones', 'add' => 'Agregar nuevo', 'cancel' => 'Cancelar', - 'checkin_and_delete' => 'Checkin All / Delete User', + 'checkin_and_delete' => 'Checkin Todos / Eliminar Usuario', 'delete' => 'Borrar', 'edit' => 'Editar', 'restore' => 'Restaurar', diff --git a/resources/lang/es-CO/general.php b/resources/lang/es-CO/general.php index 01e9106479..058f424e73 100644 --- a/resources/lang/es-CO/general.php +++ b/resources/lang/es-CO/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accesorios', 'activated' => 'Activado', + 'accepted_date' => 'Fecha aceptada', 'accessory' => 'Accesorio', 'accessory_report' => 'Reporte de Accesorios', 'action' => 'Acción', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Administrador', 'add_seats' => 'Sitios añadidos', - 'age' => "Age", + 'age' => "Edad", 'all_assets' => 'Todos los activos', 'all' => 'Todo', 'archived' => 'Archivado', @@ -27,7 +28,13 @@ return [ 'audit' => 'Auditoría', 'audit_report' => 'Registro de auditoría', '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.', + 'assigned_date' => 'Fecha asignada', 'assigned_to' => 'Asignado a :name', + 'assignee' => 'Asignado a', 'avatar_delete' => 'Eliminar Avatar', 'avatar_upload' => 'Subir Avatar', 'back' => 'Atrás', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Borrado masivo', 'bulk_actions' => 'Acciones masivas', - 'bulk_checkin_delete' => 'Registro de entrada masivo de activos de usuarios', + 'bulk_checkin_delete' => 'Checkin en masa / Eliminar usuarios', + 'byod' => 'BYOD', + 'byod_help' => 'Este dispositivo es propiedad del usuario', 'bystatus' => 'por Estado', 'cancel' => 'Cancelar', 'categories' => 'Categorías', @@ -79,10 +88,11 @@ return [ 'days' => 'días', 'days_to_next_audit' => 'Días a la próxima auditoría', 'date' => 'Fecha Compra', - 'debug_warning' => '¡Advertencia!', + 'debug_warning' => '¡Alerta!', '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' => 'Eliminar', 'delete_confirm' => '¿Estás seguro de eliminar :item?', + 'delete_confirm_no_undo' => '¿Está seguro que desea eliminar :item? Esto no se puede deshacer.', 'deleted' => 'Borrado', 'delete_seats' => 'Asientos eliminados', 'deletion_failed' => 'Error al eliminar', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif y svg. 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', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Mantenimientos de Equipo', 'item' => 'Item', 'item_name' => 'Nombre del ítem', + 'import_file' => 'importar archivo CSV', + 'import_type' => 'Tipo de importación CSV', 'insufficient_permissions' => '¡Permisos insuficientes!', 'kits' => 'Equipamiento predefinido', 'language' => 'Lenguaje', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Activos solicitados', 'request_canceled' => 'Solicitud Cancelada', 'save' => 'Guardar', + 'select_var' => 'Seleccionar :thing... ', // this will eventually replace all of our other selects 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', @@ -240,8 +254,8 @@ return [ 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', 'skin' => 'Tema', - 'slack_msg_note' => 'Se enviará un mensaje de slack', - 'slack_test_msg' => '¡Parece que tu integración de Slack con Snipe-IT está funcionando!', + '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!', 'some_features_disabled' => 'MODO DE DEMOSTRACIÓN: Algunas funciones estan desactivadas para esta instalación.', 'site_name' => 'Sitio', 'state' => 'Provincia', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => '¿Está seguro que desea eliminar', 'submit' => 'Enviar', 'target' => 'Objetivo', - 'toggle_navigation' => 'Alternar navegación', 'time_and_date_display' => 'Hora y fecha', 'total_assets' => 'Equipos', 'total_licenses' => 'licencias totales', @@ -281,9 +294,9 @@ return [ 'yes' => 'Si', 'zip' => 'Códio Postal', 'noimage' => 'Imagen no subida o imagen no encontrada.', - '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' => 'El archivo solicitado no existe en el servidor.', + 'file_upload_success' => '¡Archivo cargado correctamente!', + 'no_files_uploaded' => '¡Archivo cargado correctamente!', 'token_expired' => 'Su sesión ha expirado, Intente otra ves.', 'login_enabled' => 'Inicio de sesión habilitado', 'audit_due' => 'Auditoría pendiente', @@ -375,7 +388,8 @@ return [ '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 Administrador.', '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.', - 'set_to_null' => 'Eliminar valores para este activo|Eliminar valores para todos los :asset_count activos ', + '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', 'assets_by_status' => 'Activos por estado', 'assets_by_status_type' => 'Activos por tipo de estado', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', - 'placeholder_kit' => 'Seleccione un kit' + 'placeholder_kit' => 'Seleccione un kit', + 'file_not_found' => 'No se encontró el archivo', + 'preview_not_available' => '(sin vista previa)', + 'setup' => 'Configuración', + 'pre_flight' => 'Preparación', + 'skip_to_main_content' => 'Saltar al contenido principal', + 'toggle_navigation' => 'Alternar navegación', + 'alerts' => 'Alertas', + 'tasks_view_all' => 'Ver todas las tareas', + 'true' => 'Verdadero', + 'false' => 'Falso', + 'integration_option' => 'Opción de integración', + 'log_does_not_exist' => 'No existe ningún registro de eventos coincidente.', + '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 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.', + 'no_users_selected' => 'Ningún usuario seleccionado', + 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', + 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merged' => 'fusionados', + 'merged_log_this_user_into' => 'Fusionado este usuario (ID :to_id - :to_username) con el ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', + 'clear_and_save' => 'Limpiar y Guardar', + 'update_existing_values' => '¿Actualizar valores existentes?', + '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.', + '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' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', + 'back_before_importing' => '¿Copia de seguridad antes de importar?', + 'csv_header_field' => 'Campo de cabecera CSV', + 'import_field' => 'Importar campo', + 'sample_value' => 'Valor de ejemplo', + 'no_headers' => 'No se encontraron columnas', + 'error_in_import_file' => 'Hubo un error leyendo el archivo CSV: :error', + 'percent_complete' => ':percent % Completado', + 'errors_importing' => 'Se han producido algunos errores al importar: ', + 'warning' => 'ADVERTENCIA: :warning', + 'success_redirecting' => '"Éxito... Redirigiendo.', + 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Siguiente: Crear usuario', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirmar', + 'autoassign_licenses' => 'Auto-Asignar licencias', + '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' => '¿Estás seguro?', + 'cannot_be_deleted' => 'Este articulo no se puede eliminar', + 'undeployable_tooltip' => 'Este artículo no puede ser asignado. Compruebe la cantidad restante.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/es-CO/help.php b/resources/lang/es-CO/help.php index 9c71dfef87..e083c23aa4 100644 --- a/resources/lang/es-CO/help.php +++ b/resources/lang/es-CO/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Marcando esta casilla podrá editar el registro de activos reflejando su nueva ubicación. Dejándola sin marcar simplemente anotaremos la ubicación en el registro de auditoria.

Tenga en cuenta que si este activo ha si requerido, no se podrá cambiara la ubicación de la persona, Activo o ubicación en la que esta requerido.', + 'audit_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.', '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.', diff --git a/resources/lang/es-CO/localizations.php b/resources/lang/es-CO/localizations.php index be2c321861..63accfb143 100644 --- a/resources/lang/es-CO/localizations.php +++ b/resources/lang/es-CO/localizations.php @@ -2,314 +2,315 @@ return [ - 'select_language' => 'Select a language', + 'select_language' => 'Seleccione un idioma', 'languages' => [ - 'en'=> 'English, US', - 'en-GB'=> 'English, UK', + 'en'=> 'Inglés, EEUU', + 'en-GB'=> 'Inglés, Reino Unido', 'af'=> 'Afrikaans', - 'ar'=> 'Arabic', - 'bg'=> 'Bulgarian', - 'zh-CN'=> 'Chinese Simplified', - 'zh-TW'=> 'Chinese Traditional', - 'hr'=> 'Croatian', - 'cs'=> 'Czech', - 'da'=> 'Danish', - 'nl'=> 'Dutch', - 'en-ID'=> 'English, Indonesia', - 'et'=> 'Estonian', + 'ar'=> 'Árabe', + 'bg'=> 'Búlgaro', + 'zh-CN'=> 'Chino simplificado', + 'zh-TW'=> 'Chino tradicional', + 'hr'=> 'Croata', + 'cs'=> 'Checo', + 'da'=> 'Danés', + 'nl'=> 'Holandés', + 'en-ID'=> 'inglés de Indonesia', + 'et'=> 'Estonio', 'fil'=> 'Filipino', - 'fi'=> 'Finnish', - 'fr'=> 'French', - 'de'=> 'German', - 'de-i'=> 'German (Informal)', - 'el'=> 'Greek', - 'he'=> 'Hebrew', - 'hu'=> 'Hungarian', - 'is' => 'Icelandic', - 'id'=> 'Indonesian', - 'ga-IE'=> 'Irish', - 'it'=> 'Italian', - 'ja'=> 'Japanese', - 'ko'=> 'Korean', - 'lv'=>'Latvian', - 'lt'=> 'Lithuanian', - 'mk'=> 'Macedonian', - 'ms'=> 'Malay', - 'mi'=> 'Maori', - 'mn'=> 'Mongolian', - 'no'=> 'Norwegian', - 'fa'=> 'Persian', - 'pl'=> 'Polish', - 'pt-PT'=> 'Portuguese', - 'pt-BR'=> 'Portuguese, Brazilian', - 'ro'=> 'Romanian', - 'ru'=> 'Russian', - 'sr-CS' => 'Serbian (Latin)', - 'sl'=> 'Slovenian', - 'es-ES'=> 'Spanish', - 'es-CO'=> 'Spanish, Colombia', - 'es-MX'=> 'Spanish, Mexico', - 'es-VE'=> 'Spanish, Venezuela', - 'sv-SE'=> 'Swedish', + 'fi'=> 'Finlandés', + 'fr'=> 'Francés', + 'de'=> 'Alemán', + 'de-i'=> 'Alemán (informal)', + 'el'=> 'Griego', + 'he'=> 'Hebreo', + 'hu'=> 'Húngaro', + 'is' => 'Islandés', + 'id'=> 'Indonesio', + 'ga-IE'=> 'Irlandés', + 'it'=> 'Italiano', + 'ja'=> 'Japonés', + 'ko'=> 'Coreano', + 'lv'=>'Letón', + 'lt'=> 'Lituano', + 'mk'=> 'Macedonio', + 'ms'=> 'Malayo', + 'mi'=> 'Maorí', + 'mn'=> 'Mongol', + 'no'=> 'Noruego', + 'fa'=> 'Persa', + 'pl'=> 'Polaco', + 'pt-PT'=> 'Portugués', + 'pt-BR'=> 'Portugués, Brasileño', + 'ro'=> 'Rumano', + 'ru'=> 'Ruso', + 'sr-CS' => 'Serbio (Latino)', + 'sl'=> 'Esloveno', + 'es-ES'=> 'Español', + 'es-CO'=> 'Español, Colombia', + 'es-MX'=> 'Español, México', + 'es-VE'=> 'Español, Venezuela', + 'sv-SE'=> 'Sueco', 'tl'=> 'Tagalog', 'ta'=> 'Tamil', - 'th'=> 'Thai', - 'tr'=> 'Turkish', - 'uk'=> 'Ukranian', - 'vi'=> 'Vietnamese', - 'cy'=> 'Welsh', - 'zu'=> 'Zulu', + 'th'=> 'Tailandés', + 'tr'=> 'Turco', + 'uk'=> 'Ucraniano', + 'vi'=> 'Vietnamita', + 'cy'=> 'Galés', + 'zu'=> 'Zulú', ], - 'select_country' => 'Select a country', + 'select_country' => 'Seleccione un país', 'countries' => [ - 'AC'=>'Ascension Island', + 'AC'=>'Isla de Ascensión', 'AD'=>'Andorra', - 'AE'=>'United Arab Emirates', - 'AF'=>'Afghanistan', - 'AG'=>'Antigua And Barbuda', + 'AE'=>'Emiratos Árabes Unidos', + 'AF'=>'Afganistán', + 'AG'=>'Antigua y Barbuda', 'AI'=>'Anguilla', 'AL'=>'Albania', 'AM'=>'Armenia', - 'AN'=>'Netherlands Antilles', + 'AN'=>'Antillas Holandesas', 'AO'=>'Angola', - 'AQ'=>'Antarctica', + 'AQ'=>'La Antártida', 'AR'=>'Argentina', - 'AS'=>'American Samoa', + 'AS'=>'Samoa Americana', 'AT'=>'Austria', 'AU'=>'Australia', 'AW'=>'Aruba', - 'AX'=>'Ã…land', - 'AZ'=>'Azerbaijan', - 'BA'=>'Bosnia And Herzegovina', + 'AX'=>'Åland', + 'AZ'=>'Azerbaiyán', + 'BA'=>'Bosnia y Herzegovina', 'BB'=>'Barbados', - 'BE'=>'Belgium', + 'BE'=>'Bélgica', 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', 'BG'=>'Bulgaria', - 'BH'=>'Bahrain', + 'BH'=>'Bahréin', 'BI'=>'Burundi', - 'BJ'=>'Benin', + 'BJ'=>'Benín', 'BM'=>'Bermuda', - 'BN'=>'Brunei Darussalam', + 'BN'=>'Brunei', 'BO'=>'Bolivia', - 'BR'=>'Brazil', + 'BR'=>'Brasil', 'BS'=>'Bahamas', - 'BT'=>'Bhutan', - 'BV'=>'Bouvet Island', + 'BT'=>'Bután', + 'BV'=>'Isla Bouvet', 'BW'=>'Botswana', - 'BY'=>'Belarus', - 'BZ'=>'Belize', - 'CA'=>'Canada', - 'CC'=>'Cocos (Keeling) Islands', - 'CD'=>'Congo (Democratic Republic)', - 'CF'=>'Central African Republic', - 'CG'=>'Congo (Republic)', - 'CH'=>'Switzerland', - 'CI'=>'Côte d\'Ivoire', - 'CK'=>'Cook Islands', + 'BY'=>'Bielorrusia', + 'BZ'=>'Belice', + 'CA'=>'Canadá', + 'CC'=>'Islas Cocos (Keeling)', + 'CD'=>'Congo (República Democrática del)', + 'CF'=>'República Centroafricana', + 'CG'=>'Congo (República del)', + 'CH'=>'Suiza', + 'CI'=>'Costa de Marfil', + 'CK'=>'Islas Cook', 'CL'=>'Chile', - 'CM'=>'Cameroon', - 'CN'=>'People\'s Republic of China', + 'CM'=>'Camerún', + 'CN'=>'República Popular China', 'CO'=>'Colombia', 'CR'=>'Costa Rica', 'CU'=>'Cuba', - 'CV'=>'Cape Verde', - 'CX'=>'Christmas Island', - 'CY'=>'Cyprus', - 'CZ'=>'Czech Republic', - 'DE'=>'Germany', - 'DJ'=>'Djibouti', - 'DK'=>'Denmark', + 'CV'=>'Cabo Verde', + 'CX'=>'Isla de Navidad', + 'CY'=>'Chipre', + 'CZ'=>'República Checa', + 'DE'=>'Alemania', + 'DJ'=>'Yibuti', + 'DK'=>'Dinamarca', 'DM'=>'Dominica', - 'DO'=>'Dominican Republic', - 'DZ'=>'Algeria', + 'DO'=>'República Dominicana', + 'DZ'=>'Argelia', 'EC'=>'Ecuador', 'EE'=>'Estonia', - 'EG'=>'Egypt', + 'EG'=>'Egipto', 'ER'=>'Eritrea', - 'ES'=>'Spain', - 'ET'=>'Ethiopia', - 'EU'=>'European Union', - 'FI'=>'Finland', + 'ES'=>'España', + 'ET'=>'Etiopía', + 'EU'=>'Unión Europea', + 'FI'=>'Finlandia', 'FJ'=>'Fiji', - 'FK'=>'Falkland Islands (Malvinas)', - 'FM'=>'Micronesia, Federated States Of', - 'FO'=>'Faroe Islands', - 'FR'=>'France', - 'GA'=>'Gabon', - 'GD'=>'Grenada', + 'FK'=>'Islas Malvinas (Falkland)', + 'FM'=>'Estados Federados de la Micronesia', + 'FO'=>'Islas Faroe', + 'FR'=>'Francia', + 'GA'=>'Gabón', + 'GD'=>'Granada', 'GE'=>'Georgia', - 'GF'=>'French Guiana', + 'GF'=>'Guayana Francesa', 'GG'=>'Guernsey', 'GH'=>'Ghana', 'GI'=>'Gibraltar', - 'GL'=>'Greenland', + 'GL'=>'Groenlandia', 'GM'=>'Gambia', 'GN'=>'Guinea', - 'GP'=>'Guadeloupe', - 'GQ'=>'Equatorial Guinea', - 'GR'=>'Greece', - 'GS'=>'South Georgia And The South Sandwich Islands', + 'GP'=>'Guadalupe', + 'GQ'=>'Guinea Ecuatorial', + 'GR'=>'Grecia', + 'GS'=>'Islas Georgia del Sur y Sandwich del Sur', 'GT'=>'Guatemala', 'GU'=>'Guam', 'GW'=>'Guinea-Bissau', 'GY'=>'Guyana', 'HK'=>'Hong Kong', - 'HM'=>'Heard And Mc Donald Islands', + 'HM'=>'Islas Heard y Mc Donald', 'HN'=>'Honduras', - 'HR'=>'Croatia (local name: Hrvatska)', - 'HT'=>'Haiti', - 'HU'=>'Hungary', + 'HR'=>'Croacia (nombre local: Hrvatska)', + 'HT'=>'Haití', + 'HU'=>'Hungría', 'ID'=>'Indonesia', - 'IE'=>'Ireland', + 'IE'=>'Irlanda', 'IL'=>'Israel', - 'IM'=>'Isle of Man', + 'IM'=>'Isla de Man', 'IN'=>'India', - 'IO'=>'British Indian Ocean Territory', - 'IQ'=>'Iraq', - 'IR'=>'Iran, Islamic Republic Of', - 'IS'=>'Iceland', - 'IT'=>'Italy', + 'IO'=>'Territorio británico del océano Índico', + 'IQ'=>'Irak', + 'IR'=>'Irán, República Islámica Del', + 'IS'=>'Islandia', + 'IT'=>'Italia', 'JE'=>'Jersey', 'JM'=>'Jamaica', - 'JO'=>'Jordan', - 'JP'=>'Japan', - 'KE'=>'Kenya', + 'JO'=>'Jordania', + 'JP'=>'Japón', + 'KE'=>'Kenia', 'KG'=>'Kyrgyzstan', - 'KH'=>'Cambodia', + 'KH'=>'Camboya', 'KI'=>'Kiribati', - 'KM'=>'Comoros', - 'KN'=>'Saint Kitts And Nevis', - 'KR'=>'Korea, Republic Of', + 'KM'=>'Islas Comoros', + 'KN'=>'San Cristóbal y Nevis', + 'KR'=>'Corea, República de', 'KW'=>'Kuwait', - 'KY'=>'Cayman Islands', - 'KZ'=>'Kazakhstan', - 'LA'=>'Lao People\'s Democratic Republic', - 'LB'=>'Lebanon', - 'LC'=>'Saint Lucia', - 'LI'=>'Liechtenstein', + 'KY'=>'Islas Caimán', + 'KZ'=>'Kazajistán', + 'LA'=>'República Democrática Popular de Laos', + 'LB'=>'Líbano', + 'LC'=>'Santa Lucía', + 'LI'=>'Principado de Liechtenstein', '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', + 'LS'=>'Lesoto', + 'LT'=>'Lituania', + 'LU'=>'Luxemburgo', + 'LV'=>'Letonia', + 'LY'=>'Libia', + 'MA'=>'Marruecos', + 'MC'=>'Mónaco', + 'MD'=>'Moldova, República de', 'ME'=>'Montenegro', 'MG'=>'Madagascar', - 'MH'=>'Marshall Islands', - 'MK'=>'Macedonia, The Former Yugoslav Republic Of', - 'ML'=>'Mali', + 'MH'=>'Islas Marshall', + 'MK'=>'Macedonia, Ex República Yugoslava de', + 'ML'=>'Malí', 'MM'=>'Myanmar', 'MN'=>'Mongolia', - 'MO'=>'Macau', - 'MP'=>'Northern Mariana Islands', - 'MQ'=>'Martinique', + 'MO'=>'Macao', + 'MP'=>'Islas Marianas del Norte', + 'MQ'=>'Martinica', 'MR'=>'Mauritania', 'MS'=>'Montserrat', 'MT'=>'Malta', - 'MU'=>'Mauritius', - 'MV'=>'Maldives', + 'MU'=>'Mauricio', + 'MV'=>'Maldivas', 'MW'=>'Malawi', - 'MX'=>'Mexico', - 'MY'=>'Malaysia', + 'MX'=>'México', + 'MY'=>'Malasia', 'MZ'=>'Mozambique', 'NA'=>'Namibia', - 'NC'=>'New Caledonia', - 'NE'=>'Niger', - 'NF'=>'Norfolk Island', + 'NC'=>'Nueva Caledonia', + 'NE'=>'Níger', + 'NF'=>'Isla Norfolk', 'NG'=>'Nigeria', 'NI'=>'Nicaragua', - 'NL'=>'Netherlands', - 'NO'=>'Norway', + 'NL'=>'Países Bajos', + 'NO'=>'Noruega', 'NP'=>'Nepal', 'NR'=>'Nauru', 'NU'=>'Niue', - 'NZ'=>'New Zealand', + 'NZ'=>'Nueva Zelanda', 'OM'=>'Oman', 'PA'=>'Panama', - 'PE'=>'Peru', - 'PF'=>'French Polynesia', - 'PG'=>'Papua New Guinea', - 'PH'=>'Philippines, Republic of the', - 'PK'=>'Pakistan', - 'PL'=>'Poland', - 'PM'=>'St. Pierre And Miquelon', + 'PE'=>'Perú', + 'PF'=>'Polinesia Francesa', + 'PG'=>'Papúa Nueva Guinea', + 'PH'=>'Filipinas, República de las', + 'PK'=>'Pakistán', + 'PL'=>'Polonia', + 'PM'=>'San Pedro y Miquelón', 'PN'=>'Pitcairn', 'PR'=>'Puerto Rico', - 'PS'=>'Palestine', + 'PS'=>'Palestina', 'PT'=>'Portugal', 'PW'=>'Palau', 'PY'=>'Paraguay', - 'QA'=>'Qatar', - 'RE'=>'Reunion', - 'RO'=>'Romania', + 'QA'=>'Catar', + 'RE'=>'Reunión', + 'RO'=>'Rumania', 'RS'=>'Serbia', - 'RU'=>'Russian Federation', - 'RW'=>'Rwanda', - 'SA'=>'Saudi Arabia', - 'UK'=>'Scotland', - 'SB'=>'Solomon Islands', + 'RU'=>'Federación Rusa', + 'RW'=>'Ruanda', + 'SA'=>'Arabia Saudita', + 'UK'=>'Escocia', + 'SB'=>'Islas Salomón', 'SC'=>'Seychelles', - 'SD'=>'Sudan', - 'SE'=>'Sweden', - 'SG'=>'Singapore', + 'SS'=>'Sudán del Sur', + 'SD'=>'Sudán', + 'SE'=>'Suecia', + 'SG'=>'Singapur', 'SH'=>'St. Helena', - 'SI'=>'Slovenia', - 'SJ'=>'Svalbard And Jan Mayen Islands', - 'SK'=>'Slovakia (Slovak Republic)', - 'SL'=>'Sierra Leone', + 'SI'=>'Eslovenia', + 'SJ'=>'Islas Svalbard y Jan Mayen', + 'SK'=>'Eslovaquia (República Eslovaca)', + 'SL'=>'Sierra Leona', 'SM'=>'San Marino', 'SN'=>'Senegal', 'SO'=>'Somalia', 'SR'=>'Suriname', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', + 'ST'=>'Santo Tomé y Príncipe', + 'SU'=>'Unión Soviética', 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', + 'SY'=>'República Árabe Siria', 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', + 'TC'=>'Islas Turcas y Caicos', 'TD'=>'Chad', - 'TF'=>'French Southern Territories', + 'TF'=>'Territorios Franceses del Sur', 'TG'=>'Togo', - 'TH'=>'Thailand', + 'TH'=>'Tailandia', 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', - 'TI'=>'East Timor', + 'TI'=>'Timor Oriental', 'TM'=>'Turkmenistan', 'TN'=>'Tunisia', 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', - 'TR'=>'Turkey', - 'TT'=>'Trinidad And Tobago', + 'TP'=>'Timor Oriental (código antiguo)', + 'TR'=>'Turquía', + 'TT'=>'Trinidad y Tobago', 'TV'=>'Tuvalu', - 'TW'=>'Taiwan', - 'TZ'=>'Tanzania, United Republic Of', - 'UA'=>'Ukraine', + 'TW'=>'Taiwán', + 'TZ'=>'Tanzania, República Unida de', + 'UA'=>'Ucrania', 'UG'=>'Uganda', - 'UK'=>'United Kingdom', - 'US'=>'United States', - 'UM'=>'United States Minor Outlying Islands', + 'UK'=>'Reino Unido', + 'US'=>'Estados Unidos', + 'UM'=>'Islas Ultramarinas Menores de Estados Unidos', 'UY'=>'Uruguay', - 'UZ'=>'Uzbekistan', - 'VA'=>'Vatican City State (Holy See)', - 'VC'=>'Saint Vincent And The Grenadines', + 'UZ'=>'Uzbekistán', + 'VA'=>'Estado de Vatican (Santa Sede)', + 'VC'=>'San Vicente y las Granadinas', 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', - 'VN'=>'Viet Nam', + 'VG'=>'Islas Vírgenes Británicas', + 'VI'=>'Islas Vírgenes (EE. UU.)', + 'VN'=>'Vietnam', 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', + 'WF'=>'Islas Wallis y Futuna', 'WS'=>'Samoa', 'YE'=>'Yemen', 'YT'=>'Mayotte', - 'ZA'=>'South Africa', + 'ZA'=>'Sudáfrica', 'ZM'=>'Zambia', - 'ZW'=>'Zimbabwe', + 'ZW'=>'Zimbabue', ], ]; \ No newline at end of file diff --git a/resources/lang/es-CO/mail.php b/resources/lang/es-CO/mail.php index ebf86d5cce..7855099df4 100644 --- a/resources/lang/es-CO/mail.php +++ b/resources/lang/es-CO/mail.php @@ -2,7 +2,7 @@ return [ 'acceptance_asset_accepted' => 'Un usuario ha aceptado un artículo', - 'acceptance_asset_declined' => 'A user has declined an item', + 'acceptance_asset_declined' => 'Un usuario ha rechazado un artículo', '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', 'accessory_name' => 'Nombre de accesorio:', @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT con las credenciales siguientes:', 'login' => 'Entrar:', 'Low_Inventory_Report' => 'Reporte de inventario bajo', + 'inventory_report' => 'Informe de inventario', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo se ha extraído bajo su nombre, los detalles están a continuación.', @@ -61,7 +62,7 @@ return [ 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', '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.', - 'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.', + '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.', '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.', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Tus credenciales de Snipe-IT', 'Accessory_Checkin_Notification' => 'Accesorio devuelto', 'Asset_Checkin_Notification' => 'Activo devuelto', + 'Asset_Checkout_Notification' => 'Activo asignado', 'License_Checkin_Notification' => 'Licencia devuelta', 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', 'Expected_Checkin_Date' => 'Un activo asignado a ti debe ser devuelto en :date', 'your_assets' => 'Ver tus activos', + 'rights_reserved' => 'Todos los derechos reservados.', ]; diff --git a/resources/lang/es-CO/validation.php b/resources/lang/es-CO/validation.php index bc9d0b849d..46ae4dcdd8 100644 --- a/resources/lang/es-CO/validation.php +++ b/resources/lang/es-CO/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'El: atributo debe ser un archivo.', 'filled' => 'El campo: atributo debe tener un valor.', 'image' => ':attribute debe ser una imagen.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la empresa', 'json' => 'El atributo: debe ser una cadena JSON válida.', 'max' => [ 'numeric' => ':attribute no debe ser mayor que :max.', @@ -67,6 +67,8 @@ return [ 'array' => 'El atributo: debe tener al menos: elementos min.', ], 'starts_with' => 'El :attribute debe comenzar con uno de los siguientes: :values.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'not_in' => 'El :attribute seleccionado no es correcto.', 'numeric' => ':attribute debe ser un número.', 'present' => 'El campo: atributo debe estar presente.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Tu 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. + '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', + 'termination_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD', + 'expected_checkin.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-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', + ], /* diff --git a/resources/lang/es-ES/account/general.php b/resources/lang/es-ES/account/general.php index 7fc060a849..27118e2f3a 100644 --- a/resources/lang/es-ES/account/general.php +++ b/resources/lang/es-ES/account/general.php @@ -1,12 +1,12 @@ 'Personal API Keys', - '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:', + 'personal_api_keys' => 'Claves API personales', + 'api_key_warning' => 'Al generar un token API, asegúrate de copiarlo inmediatamente ya que + no será visible de nuevo.', + 'api_base_url' => 'La url base de tu API es:', '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.', + 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', + 'api_reference' => 'Por favor, revise la referencia API para + encontrar endpoints específicos de la API y documentación adicional de la API.', ); diff --git a/resources/lang/es-ES/admin/accessories/general.php b/resources/lang/es-ES/admin/accessories/general.php index 3da0c9ac83..2e60bd2dd2 100644 --- a/resources/lang/es-ES/admin/accessories/general.php +++ b/resources/lang/es-ES/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Actualizar Accesorio', 'use_default_eula' => 'En su lugar, use el EULA por defecto.', 'use_default_eula_disabled' => 'En su lugar, use el EULA por defecto. No esta configurado un EULA por defecto. Por favor agregue uno en Configuración.', + 'clone' => 'Clonar accesorio', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/es-ES/admin/accessories/message.php b/resources/lang/es-ES/admin/accessories/message.php index 4fedcf1d3f..bab607c0b2 100644 --- a/resources/lang/es-ES/admin/accessories/message.php +++ b/resources/lang/es-ES/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'El accesorio no fue retirado, por favor vuelva a intentarlo', 'success' => 'Accesorio retirado correctamente.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo 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 7d367a06e9..1318740d0f 100644 --- a/resources/lang/es-ES/admin/asset_maintenances/form.php +++ b/resources/lang/es-ES/admin/asset_maintenances/form.php @@ -3,7 +3,7 @@ return [ 'asset_maintenance_type' => 'Tipo de Mantenimiento de Equipo', 'title' => 'Título', - 'start_date' => 'Fecha de Inicio', + 'start_date' => 'Fecha de inicio', 'completion_date' => 'Fecha de Terminación', 'cost' => 'Costo', 'is_warranty' => 'Mejora de la Garantía', diff --git a/resources/lang/es-ES/admin/categories/message.php b/resources/lang/es-ES/admin/categories/message.php index 4878c7950d..633e43f626 100644 --- a/resources/lang/es-ES/admin/categories/message.php +++ b/resources/lang/es-ES/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'La categoría no se ha actualizado, intentalo de nuevo.', - 'success' => 'Categoría actualizada correctamente.' + 'success' => 'Categoría actualizada correctamente.', + 'cannot_change_category_type' => 'No se puede cambiar el tipo de categoría una vez que se ha creado', ), 'delete' => array( diff --git a/resources/lang/es-ES/admin/components/general.php b/resources/lang/es-ES/admin/components/general.php index 033bf16648..d715741aab 100644 --- a/resources/lang/es-ES/admin/components/general.php +++ b/resources/lang/es-ES/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', + 'checkin_limit' => 'La cantidad de checkins 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 fb8de539ce..6522e84a33 100644 --- a/resources/lang/es-ES/admin/components/message.php +++ b/resources/lang/es-ES/admin/components/message.php @@ -23,7 +23,8 @@ return array( '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.' + 'user_does_not_exist' => 'El usuario es invalido, intentalo de nuevo.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/es-ES/admin/consumables/message.php b/resources/lang/es-ES/admin/consumables/message.php index ad6c4421f9..fc09d1d879 100644 --- a/resources/lang/es-ES/admin/consumables/message.php +++ b/resources/lang/es-ES/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumible no fue retirado, por favor, inténtelo de nuevo', 'success' => 'Consumible fue retirado satisfactoriamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/es-ES/admin/custom_fields/general.php b/resources/lang/es-ES/admin/custom_fields/general.php index 5e4c580992..cb45efa4f7 100644 --- a/resources/lang/es-ES/admin/custom_fields/general.php +++ b/resources/lang/es-ES/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Usado Por Modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo grupo de campos', + 'update_fieldset' => 'Actualizar grupo de campos', + 'fieldset_does_not_exist' => 'Grupo de campos :id no existe', + 'fieldset_updated' => 'Grupo de campos actualizado', 'create_fieldset_title' => 'Crear nuevo grupo de campos', 'create_field' => 'Nuevo campo personalizado', 'create_field_title' => 'Crear nuevo campo personalizado', @@ -44,6 +47,8 @@ return [ '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' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Permitir al usuario ver estos valores en su página Ver Recursos asignados', + 'display_in_user_view_table' => 'Visible para el usuario', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/es-ES/admin/custom_fields/message.php b/resources/lang/es-ES/admin/custom_fields/message.php index ff376e9dff..88cd7d74dc 100644 --- a/resources/lang/es-ES/admin/custom_fields/message.php +++ b/resources/lang/es-ES/admin/custom_fields/message.php @@ -51,7 +51,7 @@ return array( 'fieldset_default_value' => array( - 'error' => 'Error validating default fieldset values.', + 'error' => 'Error al validar los valores por defecto del grupo de campos.', ), diff --git a/resources/lang/es-ES/admin/departments/message.php b/resources/lang/es-ES/admin/departments/message.php index b28de02e9d..a8df5f74ab 100644 --- a/resources/lang/es-ES/admin/departments/message.php +++ b/resources/lang/es-ES/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'El departamento no existe.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Ya existe un departamento con ese nombre en la ubicación de la empresa. 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. ', 'create' => array( 'error' => 'El departamento no fue creado, por favor intente de nuevo.', diff --git a/resources/lang/es-ES/admin/groups/message.php b/resources/lang/es-ES/admin/groups/message.php index 4b7f99ca54..42c2f3354d 100644 --- a/resources/lang/es-ES/admin/groups/message.php +++ b/resources/lang/es-ES/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'El grupo ya existe!', - 'group_not_found' => 'El grupo [:id] no existe.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'El campo nombre es obligatorio', 'success' => array( diff --git a/resources/lang/es-ES/admin/hardware/form.php b/resources/lang/es-ES/admin/hardware/form.php index 4d93c061a9..67ff33553e 100644 --- a/resources/lang/es-ES/admin/hardware/form.php +++ b/resources/lang/es-ES/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirmar eliminación masiva de bienes', + 'bulk_restore' => 'Confirm Bulk Restore Assets', '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_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Está a punto de borrar :asset_count.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', '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 activo.|Está a punto de editar las propiedades de :asset_count activos.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Actualizar sólo la ubicación predeterminada', 'asset_not_deployable' => 'Ese estado de activos no es desplegable. Este activo no puede ser verificado.', 'asset_deployable' => 'Ese estado de activos no es desplegable. Este activo no puede ser verificado.', - 'processing_spinner' => 'Procesando...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Información opcional', 'order_details' => 'Información relacionada con el pedido' ]; diff --git a/resources/lang/es-ES/admin/hardware/general.php b/resources/lang/es-ES/admin/hardware/general.php index 93d97c90d3..b26e13ade9 100644 --- a/resources/lang/es-ES/admin/hardware/general.php +++ b/resources/lang/es-ES/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Este activo fue eliminado.', 'edit' => 'Editar Equipo', 'model_deleted' => 'Este Modelo de activo fue eliminado. Debes restaurar este modelo antes de poder restaurar el Activo.', + 'model_invalid' => 'El modelo de este activo no es válido.', + 'model_invalid_fix' => 'El Activo debe ser editado para corregir esto antes de intentar retirarlo o asignarlo.', 'requestable' => 'Requerible', 'requested' => 'Solicitado', 'not_requestable' => 'No solicitable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restaurar equipo', 'pending' => 'Pendiente', 'undeployable' => 'No desplegable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Ver Equipo', 'csv_error' => 'Tiene un error en su archivo CSV:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ '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' + 'custom_export' => 'Personalizar exportación', + 'mfg_warranty_lookup' => 'Búsqueda del estado de Garantía para :manufacturer', ]; diff --git a/resources/lang/es-ES/admin/hardware/message.php b/resources/lang/es-ES/admin/hardware/message.php index fb8895c3bf..ee067a0e17 100644 --- a/resources/lang/es-ES/admin/hardware/message.php +++ b/resources/lang/es-ES/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'El equipo no fue restaurado, por favor intente nuevamente', 'success' => 'Equipo restaurado correctamente.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Tu archivo ha sido importado', 'file_delete_success' => 'Tu archivo ha sido eliminado con éxito', 'file_delete_error' => 'No pudimos eliminar tu archivo', + 'header_row_has_malformed_characters' => 'Uno o más atributos en la fila del encabezado contienen caracteres UTF-8 mal formados', + 'content_row_has_malformed_characters' => 'Uno o más atributos en la primera fila de contenido contienen caracteres UTF-8 mal formados', ], diff --git a/resources/lang/es-ES/admin/hardware/table.php b/resources/lang/es-ES/admin/hardware/table.php index 95e336ee5d..972f9f702d 100644 --- a/resources/lang/es-ES/admin/hardware/table.php +++ b/resources/lang/es-ES/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Operación', 'checkout_date' => 'Fecha de asignación', 'checkoutto' => 'Asignado', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Valor Actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', diff --git a/resources/lang/es-ES/admin/licenses/general.php b/resources/lang/es-ES/admin/licenses/general.php index 8a5d6db90e..ed7d6408e3 100644 --- a/resources/lang/es-ES/admin/licenses/general.php +++ b/resources/lang/es-ES/admin/licenses/general.php @@ -1,8 +1,8 @@ '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', + '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', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Licencias Software', 'user' => 'Usuario', 'view' => 'Ver Licencias', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/es-ES/admin/licenses/message.php b/resources/lang/es-ES/admin/licenses/message.php index 182b6ce2e1..869a00dd84 100644 --- a/resources/lang/es-ES/admin/licenses/message.php +++ b/resources/lang/es-ES/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'License does not exist or you do not have permission to view it.', + 'does_not_exist' => 'La licencia no existe o no tiene permiso para verla.', 'user_does_not_exist' => 'Usuario inexistente.', 'asset_does_not_exist' => 'El equipo que intentas asignar a esta licencia no existe.', 'owner_doesnt_match_asset' => 'El equipo al que estas intentando asignar esta licenciam, está asignado a un usuario diferente que el de la licencia.', diff --git a/resources/lang/es-ES/admin/locations/message.php b/resources/lang/es-ES/admin/locations/message.php index 50fa52a8d4..d9757b507d 100644 --- a/resources/lang/es-ES/admin/locations/message.php +++ b/resources/lang/es-ES/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Esta localización está asignada al menos a un usuario y no puede ser eliminada. ', 'assoc_assets' => 'Esta ubicacion se encuentra actualmente asociada con por lo menos un activo y no puede ser eliminada. Por favor, actualice sus activos para no referenciar esta ubicacion e intentelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicacion actualmente esta asociada con al menos una ubicacion hija y no puede ser eliminada. Por favor, actualice sus ubicaciones para no referenciar esta ubicacion e intentelo de nuevo. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Activos asignados', + 'current_location' => 'Ubicación Actual', 'create' => array( diff --git a/resources/lang/es-ES/admin/manufacturers/message.php b/resources/lang/es-ES/admin/manufacturers/message.php index 4a78b56349..aafde6a6a7 100644 --- a/resources/lang/es-ES/admin/manufacturers/message.php +++ b/resources/lang/es-ES/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Fabricante inexistente.', 'assoc_users' => 'Este Fabricante está asociado al menos a un modelo y no puede ser eliminado', diff --git a/resources/lang/es-ES/admin/manufacturers/table.php b/resources/lang/es-ES/admin/manufacturers/table.php index 972d33b71b..ed1956383c 100644 --- a/resources/lang/es-ES/admin/manufacturers/table.php +++ b/resources/lang/es-ES/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Email de soporte', 'support_phone' => 'Teléfono de soporte', 'support_url' => 'URL de soporte', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Actualizar Fabricante', 'url' => 'URL', diff --git a/resources/lang/es-ES/admin/models/general.php b/resources/lang/es-ES/admin/models/general.php index 2750cbcd51..02a4b68d6a 100644 --- a/resources/lang/es-ES/admin/models/general.php +++ b/resources/lang/es-ES/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Este modelo fue eliminado.', '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ás a punto de eliminar: los modelos de activo model_count.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', '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', diff --git a/resources/lang/es-ES/admin/models/message.php b/resources/lang/es-ES/admin/models/message.php index 53bea1807a..bc0dee6e9f 100644 --- a/resources/lang/es-ES/admin/models/message.php +++ b/resources/lang/es-ES/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Modelo inexistente.', + 'no_association' => 'NINGUN MODELO ASOCIADO.', + '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', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Modelo no actualizado, Intentalo de nuevo', - 'success' => 'Modelo actualizado.' + 'success' => 'Modelo actualizado.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Ningún campo fue seleccionado, por lo que nada ha sido actualizado.', - 'success' => 'Modelos actualizados.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Ningún modelo fue seleccionado, así que nada fue eliminado.', - 'success' => '¡:success_count modelo(s) eliminado(s)!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count modelo(s) se han eliminado, sin embargo, :fail_count no se pudieron eliminar debido a que aún tienen activos asociados a ellos.' ), diff --git a/resources/lang/es-ES/admin/reports/general.php b/resources/lang/es-ES/admin/reports/general.php index 19efc0b08a..55cc3c2853 100644 --- a/resources/lang/es-ES/admin/reports/general.php +++ b/resources/lang/es-ES/admin/reports/general.php @@ -2,9 +2,9 @@ return [ 'info' => 'Selecciona las opciones de tu informe de Equipos.', - 'deleted_user' => 'Deleted user', - 'send_reminder' => 'Send reminder', - 'reminder_sent' => 'Reminder sent', - 'acceptance_deleted' => 'Acceptance request deleted', - 'acceptance_request' => 'Acceptance request' + 'deleted_user' => 'Usuario eliminado', + 'send_reminder' => 'Enviar recordatorio', + 'reminder_sent' => 'Recordatorio enviado', + 'acceptance_deleted' => 'Solicitud de aceptación eliminada', + 'acceptance_request' => 'Solicitud de aceptación' ]; \ No newline at end of file diff --git a/resources/lang/es-ES/admin/settings/general.php b/resources/lang/es-ES/admin/settings/general.php index ed9cc1ea55..416af4a84b 100644 --- a/resources/lang/es-ES/admin/settings/general.php +++ b/resources/lang/es-ES/admin/settings/general.php @@ -10,10 +10,10 @@ return [ 'admin_cc_email' => 'Email CC', 'admin_cc_email_help' => 'Si deseas enviar una notificación por correo electrónico de las asignaciones de activos que se envían a los usuarios a una cuenta adicional, ingrésela aquí. De lo contrario, deja este campo en blanco.', 'is_ad' => 'Este es un servidor de Directorio Activo', - 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alerts' => 'Alertas', + 'alert_title' => 'Actualizar ajustes de notificación', 'alert_email' => 'Enviar alertas a', - 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', + 'alert_email_help' => 'Direcciones de correo electrónico o listas de distribución a las que desea que se envíen alertas, separadas por comas', 'alerts_enabled' => 'Alertas habilitadas', 'alert_interval' => 'Limite de alertas de expiración (en días)', 'alert_inv_threshold' => 'Umbral de alerta del inventario', @@ -21,20 +21,20 @@ return [ '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', 'audit_interval' => 'Intervalo de auditoría', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Si se le exige auditoría física regular de sus activos, ingrese 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 próxima fecha de auditoría.', 'audit_warning_days' => 'Umbral de advertencia de auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación debemos advertirle cuándo se deben auditar los activos?', - 'auto_increment_assets' => 'Generate auto-incrementing asset tags', + 'auto_increment_assets' => 'Generar etiquetas de activos autoincrementales', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this', + 'auto_incrementing_help' => 'Habilitar etiquetas de activos autoincrementales primero para establecer esto', 'backups' => 'Copias de seguridad', - 'backups_help' => 'Create, download, and restore backups ', - 'backups_restoring' => 'Restoring from Backup', - 'backups_upload' => 'Upload Backup', - 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', - 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', - 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', + 'backups_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' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_logged_out' => 'Todos los usuarios existentes, incluido usted, se cerrará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.)', @@ -57,7 +57,7 @@ return [ 'barcode_type' => 'Tipo de códigos de barras 2D', 'alt_barcode_type' => 'Tipo de códigos de barras 1D', 'email_logo_size' => 'Los logotipos cuadrados en el correo electrónico se ven mejor. ', - 'enabled' => 'Enabled', + 'enabled' => 'Habilitado', 'eula_settings' => 'Configuración EULA', 'eula_markdown' => 'Este EULS permite makrdown estilo Github.', 'favicon' => 'Favicon', @@ -66,8 +66,8 @@ return [ 'footer_text' => 'Texto Adicional de Pie de Página ', 'footer_text_help' => 'Este texto aparecerá en el lado derecho del pie de página. Los enlaces son permitidos usando el formato flavored de GitHub. Saltos de línea, cabeceras, imágenes, etc, pueden resultar impredecibles.', 'general_settings' => 'Configuración General', - 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy', - 'general_settings_help' => 'Default EULA and more', + 'general_settings_keywords' => 'soporte de la empresa, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, eula, tos, tablero, privacidad', + 'general_settings_help' => 'EULA por defecto y más', 'generate_backup' => 'Generar Respaldo', 'header_color' => 'Color de encabezado', 'info' => 'Estos parámetros permirten personalizar ciertos aspectos de la aplicación.', @@ -75,19 +75,22 @@ return [ 'label_logo_size' => 'Los logos cuadrados se ven mejor - se mostrarán en la parte superior derecha de cada etiqueta de activo. ', 'laravel' => 'Versión de Laravel', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', - 'ldap_help' => 'LDAP/Active Directory', - 'ldap_client_tls_key' => 'LDAP Client TLS Key', - 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', + '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' => 'LDAP/Directorio Activo', + 'ldap_client_tls_key' => 'Llave TLS del cliente LDAP', + 'ldap_client_tls_cert' => 'Certificado LDAP TLS del lado cliente', 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Ajustes LDAP', - 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', - 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + '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_key' => 'Llave TLS del cliente LDAP', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', '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_manager' => 'LDAP Manager', + '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_cert' => 'Certificado de validación SSL LDAP', @@ -111,20 +114,20 @@ return [ 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'This value is used to determine whether a synced user can login to Snipe-IT. It does not affect the ability to check items in or out to them, and should be the attribute name within your AD/LDAP, not the value.

If this field is set to a field name that does not exist in your AD/LDAP, or the value in the AD/LDAP field is set to 0 or false, user login will be disabled. If the value in the AD/LDAP field is set to 1 or true or any other text means the user can log in. When the field is blank in your AD, we respect the userAccountControl attribute, which usually allows non-suspended users to log in.', + '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_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'Email LDAP', - 'ldap_test' => 'Test LDAP', - 'ldap_test_sync' => 'Test LDAP Synchronization', + 'ldap_test' => 'Probar LDAP', + 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de Software', 'load_remote_text' => 'Scripts remotos', 'load_remote_help_text' => 'Esta instalación de Snipe-IT puede cargar scripts desde fuera.', - 'login' => 'Login Attempts', - 'login_attempt' => 'Login Attempt', - 'login_ip' => 'IP Address', - 'login_success' => 'Success?', - 'login_user_agent' => 'User Agent', - 'login_help' => 'List of attempted logins', + 'login' => 'Intentos de inicio de sesión', + 'login_attempt' => 'Intento de inicio de sesión', + 'login_ip' => 'Dirección IP', + 'login_success' => '¿Éxito?', + 'login_user_agent' => 'Navegador', + 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de inicio de sesión', 'login_note_help' => 'Opcionalmente incluya algunas oraciones en su pantalla de inicio de sesión, por ejemplo para ayudar a las personas que han encontrado un dispositivo perdido o robado. Este campo acepta Github con sabor markdown', 'login_remote_user_text' => 'Opciones de inicio de sesión de usuario remoto', @@ -145,19 +148,19 @@ return [ 'optional' => 'opcional', 'per_page' => 'Resultados por página', 'php' => 'Versión de PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'Información PHP', 'php_overview' => 'PHP', - 'php_overview_keywords' => 'phpinfo, system, info', - 'php_overview_help' => 'PHP System info', + '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_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.', - 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Password cannot be the same as first name, last name, email, or username', - 'pwd_secure_complexity_letters' => 'Require at least one letter', - 'pwd_secure_complexity_numbers' => 'Require at least one number', - 'pwd_secure_complexity_symbols' => 'Require at least one symbol', - 'pwd_secure_complexity_case_diff' => 'Require at least one uppercase and one lowercase', + 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el nombre, apellido, correo electrónico o nombre de usuario', + 'pwd_secure_complexity_letters' => 'Requiere al menos una letra', + 'pwd_secure_complexity_numbers' => 'Requiere al menos un número', + 'pwd_secure_complexity_symbols' => 'Requiere al menos un símbolo', + 'pwd_secure_complexity_case_diff' => 'Requiere al menos una mayúscula y una minúscula', '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', @@ -165,8 +168,8 @@ return [ 'qr_help' => 'Activa Códigos QR antes para poder ver esto', 'qr_text' => 'Texto Código QR', 'saml' => 'SAML', - 'saml_title' => 'Update SAML settings', - 'saml_help' => 'SAML settings', + 'saml_title' => 'Actualizar ajustes de SAML', + 'saml_help' => 'Configuración SAML', 'saml_enabled' => 'SAML activado', 'saml_integration' => 'Integración SAML', 'saml_sp_entityid' => 'ID de la entidad', @@ -178,7 +181,7 @@ return [ '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_forcelogin_label' => 'SAML Force Login', + '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_slo_label' => 'Cerrar sesión única SAML', @@ -186,7 +189,7 @@ return [ '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_download' => 'Download Metadata', + 'saml_download' => 'Descargar metadatos', 'setting' => 'Parámetro', 'settings' => 'Configuración', 'show_alerts_in_menu' => 'Mostrar alertas en el menú superior', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Nombre del sitio', + 'integrations' => 'Integraciones', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Nombre de bot en Slack', - 'slack_channel' => 'Canal en Slack', - 'slack_endpoint' => 'Terminal en Slack', - 'slack_integration' => 'Configuración Slack', - 'slack_integration_help' => 'La integración con Slack es opcional, sin embargo el endpoint y el canal son requeridos si desea usarlo. Para configurar la integración de Slack, primero debe crear un webhook entrante en su cuenta de Slack. Haga clic en el botón Probar Integración Slack para confirmar que su configuración es correcta antes de guardar. ', - 'slack_integration_help_button' => 'Una vez que haya guardado su información de Slack, aparecerá un botón de prueba.', - 'slack_test_help' => 'Pruebe si su integración de Slack está configurada correctamente. Debe Guardar Primero su configuracion Slack Actualizada.', + 'general_webhook' => 'Webhook general', + '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_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.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlaces de Soporte de Pie de Página ', 'support_footer_help' => 'Especifica quien ve los enlaces de información de Soporte y Manual de Usuarios de Snipe-IT', @@ -216,8 +224,8 @@ return [ 'update' => 'Actualizar Parámetros', 'value' => 'Valor', 'brand' => 'Marca', - 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', - 'brand_help' => 'Logo, Site Name', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, 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.', @@ -229,7 +237,7 @@ return [ 'privacy_policy' => 'Política de Privacidad', 'privacy_policy_link_help' => 'Si incluye una URL aquí, un enlace a su Política de Privacidad será incluido al pie de la aplicación y en cualquier correo electrónico que envíe el sistema, de conformidad con la ley GDPR. ', 'purge' => 'Purgar registros eliminados', - 'purge_deleted' => 'Purge Deleted ', + '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', @@ -275,51 +283,56 @@ return [ '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', 'username_format_help' => 'Esta configuración sólo será utilizada por el proceso de importación si no se proporciona un nombre de usuario y tenemos que generar un nombre de usuario para usted.', - 'oauth_title' => 'OAuth API Settings', + 'oauth_title' => 'Configuración de la API de OAuth', 'oauth' => 'OAuth', - 'oauth_help' => 'Oauth Endpoint Settings', - 'asset_tag_title' => 'Update Asset Tag Settings', - 'barcode_title' => 'Update Barcode Settings', - 'barcodes' => 'Barcodes', - 'barcodes_help_overview' => 'Barcode & QR settings', - 'barcodes_help' => 'This will attempt to delete cached barcodes. This would typically only be used if your barcode settings have changed, or if your Snipe-IT URL has changed. Barcodes will be re-generated when accessed next.', - 'barcodes_spinner' => 'Attempting to delete files...', - 'barcode_delete_cache' => 'Delete Barcode Cache', - 'branding_title' => 'Update Branding Settings', - 'general_title' => 'Update General Settings', - 'mail_test' => 'Send Test', - 'mail_test_help' => 'This will attempt to send a test mail to :replyto.', - 'filter_by_keyword' => 'Filter by setting keyword', - 'security' => 'Security', - 'security_title' => 'Update Security Settings', - 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', - 'security_help' => 'Two-factor, Password Restrictions', - 'groups_keywords' => 'permissions, permission groups, authorization', - 'groups_help' => 'Account permission groups', - 'localization' => 'Localization', - 'localization_title' => 'Update Localization Settings', - 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', - 'localization_help' => 'Language, date display', - 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', - 'asset_tags_help' => 'Incrementing and prefixes', - 'labels' => 'Labels', - 'labels_title' => 'Update Label Settings', - 'labels_help' => 'Label sizes & settings', - 'purge' => 'Purge', - 'purge_keywords' => 'permanently delete', - 'purge_help' => 'Purge Deleted Records', - 'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.', + 'oauth_help' => 'Configuración de Endpoint Oauth', + 'asset_tag_title' => 'Actualizar ajustes de etiqueta 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', + 'barcodes_help' => 'Esto intentará eliminar códigos de barras en caché. Esto normalmente sólo se usaría si la configuración del código de barras ha cambiado, o si la URL de Snipe-IT ha cambiado. Los códigos de barras se regenerarán cuando se acceda a continuación.', + 'barcodes_spinner' => 'Intentando eliminar archivos...', + 'barcode_delete_cache' => 'Borrar caché de código de barras', + 'branding_title' => 'Actualizar ajustes de marca', + 'general_title' => 'Actualizar ajustes generales', + 'mail_test' => 'Enviar prueba', + 'mail_test_help' => 'Esto intentará enviar un correo de prueba a :replyto.', + 'filter_by_keyword' => 'Filtrar por palabra clave', + 'security' => 'Seguridad', + 'security_title' => 'Actualizar ajustes de seguridad', + 'security_keywords' => 'contraseña, contraseñas, requisitos, dos factores, dos factores, contraseñas comunes, inicio de sesión remoto, autenticación', + 'security_help' => 'Restricciones de contraseña, dos factores', + 'groups_keywords' => 'permisos, grupos de permisos, autorización', + 'groups_help' => 'Grupos de permisos de cuenta', + 'localization' => 'Ubicación', + 'localization_title' => 'Actualizar ajustes de Ubicación', + 'localization_keywords' => 'ubicación, moneda, local, locale, zona horaria, zona horaria, internacional, internacionalización, idioma, idioma, traducción', + 'localization_help' => 'Idioma, fecha mostrada', + 'notifications' => 'Notificaciones', + 'notifications_help' => 'Configuración de alertas por email y auditoría', + 'asset_tags_help' => 'Incrementando y prefijos', + 'labels' => 'Etiquetas', + 'labels_title' => 'Actualizar ajustes de Etiquetas', + 'labels_help' => 'Tamaños de etiqueta & ajustes', + 'purge' => 'Purgar', + 'purge_keywords' => 'eliminar permanentemente', + 'purge_help' => 'Purgar registros eliminados', + 'ldap_extension_warning' => 'No parece que la extensión LDAP esté instalada o habilitada en este servidor. Todavía puede guardar su configuración, pero necesitará habilitar la extensión LDAP para PHP antes de que funcione la sincronización LDAP o el inicio de sesión.', 'ldap_ad' => 'LDAP/AD', - 'employee_number' => 'Employee Number', - 'create_admin_user' => 'Create a User ::', - 'create_admin_success' => 'Success! Your admin user has been added!', - 'create_admin_redirect' => 'Click here to go to your app login!', - 'setup_migrations' => 'Database Migrations ::', - 'setup_no_migrations' => 'There was nothing to migrate. Your database tables were already set up!', - 'setup_successful_migrations' => 'Your database tables have been created', - 'setup_migration_output' => 'Migration output:', - 'setup_migration_create_user' => 'Next: Create User', - 'ldap_settings_link' => 'LDAP Settings Page', - 'slack_test' => 'Test Integration', + 'employee_number' => 'Número de empleado', + 'create_admin_user' => 'Crear Usuario ::', + 'create_admin_success' => '¡Éxito! ¡Tu 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!', + 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', + 'setup_migration_output' => 'Salida de Migración:', + 'setup_migration_create_user' => 'Siguiente: Crear usuario', + 'ldap_settings_link' => 'Página de ajustes LDAP', + 'slack_test' => 'Prueba de integración de ', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/es-ES/admin/settings/message.php b/resources/lang/es-ES/admin/settings/message.php index 89eb5b4553..c11560074e 100644 --- a/resources/lang/es-ES/admin/settings/message.php +++ b/resources/lang/es-ES/admin/settings/message.php @@ -11,8 +11,8 @@ return [ 'file_deleted' => 'El archivo de respaldo fue eliminado satisfactoriamente. ', 'generated' => 'Un nuevo archivo de respaldo fue creado satisfactoriamente.', 'file_not_found' => 'El archivo de respaldo no se ha encontrado en el servidor.', - 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', - 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' + 'restore_warning' => 'Sí, restaurarlo. Reconozco que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', + 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], 'purge' => [ 'error' => 'Ha ocurrido un error mientras se realizaba el purgado. ', @@ -20,24 +20,25 @@ return [ 'success' => 'Registros eliminados correctamente purgados.', ], 'mail' => [ - 'sending' => 'Sending Test Email...', - 'success' => 'Mail sent!', - 'error' => 'Mail could not be sent.', - 'additional' => 'No additional error message provided. Check your mail settings and your app log.' + '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.' ], 'ldap' => [ - 'testing' => 'Testing LDAP Connection, Binding & Query ...', - '500' => '500 Server Error. Please check your server logs for more information.', - 'error' => 'Something went wrong :(', - 'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:', - 'testing_authentication' => 'Testing LDAP Authentication...', - 'authentication_success' => 'User authenticated against LDAP successfully!' + 'testing' => 'Probando conexión LDAP, Binding & Query ...', + '500' => 'Error 500 del servidor. Por favor, compruebe los registros 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...', + 'authentication_success' => 'Usuario autenticado contra LDAP con éxito!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', - 'success_pt1' => 'Success! Check the ', - 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', - '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'webhook' => [ + 'sending' => 'Enviando mensaje de prueba de :app...', + 'success_pt1' => '¡Éxito! Comprueba 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', + 'error_misc' => 'Algo salió mal. :( ', ] ]; diff --git a/resources/lang/es-ES/admin/settings/table.php b/resources/lang/es-ES/admin/settings/table.php index 22db5c84ed..f1fd5c550f 100644 --- a/resources/lang/es-ES/admin/settings/table.php +++ b/resources/lang/es-ES/admin/settings/table.php @@ -1,6 +1,6 @@ 'Created', - 'size' => 'Size', + 'created' => 'Creado', + 'size' => 'Tamaño', ); diff --git a/resources/lang/es-ES/admin/users/general.php b/resources/lang/es-ES/admin/users/general.php index 8bf6e3b24e..8638775748 100644 --- a/resources/lang/es-ES/admin/users/general.php +++ b/resources/lang/es-ES/admin/users/general.php @@ -17,8 +17,10 @@ return [ 'last_login' => 'Último acceso', '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' => 'Email List of All Assigned', - 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'email_assigned' => 'Lista de Correos Asignados', + 'user_notified' => 'Se ha enviado un correo al usuario con sus artículos actualmente asignados.', + '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', 'send_email_help' => 'Debe proporcionar una dirección de correo electrónico para este usuario para enviarle credenciales. Únicamente pueden enviarse 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', @@ -26,19 +28,27 @@ return [ 'two_factor_admin_optin_help' => 'La actual configuración de administración permite cumplimiento selectivo de autenticación de dos factores. ', 'two_factor_enrolled' => 'Dispositivo 2FA inscrito ', 'two_factor_active' => '2FA activo ', - 'user_deactivated' => 'User cannot login', - 'user_activated' => 'User can login', - 'activation_status_warning' => 'Do not change activation status', - 'group_memberships_helpblock' => 'Only superadmins may edit group memberships.', - 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', - 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', - 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', - 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', - 'update_user_assets_status' => 'Update all assets for these users to this status', - 'checkin_user_properties' => 'Check in all properties associated with these users', - 'remote_label' => 'This is a remote user', - 'remote' => 'Remote', - 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', - 'not_remote_label' => 'This is not a remote user', + 'user_deactivated' => 'Usuario no puede iniciar sesión', + 'user_activated' => 'Usuario puede iniciar sesión', + 'activation_status_warning' => 'No cambiar el estado de activación', + 'group_memberships_helpblock' => 'Sólo los superadministradores pueden editar pertenencias a grupo.', + '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ás a punto de disponibilizar TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de Super Admintradores 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', + '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.', + 'not_remote_label' => 'Este no es un usuario remoto', + 'vip_label' => 'Usuario VIP', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Crear un usuario', + 'create_user_page_explanation' => 'Esta es la información de la cuenta que usará para acceder al sitio por primera vez.', + 'email_credentials' => 'Credenciales de email', + 'email_credentials_text' => 'Enviar mis credenciales a la dirección de correo de arriba', + 'next_save_user' => 'Siguiente: Guardar usuario', + 'all_assigned_list_generation' => 'Generado el:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/es-ES/admin/users/message.php b/resources/lang/es-ES/admin/users/message.php index 4d533c9bb7..553636ace1 100644 --- a/resources/lang/es-ES/admin/users/message.php +++ b/resources/lang/es-ES/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Ha declinado con éxito este equipo.', 'bulk_manager_warn' => 'Sus usuarios han sido correctamente actualizados, de todos modos la entrada de administrador no fue guardada porque el administrador seleccionado también estaba en la lista de usuarios a ser editada, y los usuarios no pueden ser sus propior administradores. Vuelva a seleccionar los usuarios, excluyendo al administrador.', 'user_exists' => 'El Usuario ya existe!', - 'user_not_found' => 'Usuario [:id] no existe.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'El campo Usuario es obligatorio', 'user_password_required' => 'El password es obligatorio.', 'insufficient_permissions' => 'No tiene permiso.', @@ -14,8 +14,8 @@ return array( 'ldap_not_configured' => 'La integración con LDAP no ha sido configurada para esta instalación.', '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' => 'This user does not have an email address in their profile.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_email' => 'Este usuario no tiene una dirección de correo electrónico en su perfil.', + 'user_has_no_assets_assigned' => 'Este usuario no tiene ningún activo asignado', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Este usuario no tiene ningún correo electrónico.', + 'success' => 'El usuario ha sido notificado sobre su inventario actual.' ) ); \ No newline at end of file diff --git a/resources/lang/es-ES/auth/general.php b/resources/lang/es-ES/auth/general.php index cd608e5837..790a27e71e 100644 --- a/resources/lang/es-ES/auth/general.php +++ b/resources/lang/es-ES/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Recordarme', 'username_help_top' => 'Introduzca 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.

A los usuarios sin una dirección de correo electrónico asociada no se enviará por correo electrónico un enlace de restablecimiento de contraseña. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/es-ES/button.php b/resources/lang/es-ES/button.php index 3c47e5cda8..10cbfec787 100644 --- a/resources/lang/es-ES/button.php +++ b/resources/lang/es-ES/button.php @@ -4,7 +4,7 @@ return [ 'actions' => 'Acciones', 'add' => 'Agregar nuevo', 'cancel' => 'Cancelar', - 'checkin_and_delete' => 'Checkin All / Delete User', + 'checkin_and_delete' => 'Checkin Todos / Eliminar Usuario', 'delete' => 'Borrar', 'edit' => 'Editar', 'restore' => 'Restaurar', diff --git a/resources/lang/es-ES/general.php b/resources/lang/es-ES/general.php index cdcbf47283..ac65f92b95 100644 --- a/resources/lang/es-ES/general.php +++ b/resources/lang/es-ES/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accesorios', 'activated' => 'Activado', + 'accepted_date' => 'Fecha aceptada', 'accessory' => 'Accesorio', 'accessory_report' => 'Reporte de Accesorios', 'action' => 'Acción', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Administrador', 'add_seats' => 'Sitios añadidos', - 'age' => "Age", + 'age' => "Edad", 'all_assets' => 'Todos los Equipos', 'all' => 'Todos los', 'archived' => 'Archivado', @@ -27,7 +28,13 @@ return [ 'audit' => 'Auditoría', 'audit_report' => 'Registro de auditoría', 'assets' => 'Equipos', + '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.', + 'assigned_date' => 'Fecha asignada', 'assigned_to' => 'Asignado a :name', + 'assignee' => 'Asignado a', 'avatar_delete' => 'Eliminar Avatar', 'avatar_upload' => 'Subir Avatar', 'back' => 'Atras', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Borrado masivo', 'bulk_actions' => 'Acciones masivas', - 'bulk_checkin_delete' => 'Registro de entrada masivo de activos de usuarios', + 'bulk_checkin_delete' => 'Checkin en masa / Eliminar usuarios', + 'byod' => 'BYOD', + 'byod_help' => 'Este dispositivo es propiedad del usuario', 'bystatus' => 'por Estado', 'cancel' => 'Cancelar', 'categories' => 'Categorías', @@ -83,6 +92,7 @@ return [ '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ás seguro de eliminar :item?', + 'delete_confirm_no_undo' => '¿Está seguro que desea eliminar :item? Esto no se puede deshacer.', 'deleted' => 'Borrado', 'delete_seats' => 'Asientos eliminados', 'deletion_failed' => 'Error al eliminar', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif y svg. 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', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Mantenimientos de Equipo', 'item' => 'Item', 'item_name' => 'Nombre del ítem', + 'import_file' => 'importar archivo CSV', + 'import_type' => 'Tipo de importación CSV', 'insufficient_permissions' => '¡Permisos insuficientes!', 'kits' => 'Equipamiento predefinido', 'language' => 'Lenguaje', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Activos solicitados', 'request_canceled' => 'Solicitud Cancelada', 'save' => 'Guardar', + 'select_var' => 'Seleccionar :thing... ', // this will eventually replace all of our other selects 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', @@ -240,8 +254,8 @@ return [ 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', 'skin' => 'Tema', - 'slack_msg_note' => 'Se enviará un mensaje de slack', - 'slack_test_msg' => '¡Parece que tu integración de Slack con Snipe-IT está funcionando!', + '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!', 'some_features_disabled' => 'MODO DE DEMOSTRACIÓN: Algunas funciones estan desactivadas para esta instalación.', 'site_name' => 'Sitio', 'state' => 'Provincia', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => '¿Está seguro que desea eliminar', 'submit' => 'Enviar', 'target' => 'Objetivo', - 'toggle_navigation' => 'Alternar navegación', 'time_and_date_display' => 'Hora y fecha', 'total_assets' => 'Equipos', 'total_licenses' => 'licencias totales', @@ -281,9 +294,9 @@ return [ 'yes' => 'Si', 'zip' => 'Códio Postal', 'noimage' => 'Imagen no subida o imagen no encontrada.', - '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' => 'El archivo solicitado no existe en el servidor.', + 'file_upload_success' => '¡Archivo cargado correctamente!', + 'no_files_uploaded' => '¡Archivo cargado correctamente!', 'token_expired' => 'Su sesión ha expirado, Intente otra ves.', 'login_enabled' => 'Inicio de sesión habilitado', 'audit_due' => 'Auditoría pendiente', @@ -375,7 +388,8 @@ return [ '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 Administrador.', '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.', - 'set_to_null' => 'Eliminar valores para este activo|Eliminar valores para todos los :asset_count activos ', + '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', 'assets_by_status' => 'Activos por estado', 'assets_by_status_type' => 'Activos por tipo de estado', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', - 'placeholder_kit' => 'Seleccione un kit' + 'placeholder_kit' => 'Seleccione un kit', + 'file_not_found' => 'No se encontró el archivo', + 'preview_not_available' => '(sin vista previa)', + 'setup' => 'Configuración', + 'pre_flight' => 'Preparación', + 'skip_to_main_content' => 'Saltar al contenido principal', + 'toggle_navigation' => 'Alternar navegación', + 'alerts' => 'Alertas', + 'tasks_view_all' => 'Ver todas las tareas', + 'true' => 'Verdadero', + 'false' => 'Falso', + 'integration_option' => 'Opción de integración', + 'log_does_not_exist' => 'No existe ningún registro de eventos coincidente.', + '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 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.', + 'no_users_selected' => 'Ningún usuario seleccionado', + 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', + 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merged' => 'fusionados', + 'merged_log_this_user_into' => 'Fusionado este usuario (ID :to_id - :to_username) con el ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', + 'clear_and_save' => 'Limpiar y Guardar', + 'update_existing_values' => '¿Actualizar valores existentes?', + '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.', + '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' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', + 'back_before_importing' => '¿Copia de seguridad antes de importar?', + 'csv_header_field' => 'Campo de cabecera CSV', + 'import_field' => 'Importar campo', + 'sample_value' => 'Valor de ejemplo', + 'no_headers' => 'No se encontraron columnas', + 'error_in_import_file' => 'Hubo un error leyendo el archivo CSV: :error', + 'percent_complete' => ':percent % Completado', + 'errors_importing' => 'Se han producido algunos errores al importar: ', + 'warning' => 'ADVERTENCIA: :warning', + 'success_redirecting' => '"Éxito... Redirigiendo.', + 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Siguiente: Crear usuario', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirmar', + 'autoassign_licenses' => 'Auto-Asignar licencias', + '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' => '¿Estás seguro?', + 'cannot_be_deleted' => 'Este articulo no se puede eliminar', + 'undeployable_tooltip' => 'Este artículo no puede ser asignado. Compruebe la cantidad restante.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/es-ES/help.php b/resources/lang/es-ES/help.php index 9c71dfef87..e083c23aa4 100644 --- a/resources/lang/es-ES/help.php +++ b/resources/lang/es-ES/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Marcando esta casilla podrá editar el registro de activos reflejando su nueva ubicación. Dejándola sin marcar simplemente anotaremos la ubicación en el registro de auditoria.

Tenga en cuenta que si este activo ha si requerido, no se podrá cambiara la ubicación de la persona, Activo o ubicación en la que esta requerido.', + 'audit_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.', '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.', diff --git a/resources/lang/es-ES/localizations.php b/resources/lang/es-ES/localizations.php index be2c321861..63accfb143 100644 --- a/resources/lang/es-ES/localizations.php +++ b/resources/lang/es-ES/localizations.php @@ -2,314 +2,315 @@ return [ - 'select_language' => 'Select a language', + 'select_language' => 'Seleccione un idioma', 'languages' => [ - 'en'=> 'English, US', - 'en-GB'=> 'English, UK', + 'en'=> 'Inglés, EEUU', + 'en-GB'=> 'Inglés, Reino Unido', 'af'=> 'Afrikaans', - 'ar'=> 'Arabic', - 'bg'=> 'Bulgarian', - 'zh-CN'=> 'Chinese Simplified', - 'zh-TW'=> 'Chinese Traditional', - 'hr'=> 'Croatian', - 'cs'=> 'Czech', - 'da'=> 'Danish', - 'nl'=> 'Dutch', - 'en-ID'=> 'English, Indonesia', - 'et'=> 'Estonian', + 'ar'=> 'Árabe', + 'bg'=> 'Búlgaro', + 'zh-CN'=> 'Chino simplificado', + 'zh-TW'=> 'Chino tradicional', + 'hr'=> 'Croata', + 'cs'=> 'Checo', + 'da'=> 'Danés', + 'nl'=> 'Holandés', + 'en-ID'=> 'inglés de Indonesia', + 'et'=> 'Estonio', 'fil'=> 'Filipino', - 'fi'=> 'Finnish', - 'fr'=> 'French', - 'de'=> 'German', - 'de-i'=> 'German (Informal)', - 'el'=> 'Greek', - 'he'=> 'Hebrew', - 'hu'=> 'Hungarian', - 'is' => 'Icelandic', - 'id'=> 'Indonesian', - 'ga-IE'=> 'Irish', - 'it'=> 'Italian', - 'ja'=> 'Japanese', - 'ko'=> 'Korean', - 'lv'=>'Latvian', - 'lt'=> 'Lithuanian', - 'mk'=> 'Macedonian', - 'ms'=> 'Malay', - 'mi'=> 'Maori', - 'mn'=> 'Mongolian', - 'no'=> 'Norwegian', - 'fa'=> 'Persian', - 'pl'=> 'Polish', - 'pt-PT'=> 'Portuguese', - 'pt-BR'=> 'Portuguese, Brazilian', - 'ro'=> 'Romanian', - 'ru'=> 'Russian', - 'sr-CS' => 'Serbian (Latin)', - 'sl'=> 'Slovenian', - 'es-ES'=> 'Spanish', - 'es-CO'=> 'Spanish, Colombia', - 'es-MX'=> 'Spanish, Mexico', - 'es-VE'=> 'Spanish, Venezuela', - 'sv-SE'=> 'Swedish', + 'fi'=> 'Finlandés', + 'fr'=> 'Francés', + 'de'=> 'Alemán', + 'de-i'=> 'Alemán (informal)', + 'el'=> 'Griego', + 'he'=> 'Hebreo', + 'hu'=> 'Húngaro', + 'is' => 'Islandés', + 'id'=> 'Indonesio', + 'ga-IE'=> 'Irlandés', + 'it'=> 'Italiano', + 'ja'=> 'Japonés', + 'ko'=> 'Coreano', + 'lv'=>'Letón', + 'lt'=> 'Lituano', + 'mk'=> 'Macedonio', + 'ms'=> 'Malayo', + 'mi'=> 'Maorí', + 'mn'=> 'Mongol', + 'no'=> 'Noruego', + 'fa'=> 'Persa', + 'pl'=> 'Polaco', + 'pt-PT'=> 'Portugués', + 'pt-BR'=> 'Portugués, Brasileño', + 'ro'=> 'Rumano', + 'ru'=> 'Ruso', + 'sr-CS' => 'Serbio (Latino)', + 'sl'=> 'Esloveno', + 'es-ES'=> 'Español', + 'es-CO'=> 'Español, Colombia', + 'es-MX'=> 'Español, México', + 'es-VE'=> 'Español, Venezuela', + 'sv-SE'=> 'Sueco', 'tl'=> 'Tagalog', 'ta'=> 'Tamil', - 'th'=> 'Thai', - 'tr'=> 'Turkish', - 'uk'=> 'Ukranian', - 'vi'=> 'Vietnamese', - 'cy'=> 'Welsh', - 'zu'=> 'Zulu', + 'th'=> 'Tailandés', + 'tr'=> 'Turco', + 'uk'=> 'Ucraniano', + 'vi'=> 'Vietnamita', + 'cy'=> 'Galés', + 'zu'=> 'Zulú', ], - 'select_country' => 'Select a country', + 'select_country' => 'Seleccione un país', 'countries' => [ - 'AC'=>'Ascension Island', + 'AC'=>'Isla de Ascensión', 'AD'=>'Andorra', - 'AE'=>'United Arab Emirates', - 'AF'=>'Afghanistan', - 'AG'=>'Antigua And Barbuda', + 'AE'=>'Emiratos Árabes Unidos', + 'AF'=>'Afganistán', + 'AG'=>'Antigua y Barbuda', 'AI'=>'Anguilla', 'AL'=>'Albania', 'AM'=>'Armenia', - 'AN'=>'Netherlands Antilles', + 'AN'=>'Antillas Holandesas', 'AO'=>'Angola', - 'AQ'=>'Antarctica', + 'AQ'=>'La Antártida', 'AR'=>'Argentina', - 'AS'=>'American Samoa', + 'AS'=>'Samoa Americana', 'AT'=>'Austria', 'AU'=>'Australia', 'AW'=>'Aruba', - 'AX'=>'Ã…land', - 'AZ'=>'Azerbaijan', - 'BA'=>'Bosnia And Herzegovina', + 'AX'=>'Åland', + 'AZ'=>'Azerbaiyán', + 'BA'=>'Bosnia y Herzegovina', 'BB'=>'Barbados', - 'BE'=>'Belgium', + 'BE'=>'Bélgica', 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', 'BG'=>'Bulgaria', - 'BH'=>'Bahrain', + 'BH'=>'Bahréin', 'BI'=>'Burundi', - 'BJ'=>'Benin', + 'BJ'=>'Benín', 'BM'=>'Bermuda', - 'BN'=>'Brunei Darussalam', + 'BN'=>'Brunei', 'BO'=>'Bolivia', - 'BR'=>'Brazil', + 'BR'=>'Brasil', 'BS'=>'Bahamas', - 'BT'=>'Bhutan', - 'BV'=>'Bouvet Island', + 'BT'=>'Bután', + 'BV'=>'Isla Bouvet', 'BW'=>'Botswana', - 'BY'=>'Belarus', - 'BZ'=>'Belize', - 'CA'=>'Canada', - 'CC'=>'Cocos (Keeling) Islands', - 'CD'=>'Congo (Democratic Republic)', - 'CF'=>'Central African Republic', - 'CG'=>'Congo (Republic)', - 'CH'=>'Switzerland', - 'CI'=>'Côte d\'Ivoire', - 'CK'=>'Cook Islands', + 'BY'=>'Bielorrusia', + 'BZ'=>'Belice', + 'CA'=>'Canadá', + 'CC'=>'Islas Cocos (Keeling)', + 'CD'=>'Congo (República Democrática del)', + 'CF'=>'República Centroafricana', + 'CG'=>'Congo (República del)', + 'CH'=>'Suiza', + 'CI'=>'Costa de Marfil', + 'CK'=>'Islas Cook', 'CL'=>'Chile', - 'CM'=>'Cameroon', - 'CN'=>'People\'s Republic of China', + 'CM'=>'Camerún', + 'CN'=>'República Popular China', 'CO'=>'Colombia', 'CR'=>'Costa Rica', 'CU'=>'Cuba', - 'CV'=>'Cape Verde', - 'CX'=>'Christmas Island', - 'CY'=>'Cyprus', - 'CZ'=>'Czech Republic', - 'DE'=>'Germany', - 'DJ'=>'Djibouti', - 'DK'=>'Denmark', + 'CV'=>'Cabo Verde', + 'CX'=>'Isla de Navidad', + 'CY'=>'Chipre', + 'CZ'=>'República Checa', + 'DE'=>'Alemania', + 'DJ'=>'Yibuti', + 'DK'=>'Dinamarca', 'DM'=>'Dominica', - 'DO'=>'Dominican Republic', - 'DZ'=>'Algeria', + 'DO'=>'República Dominicana', + 'DZ'=>'Argelia', 'EC'=>'Ecuador', 'EE'=>'Estonia', - 'EG'=>'Egypt', + 'EG'=>'Egipto', 'ER'=>'Eritrea', - 'ES'=>'Spain', - 'ET'=>'Ethiopia', - 'EU'=>'European Union', - 'FI'=>'Finland', + 'ES'=>'España', + 'ET'=>'Etiopía', + 'EU'=>'Unión Europea', + 'FI'=>'Finlandia', 'FJ'=>'Fiji', - 'FK'=>'Falkland Islands (Malvinas)', - 'FM'=>'Micronesia, Federated States Of', - 'FO'=>'Faroe Islands', - 'FR'=>'France', - 'GA'=>'Gabon', - 'GD'=>'Grenada', + 'FK'=>'Islas Malvinas (Falkland)', + 'FM'=>'Estados Federados de la Micronesia', + 'FO'=>'Islas Faroe', + 'FR'=>'Francia', + 'GA'=>'Gabón', + 'GD'=>'Granada', 'GE'=>'Georgia', - 'GF'=>'French Guiana', + 'GF'=>'Guayana Francesa', 'GG'=>'Guernsey', 'GH'=>'Ghana', 'GI'=>'Gibraltar', - 'GL'=>'Greenland', + 'GL'=>'Groenlandia', 'GM'=>'Gambia', 'GN'=>'Guinea', - 'GP'=>'Guadeloupe', - 'GQ'=>'Equatorial Guinea', - 'GR'=>'Greece', - 'GS'=>'South Georgia And The South Sandwich Islands', + 'GP'=>'Guadalupe', + 'GQ'=>'Guinea Ecuatorial', + 'GR'=>'Grecia', + 'GS'=>'Islas Georgia del Sur y Sandwich del Sur', 'GT'=>'Guatemala', 'GU'=>'Guam', 'GW'=>'Guinea-Bissau', 'GY'=>'Guyana', 'HK'=>'Hong Kong', - 'HM'=>'Heard And Mc Donald Islands', + 'HM'=>'Islas Heard y Mc Donald', 'HN'=>'Honduras', - 'HR'=>'Croatia (local name: Hrvatska)', - 'HT'=>'Haiti', - 'HU'=>'Hungary', + 'HR'=>'Croacia (nombre local: Hrvatska)', + 'HT'=>'Haití', + 'HU'=>'Hungría', 'ID'=>'Indonesia', - 'IE'=>'Ireland', + 'IE'=>'Irlanda', 'IL'=>'Israel', - 'IM'=>'Isle of Man', + 'IM'=>'Isla de Man', 'IN'=>'India', - 'IO'=>'British Indian Ocean Territory', - 'IQ'=>'Iraq', - 'IR'=>'Iran, Islamic Republic Of', - 'IS'=>'Iceland', - 'IT'=>'Italy', + 'IO'=>'Territorio británico del océano Índico', + 'IQ'=>'Irak', + 'IR'=>'Irán, República Islámica Del', + 'IS'=>'Islandia', + 'IT'=>'Italia', 'JE'=>'Jersey', 'JM'=>'Jamaica', - 'JO'=>'Jordan', - 'JP'=>'Japan', - 'KE'=>'Kenya', + 'JO'=>'Jordania', + 'JP'=>'Japón', + 'KE'=>'Kenia', 'KG'=>'Kyrgyzstan', - 'KH'=>'Cambodia', + 'KH'=>'Camboya', 'KI'=>'Kiribati', - 'KM'=>'Comoros', - 'KN'=>'Saint Kitts And Nevis', - 'KR'=>'Korea, Republic Of', + 'KM'=>'Islas Comoros', + 'KN'=>'San Cristóbal y Nevis', + 'KR'=>'Corea, República de', 'KW'=>'Kuwait', - 'KY'=>'Cayman Islands', - 'KZ'=>'Kazakhstan', - 'LA'=>'Lao People\'s Democratic Republic', - 'LB'=>'Lebanon', - 'LC'=>'Saint Lucia', - 'LI'=>'Liechtenstein', + 'KY'=>'Islas Caimán', + 'KZ'=>'Kazajistán', + 'LA'=>'República Democrática Popular de Laos', + 'LB'=>'Líbano', + 'LC'=>'Santa Lucía', + 'LI'=>'Principado de Liechtenstein', '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', + 'LS'=>'Lesoto', + 'LT'=>'Lituania', + 'LU'=>'Luxemburgo', + 'LV'=>'Letonia', + 'LY'=>'Libia', + 'MA'=>'Marruecos', + 'MC'=>'Mónaco', + 'MD'=>'Moldova, República de', 'ME'=>'Montenegro', 'MG'=>'Madagascar', - 'MH'=>'Marshall Islands', - 'MK'=>'Macedonia, The Former Yugoslav Republic Of', - 'ML'=>'Mali', + 'MH'=>'Islas Marshall', + 'MK'=>'Macedonia, Ex República Yugoslava de', + 'ML'=>'Malí', 'MM'=>'Myanmar', 'MN'=>'Mongolia', - 'MO'=>'Macau', - 'MP'=>'Northern Mariana Islands', - 'MQ'=>'Martinique', + 'MO'=>'Macao', + 'MP'=>'Islas Marianas del Norte', + 'MQ'=>'Martinica', 'MR'=>'Mauritania', 'MS'=>'Montserrat', 'MT'=>'Malta', - 'MU'=>'Mauritius', - 'MV'=>'Maldives', + 'MU'=>'Mauricio', + 'MV'=>'Maldivas', 'MW'=>'Malawi', - 'MX'=>'Mexico', - 'MY'=>'Malaysia', + 'MX'=>'México', + 'MY'=>'Malasia', 'MZ'=>'Mozambique', 'NA'=>'Namibia', - 'NC'=>'New Caledonia', - 'NE'=>'Niger', - 'NF'=>'Norfolk Island', + 'NC'=>'Nueva Caledonia', + 'NE'=>'Níger', + 'NF'=>'Isla Norfolk', 'NG'=>'Nigeria', 'NI'=>'Nicaragua', - 'NL'=>'Netherlands', - 'NO'=>'Norway', + 'NL'=>'Países Bajos', + 'NO'=>'Noruega', 'NP'=>'Nepal', 'NR'=>'Nauru', 'NU'=>'Niue', - 'NZ'=>'New Zealand', + 'NZ'=>'Nueva Zelanda', 'OM'=>'Oman', 'PA'=>'Panama', - 'PE'=>'Peru', - 'PF'=>'French Polynesia', - 'PG'=>'Papua New Guinea', - 'PH'=>'Philippines, Republic of the', - 'PK'=>'Pakistan', - 'PL'=>'Poland', - 'PM'=>'St. Pierre And Miquelon', + 'PE'=>'Perú', + 'PF'=>'Polinesia Francesa', + 'PG'=>'Papúa Nueva Guinea', + 'PH'=>'Filipinas, República de las', + 'PK'=>'Pakistán', + 'PL'=>'Polonia', + 'PM'=>'San Pedro y Miquelón', 'PN'=>'Pitcairn', 'PR'=>'Puerto Rico', - 'PS'=>'Palestine', + 'PS'=>'Palestina', 'PT'=>'Portugal', 'PW'=>'Palau', 'PY'=>'Paraguay', - 'QA'=>'Qatar', - 'RE'=>'Reunion', - 'RO'=>'Romania', + 'QA'=>'Catar', + 'RE'=>'Reunión', + 'RO'=>'Rumania', 'RS'=>'Serbia', - 'RU'=>'Russian Federation', - 'RW'=>'Rwanda', - 'SA'=>'Saudi Arabia', - 'UK'=>'Scotland', - 'SB'=>'Solomon Islands', + 'RU'=>'Federación Rusa', + 'RW'=>'Ruanda', + 'SA'=>'Arabia Saudita', + 'UK'=>'Escocia', + 'SB'=>'Islas Salomón', 'SC'=>'Seychelles', - 'SD'=>'Sudan', - 'SE'=>'Sweden', - 'SG'=>'Singapore', + 'SS'=>'Sudán del Sur', + 'SD'=>'Sudán', + 'SE'=>'Suecia', + 'SG'=>'Singapur', 'SH'=>'St. Helena', - 'SI'=>'Slovenia', - 'SJ'=>'Svalbard And Jan Mayen Islands', - 'SK'=>'Slovakia (Slovak Republic)', - 'SL'=>'Sierra Leone', + 'SI'=>'Eslovenia', + 'SJ'=>'Islas Svalbard y Jan Mayen', + 'SK'=>'Eslovaquia (República Eslovaca)', + 'SL'=>'Sierra Leona', 'SM'=>'San Marino', 'SN'=>'Senegal', 'SO'=>'Somalia', 'SR'=>'Suriname', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', + 'ST'=>'Santo Tomé y Príncipe', + 'SU'=>'Unión Soviética', 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', + 'SY'=>'República Árabe Siria', 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', + 'TC'=>'Islas Turcas y Caicos', 'TD'=>'Chad', - 'TF'=>'French Southern Territories', + 'TF'=>'Territorios Franceses del Sur', 'TG'=>'Togo', - 'TH'=>'Thailand', + 'TH'=>'Tailandia', 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', - 'TI'=>'East Timor', + 'TI'=>'Timor Oriental', 'TM'=>'Turkmenistan', 'TN'=>'Tunisia', 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', - 'TR'=>'Turkey', - 'TT'=>'Trinidad And Tobago', + 'TP'=>'Timor Oriental (código antiguo)', + 'TR'=>'Turquía', + 'TT'=>'Trinidad y Tobago', 'TV'=>'Tuvalu', - 'TW'=>'Taiwan', - 'TZ'=>'Tanzania, United Republic Of', - 'UA'=>'Ukraine', + 'TW'=>'Taiwán', + 'TZ'=>'Tanzania, República Unida de', + 'UA'=>'Ucrania', 'UG'=>'Uganda', - 'UK'=>'United Kingdom', - 'US'=>'United States', - 'UM'=>'United States Minor Outlying Islands', + 'UK'=>'Reino Unido', + 'US'=>'Estados Unidos', + 'UM'=>'Islas Ultramarinas Menores de Estados Unidos', 'UY'=>'Uruguay', - 'UZ'=>'Uzbekistan', - 'VA'=>'Vatican City State (Holy See)', - 'VC'=>'Saint Vincent And The Grenadines', + 'UZ'=>'Uzbekistán', + 'VA'=>'Estado de Vatican (Santa Sede)', + 'VC'=>'San Vicente y las Granadinas', 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', - 'VN'=>'Viet Nam', + 'VG'=>'Islas Vírgenes Británicas', + 'VI'=>'Islas Vírgenes (EE. UU.)', + 'VN'=>'Vietnam', 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', + 'WF'=>'Islas Wallis y Futuna', 'WS'=>'Samoa', 'YE'=>'Yemen', 'YT'=>'Mayotte', - 'ZA'=>'South Africa', + 'ZA'=>'Sudáfrica', 'ZM'=>'Zambia', - 'ZW'=>'Zimbabwe', + 'ZW'=>'Zimbabue', ], ]; \ No newline at end of file diff --git a/resources/lang/es-ES/mail.php b/resources/lang/es-ES/mail.php index ebf86d5cce..7855099df4 100644 --- a/resources/lang/es-ES/mail.php +++ b/resources/lang/es-ES/mail.php @@ -2,7 +2,7 @@ return [ 'acceptance_asset_accepted' => 'Un usuario ha aceptado un artículo', - 'acceptance_asset_declined' => 'A user has declined an item', + 'acceptance_asset_declined' => 'Un usuario ha rechazado un artículo', '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', 'accessory_name' => 'Nombre de accesorio:', @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT con las credenciales siguientes:', 'login' => 'Entrar:', 'Low_Inventory_Report' => 'Reporte de inventario bajo', + 'inventory_report' => 'Informe de inventario', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo se ha extraído bajo su nombre, los detalles están a continuación.', @@ -61,7 +62,7 @@ return [ 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', '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.', - 'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.', + '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.', '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.', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Tus credenciales de Snipe-IT', 'Accessory_Checkin_Notification' => 'Accesorio devuelto', 'Asset_Checkin_Notification' => 'Activo devuelto', + 'Asset_Checkout_Notification' => 'Activo asignado', 'License_Checkin_Notification' => 'Licencia devuelta', 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', 'Expected_Checkin_Date' => 'Un activo asignado a ti debe ser devuelto en :date', 'your_assets' => 'Ver tus activos', + 'rights_reserved' => 'Todos los derechos reservados.', ]; diff --git a/resources/lang/es-ES/validation.php b/resources/lang/es-ES/validation.php index 7361de1914..d05d43d6ea 100644 --- a/resources/lang/es-ES/validation.php +++ b/resources/lang/es-ES/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'El: atributo debe ser un archivo.', 'filled' => 'El campo: atributo debe tener un valor.', 'image' => ':attribute debe ser una imagen.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la empresa', 'json' => 'El atributo: debe ser una cadena JSON válida.', 'max' => [ 'numeric' => ':attribute no debe ser mayor que :max.', @@ -67,6 +67,8 @@ return [ 'array' => 'El atributo: debe tener al menos: elementos min.', ], 'starts_with' => 'El :attribute debe comenzar con uno de los siguientes: :values.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'not_in' => 'El :attribute seleccionado no es correcto.', 'numeric' => ':attribute debe ser un número.', 'present' => 'El campo: atributo debe estar presente.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Tu 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. + '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', + 'termination_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD', + 'expected_checkin.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-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', + ], /* diff --git a/resources/lang/es-MX/account/general.php b/resources/lang/es-MX/account/general.php index 7fc060a849..d344a57a7b 100644 --- a/resources/lang/es-MX/account/general.php +++ b/resources/lang/es-MX/account/general.php @@ -1,12 +1,12 @@ 'Personal API Keys', - '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:', + 'personal_api_keys' => 'Claves API personales', + 'api_key_warning' => 'Al generar un token API, asegúrate de copiarlo inmediatamente ya que + no será visible para ti de nuevo.', + 'api_base_url' => 'La url base de tu API se encuentra en:', '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.', + 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', + 'api_reference' => 'Por favor, revise la referencia API para + encontrar puntos finales específicos de la API y documentación adicional de la API.', ); diff --git a/resources/lang/es-MX/admin/accessories/general.php b/resources/lang/es-MX/admin/accessories/general.php index 3da0c9ac83..db012f5c89 100644 --- a/resources/lang/es-MX/admin/accessories/general.php +++ b/resources/lang/es-MX/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Actualizar Accesorio', 'use_default_eula' => 'En su lugar, use el EULA por defecto.', 'use_default_eula_disabled' => 'En su lugar, use el EULA por defecto. No esta configurado un EULA por defecto. 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.', ); diff --git a/resources/lang/es-MX/admin/accessories/message.php b/resources/lang/es-MX/admin/accessories/message.php index 4fedcf1d3f..23bc05bffc 100644 --- a/resources/lang/es-MX/admin/accessories/message.php +++ b/resources/lang/es-MX/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( '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.' ), diff --git a/resources/lang/es-MX/admin/asset_maintenances/form.php b/resources/lang/es-MX/admin/asset_maintenances/form.php index 7d367a06e9..32a148765c 100644 --- a/resources/lang/es-MX/admin/asset_maintenances/form.php +++ b/resources/lang/es-MX/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Tipo de Mantenimiento de Equipo', + 'asset_maintenance_type' => 'Tipo de Mantenimiento de Activo', 'title' => 'Título', - 'start_date' => 'Fecha de Inicio', - 'completion_date' => 'Fecha de Terminación', + '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 Equipo (en días)', + 'asset_maintenance_time' => 'Tiempo de Mantenimiento del Activo (en días)', 'notes' => 'Notas', - 'update' => 'Actualizar Mantenimiento de Equipo', - 'create' => 'Crear Mantenimiento de Equipo' + 'update' => 'Actualizar Mantenimiento de Activo', + 'create' => 'Crear Mantenimiento de Activo' ]; diff --git a/resources/lang/es-MX/admin/categories/message.php b/resources/lang/es-MX/admin/categories/message.php index 4878c7950d..e9706fd72d 100644 --- a/resources/lang/es-MX/admin/categories/message.php +++ b/resources/lang/es-MX/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'La categoría no se ha actualizado, intentalo de nuevo.', - 'success' => 'Categoría actualizada correctamente.' + 'success' => 'Categoría actualizada correctamente.', + 'cannot_change_category_type' => 'Una vez creado, no es posible cambiar el tipo de categoria', ), 'delete' => array( diff --git a/resources/lang/es-MX/admin/companies/general.php b/resources/lang/es-MX/admin/companies/general.php index d6a87e1235..8462567916 100644 --- a/resources/lang/es-MX/admin/companies/general.php +++ b/resources/lang/es-MX/admin/companies/general.php @@ -3,5 +3,5 @@ return [ 'select_company' => 'Seleccionar compañía', 'about_companies' => 'Acerca de las empresas', - 'about_companies_description' => ' Puede utilizar las empresas como un campo informativo simple, o puede utilizarlos para restringir la visibilidad de los activos y la disponibilidad a los usuarios con una empresa específica habilitando el soporte completo de la compañía en su Configuración de Administración.', + 'about_companies_description' => ' Puedes utilizar empresas como un simple campo de información, o las puedes usar para restringir la visibilidad y disponibilidad de los activos a los usuarios que pertenezcan a una empresa en específico. Esto lo implementas habilitando la opción de Suporte Completo de Empresa en tu página de configuración de administrador.', ]; diff --git a/resources/lang/es-MX/admin/components/general.php b/resources/lang/es-MX/admin/components/general.php index 033bf16648..760b4102a8 100644 --- a/resources/lang/es-MX/admin/components/general.php +++ b/resources/lang/es-MX/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', + 'checkin_limit' => 'La cantidad introducida 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 fb8de539ce..4b4e33984d 100644 --- a/resources/lang/es-MX/admin/components/message.php +++ b/resources/lang/es-MX/admin/components/message.php @@ -23,7 +23,8 @@ return array( '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.' + 'user_does_not_exist' => 'El usuario es invalido, intentalo de nuevo.', + 'unavailable' => 'No quedan suficientes componentes: :remaining disponibles, :requested solicitados ', ), 'checkin' => array( diff --git a/resources/lang/es-MX/admin/consumables/message.php b/resources/lang/es-MX/admin/consumables/message.php index ad6c4421f9..c037fbe1af 100644 --- a/resources/lang/es-MX/admin/consumables/message.php +++ b/resources/lang/es-MX/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumible no fue retirado, por favor, inténtelo de nuevo', 'success' => 'Consumible fue retirado satisfactoriamente.', - 'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.' + '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. ', ), 'checkin' => array( diff --git a/resources/lang/es-MX/admin/custom_fields/general.php b/resources/lang/es-MX/admin/custom_fields/general.php index c06e892562..a3e74c69ea 100644 --- a/resources/lang/es-MX/admin/custom_fields/general.php +++ b/resources/lang/es-MX/admin/custom_fields/general.php @@ -2,10 +2,10 @@ return [ 'custom_fields' => 'Campos personalizados', - 'manage' => 'Administrar', + 'manage' => 'Administra', 'field' => 'Campo', 'about_fieldsets_title' => 'Acerca de los campos personalizados', - 'about_fieldsets_text' => 'Los grupos de campos personalizados te permiten agrupar campos personalizados que se reutilizan frecuentemente para determinados modelos de activos.', + 'about_fieldsets_text' => 'Los conjuntos de campos permiten crear grupos de campos personalizados que son frecuentemente reutilizados para tipos específicos de 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.', @@ -27,23 +27,28 @@ return [ 'used_by_models' => 'Usado Por Modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo grupo de campos', - 'create_fieldset_title' => 'Crear nuevo grupo de campos', + 'update_fieldset' => 'Actualizar Grupo de Campos Personalizados', + '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', 'create_field' => 'Nuevo campo personalizado', - 'create_field_title' => 'Crear 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.', '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.', + '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 le permiten añadir atributos arbitrarios a los activos.', - 'add_field_to_fieldset' => 'Añadir campo al grupo', - 'make_optional' => 'Requerido - clic para hacerlo opcional', - 'make_required' => 'Opcional - clic para hacerlo requerido', + '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', + 'make_optional' => 'Requerido - haz clic para hacerlo opcional', + 'make_required' => 'Opcional - haz clic para hacerlo requerido', 'reorder' => 'Reordenar', - 'db_field' => 'Campo de BD', - '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', + 'db_field' => 'Campo de 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' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Permitir al usuario asignado ver estos valores en su página Ver Recursos 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', ]; diff --git a/resources/lang/es-MX/admin/custom_fields/message.php b/resources/lang/es-MX/admin/custom_fields/message.php index ff376e9dff..d9b7dfd143 100644 --- a/resources/lang/es-MX/admin/custom_fields/message.php +++ b/resources/lang/es-MX/admin/custom_fields/message.php @@ -51,7 +51,7 @@ return array( 'fieldset_default_value' => array( - 'error' => 'Error validating default fieldset values.', + 'error' => 'Error al validar los valores predeterminados del conjunto de campos.', ), diff --git a/resources/lang/es-MX/admin/departments/message.php b/resources/lang/es-MX/admin/departments/message.php index b28de02e9d..b7e4f1d857 100644 --- a/resources/lang/es-MX/admin/departments/message.php +++ b/resources/lang/es-MX/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'El departamento no existe.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Ya existe un departamento con ese nombre en la ubicación seleccionada de esta empresa. 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. ', 'create' => array( 'error' => 'El departamento no fue creado, por favor intente de nuevo.', diff --git a/resources/lang/es-MX/admin/depreciations/general.php b/resources/lang/es-MX/admin/depreciations/general.php index 2c7ad8e147..675b042d6d 100644 --- a/resources/lang/es-MX/admin/depreciations/general.php +++ b/resources/lang/es-MX/admin/depreciations/general.php @@ -6,11 +6,11 @@ return [ 'asset_depreciations' => 'Amortizaciones', 'create' => 'Crear Amortización', 'depreciation_name' => 'Nombre Amortización', - 'depreciation_min' => 'Valor mínimo de amortización', + 'depreciation_min' => 'Valor mínimo de depreciación', 'number_of_months' => 'Meses', 'update' => 'Actualizar Amortización', 'depreciation_min' => 'Valor mínimo después de depreciado', '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 depreciación.', ]; diff --git a/resources/lang/es-MX/admin/groups/message.php b/resources/lang/es-MX/admin/groups/message.php index 4b7f99ca54..d7cfbb1f18 100644 --- a/resources/lang/es-MX/admin/groups/message.php +++ b/resources/lang/es-MX/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'El grupo ya existe!', - 'group_not_found' => 'El grupo [:id] no existe.', + 'group_not_found' => 'El ID de grupo :id no existe.', 'group_name_required' => 'El campo nombre es obligatorio', 'success' => array( diff --git a/resources/lang/es-MX/admin/groups/titles.php b/resources/lang/es-MX/admin/groups/titles.php index 7660a8055b..0b49feaa7a 100644 --- a/resources/lang/es-MX/admin/groups/titles.php +++ b/resources/lang/es-MX/admin/groups/titles.php @@ -10,7 +10,7 @@ return [ 'group_admin' => 'Admin Grupo', 'allow' => 'Permitir', 'deny' => 'Denegar', - 'permission' => 'Permisos', + 'permission' => 'Permiso', 'grant' => 'Otorgar', 'no_permissions' => 'Este grupo no tiene permisos.' ]; diff --git a/resources/lang/es-MX/admin/hardware/form.php b/resources/lang/es-MX/admin/hardware/form.php index ae90b73d82..038071cbfd 100644 --- a/resources/lang/es-MX/admin/hardware/form.php +++ b/resources/lang/es-MX/admin/hardware/form.php @@ -2,11 +2,14 @@ return [ 'bulk_delete' => 'Confirmar eliminación masiva de bienes', + '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_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' => 'Está a punto de borrar :asset_count.', + '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 activo.|Está a punto de editar las propiedades de :asset_count activos.', + '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.', 'checkedout_to' => 'Asignado a', 'checkout_date' => 'Fecha de asignación', 'checkin_date' => 'Fecha de devolución', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Actualizar sólo la ubicación predeterminada', 'asset_not_deployable' => 'El activo no está listo para desplegar. Por lo que por el momento no puede ser asignado.', 'asset_deployable' => 'El activo no está listo para desplegar. Por lo que, por el momento, no puede ser asignado.', - 'processing_spinner' => 'Procesando...', + 'processing_spinner' => 'Procesando... (Esto puede tomar un poco de tiempo en archivos grandes)', 'optional_infos' => 'Información opcional', 'order_details' => 'Información relacionada con el pedido' ]; diff --git a/resources/lang/es-MX/admin/hardware/general.php b/resources/lang/es-MX/admin/hardware/general.php index fea8987803..07cf834d3e 100644 --- a/resources/lang/es-MX/admin/hardware/general.php +++ b/resources/lang/es-MX/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Este activo ha sido eliminado.', 'edit' => 'Editar Equipo', 'model_deleted' => 'Este modelo de equipo fue eliminado. Debes restaurar el moldelo antes de restaurar el activo.', + 'model_invalid' => 'El Modelo de este Activo no es válido.', + 'model_invalid_fix' => 'Es necesario corregir esto antes de realizar movimientos con este Activo.', 'requestable' => 'Requerible', 'requested' => 'Solicitado', 'not_requestable' => 'No solicitable', @@ -21,24 +23,26 @@ return [ 'restore' => 'Restaurar equipo', 'pending' => 'Pendiente', 'undeployable' => 'No desplegable', + 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que no es desplegable y no puede ser asignado en este momento.', 'view' => 'Ver Equipo', 'csv_error' => 'Hay un error en su archivo CSV:', 'import_text' => '

- Sube un CSV que contenga historial de activos. Los activos y los usuarios DEBEN existir en el sistema, o se omitirán. Los activos coincidentes para importar el historial ocurren contra la etiqueta de activos. Intentaremos encontrar un usuario que coincida con el nombre del usuario que proporciones, y los criterios que seleccionas a continuación. Si no selecciona ningún criterio a continuación, simplemente tratará de coincidir con el formato de nombre de usuario que configuraste en el Administrador > Configuración General. + Sube un CSV que contenga historial de activos. Los activos y los usuarios DEBEN existir en el sistema, o se omitirán. Los activos coincidentes para la importación del historial se buscan con la etiqueta de activos. Intentaremos encontrar un usuario que coincida con el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio a continuación, simplemente se intentará coincidir con el formato de nombre de usuario que configuraste en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Etiqueta de activos, Nombre, Fecha de salida, Fecha de comprobación. Cualquier campo adicional será ignorado.

-

Fecha de Checkin: las fechas de check-in en blanco o futuro comprobarán los elementos al usuario asociado. Excluyendo la columna Fecha de Checkin creará una fecha de check-in con la fecha de hoy.

+

Fecha de Registro: las fechas de registro en blanco o futuro comprobarán los elementos al usuario asociado. Excluyendo la columna Fecha de Registro creará una fecha de registro con la fecha de hoy.

', - 'csv_import_match_f-l' => 'Intentar coincidir con los usuarios por el formato firstname.lastname (jane.smith)', - 'csv_import_match_initial_last' => 'Intentar coincidir los usuarios con el primer apellido inicial (jsmith) formato', - 'csv_import_match_first' => 'Intentar coincidir con los usuarios por nombre de usuario (jane) formato', + 'csv_import_match_f-l' => 'Intentar coincidir con los usuarios por el formato firstname.lastname (juan.perez)', + 'csv_import_match_initial_last' => 'Intentar coincidir los usuarios con el formato inicial de nombre y primer apellido (jperez)', + 'csv_import_match_first' => 'Intentar coincidir con los usuarios por el formato de nombre de usuario (juan)', 'csv_import_match_email' => 'Intentar coincidir con los usuarios por correo electrónico como nombre de usuario', - 'csv_import_match_username' => 'Intentar coincidir con los usuarios por correo electrónico como nombre de usuario', + 'csv_import_match_username' => 'Intentar coincidir usuarios por nombre de 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' + 'custom_export' => 'Exportación personalizada', + 'mfg_warranty_lookup' => 'Búsqueda del estado de Garantía para :manufacturer', ]; diff --git a/resources/lang/es-MX/admin/hardware/message.php b/resources/lang/es-MX/admin/hardware/message.php index 314d726ec3..23add7a280 100644 --- a/resources/lang/es-MX/admin/hardware/message.php +++ b/resources/lang/es-MX/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'El equipo no fue restaurado, por favor intente nuevamente', 'success' => 'Equipo restaurado correctamente.', + 'bulk_success' => 'Activo restaurado con éxito.', + 'nothing_updated' => 'No se seleccionaron activos, por lo que no se restauró nada.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Tu archivo ha sido importado', 'file_delete_success' => 'Tu archivo ha sido eliminado con éxito', 'file_delete_error' => 'No pudimos eliminar tu archivo', + 'header_row_has_malformed_characters' => 'Uno o más atributos de la fila de encabezado contiene caracteres UTF-8 mal formados', + 'content_row_has_malformed_characters' => 'Uno o más atributos de la fila de encabezado contiene caracteres UTF-8 mal formados', ], diff --git a/resources/lang/es-MX/admin/hardware/table.php b/resources/lang/es-MX/admin/hardware/table.php index 9950a1b10f..477f517e9f 100644 --- a/resources/lang/es-MX/admin/hardware/table.php +++ b/resources/lang/es-MX/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Operación', 'checkout_date' => 'Fecha de asignación', 'checkoutto' => 'Asignado', + 'components_cost' => 'Coste total de componentes', 'current_value' => 'Valor Actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', diff --git a/resources/lang/es-MX/admin/kits/general.php b/resources/lang/es-MX/admin/kits/general.php index 186bd7f0cb..c9d6a5e7b6 100644 --- a/resources/lang/es-MX/admin/kits/general.php +++ b/resources/lang/es-MX/admin/kits/general.php @@ -13,38 +13,38 @@ return [ '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. ', - 'append_accessory' => 'Vincular Accesorio', - 'update_appended_accessory' => 'Actualizar Accesorio vinculado', - 'append_consumable' => 'Vincular Consumible', - 'update_appended_consumable' => 'Actualizar Consumible vinculado', - 'append_license' => 'Vincular licencia', - 'update_appended_license' => 'Actualizar licencia vinculada', - 'append_model' => 'Vincular modelo', - 'update_appended_model' => 'Actualizar modelo vinculado', - 'license_error' => 'Licencia ya adjunta al kit', + 'append_accessory' => 'Añadir accesorio', + 'update_appended_accessory' => 'Actualizar accesorio adjunto', + 'append_consumable' => 'Añadir consumible', + 'update_appended_consumable' => 'Actualizar consumible adjunto', + 'append_license' => 'Añadir licencia', + 'update_appended_license' => 'Actualizar licencia añadida', + 'append_model' => 'Añadir modelo', + 'update_appended_model' => 'Actualizar modelo añadido', + 'license_error' => 'Licencia ya está vinculada al kit', 'license_added_success' => 'Licencia añadida correctamente', - 'license_updated' => 'Licencia actualizada correctamente', + 'license_updated' => 'La licencia se ha actualizado correctamente', 'license_none' => 'La licencia no existe', 'license_detached' => 'Licencia desvinculada correctamente', 'consumable_added_success' => 'Consumible añadido correctamente', 'consumable_updated' => 'Consumible actualizado correctamente', 'consumable_error' => 'Consumible ya vinculado al kit', - 'consumable_deleted' => 'Eliminado correctamente', + 'consumable_deleted' => 'El borrado fue exitoso', 'consumable_none' => 'El Consumible no existe', 'consumable_detached' => 'Consumible desvinculado correctamente', 'accessory_added_success' => 'Accesorio añadido correctamente', 'accessory_updated' => 'Accesorio actualizado correctamente', 'accessory_detached' => 'Accesorio desvinculado correctamente', - 'accessory_error' => 'El accesorio ya vinculado al kit', - 'accessory_deleted' => 'Eliminado correctamente', + 'accessory_error' => 'El accesorio ya está vinculado al kit', + 'accessory_deleted' => 'El borrado fue exitoso', 'accessory_none' => 'El accesorio no existe', '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', + 'kit_updated' => 'El kit se ha actualizado correctamente', 'kit_not_found' => 'Kit no encontrado', - 'kit_deleted' => 'Kit eliminado correctamente', + 'kit_deleted' => 'El kit ha sido eliminado correctamente', 'kit_model_updated' => 'Modelo actualizado correctamente', 'kit_model_detached' => 'Modelo desvinculado correctamente', ]; diff --git a/resources/lang/es-MX/admin/licenses/general.php b/resources/lang/es-MX/admin/licenses/general.php index 8a5d6db90e..57433beb06 100644 --- a/resources/lang/es-MX/admin/licenses/general.php +++ b/resources/lang/es-MX/admin/licenses/general.php @@ -1,8 +1,8 @@ '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', + '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', @@ -18,4 +18,30 @@ return array( '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.', + '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', + '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', + ], + + '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.', + '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', + + + ], + ], ); diff --git a/resources/lang/es-MX/admin/licenses/message.php b/resources/lang/es-MX/admin/licenses/message.php index 182b6ce2e1..1538147423 100644 --- a/resources/lang/es-MX/admin/licenses/message.php +++ b/resources/lang/es-MX/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'License does not exist or you do not have permission to view it.', + 'does_not_exist' => 'La licencia no existe o usted no tiene permiso para verla.', 'user_does_not_exist' => 'Usuario inexistente.', 'asset_does_not_exist' => 'El equipo que intentas asignar a esta licencia no existe.', 'owner_doesnt_match_asset' => 'El equipo al que estas intentando asignar esta licenciam, está asignado a un usuario diferente que el de la licencia.', diff --git a/resources/lang/es-MX/admin/locations/message.php b/resources/lang/es-MX/admin/locations/message.php index 50fa52a8d4..d8be3030ae 100644 --- a/resources/lang/es-MX/admin/locations/message.php +++ b/resources/lang/es-MX/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Esta localización está asignada al menos a un usuario y no puede ser eliminada. ', 'assoc_assets' => 'Esta ubicacion se encuentra actualmente asociada con por lo menos un activo y no puede ser eliminada. Por favor, actualice sus activos para no referenciar esta ubicacion e intentelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicacion actualmente esta asociada con al menos una ubicacion hija y no puede ser eliminada. Por favor, actualice sus ubicaciones para no referenciar esta ubicacion e intentelo de nuevo. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Recursos asignados', + 'current_location' => 'Ubicación actual', 'create' => array( diff --git a/resources/lang/es-MX/admin/manufacturers/message.php b/resources/lang/es-MX/admin/manufacturers/message.php index 4a78b56349..0078fc2999 100644 --- a/resources/lang/es-MX/admin/manufacturers/message.php +++ b/resources/lang/es-MX/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Utilice {LOCALE} y {SERIAL} en su URL como variables para que estos valores se rellenen automáticamente al ver los activos.', 'does_not_exist' => 'Fabricante inexistente.', 'assoc_users' => 'Este Fabricante está asociado al menos a un modelo y no puede ser eliminado', diff --git a/resources/lang/es-MX/admin/manufacturers/table.php b/resources/lang/es-MX/admin/manufacturers/table.php index 972d33b71b..9352654d18 100644 --- a/resources/lang/es-MX/admin/manufacturers/table.php +++ b/resources/lang/es-MX/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( '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', 'url' => 'URL', diff --git a/resources/lang/es-MX/admin/models/general.php b/resources/lang/es-MX/admin/models/general.php index 13bf779bad..23fa447905 100644 --- a/resources/lang/es-MX/admin/models/general.php +++ b/resources/lang/es-MX/admin/models/general.php @@ -3,10 +3,10 @@ return array( 'about_models_title' => 'Acerca de modelos de activos', 'about_models_text' => 'Los Modelos de activos son una forma de agrupar activos idénticos. "MBP 2013", "IPhone 6s", etc.', - 'deleted' => 'Este modelo fue eliminado.', + 'deleted' => 'Este modelo ha sido eliminado.', '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ás a punto de eliminar: los modelos de activo model_count.', + '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', 'requestable' => 'Los usuarios pueden solicitar este modelo', 'show_mac_address' => 'Mostrar el campo de la dirección MAC en los equipos de este modelo', diff --git a/resources/lang/es-MX/admin/models/message.php b/resources/lang/es-MX/admin/models/message.php index 53bea1807a..dd60b79d74 100644 --- a/resources/lang/es-MX/admin/models/message.php +++ b/resources/lang/es-MX/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Modelo inexistente.', + 'no_association' => 'NINGUN MODELO ASOCIADO.', + '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', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Modelo no actualizado, Intentalo de nuevo', - 'success' => 'Modelo actualizado.' + 'success' => 'Modelo actualizado.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Ningún campo fue seleccionado, por lo que nada ha sido actualizado.', - 'success' => 'Modelos actualizados.' + 'success' => 'Modelo actualizado correctamente. |:model_count modelos actualizados correctamente.', + 'warn' => 'Está a punto de actualizar las propiedades del siguiente modelo: |Está a punto de editar las propiedades de los siguientes :model_count modelos:', + ), 'bulkdelete' => array( 'error' => 'Ningún modelo fue seleccionado, así que nada fue eliminado.', - 'success' => '¡:success_count modelo(s) eliminado(s)!', + 'success' => 'Modelo eliminado!|:success_count modelos eliminados!', 'success_partial' => ':success_count modelo(s) se han eliminado, sin embargo, :fail_count no se pudieron eliminar debido a que aún tienen activos asociados a ellos.' ), diff --git a/resources/lang/es-MX/admin/reports/general.php b/resources/lang/es-MX/admin/reports/general.php index 19efc0b08a..55cc3c2853 100644 --- a/resources/lang/es-MX/admin/reports/general.php +++ b/resources/lang/es-MX/admin/reports/general.php @@ -2,9 +2,9 @@ return [ 'info' => 'Selecciona las opciones de tu informe de Equipos.', - 'deleted_user' => 'Deleted user', - 'send_reminder' => 'Send reminder', - 'reminder_sent' => 'Reminder sent', - 'acceptance_deleted' => 'Acceptance request deleted', - 'acceptance_request' => 'Acceptance request' + 'deleted_user' => 'Usuario eliminado', + 'send_reminder' => 'Enviar recordatorio', + 'reminder_sent' => 'Recordatorio enviado', + 'acceptance_deleted' => 'Solicitud de aceptación eliminada', + 'acceptance_request' => 'Solicitud de aceptación' ]; \ No newline at end of file diff --git a/resources/lang/es-MX/admin/settings/general.php b/resources/lang/es-MX/admin/settings/general.php index 81e0ca4577..502c5f1b4e 100644 --- a/resources/lang/es-MX/admin/settings/general.php +++ b/resources/lang/es-MX/admin/settings/general.php @@ -11,9 +11,9 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'Este es un servidor de Directorio Activo', 'alerts' => 'Alertas', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Actualizar ajustes de notificación', 'alert_email' => 'Enviar alertas a', - 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', + 'alert_email_help' => 'Direcciones de correo electrónico o listas de distribución a las que desea que se envíen alertas separadas por comas', 'alerts_enabled' => 'Alertas habilitadas', 'alert_interval' => 'Limite de alertas de expiración (en días)', 'alert_inv_threshold' => 'Umbral de alerta del inventario', @@ -21,20 +21,20 @@ return [ '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', 'audit_interval' => 'Intervalo de auditoría', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Si se le exige auditoría física regular de sus activos, ingrese 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 próxima fecha de auditoría.', 'audit_warning_days' => 'Umbral de advertencia de auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación debemos advertirle cuándo se deben auditar los activos?', - 'auto_increment_assets' => 'Generate auto-incrementing asset tags', + 'auto_increment_assets' => 'Generar etiquetas de activos que incrementan automáticamente', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this', + 'auto_incrementing_help' => 'Primero habilite etiquetas de activos auto-incrementantes para configurar esto', 'backups' => 'Copias de seguridad', - 'backups_help' => 'Create, download, and restore backups ', - 'backups_restoring' => 'Restoring from Backup', - 'backups_upload' => 'Upload Backup', - 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', - 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', - 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', + 'backups_help' => 'Crear, descargar y restaurar copias de seguridad ', + 'backups_restoring' => 'Restaurando desde la copia de seguridad', + 'backups_upload' => 'Subir 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_logged_out' => 'Todos los usuarios existentes, incluido usted, cerrarán sesión automáticamente una vez que la restauración haya finalizado.', + 'backups_large' => 'Las copias de seguridad muy grandes pueden fallar por tiempo de espera excedido en el intento de restauración y pueden necesitar que se ejecuten nuevamente 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.)', @@ -57,7 +57,7 @@ return [ 'barcode_type' => 'Tipo de códigos de barras 2D', 'alt_barcode_type' => 'Tipo de códigos de barras 1D', 'email_logo_size' => 'Los logotipos cuadrados se ven mejor en correo electrónico. ', - 'enabled' => 'Enabled', + 'enabled' => 'Habilitado', 'eula_settings' => 'Configuración EULA', 'eula_markdown' => 'Este EULS permite makrdown estilo Github.', 'favicon' => 'Favicon', @@ -66,8 +66,8 @@ return [ 'footer_text' => 'Texto Adicional de Pie de Página ', 'footer_text_help' => 'Este texto aparecerá en el lado derecho del pie de página. Los enlaces son permitidos usando el formato flavored de GitHub. Saltos de línea, cabeceras, imágenes, etc, pueden resultar impredecibles.', 'general_settings' => 'Configuración General', - 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy', - 'general_settings_help' => 'Default EULA and more', + 'general_settings_keywords' => 'soporte de la empresa, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, eula, tos, dashboard, privacidad', + 'general_settings_help' => 'EULA por defecto y más', 'generate_backup' => 'Generar Respaldo', 'header_color' => 'Color de encabezado', 'info' => 'Estos parámetros permirten personalizar ciertos aspectos de la aplicación.', @@ -75,19 +75,22 @@ return [ 'label_logo_size' => 'Los logos cuadrados se ven mejor - se mostrarán en la parte superior derecha de cada etiqueta de activo. ', 'laravel' => 'Versión de Laravel', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', - 'ldap_help' => 'LDAP/Active Directory', - 'ldap_client_tls_key' => 'LDAP Client TLS Key', - 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', + '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' => 'LDAP/Directorio Activo', + 'ldap_client_tls_key' => 'Llave TLS del cliente LDAP', + 'ldap_client_tls_cert' => 'LDAP Certificado TLS de cliente', 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Ajustes LDAP', - 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', - 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + '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_key' => 'LDAP Clave TLS de cliente', + '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_manager' => 'LDAP Manager', + '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_cert' => 'Certificado de validación SSL LDAP', @@ -111,20 +114,20 @@ return [ 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'This value is used to determine whether a synced user can login to Snipe-IT. It does not affect the ability to check items in or out to them, and should be the attribute name within your AD/LDAP, not the value.

If this field is set to a field name that does not exist in your AD/LDAP, or the value in the AD/LDAP field is set to 0 or false, user login will be disabled. If the value in the AD/LDAP field is set to 1 or true or any other text means the user can log in. When the field is blank in your AD, we respect the userAccountControl attribute, which usually allows non-suspended users to log in.', + '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_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'Email LDAP', - 'ldap_test' => 'Test LDAP', - 'ldap_test_sync' => 'Test LDAP Synchronization', + 'ldap_test' => 'Probar LDAP', + 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de Software', 'load_remote_text' => 'Scripts remotos', 'load_remote_help_text' => 'Esta instalación de Snipe-IT puede cargar scripts desde fuera.', - 'login' => 'Login Attempts', - 'login_attempt' => 'Login Attempt', - 'login_ip' => 'IP Address', - 'login_success' => 'Success?', - 'login_user_agent' => 'User Agent', - 'login_help' => 'List of attempted logins', + 'login' => 'Intentos de inicio de sesión', + 'login_attempt' => 'Intento de inicio de sesión', + 'login_ip' => 'Dirección IP', + 'login_success' => '¿Éxito?', + 'login_user_agent' => 'Agente de usuario', + 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de inicio de sesión', 'login_note_help' => 'Opcionalmente incluya algunas oraciones en su pantalla de inicio de sesión, por ejemplo para ayudar a las personas que han encontrado un dispositivo perdido o robado. Este campo acepta Github con sabor markdown', 'login_remote_user_text' => 'Opciones de inicio de sesión de usuario remoto', @@ -147,17 +150,17 @@ return [ 'php' => 'Versión de PHP', 'php_info' => 'PHP Info', 'php_overview' => 'PHP', - 'php_overview_keywords' => 'phpinfo, system, info', - 'php_overview_help' => 'PHP System info', + '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_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.', - 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Password cannot be the same as first name, last name, email, or username', - 'pwd_secure_complexity_letters' => 'Require at least one letter', - 'pwd_secure_complexity_numbers' => 'Require at least one number', - 'pwd_secure_complexity_symbols' => 'Require at least one symbol', - 'pwd_secure_complexity_case_diff' => 'Require at least one uppercase and one lowercase', + 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el nombre, apellido, correo electrónico o nombre de usuario', + 'pwd_secure_complexity_letters' => 'Requiere al menos una letra', + 'pwd_secure_complexity_numbers' => 'Requiere al menos un número', + 'pwd_secure_complexity_symbols' => 'Requiere al menos un símbolo', + 'pwd_secure_complexity_case_diff' => 'Requiere al menos una mayúscula y una minúscula', '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', @@ -165,8 +168,8 @@ return [ 'qr_help' => 'Activa Códigos QR antes para poder ver esto', 'qr_text' => 'Texto Código QR', 'saml' => 'SAML', - 'saml_title' => 'Update SAML settings', - 'saml_help' => 'SAML settings', + 'saml_title' => 'Actualizar ajustes de SAML', + 'saml_help' => 'Configuración SAML', 'saml_enabled' => 'SAML activado', 'saml_integration' => 'Integración SAML', 'saml_sp_entityid' => 'ID de la entidad', @@ -178,7 +181,7 @@ return [ '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_forcelogin_label' => 'SAML Force Login', + '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_slo_label' => 'Cerrar sesión única SAML', @@ -186,7 +189,7 @@ return [ '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_download' => 'Download Metadata', + 'saml_download' => 'Descargar metadatos', 'setting' => 'Parámetro', 'settings' => 'Configuración', 'show_alerts_in_menu' => 'Mostrar alertas en el menú superior', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Nombre del sitio', + 'integrations' => 'Integraciones', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Nombre de bot en Slack', - 'slack_channel' => 'Canal en Slack', - 'slack_endpoint' => 'Terminal en Slack', - 'slack_integration' => 'Configuración Slack', - 'slack_integration_help' => 'La integración con Slack es opcional, sin embargo, la terminal y el canal son requeridos si desea usarlo. Para configurar la integración con Slack, debe primero crear un webhook entrante en su cuenta de Slack. Haga clic en el botónProbar la Integración con Slack para confirmar que su configuraci{on es correcta antes de guardarla. ', - 'slack_integration_help_button' => 'Una vez que haya guardado su información de Slack, aparecerá un botón de prueba.', - 'slack_test_help' => 'Pruebe si su integración de Slack está configurada correctamente. Debe Guardar Primero su configuracion Slack Actualizada.', + 'general_webhook' => 'Webhook general', + '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_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.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlaces de Soporte de Pie de Página ', 'support_footer_help' => 'Especifica quien ve los enlaces de información de Soporte y Manual de Usuarios de Snipe-IT', @@ -216,8 +224,8 @@ return [ 'update' => 'Actualizar Parámetros', 'value' => 'Valor', 'brand' => 'Marca', - 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', - 'brand_help' => 'Logo, Site Name', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, 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.', @@ -229,7 +237,7 @@ return [ 'privacy_policy' => 'Política de Privacidad', 'privacy_policy_link_help' => 'Si se incluye una URL aquí, un enlace a tu Política de Privacidad se incluirá al pie de la aplicación y en cualquier correo electrónico que el sistema envíe, de conformidad con la ley GDPR. ', 'purge' => 'Purgar registros eliminados', - 'purge_deleted' => 'Purge Deleted ', + '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', @@ -275,51 +283,56 @@ return [ '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', 'username_format_help' => 'Esta configuración sólo será utilizada por el proceso de importación si no se proporciona un nombre de usuario y tenemos que generar un nombre de usuario para usted.', - 'oauth_title' => 'OAuth API Settings', + 'oauth_title' => 'Configuración de la API de OAuth', 'oauth' => 'OAuth', - 'oauth_help' => 'Oauth Endpoint Settings', - 'asset_tag_title' => 'Update Asset Tag Settings', - 'barcode_title' => 'Update Barcode Settings', - 'barcodes' => 'Barcodes', - 'barcodes_help_overview' => 'Barcode & QR settings', - 'barcodes_help' => 'This will attempt to delete cached barcodes. This would typically only be used if your barcode settings have changed, or if your Snipe-IT URL has changed. Barcodes will be re-generated when accessed next.', - 'barcodes_spinner' => 'Attempting to delete files...', - 'barcode_delete_cache' => 'Delete Barcode Cache', - 'branding_title' => 'Update Branding Settings', - 'general_title' => 'Update General Settings', - 'mail_test' => 'Send Test', - 'mail_test_help' => 'This will attempt to send a test mail to :replyto.', - 'filter_by_keyword' => 'Filter by setting keyword', - 'security' => 'Security', - 'security_title' => 'Update Security Settings', - 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', - 'security_help' => 'Two-factor, Password Restrictions', - 'groups_keywords' => 'permissions, permission groups, authorization', - 'groups_help' => 'Account permission groups', - 'localization' => 'Localization', - 'localization_title' => 'Update Localization Settings', - 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', - 'localization_help' => 'Language, date display', - 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', - 'asset_tags_help' => 'Incrementing and prefixes', - 'labels' => 'Labels', - 'labels_title' => 'Update Label Settings', - 'labels_help' => 'Label sizes & settings', - 'purge' => 'Purge', - 'purge_keywords' => 'permanently delete', - 'purge_help' => 'Purge Deleted Records', - 'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.', + 'oauth_help' => 'Configuración de Endpoint para Oauth', + 'asset_tag_title' => 'Actualizar ajustes de etiqueta 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', + 'barcodes_help' => 'Esto intentará eliminar códigos de barras en caché. Esto normalmente sólo se usaría si la configuración del código de barras ha cambiado, o si la URL de Snipe-IT ha cambiado. Los códigos de barras se regenerarán cuando se acceda a continuación.', + 'barcodes_spinner' => 'Intentando eliminar archivos...', + 'barcode_delete_cache' => 'Borrar caché de código de barras', + 'branding_title' => 'Actualizar Configuración de Marca', + 'general_title' => 'Actualizar ajustes generales', + 'mail_test' => 'Enviar prueba', + 'mail_test_help' => 'Esto intentará enviar un correo de prueba a :replyto.', + 'filter_by_keyword' => 'Filtrar por palabra clave', + 'security' => 'Seguridad', + 'security_title' => 'Actualizar ajustes de seguridad', + 'security_keywords' => 'contraseña, contraseñas, requisitos, dos factores, dos factores, contraseñas comunes, inicio de sesión remoto, autenticación', + 'security_help' => 'Restricciones de contraseña de dos factores', + 'groups_keywords' => 'permisos, grupos de permisos, autorización', + 'groups_help' => 'Permisos de grupos para la cuenta', + 'localization' => 'Localización', + 'localization_title' => 'Actualizar ajustes de localización', + 'localization_keywords' => 'localización, moneda, local, locale, zona horaria, zona horaria, internacional, internatinalización, idioma, idioma, traducción', + 'localization_help' => 'Idioma, fecha', + 'notifications' => 'Notificaciones', + 'notifications_help' => 'Alertas de Correo y Configuración de Auditoría', + 'asset_tags_help' => 'Incrementales y prefijos', + 'labels' => 'Etiquetas', + 'labels_title' => 'Actualizar ajustes de etiqueta', + 'labels_help' => 'Tamaños de etiqueta & ajustes', + 'purge' => 'Purgar', + 'purge_keywords' => 'eliminar permanentemente', + 'purge_help' => 'Purgar registros eliminados', + 'ldap_extension_warning' => 'No parece que la extensión LDAP esté instalada o habilitada en este servidor. Todavía puede guardar su configuración, pero necesitará habilitar la extensión LDAP para PHP antes de que funcione la sincronización LDAP o el inicio de sesión.', 'ldap_ad' => 'LDAP/AD', - 'employee_number' => 'Employee Number', - 'create_admin_user' => 'Create a User ::', - 'create_admin_success' => 'Success! Your admin user has been added!', - 'create_admin_redirect' => 'Click here to go to your app login!', - 'setup_migrations' => 'Database Migrations ::', - 'setup_no_migrations' => 'There was nothing to migrate. Your database tables were already set up!', - 'setup_successful_migrations' => 'Your database tables have been created', - 'setup_migration_output' => 'Migration output:', - 'setup_migration_create_user' => 'Next: Create User', - 'ldap_settings_link' => 'LDAP Settings Page', - 'slack_test' => 'Test Integration', + '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_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!', + 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', + 'setup_migration_output' => 'Salida de Migración:', + 'setup_migration_create_user' => 'Siguiente: Crear usuario', + 'ldap_settings_link' => 'Página de ajustes LDAP', + 'slack_test' => 'Prueba Integración', + 'google_callback_help' => 'Esto debería introducirse como la URL de devolución de llamada en la configuración de la aplicación de Google OAuth de la Google developer console de tu 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. ', + ]; diff --git a/resources/lang/es-MX/admin/settings/message.php b/resources/lang/es-MX/admin/settings/message.php index 265a90400c..043832ef47 100644 --- a/resources/lang/es-MX/admin/settings/message.php +++ b/resources/lang/es-MX/admin/settings/message.php @@ -11,8 +11,8 @@ return [ 'file_deleted' => 'El archivo de respaldo fue eliminado satisfactoriamente. ', 'generated' => 'Un nuevo archivo de respaldo fue creado satisfactoriamente.', 'file_not_found' => 'El archivo de respaldo no se ha encontrado en el servidor.', - 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', - 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' + 'restore_warning' => 'Sí, restaurarlo. Entiendo que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', + 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], 'purge' => [ 'error' => 'Ha ocurrido un error mientras se realizaba el purgado. ', @@ -20,24 +20,25 @@ return [ 'success' => 'Registros eliminados correctamente purgados.', ], 'mail' => [ - 'sending' => 'Sending Test Email...', + 'sending' => 'Enviando correo electrónico de prueba...', 'success' => 'Correo enviado!', 'error' => 'El correo no puede ser enviado.', - 'additional' => 'No additional error message provided. Check your mail settings and your app log.' + 'additional' => 'Ningún mensaje de error adicional proporcionado. Comprueba la configuración de tu correo y el registro de mensajes de tu aplicación.' ], 'ldap' => [ - 'testing' => 'Testing LDAP Connection, Binding & Query ...', - '500' => '500 Server Error. Please check your server logs for more information.', + '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.', 'error' => 'Algo salió mal :(', - 'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:', - 'testing_authentication' => 'Testing LDAP Authentication...', - 'authentication_success' => 'User authenticated against LDAP successfully!' + 'sync_success' => 'Una muestra de 10 usuarios devueltos desde el servidor LDAP basado en su configuración:', + 'testing_authentication' => 'Probando autenticación LDAP...', + 'authentication_success' => 'Usuario autenticado contra LDAP con éxito!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', - 'success_pt1' => 'Success! Check the ', - 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', - '500' => '500 Server Error.', - 'error' => 'Algo salió mal.', + 'webhook' => [ + 'sending' => 'Enviando mensaje de prueba a :app...', + 'success_pt1' => '¡Éxito! Comprueba 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', + 'error_misc' => 'Algo salió mal. :( ', ] ]; diff --git a/resources/lang/es-MX/admin/settings/table.php b/resources/lang/es-MX/admin/settings/table.php index 22db5c84ed..f1fd5c550f 100644 --- a/resources/lang/es-MX/admin/settings/table.php +++ b/resources/lang/es-MX/admin/settings/table.php @@ -1,6 +1,6 @@ 'Created', - 'size' => 'Size', + 'created' => 'Creado', + 'size' => 'Tamaño', ); diff --git a/resources/lang/es-MX/admin/users/general.php b/resources/lang/es-MX/admin/users/general.php index c64e543b99..4883a1ff12 100644 --- a/resources/lang/es-MX/admin/users/general.php +++ b/resources/lang/es-MX/admin/users/general.php @@ -17,8 +17,10 @@ return [ 'last_login' => 'Último acceso', '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' => 'Email List of All Assigned', - 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'email_assigned' => 'Lista de correos de los asignados', + 'user_notified' => 'Se ha enviado al usuario un correo con la lista de sus articulos asignados.', + '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', 'send_email_help' => 'Debe proporcionar una dirección de correo electrónico para que este usuario para enviar las credenciales. Las credenciales de correo electrónico sólo se pueden hacer en 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', @@ -33,12 +35,20 @@ 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' => 'ADVERTENCIA:', 'warning_deletion_information' => 'Estas a punto de reingresar los :count usuario(s) listados abajo. Los nombres de Super admins están resaltados en rojo.', - 'update_user_assets_status' => 'Update all assets for these users to this status', + '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', 'remote_label' => 'Este es un usuario remoto', 'remote' => 'Remoto', - 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', + 'remote_help' => 'Esto puede ser útil si necesita filtrar por usuarios remotos que nunca o raramente entran en sus ubicaciones físicas.', 'not_remote_label' => 'Este no es un usuario remoto', + 'vip_label' => 'Usuario VIP', + 'vip_help' => 'Esto puede ser útil para marcar a personas importantes en su organización si desea manejarlas de maneras especiales.', + 'create_user' => 'Crear Usuario', + 'create_user_page_explanation' => 'Esta es la información de la cuenta que usará para acceder al sitio por primera vez.', + 'email_credentials' => 'Credenciales de email', + 'email_credentials_text' => 'Enviar mis credenciales a la dirección de correo de arriba', + 'next_save_user' => 'Siguiente: Guardar usuario', + 'all_assigned_list_generation' => 'Generado el:', + 'email_user_creds_on_create' => '¿Enviar a este usuario sus credenciales?', ]; diff --git a/resources/lang/es-MX/admin/users/message.php b/resources/lang/es-MX/admin/users/message.php index f9778ff12e..89b803767c 100644 --- a/resources/lang/es-MX/admin/users/message.php +++ b/resources/lang/es-MX/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Ha declinado con éxito este equipo.', 'bulk_manager_warn' => 'Sus usuarios han sido correctamente actualizados, de todos modos la entrada de administrador no fue guardada porque el administrador seleccionado también estaba en la lista de usuarios a ser editada, y los usuarios no pueden ser sus propior administradores. Vuelva a seleccionar los usuarios, excluyendo al administrador.', 'user_exists' => 'El Usuario ya existe!', - 'user_not_found' => 'Usuario [:id] no existe.', + 'user_not_found' => 'El usuario no existe.', 'user_login_required' => 'El campo Usuario es obligatorio', 'user_password_required' => 'El password es obligatorio.', 'insufficient_permissions' => 'No tiene permiso.', @@ -15,7 +15,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.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_assets_assigned' => 'Este usuario no tiene ningún activo asignado', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Este usuario no tiene ningún correo electrónico.', + 'success' => 'El usuario ha sido notificado sobre su inventario actual.' ) ); \ No newline at end of file diff --git a/resources/lang/es-MX/auth/general.php b/resources/lang/es-MX/auth/general.php index d4c2a9d393..0168d1ac07 100644 --- a/resources/lang/es-MX/auth/general.php +++ b/resources/lang/es-MX/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Recordarme', 'username_help_top' => 'Introduzca 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 un correo electrónico asociado no recibirá un correo electrónico con un enlace de restablecimiento de contraseña. ', - ]; + 'google_login' => 'O inicia sesión con Google Workspace', + 'google_login_failed' => 'Error al iniciar sesión en Google. Vuelve a intentarlo.', + +]; diff --git a/resources/lang/es-MX/general.php b/resources/lang/es-MX/general.php index fe00824631..4792b35f3b 100644 --- a/resources/lang/es-MX/general.php +++ b/resources/lang/es-MX/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accesorios', 'activated' => 'Activado', + 'accepted_date' => 'Fecha de aceptación', 'accessory' => 'Accesorio', 'accessory_report' => 'Reporte de Accesorios', 'action' => 'Acción', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Administrator', 'add_seats' => 'Sitios añadidos', - 'age' => "Age", + 'age' => "Edad", 'all_assets' => 'Todos los Equipos', 'all' => 'Todos los', 'archived' => 'Archivado', @@ -27,7 +28,13 @@ return [ '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', + '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', 'avatar_delete' => 'Eliminar Avatar', 'avatar_upload' => 'Subir Avatar', 'back' => 'Atras', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Editar en grupo', 'bulk_delete' => 'Eliminar en grupo', 'bulk_actions' => 'Acciones masivas', - 'bulk_checkin_delete' => 'Reingreso masivo de elementos desde Usuarios', + 'bulk_checkin_delete' => 'Hacer Checkin / Eliminar usuarios en masa', + 'byod' => 'BYOD', + 'byod_help' => 'Este equipo es propiedad del usuario', 'bystatus' => 'por Estado', 'cancel' => 'Cancelar', 'categories' => 'Categorías', @@ -83,6 +92,7 @@ return [ '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' => 'Are you sure you wish to delete :item?', + 'delete_confirm_no_undo' => '¿Estás seguro de que deseas eliminar este articulo? Esta acción no se puede revertir.', 'deleted' => 'Borrado', 'delete_seats' => 'Asientos eliminados', 'deletion_failed' => 'Error al eliminar', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif y svg. 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', '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.', @@ -147,7 +158,9 @@ return [ 'asset_maintenance_report' => 'Reporte de Mantenimiento de Equipo', 'asset_maintenances' => 'Mantenimientos de Equipo', 'item' => 'Item', - 'item_name' => 'Nombre del ítem', + 'item_name' => 'Nombre del elemento', + 'import_file' => 'importar archivo CSV', + 'import_type' => 'Tipo de importación CSV', 'insufficient_permissions' => '¡Permisos insuficientes!', 'kits' => 'Kits predefinidos', 'language' => 'Lenguaje', @@ -168,7 +181,7 @@ return [ 'logout' => 'Desconexión', 'lookup_by_tag' => 'Buscar por etiqueta de activo', 'maintenances' => 'Mantenimientos', - 'manage_api_keys' => 'Administrar API Keys', + 'manage_api_keys' => 'Administrar claves API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite Github con sabor a markdown.', @@ -201,7 +214,7 @@ return [ 'purchase_date' => 'Fecha de compra', 'qty' => 'Cant', 'quantity' => 'Cantidad', - 'quantity_minimum' => 'Tienes :count elementos por debajo o casi por debajo de los niveles mínimos de cantidad', + 'quantity_minimum' => 'Tienes :count artículos por debajo o casi por debajo de los niveles mínimos de cantidad', 'quickscan_checkin' => 'Escaneo rápido de entrada', 'quickscan_checkin_status' => 'Estado de registro', 'ready_to_deploy' => 'Disponibles', @@ -213,11 +226,12 @@ return [ 'restore' => 'Restaurar', 'requestable_models' => 'Modelos disponibles para solicitar', 'requested' => 'Solicitado', - 'requested_date' => 'Fecha de solicitud', + 'requested_date' => 'Fecha solicitada', 'requested_assets' => 'Activos solicitados', 'requested_assets_menu' => 'Activos solicitados', 'request_canceled' => 'Solicitud Cancelada', 'save' => 'Guardar', + 'select_var' => 'Seleccionar :thing... ', // this will eventually replace all of our other selects 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', @@ -240,8 +254,8 @@ return [ 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', 'skin' => 'Tema', - 'slack_msg_note' => 'Se enviará un mensaje de slack', - 'slack_test_msg' => '¡Oh mira! ¡Parece que tu integración de Slack con Snipe-IT está funcionando!', + '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!', 'some_features_disabled' => 'MODO DE DEMOSTRACIÓN: Algunas funciones estan desactivadas para esta instalación.', 'site_name' => 'Sitio', 'state' => 'Provincia', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => '¿Está seguro que desea eliminar', 'submit' => 'Enviar', 'target' => 'Objetivo', - 'toggle_navigation' => 'Alternar navegación', 'time_and_date_display' => 'Hora y fecha', 'total_assets' => 'Equipos', 'total_licenses' => 'licencias totales', @@ -281,9 +294,9 @@ return [ 'yes' => 'Si', 'zip' => 'Códio Postal', 'noimage' => 'Imagen no subida o imagen no encontrada.', - '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' => 'El archivo solicitado no existe en el servidor.', + 'file_upload_success' => 'Archivo subido con éxito!', + 'no_files_uploaded' => 'Archivo subido con éxito!', 'token_expired' => 'Su sesión ha expirado, Intente otra ves.', 'login_enabled' => 'Inicio de sesión activado', 'audit_due' => 'Para Auditoria', @@ -300,7 +313,7 @@ return [ 'hide_deleted' => 'Ocultar eliminados', 'email' => 'Email', 'do_not_change' => 'No cambiar', - 'bug_report' => 'Reportar un fallo', + 'bug_report' => 'Reportar un error', 'user_manual' => 'Manual del usuario', 'setup_step_1' => 'Paso 1', 'setup_step_2' => 'Paso 2', @@ -309,19 +322,19 @@ return [ 'setup_config_check' => 'Comprobar configuración', 'setup_create_database' => 'Crear Tablas de Base de Datos', 'setup_create_admin' => 'Crear Usuario Admin', - 'setup_done' => '¡Terminado!', + 'setup_done' => '¡Finalizada!', 'bulk_edit_about_to' => 'Estás 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', - '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.', + '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.', '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.

-

Si desea exportar sólo ciertos activos, utilice las siguientes opciones para afinar sus resultados.

', + 'to' => 'Para', + 'report_fields_info' => '

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

+

Si desea exportar solo ciertos activos, use las siguientes opciones para afinar los resultados.

', 'range' => 'Rango', 'bom_remark' => 'Añadir un BOM (signo de orden de byte) a este CSV', 'improvements' => 'Mejoras', @@ -344,16 +357,16 @@ return [ 'new_consumable' => 'Nuevo Consumible', 'collapse' => 'Contraer', 'assigned' => 'Asignado', - 'asset_count' => 'Recuento de activos', - 'accessories_count' => 'Recuento de accesorios', - 'consumables_count' => 'Recuento de consumibles', - 'components_count' => 'Recuento de componentes', - 'licenses_count' => 'Recuento de licencias', + 'asset_count' => 'Cantidad de activos', + 'accessories_count' => 'Cantidad de accesorios', + 'consumables_count' => 'Cantidad de consumibles', + '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_success' => 'Éxito:', 'notification_warning' => 'Advertencia:', - 'notification_info' => 'Info:', + 'notification_info' => 'Información:', 'asset_information' => 'Información del activo', 'model_name' => 'Nombre del modelo:', 'asset_name' => 'Nombre del activo:', @@ -364,29 +377,76 @@ return [ 'clone_item' => 'Clonar objeto', 'checkout_tooltip' => 'Registrar salida de este elemento', 'checkin_tooltip' => 'Registrar entrada de este elemento', - 'checkout_user_tooltip' => 'Registrar salida de este elemento para un usuario', - 'maintenance_mode' => 'El servicio no está disponible temporalmente debido por actualizaciones del sistema. Por favor, vuelva más tarde.', + 'checkout_user_tooltip' => 'Revisa este elemento a un usuario', + '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.)', 'purge_not_allowed' => 'La purga de datos eliminados ha sido deshabilitada en el archivo .env. Contacte con el soporte técnico o con el administrador de su sistema.', 'backup_delete_not_allowed' => 'La eliminación de copias de seguridad se ha desactivado en el archivo .env. Contacte con el soporte técnico o con el administrador de su sistema.', '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 su aceptación de activos.', + 'shitty_browser' => 'No se ha detectado ninguna firma. Si está utilizando un navegador antiguo, por favor utilice un navegador más moderno para completar su aceptación de activos.', '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 Ajustes 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.', - 'set_to_null' => 'Eliminar valores para este activo|Eliminar valores para todos los :asset_count activos ', + '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', 'assets_by_status' => 'Activos por estado', 'assets_by_status_type' => 'Activos por tipo de estado', - 'pie_chart_type' => 'Tipo de gráfico circular del tablero', + 'pie_chart_type' => 'Tipo de gráfico circular del Tablero', 'hello_name' => '¡Hola, :name!', 'unaccepted_profile_warning' => 'Tienes :count elementos que requieren aceptación. Haz clic aquí para aceptarlos o rechazarlos', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', - 'placeholder_kit' => 'Seleccione un kit' + 'placeholder_kit' => 'Seleccione un kit', + 'file_not_found' => 'Archivo no encontrado', + 'preview_not_available' => '(sin vista previa)', + 'setup' => 'Configuración', + 'pre_flight' => 'Pre-vuelo', + 'skip_to_main_content' => 'Saltar al contenido principal', + 'toggle_navigation' => 'Cambiar navegación', + 'alerts' => 'Alertas', + 'tasks_view_all' => 'Mostrar todas las tareas', + 'true' => 'Verdadero', + 'false' => 'Falso', + 'integration_option' => 'Opción de integración', + 'log_does_not_exist' => 'No existe ningún registro de actividad 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á 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.', + 'no_users_selected' => 'Ningún usuario seleccionado', + 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', + 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merged' => 'fusionado', + 'merged_log_this_user_into' => 'Usuario fusionado (ID :to_id - :to_username) con el ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_from' => 'ID de usuario fusionado :from_id (:from_username) con este usuario (ID :to_id - :to_username)', + '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.', + 'send_welcome_email_to_users' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', + 'back_before_importing' => '¿Copia de seguridad antes de importar?', + 'csv_header_field' => 'Campo de cabecera CSV', + 'import_field' => 'Importar campo', + 'sample_value' => 'Valor de ejemplo', + 'no_headers' => 'No se encontraron columnas', + 'error_in_import_file' => 'Hubo un error leyendo el archivo CSV: :error', + 'percent_complete' => ':percent % Completado', + 'errors_importing' => 'Se han producido algunos errores al importar: ', + 'warning' => 'ADVERTENCIA: :warning', + 'success_redirecting' => '"Éxito... Redirigiendo.', + 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', + 'setup_migration_output' => 'Salida de Migración:', + 'setup_migration_create_user' => 'Siguiente: Crear usuario', + 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero deberá confirmarlo.', + '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.', + 'modal_confirm_generic' => '¿Está seguro?', + 'cannot_be_deleted' => 'Este elemento no puede ser eliminado', + 'undeployable_tooltip' => 'Este elemento no puede ser asignado. Compruebe la cantidad restante.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/es-MX/help.php b/resources/lang/es-MX/help.php index 0b4fa13e5b..bdb0595b06 100644 --- a/resources/lang/es-MX/help.php +++ b/resources/lang/es-MX/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el activo para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en la auditoría.

Tenga en cuenta que este activo está asignado, no se cambiará la ubicación de la persona, activo o ubicación de donde está asignado.', + '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.', '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.', diff --git a/resources/lang/es-MX/localizations.php b/resources/lang/es-MX/localizations.php index be2c321861..d160931cb3 100644 --- a/resources/lang/es-MX/localizations.php +++ b/resources/lang/es-MX/localizations.php @@ -2,313 +2,314 @@ return [ - 'select_language' => 'Select a language', + 'select_language' => 'Seleccione un idioma', 'languages' => [ - 'en'=> 'English, US', - 'en-GB'=> 'English, UK', + 'en'=> 'Inglés, EEUU', + 'en-GB'=> 'Inglés, Reino Unido', 'af'=> 'Afrikaans', - 'ar'=> 'Arabic', - 'bg'=> 'Bulgarian', - 'zh-CN'=> 'Chinese Simplified', - 'zh-TW'=> 'Chinese Traditional', - 'hr'=> 'Croatian', - 'cs'=> 'Czech', - 'da'=> 'Danish', - 'nl'=> 'Dutch', - 'en-ID'=> 'English, Indonesia', - 'et'=> 'Estonian', + 'ar'=> 'Árabe', + 'bg'=> 'Búlgaro', + 'zh-CN'=> 'Chino simplificado', + 'zh-TW'=> 'Chino tradicional', + 'hr'=> 'Croata', + 'cs'=> 'Checo', + 'da'=> 'Danés', + 'nl'=> 'Holandés', + 'en-ID'=> 'Inglés, Indonesia', + 'et'=> 'Estonio', 'fil'=> 'Filipino', - 'fi'=> 'Finnish', - 'fr'=> 'French', - 'de'=> 'German', - 'de-i'=> 'German (Informal)', - 'el'=> 'Greek', - 'he'=> 'Hebrew', - 'hu'=> 'Hungarian', + 'fi'=> 'Finlandés', + 'fr'=> 'Francés', + 'de'=> 'Alemán', + 'de-i'=> 'Alemán (informal)', + 'el'=> 'Griego', + 'he'=> 'Hebreo', + 'hu'=> 'Húngaro', 'is' => 'Icelandic', - 'id'=> 'Indonesian', - 'ga-IE'=> 'Irish', - 'it'=> 'Italian', - 'ja'=> 'Japanese', - 'ko'=> 'Korean', - 'lv'=>'Latvian', - 'lt'=> 'Lithuanian', - 'mk'=> 'Macedonian', - 'ms'=> 'Malay', + 'id'=> 'Indonesio/a', + 'ga-IE'=> 'Irlandés', + 'it'=> 'Italiano', + 'ja'=> 'Japonés', + 'ko'=> 'Coreano', + 'lv'=>'Letón', + 'lt'=> 'Lituano', + 'mk'=> 'Macedonio', + 'ms'=> 'Malayo', 'mi'=> 'Maori', - 'mn'=> 'Mongolian', - 'no'=> 'Norwegian', - 'fa'=> 'Persian', - 'pl'=> 'Polish', - 'pt-PT'=> 'Portuguese', - 'pt-BR'=> 'Portuguese, Brazilian', - 'ro'=> 'Romanian', - 'ru'=> 'Russian', + 'mn'=> 'Mongol', + 'no'=> 'Noruego', + 'fa'=> 'Persa', + 'pl'=> 'Polaco', + 'pt-PT'=> 'Portugués', + 'pt-BR'=> 'Portugués, Brasileño', + 'ro'=> 'Rumano', + 'ru'=> 'Ruso', 'sr-CS' => 'Serbian (Latin)', 'sl'=> 'Slovenian', - 'es-ES'=> 'Spanish', - 'es-CO'=> 'Spanish, Colombia', - 'es-MX'=> 'Spanish, Mexico', - 'es-VE'=> 'Spanish, Venezuela', - 'sv-SE'=> 'Swedish', + 'es-ES'=> 'Español', + 'es-CO'=> 'Español, Colombia', + 'es-MX'=> 'Español, México', + 'es-VE'=> 'Español, Venezuela', + 'sv-SE'=> 'Sueco', 'tl'=> 'Tagalog', 'ta'=> 'Tamil', - 'th'=> 'Thai', - 'tr'=> 'Turkish', - 'uk'=> 'Ukranian', - 'vi'=> 'Vietnamese', - 'cy'=> 'Welsh', - 'zu'=> 'Zulu', + 'th'=> 'Tailandés', + 'tr'=> 'Turco', + 'uk'=> 'Ucraniano', + 'vi'=> 'Vietnamita', + 'cy'=> 'Galés', + 'zu'=> 'Zulú', ], - 'select_country' => 'Select a country', + 'select_country' => 'Seleccione un país', 'countries' => [ - 'AC'=>'Ascension Island', + 'AC'=>'Isla de Ascensión', 'AD'=>'Andorra', - 'AE'=>'United Arab Emirates', - 'AF'=>'Afghanistan', - 'AG'=>'Antigua And Barbuda', + 'AE'=>'Emiratos Árabes Unidos', + 'AF'=>'Afganistán', + 'AG'=>'Antigua y Barbuda', 'AI'=>'Anguilla', 'AL'=>'Albania', 'AM'=>'Armenia', - 'AN'=>'Netherlands Antilles', + 'AN'=>'Antillas Holandesas', 'AO'=>'Angola', - 'AQ'=>'Antarctica', + 'AQ'=>'La antártida', 'AR'=>'Argentina', - 'AS'=>'American Samoa', + 'AS'=>'Samoa Estadounidense', 'AT'=>'Austria', 'AU'=>'Australia', 'AW'=>'Aruba', - 'AX'=>'Ã…land', - 'AZ'=>'Azerbaijan', - 'BA'=>'Bosnia And Herzegovina', + 'AX'=>'Islas Åland', + 'AZ'=>'Azerbaiyán', + 'BA'=>'Bosnia y Herzegovina', 'BB'=>'Barbados', - 'BE'=>'Belgium', + 'BE'=>'Bélgica', 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', 'BG'=>'Bulgaria', - 'BH'=>'Bahrain', + 'BH'=>'Baréin', 'BI'=>'Burundi', 'BJ'=>'Benin', 'BM'=>'Bermuda', - 'BN'=>'Brunei Darussalam', + 'BN'=>'Brunéi Darussalam', 'BO'=>'Bolivia', - 'BR'=>'Brazil', + 'BR'=>'Brasil', 'BS'=>'Bahamas', 'BT'=>'Bhutan', - 'BV'=>'Bouvet Island', + 'BV'=>'La Isla De Bouvet', 'BW'=>'Botswana', - 'BY'=>'Belarus', - 'BZ'=>'Belize', - 'CA'=>'Canada', - 'CC'=>'Cocos (Keeling) Islands', - 'CD'=>'Congo (Democratic Republic)', - 'CF'=>'Central African Republic', - 'CG'=>'Congo (Republic)', - 'CH'=>'Switzerland', - 'CI'=>'Côte d\'Ivoire', - 'CK'=>'Cook Islands', + 'BY'=>'Bielorrusia', + 'BZ'=>'Belice', + 'CA'=>'Canadá', + 'CC'=>'Islas Cocos (Keeling)', + 'CD'=>'Congo (República Democrática)', + 'CF'=>'República Centroafricana', + 'CG'=>'Congo (República)', + 'CH'=>'Suiza', + 'CI'=>'Costa de Marfil', + 'CK'=>'Islas Cook', 'CL'=>'Chile', - 'CM'=>'Cameroon', - 'CN'=>'People\'s Republic of China', + 'CM'=>'Camerún', + 'CN'=>'República Popular China', 'CO'=>'Colombia', 'CR'=>'Costa Rica', 'CU'=>'Cuba', - 'CV'=>'Cape Verde', - 'CX'=>'Christmas Island', - 'CY'=>'Cyprus', - 'CZ'=>'Czech Republic', - 'DE'=>'Germany', - 'DJ'=>'Djibouti', - 'DK'=>'Denmark', - 'DM'=>'Dominica', - 'DO'=>'Dominican Republic', - 'DZ'=>'Algeria', + 'CV'=>'Cabo Verde', + 'CX'=>'Isla de Navidad', + 'CY'=>'Chipre', + 'CZ'=>'República Checa', + 'DE'=>'Alemania', + 'DJ'=>'Djibuti', + 'DK'=>'Dinamarca', + 'DM'=>'Domínica', + 'DO'=>'República Dominicana', + 'DZ'=>'Argelia', 'EC'=>'Ecuador', 'EE'=>'Estonia', - 'EG'=>'Egypt', + 'EG'=>'Egipto', 'ER'=>'Eritrea', - 'ES'=>'Spain', - 'ET'=>'Ethiopia', - 'EU'=>'European Union', - 'FI'=>'Finland', + 'ES'=>'España', + 'ET'=>'Etiopía', + 'EU'=>'Unión Europea', + 'FI'=>'Finlandia', 'FJ'=>'Fiji', - 'FK'=>'Falkland Islands (Malvinas)', - 'FM'=>'Micronesia, Federated States Of', - 'FO'=>'Faroe Islands', - 'FR'=>'France', + 'FK'=>'Islas Falkland (Malvinas)', + 'FM'=>'Estados Federados de la Micronesia', + 'FO'=>'Islas Faroe', + 'FR'=>'Francia', 'GA'=>'Gabon', - 'GD'=>'Grenada', + 'GD'=>'Granada', 'GE'=>'Georgia', - 'GF'=>'French Guiana', + 'GF'=>'Guayana Francesa', 'GG'=>'Guernsey', 'GH'=>'Ghana', 'GI'=>'Gibraltar', - 'GL'=>'Greenland', + 'GL'=>'Groenlandia', 'GM'=>'Gambia', 'GN'=>'Guinea', - 'GP'=>'Guadeloupe', - 'GQ'=>'Equatorial Guinea', - 'GR'=>'Greece', - 'GS'=>'South Georgia And The South Sandwich Islands', + 'GP'=>'Guadalupe', + 'GQ'=>'Guinea Ecuatorial', + 'GR'=>'Grecia', + 'GS'=>'Georgia del sur y las Islas Sandwich del Sur', 'GT'=>'Guatemala', 'GU'=>'Guam', - 'GW'=>'Guinea-Bissau', + 'GW'=>'Guinea-Bisáu', 'GY'=>'Guyana', 'HK'=>'Hong Kong', - 'HM'=>'Heard And Mc Donald Islands', + 'HM'=>'Islas Heard y Mc Donald', 'HN'=>'Honduras', - 'HR'=>'Croatia (local name: Hrvatska)', - 'HT'=>'Haiti', - 'HU'=>'Hungary', + 'HR'=>'Croacia (nombre local: Hrvatska)', + 'HT'=>'Haití', + 'HU'=>'Hungría', 'ID'=>'Indonesia', - 'IE'=>'Ireland', + 'IE'=>'Irlanda', 'IL'=>'Israel', - 'IM'=>'Isle of Man', + 'IM'=>'Isla de Man', 'IN'=>'India', - 'IO'=>'British Indian Ocean Territory', - 'IQ'=>'Iraq', - 'IR'=>'Iran, Islamic Republic Of', - 'IS'=>'Iceland', - 'IT'=>'Italy', + 'IO'=>'Territorio Británico del Océano Índico', + 'IQ'=>'Irak', + 'IR'=>'Irán, República Islámica Del', + 'IS'=>'Islandia', + 'IT'=>'Italia', 'JE'=>'Jersey', 'JM'=>'Jamaica', - 'JO'=>'Jordan', - 'JP'=>'Japan', - 'KE'=>'Kenya', + 'JO'=>'Jordania', + 'JP'=>'Japón', + 'KE'=>'Kenia', 'KG'=>'Kyrgyzstan', - 'KH'=>'Cambodia', + 'KH'=>'Camboya', 'KI'=>'Kiribati', - 'KM'=>'Comoros', - 'KN'=>'Saint Kitts And Nevis', - 'KR'=>'Korea, Republic Of', + 'KM'=>'Comoras', + 'KN'=>'San Cristóbal y Nevis', + 'KR'=>'Corea del Sur', 'KW'=>'Kuwait', - 'KY'=>'Cayman Islands', - 'KZ'=>'Kazakhstan', - 'LA'=>'Lao People\'s Democratic Republic', - 'LB'=>'Lebanon', - 'LC'=>'Saint Lucia', + 'KY'=>'Islas Caimán', + 'KZ'=>'Kazakan', + 'LA'=>'República Democrática Popular Laos', + 'LB'=>'Líbano', + 'LC'=>'Santa Lucía', 'LI'=>'Liechtenstein', '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', + 'LU'=>'Luxemburgo', + 'LV'=>'Letonia', + 'LY'=>'Jamahiriya Árabe Libia', + 'MA'=>'Marruecos', + 'MC'=>'Mónaco', + 'MD'=>'Repúplica de Moldavia', 'ME'=>'Montenegro', 'MG'=>'Madagascar', - 'MH'=>'Marshall Islands', - 'MK'=>'Macedonia, The Former Yugoslav Republic Of', + 'MH'=>'Islas Marshall', + 'MK'=>'Macedonia, Ex República Yugoslava de', 'ML'=>'Mali', 'MM'=>'Myanmar', 'MN'=>'Mongolia', - 'MO'=>'Macau', - 'MP'=>'Northern Mariana Islands', - 'MQ'=>'Martinique', + 'MO'=>'Macao', + 'MP'=>'Islas Mariana del Norte', + 'MQ'=>'Martinica', 'MR'=>'Mauritania', 'MS'=>'Montserrat', 'MT'=>'Malta', - 'MU'=>'Mauritius', - 'MV'=>'Maldives', + 'MU'=>'Mauricio', + 'MV'=>'Maldivas', 'MW'=>'Malawi', - 'MX'=>'Mexico', - 'MY'=>'Malaysia', + 'MX'=>'México', + 'MY'=>'Malasia', 'MZ'=>'Mozambique', 'NA'=>'Namibia', - 'NC'=>'New Caledonia', + 'NC'=>'Nueva Caledonia', 'NE'=>'Niger', - 'NF'=>'Norfolk Island', + 'NF'=>'Isla Norfolk', 'NG'=>'Nigeria', 'NI'=>'Nicaragua', - 'NL'=>'Netherlands', - 'NO'=>'Norway', + 'NL'=>'Países Bajos', + 'NO'=>'Noruega', 'NP'=>'Nepal', 'NR'=>'Nauru', - 'NU'=>'Niue', - 'NZ'=>'New Zealand', - 'OM'=>'Oman', - 'PA'=>'Panama', - 'PE'=>'Peru', - 'PF'=>'French Polynesia', - 'PG'=>'Papua New Guinea', - 'PH'=>'Philippines, Republic of the', - 'PK'=>'Pakistan', - 'PL'=>'Poland', - 'PM'=>'St. Pierre And Miquelon', - 'PN'=>'Pitcairn', + 'NU'=>'Isla Niue', + 'NZ'=>'Nueva Zelanda', + 'OM'=>'Omán', + 'PA'=>'Panamá', + 'PE'=>'Perú', + 'PF'=>'Polinesia Francesa', + 'PG'=>'Papúa Nueva Guinea', + 'PH'=>'Republica de Filipinas', + 'PK'=>'Pakistán', + 'PL'=>'Polonia', + 'PM'=>'San Pedro y Miquelón', + 'PN'=>'Islas Pitcairn', 'PR'=>'Puerto Rico', 'PS'=>'Palestine', 'PT'=>'Portugal', 'PW'=>'Palau', 'PY'=>'Paraguay', 'QA'=>'Qatar', - 'RE'=>'Reunion', - 'RO'=>'Romania', + 'RE'=>'Reunión', + 'RO'=>'Rumania', 'RS'=>'Serbia', - 'RU'=>'Russian Federation', - 'RW'=>'Rwanda', - 'SA'=>'Saudi Arabia', - 'UK'=>'Scotland', - 'SB'=>'Solomon Islands', + 'RU'=>'Federación Rusa', + 'RW'=>'Ruanda', + 'SA'=>'Arabia Saudita', + 'UK'=>'Escocia', + 'SB'=>'Islas Salomón', 'SC'=>'Seychelles', - 'SD'=>'Sudan', - 'SE'=>'Sweden', - 'SG'=>'Singapore', + 'SS'=>'Sudán del Sur', + 'SD'=>'Sudán', + 'SE'=>'Suecia', + 'SG'=>'Singapur', 'SH'=>'St. Helena', - 'SI'=>'Slovenia', - 'SJ'=>'Svalbard And Jan Mayen Islands', - 'SK'=>'Slovakia (Slovak Republic)', - 'SL'=>'Sierra Leone', + 'SI'=>'Eslovenia', + 'SJ'=>'Islas Svalbard y Jan Mayen', + 'SK'=>'Eslovaquia (República Eslovaca)', + 'SL'=>'Sierra Leona', 'SM'=>'San Marino', 'SN'=>'Senegal', 'SO'=>'Somalia', - 'SR'=>'Suriname', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', + 'SR'=>'Surinam', + 'ST'=>'Sao Tomé y Príncipe', + 'SU'=>'Unión Soviética', 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', + 'SY'=>'República Árabe Siria', 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', + 'TC'=>'Islas Turcas y Caicos', 'TD'=>'Chad', - 'TF'=>'French Southern Territories', + 'TF'=>'Territorios franceses del sur', 'TG'=>'Togo', - 'TH'=>'Thailand', - 'TJ'=>'Tajikistan', + 'TH'=>'Tailandia', + 'TJ'=>'Tayikistán', 'TK'=>'Tokelau', - 'TI'=>'East Timor', - 'TM'=>'Turkmenistan', - 'TN'=>'Tunisia', + 'TI'=>'Timor Oriental', + 'TM'=>'Turkmenistán', + 'TN'=>'Túnez', 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', - 'TR'=>'Turkey', - 'TT'=>'Trinidad And Tobago', + 'TP'=>'Timor Oriental (código antiguo)', + 'TR'=>'Turquía', + 'TT'=>'Trinidad y Tobago', 'TV'=>'Tuvalu', - 'TW'=>'Taiwan', - 'TZ'=>'Tanzania, United Republic Of', - 'UA'=>'Ukraine', + 'TW'=>'Taiwán', + 'TZ'=>'Tanzania, República Unida de', + 'UA'=>'Ucrania', 'UG'=>'Uganda', - 'UK'=>'United Kingdom', - 'US'=>'United States', - 'UM'=>'United States Minor Outlying Islands', + 'UK'=>'Reino Unido', + 'US'=>'Estados Unidos', + 'UM'=>'Islas Menores de Estados Unidos', 'UY'=>'Uruguay', 'UZ'=>'Uzbekistan', - 'VA'=>'Vatican City State (Holy See)', - 'VC'=>'Saint Vincent And The Grenadines', + 'VA'=>'Estado del Vaticano (Santa Sede)', + 'VC'=>'San Vicente y las Granadinas', 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', + 'VG'=>'Islas Vírgenes Británicas', + 'VI'=>'Islas Vírgenes de los Estados Unidos', 'VN'=>'Viet Nam', 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', + 'WF'=>'Islas Wallis y Futuna', 'WS'=>'Samoa', 'YE'=>'Yemen', 'YT'=>'Mayotte', - 'ZA'=>'South Africa', + 'ZA'=>'Sudáfrica', 'ZM'=>'Zambia', 'ZW'=>'Zimbabwe', ], diff --git a/resources/lang/es-MX/mail.php b/resources/lang/es-MX/mail.php index 217efad654..94054a8f0e 100644 --- a/resources/lang/es-MX/mail.php +++ b/resources/lang/es-MX/mail.php @@ -2,7 +2,7 @@ return [ 'acceptance_asset_accepted' => 'Un usuario ha aceptado un artículo', - 'acceptance_asset_declined' => 'A user has declined an item', + 'acceptance_asset_declined' => 'Un usuario ha rechazado un artículo', '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', 'accessory_name' => 'Nombre de accesorio:', @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT con las credenciales siguientes:', 'login' => 'Entrar:', 'Low_Inventory_Report' => 'Reporte de inventario bajo', + 'inventory_report' => 'Reporte de Inventario', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo se ha extraído bajo su nombre, los detalles están a continuación.', @@ -61,7 +62,7 @@ return [ 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', '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.', - 'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.', + '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.', '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.', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Tus credenciales de Snipe-IT', 'Accessory_Checkin_Notification' => 'Accesorio devuelto', 'Asset_Checkin_Notification' => 'Activo devuelto', + 'Asset_Checkout_Notification' => 'Activo asignado', 'License_Checkin_Notification' => 'Licencia devuelta', 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', 'Expected_Checkin_Date' => 'Un activo asignado a ti debe ser devuelto en :date', 'your_assets' => 'Ver tus activos', + 'rights_reserved' => 'Todos los derechos reservados.', ]; diff --git a/resources/lang/es-MX/validation.php b/resources/lang/es-MX/validation.php index 7361de1914..7be4c0ed9f 100644 --- a/resources/lang/es-MX/validation.php +++ b/resources/lang/es-MX/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'El: atributo debe ser un archivo.', 'filled' => 'El campo: atributo debe tener un valor.', 'image' => ':attribute debe ser una imagen.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la empresa', 'json' => 'El atributo: debe ser una cadena JSON válida.', 'max' => [ 'numeric' => ':attribute no debe ser mayor que :max.', @@ -66,7 +66,9 @@ return [ 'string' => ':attribute debe contener como mínimo :min caracteres.', 'array' => 'El atributo: debe tener al menos: elementos min.', ], - 'starts_with' => 'El :attribute debe comenzar con uno de los siguientes: :values.', + '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.', @@ -93,7 +95,7 @@ return [ 'url' => ':attribute formato incorrecto.', 'unique_undeleted' => 'El :atrribute debe ser único.', 'non_circular' => ':attribute no debe crear una referencia circular.', - 'disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el usuario.', + 'disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el nombre de usuario.', 'letters' => 'La contraseña debe contener al menos una letra.', 'numbers' => 'La contraseña debe contener al menos un número.', 'case_diff' => 'La contraseña debe usar mayúsculas y minúsculas.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Tu 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. + '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', + 'termination_date.date_format' => ':attribute debe ser una fecha válida con formato AAA-MM-DD', + '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', + ], /* diff --git a/resources/lang/es-VE/account/general.php b/resources/lang/es-VE/account/general.php index 7fc060a849..27118e2f3a 100644 --- a/resources/lang/es-VE/account/general.php +++ b/resources/lang/es-VE/account/general.php @@ -1,12 +1,12 @@ 'Personal API Keys', - '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:', + 'personal_api_keys' => 'Claves API personales', + 'api_key_warning' => 'Al generar un token API, asegúrate de copiarlo inmediatamente ya que + no será visible de nuevo.', + 'api_base_url' => 'La url base de tu API es:', '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.', + 'api_token_expiration_time' => 'Los tokens de la API están establecidos para expirar en:', + 'api_reference' => 'Por favor, revise la referencia API para + encontrar endpoints específicos de la API y documentación adicional de la API.', ); diff --git a/resources/lang/es-VE/admin/accessories/general.php b/resources/lang/es-VE/admin/accessories/general.php index e972a7f8a7..ba25a641fe 100644 --- a/resources/lang/es-VE/admin/accessories/general.php +++ b/resources/lang/es-VE/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Actualizar Accesorio', 'use_default_eula' => 'Usa la licencia primaria por defecto en su lugar.', 'use_default_eula_disabled' => 'Usa la licencia primaria por defecto en su lugar. No se ha establecido una licencia primaria por defecto. Por favor, añade una en las configuraciones.', + 'clone' => 'Clonar accesorio', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/es-VE/admin/accessories/message.php b/resources/lang/es-VE/admin/accessories/message.php index 508ec2255f..6f7b6d4277 100644 --- a/resources/lang/es-VE/admin/accessories/message.php +++ b/resources/lang/es-VE/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'Equipo no ha sido retirado, inténtalo de nuevo', 'success' => 'El accesorio se ha retirado exitosamente.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Este usuario es inválido. Por favor, inténtalo 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 d048dc08de..1318740d0f 100644 --- a/resources/lang/es-VE/admin/asset_maintenances/form.php +++ b/resources/lang/es-VE/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Tipo de Mantenimiento', + 'asset_maintenance_type' => 'Tipo de Mantenimiento de Equipo', 'title' => 'Título', - 'start_date' => 'Empezado', - 'completion_date' => 'Completado', + 'start_date' => 'Fecha de inicio', + 'completion_date' => 'Fecha de Terminación', 'cost' => 'Costo', 'is_warranty' => 'Mejora de la Garantía', - 'asset_maintenance_time' => 'Días', + 'asset_maintenance_time' => 'Tiempo de Mantenimiento de Equipo (en días)', 'notes' => 'Notas', - 'update' => 'Actualizar', - 'create' => 'Crear' + 'update' => 'Actualizar Mantenimiento de Equipo', + 'create' => 'Crear Mantenimiento de Equipo' ]; diff --git a/resources/lang/es-VE/admin/categories/message.php b/resources/lang/es-VE/admin/categories/message.php index 890dca5023..e4bc9b094f 100644 --- a/resources/lang/es-VE/admin/categories/message.php +++ b/resources/lang/es-VE/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'La categoría no fue actualizada, por favor inténtalo de nuevo', - 'success' => 'Categoría actualizada correctamente.' + 'success' => 'Categoría actualizada correctamente.', + 'cannot_change_category_type' => 'No se puede cambiar el tipo de categoría una vez que se ha creado', ), 'delete' => array( diff --git a/resources/lang/es-VE/admin/components/general.php b/resources/lang/es-VE/admin/components/general.php index 3340ee34e5..ffe27b2fcb 100644 --- a/resources/lang/es-VE/admin/components/general.php +++ b/resources/lang/es-VE/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Restante', 'total' => 'Total', 'update' => 'Actualizar Componente', + 'checkin_limit' => 'La cantidad de checkins 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 23407f80df..f25167c2e2 100644 --- a/resources/lang/es-VE/admin/components/message.php +++ b/resources/lang/es-VE/admin/components/message.php @@ -23,7 +23,8 @@ return array( '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.' + 'user_does_not_exist' => 'El usuario es inválido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/es-VE/admin/consumables/message.php b/resources/lang/es-VE/admin/consumables/message.php index 73a21639ec..487533853f 100644 --- a/resources/lang/es-VE/admin/consumables/message.php +++ b/resources/lang/es-VE/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'El consumible no fue retirado, 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.' + 'user_does_not_exist' => 'El usuario es inválido. Por favor, inténtelo de nuevo.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/es-VE/admin/custom_fields/general.php b/resources/lang/es-VE/admin/custom_fields/general.php index 2f8185f4d2..14384057ac 100644 --- a/resources/lang/es-VE/admin/custom_fields/general.php +++ b/resources/lang/es-VE/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Usado por Modelos', 'order' => 'Orden', 'create_fieldset' => 'Nuevo Fieldset', + 'update_fieldset' => 'Actualizar grupo de campos', + 'fieldset_does_not_exist' => 'Grupo de campos :id no existe', + 'fieldset_updated' => 'Grupo de campos actualizado', 'create_fieldset_title' => 'Crear un nuevo conjunto de campos', 'create_field' => 'Nuevo Campo Personalizado', 'create_field_title' => 'Crear un campo personalizado', @@ -44,6 +47,8 @@ return [ '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 unico en todos los activos', 'unique' => 'Único', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Permitir al usuario ver estos valores en su página Ver Recursos asignados', + 'display_in_user_view_table' => 'Visible para el usuario', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/es-VE/admin/custom_fields/message.php b/resources/lang/es-VE/admin/custom_fields/message.php index 66cfdd5654..c04f50f292 100644 --- a/resources/lang/es-VE/admin/custom_fields/message.php +++ b/resources/lang/es-VE/admin/custom_fields/message.php @@ -51,7 +51,7 @@ return array( 'fieldset_default_value' => array( - 'error' => 'Error validating default fieldset values.', + '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 2f5aedc7b9..64669ac9e3 100644 --- a/resources/lang/es-VE/admin/departments/message.php +++ b/resources/lang/es-VE/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'El departamento no existe.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Ya existe un departamento con ese nombre en la ubicación de la empresa. 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. ', 'create' => array( 'error' => 'El departamento no fue creado, por favor, inténtelo de nuevo.', diff --git a/resources/lang/es-VE/admin/groups/message.php b/resources/lang/es-VE/admin/groups/message.php index db8f2a14a1..e50c7bb643 100644 --- a/resources/lang/es-VE/admin/groups/message.php +++ b/resources/lang/es-VE/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => '¡El grupo ya existe!', - 'group_not_found' => 'El grupo [:id] no existe.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'El nombre del campo es necesario', 'success' => array( diff --git a/resources/lang/es-VE/admin/hardware/form.php b/resources/lang/es-VE/admin/hardware/form.php index 67e44fd3d9..973b6d7bf2 100644 --- a/resources/lang/es-VE/admin/hardware/form.php +++ b/resources/lang/es-VE/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirmar Eliminación Masiva de Activos', + 'bulk_restore' => 'Confirm Bulk Restore Assets', '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_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Vas a eliminar :asset_count activos.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', '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 activo.|Está a punto de editar las propiedades de :asset_count activos.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Actualizar sólo la ubicación predeterminada', 'asset_not_deployable' => 'Ese estado de activos no es desplegable. Este activo no puede ser verificado.', 'asset_deployable' => 'Ese estado es desplegable. Este activo puede ser revisado.', - 'processing_spinner' => 'Procesando...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Información opcional', 'order_details' => 'Información relacionada con el pedido' ]; diff --git a/resources/lang/es-VE/admin/hardware/general.php b/resources/lang/es-VE/admin/hardware/general.php index 074574c709..bc0659e2fa 100644 --- a/resources/lang/es-VE/admin/hardware/general.php +++ b/resources/lang/es-VE/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Este activo fue eliminado.', 'edit' => 'Editar Activo', 'model_deleted' => 'Este Modelo de activo fue eliminado. Debes restaurar este modelo antes de poder restaurar el Activo.', + 'model_invalid' => 'El modelo de este activo no es válido.', + 'model_invalid_fix' => 'El Activo debe ser editado para corregir esto antes de intentar retirarlo o asignarlo.', 'requestable' => 'Solicitable', 'requested' => 'Solicitado', 'not_requestable' => 'No solicitable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restaurar Activo', 'pending' => 'Pendiente', 'undeployable' => 'No enviable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Ver Activo', 'csv_error' => 'Tiene un error en su archivo CSV:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ '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' + 'custom_export' => 'Personalizar exportación', + 'mfg_warranty_lookup' => 'Búsqueda del estado de Garantía para :manufacturer', ]; diff --git a/resources/lang/es-VE/admin/hardware/message.php b/resources/lang/es-VE/admin/hardware/message.php index 976d686d71..487a5896ee 100644 --- a/resources/lang/es-VE/admin/hardware/message.php +++ b/resources/lang/es-VE/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'El activo no fue restaurado, por favor, inténtalo de nuevo', 'success' => 'Activo restaurado correctamente.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'Tu archivo ha sido importado', 'file_delete_success' => 'Tu archivo ha sido eliminado con éxito', 'file_delete_error' => 'El archivo no se pudo eliminar', + 'header_row_has_malformed_characters' => 'Uno o más atributos en la fila del encabezado contienen caracteres UTF-8 mal formados', + 'content_row_has_malformed_characters' => 'Uno o más atributos en la primera fila de contenido contienen caracteres UTF-8 mal formados', ], diff --git a/resources/lang/es-VE/admin/hardware/table.php b/resources/lang/es-VE/admin/hardware/table.php index edb1e65cf8..b7d8b81bb1 100644 --- a/resources/lang/es-VE/admin/hardware/table.php +++ b/resources/lang/es-VE/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Registrado / Asignado', 'checkout_date' => 'Fecha de Asignación', 'checkoutto' => 'Asignado', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Valor actual', 'diff' => 'Diferencia', 'dl_csv' => 'Descargar CSV', diff --git a/resources/lang/es-VE/admin/licenses/general.php b/resources/lang/es-VE/admin/licenses/general.php index b6cacb89b1..75f70f598f 100644 --- a/resources/lang/es-VE/admin/licenses/general.php +++ b/resources/lang/es-VE/admin/licenses/general.php @@ -1,8 +1,8 @@ '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', + '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', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Licencias de Software', 'user' => 'Usuario', 'view' => 'Ver Licencia', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/es-VE/admin/licenses/message.php b/resources/lang/es-VE/admin/licenses/message.php index 89f39f1a51..f0d597e1b7 100644 --- a/resources/lang/es-VE/admin/licenses/message.php +++ b/resources/lang/es-VE/admin/licenses/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'License does not exist or you do not have permission to view it.', + 'does_not_exist' => 'La licencia no existe o no tiene permiso para verla.', 'user_does_not_exist' => 'El usuario no existe.', 'asset_does_not_exist' => 'El activo que intentas asociar con esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo al que estás intentando asociar con esta licencia está asignado a un usuario diferente al de la persona seleccionada para retirar.', diff --git a/resources/lang/es-VE/admin/locations/message.php b/resources/lang/es-VE/admin/locations/message.php index c750b0174d..66be948487 100644 --- a/resources/lang/es-VE/admin/locations/message.php +++ b/resources/lang/es-VE/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Esta ubicación está actualmente asociada con al menos un usuario y no puede ser borrada. Por favor actualiza tus usuarios para no referenciar más esta ubicación e inténtalo de nuevo. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser borrada. Por favor actualiza tus activos para no referenciar más esta ubicación e inténtalo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente padre al menos una ubicación hija y no puede ser borrada. Por favor actualiza tus ubicaciones para no referenciar más esta ubicación e inténtalo de nuevo. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Activos asignados', + 'current_location' => 'Ubicación Actual', 'create' => array( diff --git a/resources/lang/es-VE/admin/manufacturers/message.php b/resources/lang/es-VE/admin/manufacturers/message.php index 653e931eb3..c44721495e 100644 --- a/resources/lang/es-VE/admin/manufacturers/message.php +++ b/resources/lang/es-VE/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', '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. ', diff --git a/resources/lang/es-VE/admin/manufacturers/table.php b/resources/lang/es-VE/admin/manufacturers/table.php index 05ad749aa8..1ee432462e 100644 --- a/resources/lang/es-VE/admin/manufacturers/table.php +++ b/resources/lang/es-VE/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Correo de soporte', 'support_phone' => 'Teléfono de Soporte', 'support_url' => 'URL de Soporte', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Actualizar Fabricante', 'url' => 'URL', diff --git a/resources/lang/es-VE/admin/models/general.php b/resources/lang/es-VE/admin/models/general.php index 5fd0a33c9a..89c8b316af 100644 --- a/resources/lang/es-VE/admin/models/general.php +++ b/resources/lang/es-VE/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Este modelo ha sido eliminado.', '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ás a punto de borrar :model_count modelos de activo.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Restaurar Modelo', 'requestable' => 'Los usuarios pueden solicitar este modelo', 'show_mac_address' => 'Mostrar campo de dirección MAC en activos en este modelo', diff --git a/resources/lang/es-VE/admin/models/message.php b/resources/lang/es-VE/admin/models/message.php index 45183d6621..d138cfe123 100644 --- a/resources/lang/es-VE/admin/models/message.php +++ b/resources/lang/es-VE/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'El modelo no existe.', + 'no_association' => 'NINGUN MODELO ASOCIADO.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'El modelo no fue actualizado, por favor, inténtalo de nuevo', - 'success' => 'Modelo actualizado con éxito.' + 'success' => 'Modelo actualizado con éxito.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Ningún cambio fue cambiado, así que nada se actualizó.', - 'success' => 'Modelos actualizados.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Ningún modelo fue seleccionado, así que nada fue eliminado.', - 'success' => '¡:success_count modelo(s) eliminado(s)!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count modelo(s) se han eliminado, sin embargo, :fail_count no se pudieron eliminar debido a que aún tienen activos asociados a ellos.' ), diff --git a/resources/lang/es-VE/admin/settings/general.php b/resources/lang/es-VE/admin/settings/general.php index 6fe537f9f2..eca748b075 100644 --- a/resources/lang/es-VE/admin/settings/general.php +++ b/resources/lang/es-VE/admin/settings/general.php @@ -11,9 +11,9 @@ return [ 'admin_cc_email_help' => 'Si deseas enviar una notificación por correo electrónico de las asignaciones de activos que se envían a los usuarios a una cuenta adicional, ingrésela aquí. De lo contrario, deja este campo en blanco.', 'is_ad' => 'Este es un servidor de Directorio Activo', 'alerts' => 'Alertas', - 'alert_title' => 'Actualizar Configuración de Alertas', + 'alert_title' => 'Actualizar ajustes de notificación', 'alert_email' => 'Enviar alertas a', - 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', + 'alert_email_help' => 'Direcciones de correo electrónico o listas de distribución a las que desea que se envíen alertas, separadas por comas', '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', @@ -21,20 +21,20 @@ return [ 'allow_user_skin_help_text' => 'Marcar esta casilla permitirá al usuario reemplazar la apariencia de la interfaz con una diferente.', 'asset_ids' => 'IDs de activos', 'audit_interval' => 'Intervalo de Auditoría', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Si se le exige auditoría física regular de sus activos, ingrese 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 próxima fecha de auditoría.', 'audit_warning_days' => 'Umbral de Aviso de Auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación deberíamos advertirte que tus activos se deben auditar?', - 'auto_increment_assets' => 'Generate auto-incrementing asset tags', + 'auto_increment_assets' => 'Generar etiquetas de activos autoincrementales', 'auto_increment_prefix' => 'Prefijo (opcional)', - 'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this', + 'auto_incrementing_help' => 'Habilitar etiquetas de activos autoincrementales primero para establecer esto', 'backups' => 'Copias de Seguridad', - 'backups_help' => 'Create, download, and restore backups ', + 'backups_help' => 'Crear, descargar y restaurar copias de seguridad ', 'backups_restoring' => 'Restaurando desde la copia de seguridad', 'backups_upload' => 'Subir copia de seguridad', - 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', - 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', - 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', + 'backups_path' => 'Las copias de seguridad en el servidor se almacenan en :path', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_logged_out' => 'Todos los usuarios existentes, incluido usted, se cerrará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. (Se recomienda hacer una copia de seguridad previamente, para estar seguro.)', @@ -66,8 +66,8 @@ return [ 'footer_text' => 'Texto adicional de pie de página ', 'footer_text_help' => 'Este texto aparecerá en el lado derecho del pie de página. Los enlaces están permitidos usando el markdown estilo Github. Saltos de línea, cabeceras, imágenes, etc., pueden dar resultados impredecibles.', 'general_settings' => 'Configuración General', - 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy', - 'general_settings_help' => 'Default EULA and more', + 'general_settings_keywords' => 'soporte de la empresa, firma, aceptación, formato de correo electrónico, formato de nombre de usuario, imágenes, por página, miniatura, eula, tos, tablero, privacidad', + 'general_settings_help' => 'EULA por defecto y más', 'generate_backup' => 'Generar Respaldo', 'header_color' => 'Color de Encabezado', 'info' => 'Estos ajustes te dejan personalizar ciertos aspectos de tu instalación.', @@ -75,19 +75,22 @@ return [ 'label_logo_size' => 'Los logos cuadrados se ven mejor - se mostrarán en la parte superior derecha de cada etiqueta de activo. ', 'laravel' => 'Versión de Lavarel', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group' => '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' => 'LDAP/Directorio Activo', - 'ldap_client_tls_key' => 'LDAP Client TLS Key', - 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', + 'ldap_client_tls_key' => 'Llave TLS del cliente LDAP', + 'ldap_client_tls_cert' => 'Certificado LDAP TLS del lado cliente', 'ldap_enabled' => 'LDAP activado', 'ldap_integration' => 'Integración LDAP', 'ldap_settings' => 'Configuración LDAP', - 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', - 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + '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_key' => 'Llave TLS del cliente LDAP', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', '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_manager' => 'LDAP Manager', + '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_cert' => 'Validación de certificado LDAP SSL', @@ -111,20 +114,20 @@ return [ 'ldap_auth_filter_query' => 'Solicitud de Autenticación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'This value is used to determine whether a synced user can login to Snipe-IT. It does not affect the ability to check items in or out to them, and should be the attribute name within your AD/LDAP, not the value.

If this field is set to a field name that does not exist in your AD/LDAP, or the value in the AD/LDAP field is set to 0 or false, user login will be disabled. If the value in the AD/LDAP field is set to 1 or true or any other text means the user can log in. When the field is blank in your AD, we respect the userAccountControl attribute, which usually allows non-suspended users to log in.', + '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_emp_num' => 'Número de Empleado LDAP', 'ldap_email' => 'Correo electrónico LDAP', - 'ldap_test' => 'Test LDAP', - 'ldap_test_sync' => 'Test LDAP Synchronization', + 'ldap_test' => 'Probar LDAP', + 'ldap_test_sync' => 'Prueba de sincronización LDAP', 'license' => 'Licencia de Software', 'load_remote_text' => 'Scripts remotos', 'load_remote_help_text' => 'Esta instalación de Snipe-IT puede cargar scripts desde el mundo exterior.', - 'login' => 'Login Attempts', - 'login_attempt' => 'Login Attempt', + 'login' => 'Intentos de inicio de sesión', + 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', - 'login_success' => 'Success?', - 'login_user_agent' => 'User Agent', - 'login_help' => 'List of attempted logins', + 'login_success' => '¿Éxito?', + 'login_user_agent' => 'Navegador', + 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de Inicio de Sesión', 'login_note_help' => 'Opcionalmente incluye unas pocas oraciones, por ejemplo para asistir a personas que han encontrado o perdido un dispositivo. Este campo acepta el markdown estilo Github', 'login_remote_user_text' => 'Opciones de usuario remoto', @@ -145,19 +148,19 @@ return [ 'optional' => 'opcional', 'per_page' => 'Resultados por Página', 'php' => 'Versión de PHP', - 'php_info' => 'PHP Info', + 'php_info' => 'Información PHP', 'php_overview' => 'PHP', - 'php_overview_keywords' => 'phpinfo, system, info', - 'php_overview_help' => 'PHP System info', + '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, ve 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' => 'Selecciona las reglas de complejidad que quieras aplicar.', - 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'Password cannot be the same as first name, last name, email, or username', - 'pwd_secure_complexity_letters' => 'Require at least one letter', - 'pwd_secure_complexity_numbers' => 'Require at least one number', - 'pwd_secure_complexity_symbols' => 'Require at least one symbol', - 'pwd_secure_complexity_case_diff' => 'Require at least one uppercase and one lowercase', + 'pwd_secure_complexity_disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el nombre, apellido, correo electrónico o nombre de usuario', + 'pwd_secure_complexity_letters' => 'Requiere al menos una letra', + 'pwd_secure_complexity_numbers' => 'Requiere al menos un número', + 'pwd_secure_complexity_symbols' => 'Requiere al menos un símbolo', + 'pwd_secure_complexity_case_diff' => 'Requiere al menos una mayúscula y una minúscula', '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', @@ -165,8 +168,8 @@ return [ 'qr_help' => 'Activa Códigos QR primero para establecer esto', 'qr_text' => 'Texto del Código QR', 'saml' => 'SAML', - 'saml_title' => 'Update SAML settings', - 'saml_help' => 'SAML settings', + 'saml_title' => 'Actualizar ajustes de SAML', + 'saml_help' => 'Configuración SAML', 'saml_enabled' => 'SAML activado', 'saml_integration' => 'Integración SAML', 'saml_sp_entityid' => 'ID de la entidad', @@ -178,7 +181,7 @@ return [ '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_forcelogin_label' => 'SAML Force Login', + '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_slo_label' => 'Cerrar sesión única SAML', @@ -186,7 +189,7 @@ return [ '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_download' => 'Download Metadata', + 'saml_download' => 'Descargar metadatos', 'setting' => 'Configuración', 'settings' => 'Configuraciones', 'show_alerts_in_menu' => 'Mostrar alertas en el menú superior', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Nombre del Sitio', + 'integrations' => 'Integraciones', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Nombre de bot en Slack', - 'slack_channel' => 'Canal en Slack', - 'slack_endpoint' => 'Terminal en Slack', - 'slack_integration' => 'Configuración Slack', - 'slack_integration_help' => 'La integración con Slack es opcional, sin embargo el endpoint y el canal son requeridos si desea usarlo. Para configurar la integración de Slack, primero debe crear un webhook entrante en su cuenta de Slack. Haga clic en el botón Probar Integración Slack para confirmar que su configuración es correcta antes de guardar. ', - 'slack_integration_help_button' => 'Una vez que haya guardado su información de Slack, aparecerá un botón de prueba.', - 'slack_test_help' => 'Pruebe si su integración de Slack está configurada correctamente. Debe Guardar Primero su configuracion Slack Actualizada.', + 'general_webhook' => 'Webhook general', + '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_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.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlaces de Soporte de 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', @@ -216,8 +224,8 @@ return [ 'update' => 'Actualizar Configuraciones', 'value' => 'Valor', 'brand' => 'Marca', - 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', - 'brand_help' => 'Logo, Site Name', + 'brand_keywords' => 'pie de página, logotipo, impresión, tema, piel, 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.', @@ -229,7 +237,7 @@ return [ 'privacy_policy' => 'Política de Privacidad', 'privacy_policy_link_help' => 'Si incluye una URL aquí, un enlace a su Política de Privacidad será incluido al pie de la aplicación y en cualquier correo electrónico que envíe el sistema, de conformidad con la ley GDPR. ', 'purge' => 'Purgar Registros Eliminados', - 'purge_deleted' => 'Purge Deleted ', + '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', @@ -281,7 +289,7 @@ return [ 'asset_tag_title' => 'Actualizar ajustes de etiqueta de activos', 'barcode_title' => 'Actualizar ajustes de código de barras', 'barcodes' => 'Códigos de barras', - 'barcodes_help_overview' => 'Barcode & QR settings', + 'barcodes_help_overview' => 'Ajustes de Código de barras & QR', 'barcodes_help' => 'Esto intentará eliminar códigos de barras en caché. Esto normalmente sólo se usaría si la configuración del código de barras ha cambiado, o si la URL de Snipe-IT ha cambiado. Los códigos de barras se regenerarán cuando se acceda a continuación.', 'barcodes_spinner' => 'Intentando eliminar archivos...', 'barcode_delete_cache' => 'Borrar caché de código de barras', @@ -292,24 +300,24 @@ return [ 'filter_by_keyword' => 'Filtrar por palabra clave', 'security' => 'Seguridad', 'security_title' => 'Actualizar ajustes de seguridad', - 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', - 'security_help' => 'Two-factor, Password Restrictions', - 'groups_keywords' => 'permissions, permission groups, authorization', - 'groups_help' => 'Account permission groups', + 'security_keywords' => 'contraseña, contraseñas, requisitos, dos factores, dos factores, contraseñas comunes, inicio de sesión remoto, autenticación', + 'security_help' => 'Restricciones de contraseña, dos factores', + 'groups_keywords' => 'permisos, grupos de permisos, autorización', + 'groups_help' => 'Grupos de permisos de cuenta', 'localization' => 'Localización', 'localization_title' => 'Actualizar ajustes de localización', - 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', + 'localization_keywords' => 'ubicación, moneda, local, locale, zona horaria, zona horaria, internacional, internacionalización, idioma, idioma, traducción', 'localization_help' => 'Idioma, fecha', 'notifications' => 'Notificaciones', - 'notifications_help' => 'Alertas de correo, configuración de auditoría', - 'asset_tags_help' => 'Incrementing and prefixes', + 'notifications_help' => 'Configuración de alertas por email y auditoría', + 'asset_tags_help' => 'Incrementando y prefijos', 'labels' => 'Etiquetas', 'labels_title' => 'Actualizar ajustes de etiqueta', - 'labels_help' => 'Label sizes & settings', - 'purge' => 'Purge', + 'labels_help' => 'Tamaños de etiqueta & ajustes', + 'purge' => 'Purgar', 'purge_keywords' => 'eliminar permanentemente', 'purge_help' => 'Purgar registros eliminados', - 'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.', + 'ldap_extension_warning' => 'No parece que la extensión LDAP esté instalada o habilitada en este servidor. Todavía puede guardar su configuración, pero necesitará habilitar la extensión LDAP para PHP antes de que funcione la sincronización LDAP o el inicio de sesión.', 'ldap_ad' => 'LDAP/AD', 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear un usuario ::', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Siguiente: Crear usuario', 'ldap_settings_link' => 'Página de ajustes LDAP', 'slack_test' => 'Prueba Integración', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/es-VE/admin/settings/message.php b/resources/lang/es-VE/admin/settings/message.php index b056d0dfb9..1251ef0208 100644 --- a/resources/lang/es-VE/admin/settings/message.php +++ b/resources/lang/es-VE/admin/settings/message.php @@ -11,8 +11,8 @@ return [ 'file_deleted' => 'El archivo de respaldo fue eliminado satisfactoriamente. ', 'generated' => 'Un nuevo archivo de respaldo ha sido creado con éxito.', 'file_not_found' => 'El archivo de respaldo no puede ser encontrado en el servidor.', - 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', - 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' + 'restore_warning' => 'Sí, restaurarlo. Reconozco que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', + 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], 'purge' => [ 'error' => 'Ha ocurrido un error mientras se realizaba el purgado. ', @@ -20,24 +20,25 @@ return [ 'success' => 'Registros de borrado purgados correctamente.', ], 'mail' => [ - 'sending' => 'Sending Test Email...', - 'success' => 'Mail sent!', - 'error' => 'Mail could not be sent.', - 'additional' => 'No additional error message provided. Check your mail settings and your app log.' + '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.' ], 'ldap' => [ - 'testing' => 'Testing LDAP Connection, Binding & Query ...', - '500' => '500 Server Error. Please check your server logs for more information.', - 'error' => 'Something went wrong :(', - 'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:', - 'testing_authentication' => 'Testing LDAP Authentication...', - 'authentication_success' => 'User authenticated against LDAP successfully!' + 'testing' => 'Probando conexión LDAP, Binding & Query ...', + '500' => 'Error 500 del servidor. Por favor, compruebe los registros 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...', + 'authentication_success' => 'Usuario autenticado contra LDAP con éxito!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', - 'success_pt1' => 'Success! Check the ', - 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', - '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'webhook' => [ + 'sending' => 'Enviando mensaje de prueba de :app...', + 'success_pt1' => '¡Éxito! Comprueba 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', + 'error_misc' => 'Algo salió mal. :( ', ] ]; diff --git a/resources/lang/es-VE/admin/settings/table.php b/resources/lang/es-VE/admin/settings/table.php index 22db5c84ed..f1fd5c550f 100644 --- a/resources/lang/es-VE/admin/settings/table.php +++ b/resources/lang/es-VE/admin/settings/table.php @@ -1,6 +1,6 @@ 'Created', - 'size' => 'Size', + 'created' => 'Creado', + 'size' => 'Tamaño', ); diff --git a/resources/lang/es-VE/admin/users/general.php b/resources/lang/es-VE/admin/users/general.php index 598fea9449..11f39bf489 100644 --- a/resources/lang/es-VE/admin/users/general.php +++ b/resources/lang/es-VE/admin/users/general.php @@ -17,8 +17,10 @@ return [ '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' => 'Email List of All Assigned', - 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'email_assigned' => 'Lista de Correos Asignados', + 'user_notified' => 'Se ha enviado un correo al usuario con sus artículos actualmente asignados.', + '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', 'send_email_help' => 'Debe proporcionar una dirección de correo electrónico para este usuario para enviarle credenciales. Únicamente pueden enviarse 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', @@ -26,19 +28,27 @@ return [ 'two_factor_admin_optin_help' => 'Tus configuraciones de administrador actuales permiten cumplimiento selectivo de autenticación de dos factores. ', 'two_factor_enrolled' => 'Dispositivo 2FA inscrito ', 'two_factor_active' => '2FA activo ', - 'user_deactivated' => 'User cannot login', - 'user_activated' => 'User can login', - 'activation_status_warning' => 'Do not change activation status', - 'group_memberships_helpblock' => 'Only superadmins may edit group memberships.', - 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', - 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', - 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', - 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', - 'update_user_assets_status' => 'Update all assets for these users to this status', - 'checkin_user_properties' => 'Check in all properties associated with these users', - 'remote_label' => 'This is a remote user', - 'remote' => 'Remote', - 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', - 'not_remote_label' => 'This is not a remote user', + 'user_deactivated' => 'Usuario no puede iniciar sesión', + 'user_activated' => 'Usuario puede iniciar sesión', + 'activation_status_warning' => 'No cambiar el estado de activación', + 'group_memberships_helpblock' => 'Sólo los superadministradores pueden editar pertenencias a grupo.', + '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ás a punto de disponibilizar TODOS los elementos de :count usuario(s) listados a continuación. Los nombres de Super Admintradores 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', + '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.', + 'not_remote_label' => 'Este no es un usuario remoto', + 'vip_label' => 'Usuario VIP', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Crear un usuario', + 'create_user_page_explanation' => 'Esta es la información de la cuenta que usará para acceder al sitio por primera vez.', + 'email_credentials' => 'Credenciales de email', + 'email_credentials_text' => 'Enviar mis credenciales a la dirección de correo de arriba', + 'next_save_user' => 'Siguiente: Guardar usuario', + 'all_assigned_list_generation' => 'Generado el:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/es-VE/admin/users/message.php b/resources/lang/es-VE/admin/users/message.php index 5aab84320f..d1d6dcfa58 100644 --- a/resources/lang/es-VE/admin/users/message.php +++ b/resources/lang/es-VE/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Has rechazado este activo con éxito.', 'bulk_manager_warn' => 'Tus usuarios han sido actualizados con éxito, sin embargo tu entrada de administrador no fue guardada debido que el administrador que seleccionaste también era un usuario de la lista que iba a ser editada, y los usuarios no pueden editar a su propio administrador. Por favor selecciona a tus usuarios de nuevo, excluyendo al administrador.', 'user_exists' => '¡El usuario ya existe!', - 'user_not_found' => 'El usuario [:id] no existe.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'El campo de usuario es obligatorio', 'user_password_required' => 'La contraseña es obligatoria.', 'insufficient_permissions' => 'Permisos insuficientes.', @@ -14,8 +14,8 @@ return array( 'ldap_not_configured' => 'La integración LDAP no ha sido configurada para esta instalación.', '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' => 'This user does not have an email address in their profile.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_email' => 'Este usuario no tiene una dirección de correo electrónico en su perfil.', + 'user_has_no_assets_assigned' => 'Este usuario no tiene ningún activo asignado', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Este usuario no tiene ningún correo electrónico.', + 'success' => 'El usuario ha sido notificado sobre su inventario actual.' ) ); \ No newline at end of file diff --git a/resources/lang/es-VE/auth/general.php b/resources/lang/es-VE/auth/general.php index 5a06db35e5..5ba8745c56 100644 --- a/resources/lang/es-VE/auth/general.php +++ b/resources/lang/es-VE/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Recuérdame', 'username_help_top' => 'Introduzca 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.

A los usuarios sin una dirección de correo electrónico asociada no se enviará por correo electrónico un enlace de restablecimiento de contraseña. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/es-VE/button.php b/resources/lang/es-VE/button.php index e21d223ca8..9cb4b920cf 100644 --- a/resources/lang/es-VE/button.php +++ b/resources/lang/es-VE/button.php @@ -4,7 +4,7 @@ return [ 'actions' => 'Acciones', 'add' => 'Añadir Nuevo', 'cancel' => 'Cancelar', - 'checkin_and_delete' => 'Checkin All / Delete User', + 'checkin_and_delete' => 'Checkin Todos / Eliminar Usuario', 'delete' => 'Borrar', 'edit' => 'Editar', 'restore' => 'Restaurar', diff --git a/resources/lang/es-VE/general.php b/resources/lang/es-VE/general.php index afb96505ea..e8fe838dde 100644 --- a/resources/lang/es-VE/general.php +++ b/resources/lang/es-VE/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accesorios', 'activated' => 'Activado', + 'accepted_date' => 'Fecha aceptada', 'accessory' => 'Accesorio', 'accessory_report' => 'Reporte de Accesorio', 'action' => 'Acción', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Administrador', 'add_seats' => 'Puestos añadidos', - 'age' => "Age", + 'age' => "Edad", 'all_assets' => 'Todos los Activos', 'all' => 'Todo', 'archived' => 'Archivado', @@ -27,7 +28,13 @@ return [ 'audit' => 'Auditar', 'audit_report' => 'Registro de Auditoría', '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.', + 'assigned_date' => 'Fecha asignada', 'assigned_to' => 'Asignado a :name', + 'assignee' => 'Asignado a', 'avatar_delete' => 'Borrar Avatar', 'avatar_upload' => 'Cargar Avatar', 'back' => 'Atrás', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Borrado masivo', 'bulk_actions' => 'Acciones masivas', - 'bulk_checkin_delete' => 'Registro de entrada masivo de activos de usuarios', + 'bulk_checkin_delete' => 'Checkin en masa / Eliminar usuarios', + 'byod' => 'BYOD', + 'byod_help' => 'Este dispositivo es propiedad del usuario', 'bystatus' => 'por Estado', 'cancel' => 'Cancelar', 'categories' => 'Categorías', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Esta aplicación se está ejecutando en modo producción con el depurador activado. Esto puede exponer datos sensibles si tu aplicación es accesible al exterior. Desactiva el modo de depuración mediante la configuración del valor APP_DEBUG en tu archivo .env a false.', 'delete' => 'Borrar', 'delete_confirm' => '¿Estás seguro de eliminar :item?', + 'delete_confirm_no_undo' => '¿Está seguro que desea eliminar :item? Esto no se puede deshacer.', 'deleted' => 'Borrado', 'delete_seats' => 'Puestos Borrados', 'deletion_failed' => 'Error al eliminar', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif y svg. 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', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Mantenimientos de Activo', 'item' => 'Elemento', 'item_name' => 'Nombre del ítem', + 'import_file' => 'importar archivo CSV', + 'import_type' => 'Tipo de importación CSV', 'insufficient_permissions' => '¡Permisos insuficientes!', 'kits' => 'Equipamiento predefinido', 'language' => 'Lenguaje', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Activos solicitados', 'request_canceled' => 'Solicitud Cancelada', 'save' => 'Guardar', + 'select_var' => 'Seleccionar :thing... ', // this will eventually replace all of our other selects 'select' => 'Seleccionar', 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', @@ -240,8 +254,8 @@ return [ 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', 'skin' => 'Tema', - 'slack_msg_note' => 'Se enviará un mensaje de slack', - 'slack_test_msg' => '¡Parece que tu integración de Slack con Snipe-IT está funcionando!', + '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!', 'some_features_disabled' => 'MODO DEMO: Algunas funciones están desactivadas para esta instalación.', 'site_name' => 'Nombre del Sitio', 'state' => 'Estado', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => '¿Está seguro que quieres borrar', 'submit' => 'Enviar', 'target' => 'Objetivo', - 'toggle_navigation' => 'Alternar navegación', 'time_and_date_display' => 'Visualización de Hora y Fecha', 'total_assets' => 'total de activos', 'total_licenses' => 'licencias totales', @@ -281,9 +294,9 @@ return [ 'yes' => 'Si', 'zip' => 'Códio Postal', 'noimage' => 'No se subió la imagen o no fue encontrada.', - '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' => 'El archivo solicitado no existe en el servidor.', + 'file_upload_success' => '¡Archivo cargado correctamente!', + 'no_files_uploaded' => '¡Archivo cargado correctamente!', 'token_expired' => 'Tu sesión ha expirado. Por favor inténtalo de nuevo.', 'login_enabled' => 'Inicio de sesión habilitado', 'audit_due' => 'Auditoría pendiente', @@ -375,7 +388,8 @@ return [ '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 Administrador.', '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.', - 'set_to_null' => 'Eliminar valores para este activo|Eliminar valores para todos los :asset_count activos ', + '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', 'assets_by_status' => 'Activos por estado', 'assets_by_status_type' => 'Activos por tipo de estado', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', - 'placeholder_kit' => 'Seleccione un kit' + 'placeholder_kit' => 'Seleccione un kit', + 'file_not_found' => 'No se encontró el archivo', + 'preview_not_available' => '(sin vista previa)', + 'setup' => 'Configuración', + 'pre_flight' => 'Preparación', + 'skip_to_main_content' => 'Saltar al contenido principal', + 'toggle_navigation' => 'Alternar navegación', + 'alerts' => 'Alertas', + 'tasks_view_all' => 'Ver todas las tareas', + 'true' => 'Verdadero', + 'false' => 'Falso', + 'integration_option' => 'Opción de integración', + 'log_does_not_exist' => 'No existe ningún registro de eventos coincidente.', + '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 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.', + 'no_users_selected' => 'Ningún usuario seleccionado', + 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', + 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merged' => 'fusionados', + 'merged_log_this_user_into' => 'Fusionado este usuario (ID :to_id - :to_username) con el ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', + 'clear_and_save' => 'Limpiar y Guardar', + 'update_existing_values' => '¿Actualizar valores existentes?', + '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.', + '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' => ' ¿Enviar correo de bienvenida para nuevos usuarios?', + 'back_before_importing' => '¿Copia de seguridad antes de importar?', + 'csv_header_field' => 'Campo de cabecera CSV', + 'import_field' => 'Importar campo', + 'sample_value' => 'Valor de ejemplo', + 'no_headers' => 'No se encontraron columnas', + 'error_in_import_file' => 'Hubo un error leyendo el archivo CSV: :error', + 'percent_complete' => ':percent % Completado', + 'errors_importing' => 'Se han producido algunos errores al importar: ', + 'warning' => 'ADVERTENCIA: :warning', + 'success_redirecting' => '"Éxito... Redirigiendo.', + 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Siguiente: Crear usuario', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirmar', + 'autoassign_licenses' => 'Auto-Asignar licencias', + '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' => '¿Estás seguro?', + 'cannot_be_deleted' => 'Este articulo no se puede eliminar', + 'undeployable_tooltip' => 'Este artículo no puede ser asignado. Compruebe la cantidad restante.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/es-VE/help.php b/resources/lang/es-VE/help.php index 9c71dfef87..e083c23aa4 100644 --- a/resources/lang/es-VE/help.php +++ b/resources/lang/es-VE/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Marcando esta casilla podrá editar el registro de activos reflejando su nueva ubicación. Dejándola sin marcar simplemente anotaremos la ubicación en el registro de auditoria.

Tenga en cuenta que si este activo ha si requerido, no se podrá cambiara la ubicación de la persona, Activo o ubicación en la que esta requerido.', + 'audit_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.', '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.', diff --git a/resources/lang/es-VE/localizations.php b/resources/lang/es-VE/localizations.php index be2c321861..63accfb143 100644 --- a/resources/lang/es-VE/localizations.php +++ b/resources/lang/es-VE/localizations.php @@ -2,314 +2,315 @@ return [ - 'select_language' => 'Select a language', + 'select_language' => 'Seleccione un idioma', 'languages' => [ - 'en'=> 'English, US', - 'en-GB'=> 'English, UK', + 'en'=> 'Inglés, EEUU', + 'en-GB'=> 'Inglés, Reino Unido', 'af'=> 'Afrikaans', - 'ar'=> 'Arabic', - 'bg'=> 'Bulgarian', - 'zh-CN'=> 'Chinese Simplified', - 'zh-TW'=> 'Chinese Traditional', - 'hr'=> 'Croatian', - 'cs'=> 'Czech', - 'da'=> 'Danish', - 'nl'=> 'Dutch', - 'en-ID'=> 'English, Indonesia', - 'et'=> 'Estonian', + 'ar'=> 'Árabe', + 'bg'=> 'Búlgaro', + 'zh-CN'=> 'Chino simplificado', + 'zh-TW'=> 'Chino tradicional', + 'hr'=> 'Croata', + 'cs'=> 'Checo', + 'da'=> 'Danés', + 'nl'=> 'Holandés', + 'en-ID'=> 'inglés de Indonesia', + 'et'=> 'Estonio', 'fil'=> 'Filipino', - 'fi'=> 'Finnish', - 'fr'=> 'French', - 'de'=> 'German', - 'de-i'=> 'German (Informal)', - 'el'=> 'Greek', - 'he'=> 'Hebrew', - 'hu'=> 'Hungarian', - 'is' => 'Icelandic', - 'id'=> 'Indonesian', - 'ga-IE'=> 'Irish', - 'it'=> 'Italian', - 'ja'=> 'Japanese', - 'ko'=> 'Korean', - 'lv'=>'Latvian', - 'lt'=> 'Lithuanian', - 'mk'=> 'Macedonian', - 'ms'=> 'Malay', - 'mi'=> 'Maori', - 'mn'=> 'Mongolian', - 'no'=> 'Norwegian', - 'fa'=> 'Persian', - 'pl'=> 'Polish', - 'pt-PT'=> 'Portuguese', - 'pt-BR'=> 'Portuguese, Brazilian', - 'ro'=> 'Romanian', - 'ru'=> 'Russian', - 'sr-CS' => 'Serbian (Latin)', - 'sl'=> 'Slovenian', - 'es-ES'=> 'Spanish', - 'es-CO'=> 'Spanish, Colombia', - 'es-MX'=> 'Spanish, Mexico', - 'es-VE'=> 'Spanish, Venezuela', - 'sv-SE'=> 'Swedish', + 'fi'=> 'Finlandés', + 'fr'=> 'Francés', + 'de'=> 'Alemán', + 'de-i'=> 'Alemán (informal)', + 'el'=> 'Griego', + 'he'=> 'Hebreo', + 'hu'=> 'Húngaro', + 'is' => 'Islandés', + 'id'=> 'Indonesio', + 'ga-IE'=> 'Irlandés', + 'it'=> 'Italiano', + 'ja'=> 'Japonés', + 'ko'=> 'Coreano', + 'lv'=>'Letón', + 'lt'=> 'Lituano', + 'mk'=> 'Macedonio', + 'ms'=> 'Malayo', + 'mi'=> 'Maorí', + 'mn'=> 'Mongol', + 'no'=> 'Noruego', + 'fa'=> 'Persa', + 'pl'=> 'Polaco', + 'pt-PT'=> 'Portugués', + 'pt-BR'=> 'Portugués, Brasileño', + 'ro'=> 'Rumano', + 'ru'=> 'Ruso', + 'sr-CS' => 'Serbio (Latino)', + 'sl'=> 'Esloveno', + 'es-ES'=> 'Español', + 'es-CO'=> 'Español, Colombia', + 'es-MX'=> 'Español, México', + 'es-VE'=> 'Español, Venezuela', + 'sv-SE'=> 'Sueco', 'tl'=> 'Tagalog', 'ta'=> 'Tamil', - 'th'=> 'Thai', - 'tr'=> 'Turkish', - 'uk'=> 'Ukranian', - 'vi'=> 'Vietnamese', - 'cy'=> 'Welsh', - 'zu'=> 'Zulu', + 'th'=> 'Tailandés', + 'tr'=> 'Turco', + 'uk'=> 'Ucraniano', + 'vi'=> 'Vietnamita', + 'cy'=> 'Galés', + 'zu'=> 'Zulú', ], - 'select_country' => 'Select a country', + 'select_country' => 'Seleccione un país', 'countries' => [ - 'AC'=>'Ascension Island', + 'AC'=>'Isla de Ascensión', 'AD'=>'Andorra', - 'AE'=>'United Arab Emirates', - 'AF'=>'Afghanistan', - 'AG'=>'Antigua And Barbuda', + 'AE'=>'Emiratos Árabes Unidos', + 'AF'=>'Afganistán', + 'AG'=>'Antigua y Barbuda', 'AI'=>'Anguilla', 'AL'=>'Albania', 'AM'=>'Armenia', - 'AN'=>'Netherlands Antilles', + 'AN'=>'Antillas Holandesas', 'AO'=>'Angola', - 'AQ'=>'Antarctica', + 'AQ'=>'La Antártida', 'AR'=>'Argentina', - 'AS'=>'American Samoa', + 'AS'=>'Samoa Americana', 'AT'=>'Austria', 'AU'=>'Australia', 'AW'=>'Aruba', - 'AX'=>'Ã…land', - 'AZ'=>'Azerbaijan', - 'BA'=>'Bosnia And Herzegovina', + 'AX'=>'Åland', + 'AZ'=>'Azerbaiyán', + 'BA'=>'Bosnia y Herzegovina', 'BB'=>'Barbados', - 'BE'=>'Belgium', + 'BE'=>'Bélgica', 'BD'=>'Bangladesh', 'BF'=>'Burkina Faso', 'BG'=>'Bulgaria', - 'BH'=>'Bahrain', + 'BH'=>'Bahréin', 'BI'=>'Burundi', - 'BJ'=>'Benin', + 'BJ'=>'Benín', 'BM'=>'Bermuda', - 'BN'=>'Brunei Darussalam', + 'BN'=>'Brunei', 'BO'=>'Bolivia', - 'BR'=>'Brazil', + 'BR'=>'Brasil', 'BS'=>'Bahamas', - 'BT'=>'Bhutan', - 'BV'=>'Bouvet Island', + 'BT'=>'Bután', + 'BV'=>'Isla Bouvet', 'BW'=>'Botswana', - 'BY'=>'Belarus', - 'BZ'=>'Belize', - 'CA'=>'Canada', - 'CC'=>'Cocos (Keeling) Islands', - 'CD'=>'Congo (Democratic Republic)', - 'CF'=>'Central African Republic', - 'CG'=>'Congo (Republic)', - 'CH'=>'Switzerland', - 'CI'=>'Côte d\'Ivoire', - 'CK'=>'Cook Islands', + 'BY'=>'Bielorrusia', + 'BZ'=>'Belice', + 'CA'=>'Canadá', + 'CC'=>'Islas Cocos (Keeling)', + 'CD'=>'Congo (República Democrática del)', + 'CF'=>'República Centroafricana', + 'CG'=>'Congo (República del)', + 'CH'=>'Suiza', + 'CI'=>'Costa de Marfil', + 'CK'=>'Islas Cook', 'CL'=>'Chile', - 'CM'=>'Cameroon', - 'CN'=>'People\'s Republic of China', + 'CM'=>'Camerún', + 'CN'=>'República Popular China', 'CO'=>'Colombia', 'CR'=>'Costa Rica', 'CU'=>'Cuba', - 'CV'=>'Cape Verde', - 'CX'=>'Christmas Island', - 'CY'=>'Cyprus', - 'CZ'=>'Czech Republic', - 'DE'=>'Germany', - 'DJ'=>'Djibouti', - 'DK'=>'Denmark', + 'CV'=>'Cabo Verde', + 'CX'=>'Isla de Navidad', + 'CY'=>'Chipre', + 'CZ'=>'República Checa', + 'DE'=>'Alemania', + 'DJ'=>'Yibuti', + 'DK'=>'Dinamarca', 'DM'=>'Dominica', - 'DO'=>'Dominican Republic', - 'DZ'=>'Algeria', + 'DO'=>'República Dominicana', + 'DZ'=>'Argelia', 'EC'=>'Ecuador', 'EE'=>'Estonia', - 'EG'=>'Egypt', + 'EG'=>'Egipto', 'ER'=>'Eritrea', - 'ES'=>'Spain', - 'ET'=>'Ethiopia', - 'EU'=>'European Union', - 'FI'=>'Finland', + 'ES'=>'España', + 'ET'=>'Etiopía', + 'EU'=>'Unión Europea', + 'FI'=>'Finlandia', 'FJ'=>'Fiji', - 'FK'=>'Falkland Islands (Malvinas)', - 'FM'=>'Micronesia, Federated States Of', - 'FO'=>'Faroe Islands', - 'FR'=>'France', - 'GA'=>'Gabon', - 'GD'=>'Grenada', + 'FK'=>'Islas Malvinas (Falkland)', + 'FM'=>'Estados Federados de la Micronesia', + 'FO'=>'Islas Faroe', + 'FR'=>'Francia', + 'GA'=>'Gabón', + 'GD'=>'Granada', 'GE'=>'Georgia', - 'GF'=>'French Guiana', + 'GF'=>'Guayana Francesa', 'GG'=>'Guernsey', 'GH'=>'Ghana', 'GI'=>'Gibraltar', - 'GL'=>'Greenland', + 'GL'=>'Groenlandia', 'GM'=>'Gambia', 'GN'=>'Guinea', - 'GP'=>'Guadeloupe', - 'GQ'=>'Equatorial Guinea', - 'GR'=>'Greece', - 'GS'=>'South Georgia And The South Sandwich Islands', + 'GP'=>'Guadalupe', + 'GQ'=>'Guinea Ecuatorial', + 'GR'=>'Grecia', + 'GS'=>'Islas Georgia del Sur y Sandwich del Sur', 'GT'=>'Guatemala', 'GU'=>'Guam', 'GW'=>'Guinea-Bissau', 'GY'=>'Guyana', 'HK'=>'Hong Kong', - 'HM'=>'Heard And Mc Donald Islands', + 'HM'=>'Islas Heard y Mc Donald', 'HN'=>'Honduras', - 'HR'=>'Croatia (local name: Hrvatska)', - 'HT'=>'Haiti', - 'HU'=>'Hungary', + 'HR'=>'Croacia (nombre local: Hrvatska)', + 'HT'=>'Haití', + 'HU'=>'Hungría', 'ID'=>'Indonesia', - 'IE'=>'Ireland', + 'IE'=>'Irlanda', 'IL'=>'Israel', - 'IM'=>'Isle of Man', + 'IM'=>'Isla de Man', 'IN'=>'India', - 'IO'=>'British Indian Ocean Territory', - 'IQ'=>'Iraq', - 'IR'=>'Iran, Islamic Republic Of', - 'IS'=>'Iceland', - 'IT'=>'Italy', + 'IO'=>'Territorio británico del océano Índico', + 'IQ'=>'Irak', + 'IR'=>'Irán, República Islámica Del', + 'IS'=>'Islandia', + 'IT'=>'Italia', 'JE'=>'Jersey', 'JM'=>'Jamaica', - 'JO'=>'Jordan', - 'JP'=>'Japan', - 'KE'=>'Kenya', + 'JO'=>'Jordania', + 'JP'=>'Japón', + 'KE'=>'Kenia', 'KG'=>'Kyrgyzstan', - 'KH'=>'Cambodia', + 'KH'=>'Camboya', 'KI'=>'Kiribati', - 'KM'=>'Comoros', - 'KN'=>'Saint Kitts And Nevis', - 'KR'=>'Korea, Republic Of', + 'KM'=>'Islas Comoros', + 'KN'=>'San Cristóbal y Nevis', + 'KR'=>'Corea, República de', 'KW'=>'Kuwait', - 'KY'=>'Cayman Islands', - 'KZ'=>'Kazakhstan', - 'LA'=>'Lao People\'s Democratic Republic', - 'LB'=>'Lebanon', - 'LC'=>'Saint Lucia', - 'LI'=>'Liechtenstein', + 'KY'=>'Islas Caimán', + 'KZ'=>'Kazajistán', + 'LA'=>'República Democrática Popular de Laos', + 'LB'=>'Líbano', + 'LC'=>'Santa Lucía', + 'LI'=>'Principado de Liechtenstein', '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', + 'LS'=>'Lesoto', + 'LT'=>'Lituania', + 'LU'=>'Luxemburgo', + 'LV'=>'Letonia', + 'LY'=>'Libia', + 'MA'=>'Marruecos', + 'MC'=>'Mónaco', + 'MD'=>'Moldova, República de', 'ME'=>'Montenegro', 'MG'=>'Madagascar', - 'MH'=>'Marshall Islands', - 'MK'=>'Macedonia, The Former Yugoslav Republic Of', - 'ML'=>'Mali', + 'MH'=>'Islas Marshall', + 'MK'=>'Macedonia, Ex República Yugoslava de', + 'ML'=>'Malí', 'MM'=>'Myanmar', 'MN'=>'Mongolia', - 'MO'=>'Macau', - 'MP'=>'Northern Mariana Islands', - 'MQ'=>'Martinique', + 'MO'=>'Macao', + 'MP'=>'Islas Marianas del Norte', + 'MQ'=>'Martinica', 'MR'=>'Mauritania', 'MS'=>'Montserrat', 'MT'=>'Malta', - 'MU'=>'Mauritius', - 'MV'=>'Maldives', + 'MU'=>'Mauricio', + 'MV'=>'Maldivas', 'MW'=>'Malawi', - 'MX'=>'Mexico', - 'MY'=>'Malaysia', + 'MX'=>'México', + 'MY'=>'Malasia', 'MZ'=>'Mozambique', 'NA'=>'Namibia', - 'NC'=>'New Caledonia', - 'NE'=>'Niger', - 'NF'=>'Norfolk Island', + 'NC'=>'Nueva Caledonia', + 'NE'=>'Níger', + 'NF'=>'Isla Norfolk', 'NG'=>'Nigeria', 'NI'=>'Nicaragua', - 'NL'=>'Netherlands', - 'NO'=>'Norway', + 'NL'=>'Países Bajos', + 'NO'=>'Noruega', 'NP'=>'Nepal', 'NR'=>'Nauru', 'NU'=>'Niue', - 'NZ'=>'New Zealand', + 'NZ'=>'Nueva Zelanda', 'OM'=>'Oman', 'PA'=>'Panama', - 'PE'=>'Peru', - 'PF'=>'French Polynesia', - 'PG'=>'Papua New Guinea', - 'PH'=>'Philippines, Republic of the', - 'PK'=>'Pakistan', - 'PL'=>'Poland', - 'PM'=>'St. Pierre And Miquelon', + 'PE'=>'Perú', + 'PF'=>'Polinesia Francesa', + 'PG'=>'Papúa Nueva Guinea', + 'PH'=>'Filipinas, República de las', + 'PK'=>'Pakistán', + 'PL'=>'Polonia', + 'PM'=>'San Pedro y Miquelón', 'PN'=>'Pitcairn', 'PR'=>'Puerto Rico', - 'PS'=>'Palestine', + 'PS'=>'Palestina', 'PT'=>'Portugal', 'PW'=>'Palau', 'PY'=>'Paraguay', - 'QA'=>'Qatar', - 'RE'=>'Reunion', - 'RO'=>'Romania', + 'QA'=>'Catar', + 'RE'=>'Reunión', + 'RO'=>'Rumania', 'RS'=>'Serbia', - 'RU'=>'Russian Federation', - 'RW'=>'Rwanda', - 'SA'=>'Saudi Arabia', - 'UK'=>'Scotland', - 'SB'=>'Solomon Islands', + 'RU'=>'Federación Rusa', + 'RW'=>'Ruanda', + 'SA'=>'Arabia Saudita', + 'UK'=>'Escocia', + 'SB'=>'Islas Salomón', 'SC'=>'Seychelles', - 'SD'=>'Sudan', - 'SE'=>'Sweden', - 'SG'=>'Singapore', + 'SS'=>'Sudán del Sur', + 'SD'=>'Sudán', + 'SE'=>'Suecia', + 'SG'=>'Singapur', 'SH'=>'St. Helena', - 'SI'=>'Slovenia', - 'SJ'=>'Svalbard And Jan Mayen Islands', - 'SK'=>'Slovakia (Slovak Republic)', - 'SL'=>'Sierra Leone', + 'SI'=>'Eslovenia', + 'SJ'=>'Islas Svalbard y Jan Mayen', + 'SK'=>'Eslovaquia (República Eslovaca)', + 'SL'=>'Sierra Leona', 'SM'=>'San Marino', 'SN'=>'Senegal', 'SO'=>'Somalia', 'SR'=>'Suriname', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', + 'ST'=>'Santo Tomé y Príncipe', + 'SU'=>'Unión Soviética', 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', + 'SY'=>'República Árabe Siria', 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', + 'TC'=>'Islas Turcas y Caicos', 'TD'=>'Chad', - 'TF'=>'French Southern Territories', + 'TF'=>'Territorios Franceses del Sur', 'TG'=>'Togo', - 'TH'=>'Thailand', + 'TH'=>'Tailandia', 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', - 'TI'=>'East Timor', + 'TI'=>'Timor Oriental', 'TM'=>'Turkmenistan', 'TN'=>'Tunisia', 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', - 'TR'=>'Turkey', - 'TT'=>'Trinidad And Tobago', + 'TP'=>'Timor Oriental (código antiguo)', + 'TR'=>'Turquía', + 'TT'=>'Trinidad y Tobago', 'TV'=>'Tuvalu', - 'TW'=>'Taiwan', - 'TZ'=>'Tanzania, United Republic Of', - 'UA'=>'Ukraine', + 'TW'=>'Taiwán', + 'TZ'=>'Tanzania, República Unida de', + 'UA'=>'Ucrania', 'UG'=>'Uganda', - 'UK'=>'United Kingdom', - 'US'=>'United States', - 'UM'=>'United States Minor Outlying Islands', + 'UK'=>'Reino Unido', + 'US'=>'Estados Unidos', + 'UM'=>'Islas Ultramarinas Menores de Estados Unidos', 'UY'=>'Uruguay', - 'UZ'=>'Uzbekistan', - 'VA'=>'Vatican City State (Holy See)', - 'VC'=>'Saint Vincent And The Grenadines', + 'UZ'=>'Uzbekistán', + 'VA'=>'Estado de Vatican (Santa Sede)', + 'VC'=>'San Vicente y las Granadinas', 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', - 'VN'=>'Viet Nam', + 'VG'=>'Islas Vírgenes Británicas', + 'VI'=>'Islas Vírgenes (EE. UU.)', + 'VN'=>'Vietnam', 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', + 'WF'=>'Islas Wallis y Futuna', 'WS'=>'Samoa', 'YE'=>'Yemen', 'YT'=>'Mayotte', - 'ZA'=>'South Africa', + 'ZA'=>'Sudáfrica', 'ZM'=>'Zambia', - 'ZW'=>'Zimbabwe', + 'ZW'=>'Zimbabue', ], ]; \ No newline at end of file diff --git a/resources/lang/es-VE/mail.php b/resources/lang/es-VE/mail.php index 1eebea3ebc..c71e5a6173 100644 --- a/resources/lang/es-VE/mail.php +++ b/resources/lang/es-VE/mail.php @@ -2,7 +2,7 @@ return [ 'acceptance_asset_accepted' => 'Un usuario ha aceptado un artículo', - 'acceptance_asset_declined' => 'A user has declined an item', + 'acceptance_asset_declined' => 'Un usuario ha rechazado un artículo', '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', 'accessory_name' => 'Nombre del Accesorio:', @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Inicia sesión en tu nueva instalación de Snipe-IT usando las credenciales abajo:', 'login' => 'Iniciar Sesión:', 'Low_Inventory_Report' => 'Reporte de inventario bajo', + 'inventory_report' => 'Informe de inventario', 'min_QTY' => 'Cantidad mínima', 'name' => 'Nombre', 'new_item_checked' => 'Un nuevo artículo se ha retirado bajo tu nombre, los detalles están a continuación.', @@ -61,7 +62,7 @@ return [ 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos de Snipe-IT. Si tienes esto, correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', '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.', - 'assets_warrantee_alert' => 'There is :count asset with a warranty expiring in the next :threshold days.|There are :count assets with warranties expiring in the next :threshold days.', + '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.', '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.', 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', 'type' => 'Tipo', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Tus credenciales de Snipe-IT', 'Accessory_Checkin_Notification' => 'Accesorio devuelto', 'Asset_Checkin_Notification' => 'Activo devuelto', + 'Asset_Checkout_Notification' => 'Activo asignado', 'License_Checkin_Notification' => 'Licencia devuelta', 'Expected_Checkin_Report' => 'Informe de devolución de activo esperado', 'Expected_Checkin_Notification' => 'Recordatorio: :name se acerca la fecha de devolución', 'Expected_Checkin_Date' => 'Un activo asignado a ti debe ser devuelto en :date', 'your_assets' => 'Ver tus activos', + 'rights_reserved' => 'Todos los derechos reservados.', ]; diff --git a/resources/lang/es-VE/validation.php b/resources/lang/es-VE/validation.php index c9341f401e..e05d3398aa 100644 --- a/resources/lang/es-VE/validation.php +++ b/resources/lang/es-VE/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'Estte :attribute debe ser un archivo.', 'filled' => 'El campo :attribute debe tener un valor.', 'image' => 'El :attribute debe ser una imagen.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + 'is_unique_department' => 'El atributo :attribute debe ser único para esta ubicación de la empresa', 'json' => 'El :atrribute debe ser una dirección IPv4 válida.', 'max' => [ 'numeric' => 'El :attribute no debe ser mayor que :max kilobytes.', @@ -67,6 +67,8 @@ return [ 'array' => 'El :attribute debe ser como mínimo de :min kilobytes.', ], 'starts_with' => 'El :attribute debe comenzar con uno de los siguientes: :values.', + 'ends_with' => 'The :attribute must end with one of the following: :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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Tu 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. + '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', + 'termination_date.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-MM-DD', + 'expected_checkin.date_format' => 'El :attribute debe ser una fecha válida en formato AAAA-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', + ], /* diff --git a/resources/lang/et/admin/accessories/general.php b/resources/lang/et/admin/accessories/general.php index 35358be164..bc14bd107b 100644 --- a/resources/lang/et/admin/accessories/general.php +++ b/resources/lang/et/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Värskenda tarvikut', 'use_default_eula' => 'Selle asemel kasutage primaarset EULA vaikimisi.', 'use_default_eula_disabled' => 'Võtke kasutusele esmane vaikimisi EULA-d. Ükski esmane vaikimisi EULA ei ole määratud. Lisage see üksus valikut Seaded.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/et/admin/accessories/message.php b/resources/lang/et/admin/accessories/message.php index ac6125c262..57641cf6d3 100644 --- a/resources/lang/et/admin/accessories/message.php +++ b/resources/lang/et/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'Lisatarvikut ei kontrollitud, palun proovige uuesti', 'success' => 'Lisaseade edukalt kontrollitud.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'See kasutaja on kehtetu. Palun proovi uuesti.' ), diff --git a/resources/lang/et/admin/asset_maintenances/form.php b/resources/lang/et/admin/asset_maintenances/form.php index 325db108db..735e7988db 100644 --- a/resources/lang/et/admin/asset_maintenances/form.php +++ b/resources/lang/et/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Hooldustüüp', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Pealkiri', - 'start_date' => 'Alustatud', - 'completion_date' => 'Lõpetatud', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Kulud', 'is_warranty' => 'Garantii paranemine', - 'asset_maintenance_time' => 'Päevad', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Märkused', - 'update' => 'Uuenda', - 'create' => 'Loo' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/et/admin/categories/message.php b/resources/lang/et/admin/categories/message.php index b4c15d7cfb..ca446a15a0 100644 --- a/resources/lang/et/admin/categories/message.php +++ b/resources/lang/et/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Kategooriat ei uuendatud, proovige uuesti', - 'success' => 'Kategooria uuendamine õnnestus.' + 'success' => 'Kategooria uuendamine õnnestus.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/et/admin/components/general.php b/resources/lang/et/admin/components/general.php index 9c4e3e4ca8..d8e2671f4f 100644 --- a/resources/lang/et/admin/components/general.php +++ b/resources/lang/et/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Alles', 'total' => 'Kokku', 'update' => 'Muuda komponenti', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/et/admin/components/message.php b/resources/lang/et/admin/components/message.php index 05d537d93f..bd5d9c316a 100644 --- a/resources/lang/et/admin/components/message.php +++ b/resources/lang/et/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponenti ei kontrollitud, palun proovige uuesti', 'success' => 'Komponent on edukalt välja võetud.', - 'user_does_not_exist' => 'Vale kasutaja. Palun proovi uuesti.' + 'user_does_not_exist' => 'Vale kasutaja. Palun proovi uuesti.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/et/admin/consumables/message.php b/resources/lang/et/admin/consumables/message.php index 9176787adb..811629f99b 100644 --- a/resources/lang/et/admin/consumables/message.php +++ b/resources/lang/et/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Tarbitavat ei kontrollitud, proovige uuesti', 'success' => 'Tarbitav kontrollitud edukalt.', - 'user_does_not_exist' => 'See kasutaja ei sobi. Palun proovi uuesti.' + 'user_does_not_exist' => 'See kasutaja ei sobi. Palun proovi uuesti.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/et/admin/custom_fields/general.php b/resources/lang/et/admin/custom_fields/general.php index 61fa110310..95dacafbc0 100644 --- a/resources/lang/et/admin/custom_fields/general.php +++ b/resources/lang/et/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Kasutatud mudelite järgi', 'order' => 'Telli', 'create_fieldset' => 'New Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Uus kohandatud väli', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/et/admin/groups/message.php b/resources/lang/et/admin/groups/message.php index 8336fed222..6664a2ba17 100644 --- a/resources/lang/et/admin/groups/message.php +++ b/resources/lang/et/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Grupp on juba olemas!', - 'group_not_found' => 'Rühma [: id] ei ole olemas.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Nimi on kohustuslik', 'success' => array( diff --git a/resources/lang/et/admin/hardware/form.php b/resources/lang/et/admin/hardware/form.php index 3906c6acf8..0314f92dde 100644 --- a/resources/lang/et/admin/hardware/form.php +++ b/resources/lang/et/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Kinnita kahendite hulgi kustutamine', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Kontrolli alltoodud vahendid hulgi kustutamiseks. Kui oled need kustutanud, võib neid veel taastada, kuid neid ei saa enam seostada kasutajatega, kellega nad hetkel seotud on.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Sa hakkad kustsutama :asset_count vahendit.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Uuenduste hulgihaldus', 'bulk_update_help' => 'See vorm võimaldab teil korraga mitme vara värskendada. Täitke ainult väljad, mida tuleb muuta. Kõik tühjad tühikud jäävad muutmata.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Uuenda ainult vaikimisi asukohta', 'asset_not_deployable' => 'Selle vahendi olek ei luba seda väljastada.', 'asset_deployable' => 'Selle vahendi olek lubab seda väljastada.', - 'processing_spinner' => 'Töötlemine...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Valikuline teave', 'order_details' => 'Tellimusega seonduv teave' ]; diff --git a/resources/lang/et/admin/hardware/general.php b/resources/lang/et/admin/hardware/general.php index 8a1cc6d24c..c3c429db61 100644 --- a/resources/lang/et/admin/hardware/general.php +++ b/resources/lang/et/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'See vara on kustutatud.', 'edit' => 'Muuda vahendit', 'model_deleted' => 'See vara mudel on kustutatud. Enne vara taastamist peab taastama mudeli.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Taotletav', 'requested' => 'Taotletud', 'not_requestable' => 'Mittetaotletav', @@ -21,6 +23,7 @@ return [ 'restore' => 'Taasta vara', 'pending' => 'Ootel', 'undeployable' => 'Kasutuselevõtmatu', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Vaata vahendit', 'csv_error' => 'Sul on viga CSV failis:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Tõrked:', 'success_messages' => 'Õnnestumised:', 'alert_details' => 'Palun vaata allolevaid üksikasju.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/et/admin/hardware/message.php b/resources/lang/et/admin/hardware/message.php index 58c73d11c9..c8b21d4823 100644 --- a/resources/lang/et/admin/hardware/message.php +++ b/resources/lang/et/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Vara ei taastatud, palun proovi uuesti', 'success' => 'Varad on edukalt taastatud.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'Teie fail on imporditud', 'file_delete_success' => 'Teie fail on edukalt kustutatud', 'file_delete_error' => 'Faili ei saanud kustutada', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/et/admin/hardware/table.php b/resources/lang/et/admin/hardware/table.php index f75cb6fabc..1cf7230547 100644 --- a/resources/lang/et/admin/hardware/table.php +++ b/resources/lang/et/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Sees väljas', 'checkout_date' => 'Väljastamise kuupäev', 'checkoutto' => 'Väljastatud', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Hetkeväärtus', 'diff' => 'Diferentseeritud', 'dl_csv' => 'Laadige alla CSV', diff --git a/resources/lang/et/admin/licenses/general.php b/resources/lang/et/admin/licenses/general.php index c8322c5cbc..2a386bb6d9 100644 --- a/resources/lang/et/admin/licenses/general.php +++ b/resources/lang/et/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Litsentside kohta', - 'about_licenses' => 'Litsentse kasutatakse tarkvara jälgimiseks. Neil on kindlaksmääratud arv istekohti, mida saab üksikisikutele kontrollida', + 'about_licenses_title' => 'Litsentside kohta', + 'about_licenses' => 'Litsentse kasutatakse tarkvara jälgimiseks. Neil on kindlaksmääratud arv istekohti, mida saab üksikisikutele kontrollida', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Checkout ajalugu', 'checkout' => 'Checkout\'i litsentside asukoht', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Tarkvara litsentsid', 'user' => 'Kasutaja', 'view' => 'Vaadake litsentsi', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/et/admin/manufacturers/message.php b/resources/lang/et/admin/manufacturers/message.php index 8a436d7bad..9475444a8a 100644 --- a/resources/lang/et/admin/manufacturers/message.php +++ b/resources/lang/et/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Tootjat ei eksisteeri.', 'assoc_users' => 'Selle tootjaga on seotud vähemalt üks mudel ja seda ei saa kustutada. Palun uuenda oma mudeleid, et need ei kasutaks seda tootjat ning seejärel proovi uuesti. ', diff --git a/resources/lang/et/admin/manufacturers/table.php b/resources/lang/et/admin/manufacturers/table.php index 6205b8cfd4..853129c522 100644 --- a/resources/lang/et/admin/manufacturers/table.php +++ b/resources/lang/et/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Kasutajatoe E-mail', 'support_phone' => 'Kasutajatoe telefon', 'support_url' => 'Kasutajatoe URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Uuenda tootjat', 'url' => 'URL', diff --git a/resources/lang/et/admin/models/general.php b/resources/lang/et/admin/models/general.php index 8757ce8007..b775f00f6a 100644 --- a/resources/lang/et/admin/models/general.php +++ b/resources/lang/et/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'See mudel on kustatud.', 'bulk_delete' => 'Kustuta hulgi vara mudeleid', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'Sa oled kustutamas :model_count vara mudelit.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Taasta mudel', 'requestable' => 'Kasutajad võivad seda mudelit tellida', 'show_mac_address' => 'Näita sellel mudelil MAC aadressi välja', diff --git a/resources/lang/et/admin/models/message.php b/resources/lang/et/admin/models/message.php index 114e9fcfe7..ff2af36395 100644 --- a/resources/lang/et/admin/models/message.php +++ b/resources/lang/et/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Mudelit pole olemas.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Mudelit ei uuendatud, proovige uuesti', - 'success' => 'Mudeli uuendamine õnnestus.' + 'success' => 'Mudeli uuendamine õnnestus.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Ühtegi välja ei muudetud, uuendusi ei tehtud', - 'success' => 'Mudelid on uuendatud.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Mudeleid ei valitud, nii et midagi ei kustutatud.', - 'success' => ':success_count mudel(it) kustutatud!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count mudel(it) kustutati, kuid :fail_count ei õnnestunud kustutada kuna nendega on ikka veel vara seotud.' ), diff --git a/resources/lang/et/admin/settings/general.php b/resources/lang/et/admin/settings/general.php index 9f98f97bf3..331b444d03 100644 --- a/resources/lang/et/admin/settings/general.php +++ b/resources/lang/et/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'See on Active Directory server', 'alerts' => 'Märguanded', - 'alert_title' => 'Uuenda märguande seadeid', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Saada hoiatusi', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Hoiatused on lubatud', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Triipkoodide seadistused', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP seaded', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Saidi nimi', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Vähene botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Lõpp-punkt', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT versioon', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/et/admin/settings/message.php b/resources/lang/et/admin/settings/message.php index d4810b55fd..6906690f41 100644 --- a/resources/lang/et/admin/settings/message.php +++ b/resources/lang/et/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/et/admin/users/general.php b/resources/lang/et/admin/users/general.php index d333f286be..35726a8eaf 100644 --- a/resources/lang/et/admin/users/general.php +++ b/resources/lang/et/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Prindi kõik varad', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Kasutaja :name valdusesse antud tarkvara', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Vaata kasutajat :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'HOIATUS:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Uuenda kõik vahendid nendele kasutajatele sellesse olekusse', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'See võib olla kasulik, kui vajad kaugkasutajate filtrit inimestest, kes käivad harva või ei käi üldse ettevõtte füüsilistes asukohtades.', 'not_remote_label' => 'See ei ole kaugkasutaja', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/et/admin/users/message.php b/resources/lang/et/admin/users/message.php index 2465e7247c..fa3d677aca 100644 --- a/resources/lang/et/admin/users/message.php +++ b/resources/lang/et/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Oled selle vahendi tagasi lükanud.', 'bulk_manager_warn' => 'Sinu kasutajad on edukalt muudetud, kuid sinu juhi-kirjet ei salvestatud sest juht, kelle valisid oli ka muudatavate kasutajate hulgas ning kasutaja ei või olla ise-enda juht. Palun vali oma kasutajad uuesti, jättes juhi kõrvale.', 'user_exists' => 'Kasutaja on juba olemas!', - 'user_not_found' => 'Kasutajat [:id] ei ole olemas.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Login väli on kohustuslik', 'user_password_required' => 'Parooli väli on kohustuslik.', 'insufficient_permissions' => 'Ebapiisavad õigused.', diff --git a/resources/lang/et/auth/general.php b/resources/lang/et/auth/general.php index 6215da8476..04eec9ad25 100644 --- a/resources/lang/et/auth/general.php +++ b/resources/lang/et/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Jäta mind meelde', 'username_help_top' => 'Parooli lähtestamiseks sisesta oma kasutajanimi.', 'username_help_bottom' => 'Kasutajanimi ja e-posti aadress võivad olla samad, aga ei pruugi olla. Kui oled kasutajanime unustanud, võta ühendust oma süsteemiadministraatoriga.

Kasutajatele ilma liidetud e-posti aadressita ei saa parooli lähtestamise linki saata. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/et/general.php b/resources/lang/et/general.php index 7539783bb6..9a86937d7e 100644 --- a/resources/lang/et/general.php +++ b/resources/lang/et/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Tarvikud', 'activated' => 'Aktiveeritud', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Tarvik', 'accessory_report' => 'Tarvikute aruanne', 'action' => 'Tegevus', @@ -27,7 +28,13 @@ return [ 'audit' => 'Auditeerimine', 'audit_report' => 'Auditilogi', 'assets' => 'Vahendid', + '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' => 'Määratud kasutajale :name', + 'assignee' => 'Assigned to', 'avatar_delete' => 'Kustuta profiilipilt', 'avatar_upload' => 'Lae profiilipilt', 'back' => 'Tagasi', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Hulgiredigeerimine', 'bulk_delete' => 'Hulgikustutamine', 'bulk_actions' => 'Hulgitoimingud', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'staatuse järgi', 'cancel' => 'Loobu', 'categories' => 'Kategooriad', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'See rakendus töötab tootmisrežiimis, kus silumisvõimalused on lubatud. See võib avaldada tundlikke andmeid, kui teie rakendus on välismaailmale juurdepääsetav. Keela debugrežiim, määrates APP_DEBUG väärtuse oma .env failis false.', 'delete' => 'Kustuta', 'delete_confirm' => 'Kas olete kindel, et soovite kustutada :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Kustutatud', 'delete_seats' => 'Kustutatud istmed', 'deletion_failed' => 'Kustutamine ebaõnnestus', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'Aktsepteeritud failitüüp on :types. Maksimaalne lubatud üleslaaditav suurus on :size.|Aktsepteeritud failitüübid on :types. Maksimaalne lubatud üleslaadimise suurus on :size.', 'filetypes_size_help' => 'Maksimaalne lubatud üleslaadimise suurus on :size.', 'image_filetypes_help' => 'Lubatud faililaiendid on jpg, png, gif ja svg. Suurim lubatud üleslaadimise maht on :size.', + 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Impordi', 'importing' => 'Importimine', 'importing_help' => 'CSV-faili kaudu saate importida vahendeid, tarvikuid, litsentse, komponente, kulumaterjale ja kasutajaid.

CSV peaks olema komadega eraldatud ja vormindatud päistega, mis ühtivad CSV-de näidistega dokumentatsioonis.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Vara säilimine', 'item' => 'Kirje', 'item_name' => 'Üksuse nimi', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Ei ole piisavalt õigusi!', 'kits' => 'Eelnevalt määratud komplektid', 'language' => 'Keel', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Vaadake taotletud vahendeid', 'request_canceled' => 'Taotlus tühistati', 'save' => 'Salvesta', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Vali', 'select_all' => 'Vali kõik', 'search' => 'Otsi', @@ -240,8 +254,8 @@ return [ 'signature' => 'Allkiri', 'signed_off_by' => 'Signed Off By', 'skin' => 'Väljanägemine', - 'slack_msg_note' => 'Saadetakse Slacki sõnum', - 'slack_test_msg' => 'Juhhuu! Näib, et teie Slacki integratsioon Snipe-IT-ga töötab!', + '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!', 'some_features_disabled' => 'DEMOVERSIOON: Selles installatsioonis mõned funktsioonid ei tööta.', 'site_name' => 'Saidi nimi', 'state' => 'Maakond', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Kas olete kindel, et soovite kustutada', 'submit' => 'Kinnita', 'target' => 'Sihtimine', - 'toggle_navigation' => 'Vaheta navigeerimisvaadet', 'time_and_date_display' => 'Kellaaja ja kuupäeva kuvamine', 'total_assets' => 'vahendeid kokku', 'total_licenses' => 'litsentse kokku', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/et/help.php b/resources/lang/et/help.php index 2bfd8af5d9..1f9e6fba3a 100644 --- a/resources/lang/et/help.php +++ b/resources/lang/et/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Rohkem infot', - 'audit_help' => 'Selle kasti valimine muudab vahendi teavet, et näidata selle uut asukohta. Kui seda ei valita, salvestatakse asukoht ainult logisse.

Pange tähele, et kui vahend on juba üle antud, siis see ei muuda selle isiku või vahendi asukohta, kellele see on üle antud.', + 'audit_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.', 'assets' => 'Vahendeid saab tuvastada ja jälgida seerianumbri või seadme identifikaatori abil. Tavaliselt määratletakse ja registreeritakse seerianumber või identifikaator väärtuslikele vahenditele, mille individuaalne tuvastamine on oluline.', diff --git a/resources/lang/et/localizations.php b/resources/lang/et/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/et/localizations.php +++ b/resources/lang/et/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/et/mail.php b/resources/lang/et/mail.php index 97a7b83b8d..699ec3e6b6 100644 --- a/resources/lang/et/mail.php +++ b/resources/lang/et/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Logige oma uude Snipe-IT-seadmesse sisse, kasutades allpool toodud mandaate.', 'login' => 'Logi sisse:', 'Low_Inventory_Report' => 'Madal inventuuriaruanne', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Nimi', 'new_item_checked' => 'Uue elemendi on teie nime all kontrollitud, üksikasjad on allpool.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Sinu Snipe-IT rekvisiidid', 'Accessory_Checkin_Notification' => 'Tarvikud sisse võetud', 'Asset_Checkin_Notification' => 'Vara sissevõetud', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'Litsents sisse võetud', 'Expected_Checkin_Report' => 'Eeldatav vahendite tagastamise aruanne', 'Expected_Checkin_Notification' => 'Meeldetuletus: :name tagastamise tähtaeg läheneb', 'Expected_Checkin_Date' => 'Sulle väljastatud vahend tuleb tagastada :date', 'your_assets' => 'Vaata oma varasi', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/et/validation.php b/resources/lang/et/validation.php index 7864891729..d56039ad61 100644 --- a/resources/lang/et/validation.php +++ b/resources/lang/et/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Atribuudil peab olema vähemalt: min kirjeid.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Teie praegune parool on vale', 'dumbpwd' => 'See parool on liiga levinud.', 'statuslabel_type' => 'Peate valima kehtiva olekutüübi tüübi', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/fa/admin/accessories/general.php b/resources/lang/fa/admin/accessories/general.php index f03dcfe35b..2735702a1c 100644 --- a/resources/lang/fa/admin/accessories/general.php +++ b/resources/lang/fa/admin/accessories/general.php @@ -18,5 +18,7 @@ return array( استفاده کنید', 'use_default_eula_disabled' => 'از پیشفرض اولیه EULA استفاده کنید.هیچ پیشفرضی اولیه ای تنظیم نشده است در تنظیمات اضافه کنید', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/fa/admin/accessories/message.php b/resources/lang/fa/admin/accessories/message.php index 3c398d05d4..9c8687d4cd 100644 --- a/resources/lang/fa/admin/accessories/message.php +++ b/resources/lang/fa/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'وسیله چک نشده بود. لطفا دوباره امتحان کنید', 'success' => 'وسیله با موفقیت چک شد.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'کاربر نامعتبر است. لطفا دوباره امتحان کنید.' ), diff --git a/resources/lang/fa/admin/asset_maintenances/form.php b/resources/lang/fa/admin/asset_maintenances/form.php index 5bdd36be86..9d209d6ca5 100644 --- a/resources/lang/fa/admin/asset_maintenances/form.php +++ b/resources/lang/fa/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'نوع نگهداری دارایی', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'عنوان', - 'start_date' => 'شروع شده', - 'completion_date' => 'تکمیل شده', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'هزینه', 'is_warranty' => 'بهبود ضمانت', - 'asset_maintenance_time' => 'روزها', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'یادداشت ها', - 'update' => 'بروزرسانی', - 'create' => 'ایجاد' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/fa/admin/categories/message.php b/resources/lang/fa/admin/categories/message.php index 212853273d..56f071e549 100644 --- a/resources/lang/fa/admin/categories/message.php +++ b/resources/lang/fa/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'دسته بندی به روزرسانی نشد.لطفا دوباره تلاش کنید.', - 'success' => 'دسته بندی با موفقیت به روزرسانی شد.' + 'success' => 'دسته بندی با موفقیت به روزرسانی شد.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/fa/admin/components/general.php b/resources/lang/fa/admin/components/general.php index ccb278cf62..dd2ffe7407 100644 --- a/resources/lang/fa/admin/components/general.php +++ b/resources/lang/fa/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'یاقیمانده', 'total' => 'مجموع', 'update' => 'بروزرسانی کامپیوننت', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/fa/admin/components/message.php b/resources/lang/fa/admin/components/message.php index 2b1763119a..48acad948f 100644 --- a/resources/lang/fa/admin/components/message.php +++ b/resources/lang/fa/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'کامپیوننت پرداخت نشد ، دوباره سعی کنید.', 'success' => 'کامپیوننت پرداخت شد.', - 'user_does_not_exist' => 'کاربر نامعتبر است لطفا دوباره امتحان کنید.' + 'user_does_not_exist' => 'کاربر نامعتبر است لطفا دوباره امتحان کنید.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/fa/admin/consumables/message.php b/resources/lang/fa/admin/consumables/message.php index d7e2d482ef..dfdb68a17d 100644 --- a/resources/lang/fa/admin/consumables/message.php +++ b/resources/lang/fa/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'مواد مصرفی بررسی نشد ، دوباره سعی کنید.', 'success' => 'مواد مصرفی بررسی شد.', - 'user_does_not_exist' => 'کاربر نامعتبر است لطفا دوباره امتحان کنید.' + 'user_does_not_exist' => 'کاربر نامعتبر است لطفا دوباره امتحان کنید.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/fa/admin/custom_fields/general.php b/resources/lang/fa/admin/custom_fields/general.php index 2c5da27dc6..8549129810 100644 --- a/resources/lang/fa/admin/custom_fields/general.php +++ b/resources/lang/fa/admin/custom_fields/general.php @@ -29,6 +29,9 @@ return [ 'used_by_models' => 'استفاده شده توسط مدل ها', 'order' => 'سفارش', 'create_fieldset' => 'تنظیمات فیلد جدید', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'ایجاد یک عنصر جدید', 'create_field' => 'فیلد سفارشی جدید', 'create_field_title' => 'یک فیلد سفارشی جدید ایجاد کنید @@ -60,4 +63,6 @@ return [ ', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/fa/admin/groups/message.php b/resources/lang/fa/admin/groups/message.php index 54bbc8a9d7..469deaec7c 100644 --- a/resources/lang/fa/admin/groups/message.php +++ b/resources/lang/fa/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'گروه در حال حاضر وجود دارد!', - 'group_not_found' => 'گروه [: شناسه] وجود ندارد.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'نام زمینه مورد نیاز است', 'success' => array( diff --git a/resources/lang/fa/admin/hardware/form.php b/resources/lang/fa/admin/hardware/form.php index 334c88eef3..00b4b21c40 100644 --- a/resources/lang/fa/admin/hardware/form.php +++ b/resources/lang/fa/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'تأیید دارایی های حذف فله', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'بررسی دارایی برای حذف فله زیر کلیک کنید. به محض حذف این دارایی ها را می توان ترمیم کرد، اما ان ها دیگر قابل دسترسی با یوزر های دیگر نیستند.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'شما در حال حذف: دارایی های تعداد دارایی.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'به روز رسانی دارایی های فله', 'bulk_update_help' => 'این فرم برای به روز رسانی دارایی های متعدد در یک بار را به شما اجازه می دهد. تنها قسمت ها نیاز به تغییر را پر کنید. هر زمینه های خالی سمت چپ بدون تغییر باقی می ماند. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -59,7 +62,7 @@ return [ 'asset_location_update_default' => 'فقط بروزرسانی مکان پیش‌فرض', 'asset_not_deployable' => 'این وضعیت دارایی قابل استقرار نیست. این دارایی قابل پذیرش نیست.', 'asset_deployable' => 'این وضعیت دارایی قابل استقرار است. این دارایی قابل پذیرش است.', - 'processing_spinner' => 'در حال پردازش...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'اطلاعات دلخواه ', 'order_details' => 'اطلاعات مربوط به سفارش diff --git a/resources/lang/fa/admin/hardware/general.php b/resources/lang/fa/admin/hardware/general.php index dbfdcc4242..617db848d9 100644 --- a/resources/lang/fa/admin/hardware/general.php +++ b/resources/lang/fa/admin/hardware/general.php @@ -17,6 +17,8 @@ return [ 'edit' => 'ویرایش دارایی', 'model_deleted' => 'این مدل دارایی حذف شده است. قبل از اینکه بتوانید Asset را بازیابی کنید، باید مدل را بازیابی کنید. ', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'در خواست شد', 'requested' => 'درخواست شده', 'not_requestable' => 'غیر قابل درخواست @@ -26,6 +28,7 @@ return [ 'restore' => 'بازیابی دارایی', 'pending' => 'در انتظار', 'undeployable' => 'غیرقابل گسترش', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'نمایش دارایی ها ', 'csv_error' => 'شما یک خطا در فایل CSV خود دارید: @@ -53,5 +56,6 @@ return [ 'alert_details' => 'لطفا برای جزئیات زیر را ببینید. ', 'custom_export' => 'صادرات سفارشی -' +', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/fa/admin/hardware/message.php b/resources/lang/fa/admin/hardware/message.php index ef8cdd69ba..4fac182622 100644 --- a/resources/lang/fa/admin/hardware/message.php +++ b/resources/lang/fa/admin/hardware/message.php @@ -24,6 +24,8 @@ return [ 'restore' => [ 'error' => 'دارایی بازیابی نشد، لطفا دوباره تلاش کنید', 'success' => 'دارایی با موفقیت بازیابی شد.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -50,6 +52,8 @@ return [ 'success' => 'فایل شما وارد شده است', 'file_delete_success' => 'فایل شما با موفقیت حذف شده است', 'file_delete_error' => 'فایل قابل حذف نشد', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/fa/admin/hardware/table.php b/resources/lang/fa/admin/hardware/table.php index 3d6835cc7e..230151de9a 100644 --- a/resources/lang/fa/admin/hardware/table.php +++ b/resources/lang/fa/admin/hardware/table.php @@ -9,6 +9,7 @@ return [ 'change' => '/ خارج', 'checkout_date' => 'چک کردن تاریخ', 'checkoutto' => 'قفل شده', + 'components_cost' => 'Total Components Cost', 'current_value' => 'ارزش فعلی ', 'diff' => 'دیف', diff --git a/resources/lang/fa/admin/licenses/general.php b/resources/lang/fa/admin/licenses/general.php index d404a47f95..d046eb1681 100644 --- a/resources/lang/fa/admin/licenses/general.php +++ b/resources/lang/fa/admin/licenses/general.php @@ -1,8 +1,8 @@ 'درباره مجوزها', - 'about_licenses' => 'مجوز برای پیگیری نرم افزار استفاده می شود. آنها دارای تعداد مشخصی از صندلی هایی هستند که می توانند به افراد منتقل شوند', + 'about_licenses_title' => 'درباره مجوزها', + 'about_licenses' => 'مجوز برای پیگیری نرم افزار استفاده می شود. آنها دارای تعداد مشخصی از صندلی هایی هستند که می توانند به افراد منتقل شوند', 'checkin' => 'بررسی صندلی مجوز', 'checkout_history' => 'تاریخچه پرداخت', 'checkout' => 'صندلی مجوز پرداخت', @@ -19,4 +19,30 @@ return array( 'software_licenses' => 'گواهی نامه های نرم افزاری', 'user' => 'کاربر', 'view' => 'مشاهده توافق‌نامه', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/fa/admin/manufacturers/message.php b/resources/lang/fa/admin/manufacturers/message.php index b20fcc37d6..fe99beaea8 100644 --- a/resources/lang/fa/admin/manufacturers/message.php +++ b/resources/lang/fa/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'تولید کننده وجود ندارد.', 'assoc_users' => 'این تولید کننده در حال حاضر با حداقل یک مدل همراه است و نمی تواند حذف شود. لطفا مدل های خود را به دیگر مرجع این تولید کننده به روز رسانی کنید و دوباره امتحان کنید.', diff --git a/resources/lang/fa/admin/manufacturers/table.php b/resources/lang/fa/admin/manufacturers/table.php index 95874ad341..cffbfe2295 100644 --- a/resources/lang/fa/admin/manufacturers/table.php +++ b/resources/lang/fa/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'ایمیل پشتیبانی', 'support_phone' => 'تلفن پشتیبانی', 'support_url' => 'URL پشتیبانی', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'به روز رسانی تولیدکننده', 'url' => 'نشانی اینترنتی', diff --git a/resources/lang/fa/admin/models/general.php b/resources/lang/fa/admin/models/general.php index d3addc2fee..0b70f9253f 100644 --- a/resources/lang/fa/admin/models/general.php +++ b/resources/lang/fa/admin/models/general.php @@ -7,8 +7,7 @@ return array( 'bulk_delete' => 'حذف دسته جمعی مدل های دارایی', 'bulk_delete_help' => 'برای تأیید حذف مدل‌های دارایی انتخاب شده از کادرهای تأیید زیر استفاده کنید. مدل‌های دارایی‌هایی که دارایی‌های مرتبط با آن‌ها هستند، تا زمانی که دارایی‌ها با مدل دیگری مرتبط نشوند، قابل حذف نیستند. ', - 'bulk_delete_warn' => 'شما در حال حذف مدل های دارایی :model_count هستید. -', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'بازیابی مدل', 'requestable' => 'کاربران ممکن است از این مدل درخواست کنند', 'show_mac_address' => 'نمایش قسمت آدرس MAC در دارایی در این مدل', diff --git a/resources/lang/fa/admin/models/message.php b/resources/lang/fa/admin/models/message.php index c6c109fead..9d0826e422 100644 --- a/resources/lang/fa/admin/models/message.php +++ b/resources/lang/fa/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'مدل موجود نیست.', + 'no_association' => 'NO MODEL ASSOCIATED.', + 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'این مدل در حال حاضر همراه یک یا بیشتر از یک دارایی است و نمی تواند حذف شود. لطفا دارایی ها را حذف کنید و سپس برای حذف کردن مجددا تلاش کنید. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'مدل به روزرسانی نشده است، لطفا دوباره تلاش کنید', - 'success' => 'مدل با موفقیت به روز رسانی شد.' + 'success' => 'مدل با موفقیت به روز رسانی شد.', ), 'delete' => array( @@ -30,13 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'هیچ فیلدی تغییر نکرده بود، بنابراین چیزی به روز نشد.', - 'success' => 'مدل های به روز شده' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'هیچ مدلی انتخاب نشده بود، بنابراین هیچ چیز حذف نشد.', - 'success' => ':success_count مدل(های) حذف شد! -', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => 'مدل(های) :success_count حذف شدند، اما :fail_count حذف نشدند زیرا هنوز دارایی های مرتبط با آنها هستند. ' ), diff --git a/resources/lang/fa/admin/settings/general.php b/resources/lang/fa/admin/settings/general.php index cd0c9817aa..b2a57ce72e 100644 --- a/resources/lang/fa/admin/settings/general.php +++ b/resources/lang/fa/admin/settings/general.php @@ -16,8 +16,7 @@ return [ ', 'is_ad' => 'این سرور Active Directory است', 'alerts' => 'هشدار', - 'alert_title' => 'تنظیمات هشدار را به روز کنید -', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'ارسال هشدار به', 'alert_email_help' => 'آدرس‌های ایمیل یا لیست‌های توزیعی که می‌خواهید هشدارها به آنها ارسال شود، با کاما از هم جدا شده‌اند ', @@ -45,8 +44,7 @@ return [ 'backups_upload' => 'نسخه پشتیبان را دانلود کنید', 'backups_path' => 'نسخه‌های پشتیبان روی سرور در :path ذخیره می‌شوند ', - 'backups_restore_warning' => 'از دکمه بازیابی استفاده کنید برای بازیابی از نسخه پشتیبان قبلی. (این در حال حاضر با ذخیره‌سازی فایل S3 یا Docker کار نمی‌کند.

کل پایگاه داده :app_name شما و هر فایل آپلود شده به طور کامل با آنچه در فایل پشتیبان است جایگزین می‌شود. -', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'همه کاربران موجود، از جمله شما، پس از تکمیل بازیابی شما از سیستم خارج می شوند. ', 'backups_large' => 'پشتیبان‌گیری‌های بسیار بزرگ ممکن است در تلاش بازیابی به پایان برسد و ممکن است همچنان نیاز باشد از طریق خط فرمان اجرا شوند. @@ -109,6 +107,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'دایرکتوری فعال', 'ldap_client_tls_key' => 'کلید TLS مشتری LDAP ', @@ -121,6 +120,8 @@ return [ ', 'ldap_client_tls_key' => 'کلید TLS سمت مشتری LDAP ', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'یک نام کاربری و رمز عبور LDAP معتبر از DN پایه ای که در بالا مشخص کرده اید وارد کنید تا بررسی کنید که آیا ورود به سیستم LDAP شما به درستی پیکربندی شده است یا خیر. ابتدا باید تنظیمات LDAP به روز شده خود را ذخیره کنید. ', 'ldap_login_sync_help' => 'این فقط آزمایش می کند که LDAP می تواند به درستی همگام شود. اگر درخواست احراز هویت LDAP شما صحیح نباشد، کاربران ممکن است هنوز نتوانند وارد سیستم شوند. ابتدا باید تنظیمات LDAP به روز شده خود را ذخیره کنید. @@ -295,20 +296,21 @@ return [ 'show_images_in_email_help' => 'اگر نصب Snipe-IT شما پشت VPN یا شبکه بسته است و کاربران خارج از شبکه نمی توانند تصاویر ارائه شده از این نصب را در ایمیل های خود بارگیری کنند، علامت این کادر را بردارید. ', 'site_name' => 'نام سایت', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'تنظیمات هشدار را به روز کنید -', - 'slack_help' => 'تنظیمات Slack', - 'slack_botname' => 'پشت گوش فراخ Botname', - 'slack_channel' => 'اسلک کانال', - 'slack_endpoint' => 'نقطه پایان اسلک', - 'slack_integration' => 'تنظیمات اسلک', - 'slack_integration_help' => 'ادغام Slack اختیاری است، اما اگر می‌خواهید از آن استفاده کنید، نقطه پایانی و کانال مورد نیاز است. برای پیکربندی ادغام Slack، ابتدا باید یک وب هوک ورودی در حساب Slack خود ایجاد کنید. روی دکمه Test Slack Integration کلیک کنید تا قبل از ذخیره کردن، صحت تنظیمات خود را تأیید کنید. -', - 'slack_integration_help_button' => 'هنگامی که اطلاعات Slack خود را ذخیره کردید، یک دکمه تست ظاهر می شود. -', - 'slack_test_help' => 'تست کنید که آیا ادغام Slack شما به درستی پیکربندی شده است یا خیر. ابتدا باید تنظیمات SLACK به روز شده خود را ذخیره کنید. -', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'نسخه Snipe_IT', 'support_footer' => 'پشتیبانی از پیوندهای پاورقی ', @@ -439,8 +441,7 @@ return [ 'localization_help' => 'زبان، نمایش تاریخ ', 'notifications' => 'اعلان‌ ها', - 'notifications_help' => 'هشدارهای ایمیل، تنظیمات ممیزی -', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'افزایش و پیشوندها ', 'labels' => 'برچسب ها', @@ -478,4 +479,9 @@ return [ ', 'slack_test' => 'تست یکپارچه سازی ', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/fa/admin/settings/message.php b/resources/lang/fa/admin/settings/message.php index 4cb2accd53..740f692b86 100644 --- a/resources/lang/fa/admin/settings/message.php +++ b/resources/lang/fa/admin/settings/message.php @@ -42,14 +42,12 @@ return [ 'authentication_success' => 'کاربر در برابر LDAP با موفقیت احراز هویت شد! ' ], - 'slack' => [ - 'sending' => 'ارسال پیام تست Slack... -', - 'success_pt1' => 'موفقیت! بررسی کنید -', - 'success_pt2' => 'برای پیام آزمایشی خود کانال را ارسال کنید و حتماً برای ذخیره تنظیمات خود روی ذخیره در زیر کلیک کنید. -', - '500' => 'خطای سرور', - 'error' => 'مشکلی پیش آمده.', + 'webhook' => [ + 'sending' => 'Sending :app test message...', + 'success_pt1' => 'Success! Check the ', + 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', + '500' => '500 Server Error.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/fa/admin/users/general.php b/resources/lang/fa/admin/users/general.php index b34e584011..abac35cc86 100644 --- a/resources/lang/fa/admin/users/general.php +++ b/resources/lang/fa/admin/users/general.php @@ -23,6 +23,8 @@ return [ ', 'user_notified' => 'لیستی از موارد اختصاص داده شده فعلی به کاربر ایمیل شده است. ', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'برنامه چک شد برای:', 'send_email_help' => 'شما باید یک آدرس ایمیل برای این کاربر ارائه دهید تا اطلاعات کاربری خود را ارسال کند. ارسال اعتبار نامه ایمیل فقط با ایجاد کاربر امکان پذیر است. رمزهای عبور در یک هش یک طرفه ذخیره می شوند و پس از ذخیره نمی توان آنها را بازیابی کرد. ', @@ -45,7 +47,6 @@ return [ ', 'remove_group_memberships' => 'حذف عضویت در گروه ', - 'warning_deletion' => 'اخطار!', 'warning_deletion_information' => 'شما در شرف بررسی همه موارد از کاربر(های) :count فهرست شده در زیر هستید. نام های فوق ادمین با رنگ قرمز مشخص شده اند. ', 'update_user_assets_status' => 'همه دارایی های این کاربران را به این وضعیت به روز کنید @@ -59,4 +60,13 @@ return [ ', 'not_remote_label' => 'این یک کاربر راه دور نیست ', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/fa/admin/users/message.php b/resources/lang/fa/admin/users/message.php index 6237c0965a..84c019cbc0 100644 --- a/resources/lang/fa/admin/users/message.php +++ b/resources/lang/fa/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'شما با موفقیت این دارایی را به کاهش دادید.', 'bulk_manager_warn' => 'کاربران شما با موفقیت به روز شده اند، با این حال مدیر ورود شما ذخیره نشد زیرا مدیر شما انتخاب شده بود نیز در لیست کاربر برای ویرایش، و کاربران ممکن است مدیر خود نیست. لطفا کاربران خود را دوباره انتخاب کنید، به غیر از مدیر.', 'user_exists' => 'کاربر "{0}" در حال حاضر وجود دارد.', - 'user_not_found' => 'کاربر [:id] موجود نیست.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'فیلد ورود الزامی است.', 'user_password_required' => 'کلمه عبور ضروری است.', 'insufficient_permissions' => 'دسترسی محدود', diff --git a/resources/lang/fa/auth/general.php b/resources/lang/fa/auth/general.php index 3ca176e117..4af6cf6b58 100644 --- a/resources/lang/fa/auth/general.php +++ b/resources/lang/fa/auth/general.php @@ -15,5 +15,8 @@ return [ ', 'username_help_bottom' => 'نام کاربری و آدرس ایمیل شما ممکن است یکسان باشد، اما ممکن است نباشد، بسته به پیکربندی شما. اگر نمی توانید نام کاربری خود را به خاطر بسپارید، با سرپرست خود تماس بگیرید.

برای نام‌های کاربری بدون آدرس ایمیل مرتبط، پیوند بازنشانی رمز عبور ایمیل ارسال نمی‌شود. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/fa/general.php b/resources/lang/fa/general.php index 45afaf084a..535f5827da 100644 --- a/resources/lang/fa/general.php +++ b/resources/lang/fa/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'تجهیزات جانبی', 'activated' => 'فعال شد', + 'accepted_date' => 'Date Accepted', 'accessory' => 'لوازم جانبی', 'accessory_report' => 'گزارش لوازم جانبی', 'action' => 'اقدام', @@ -27,7 +28,13 @@ return [ 'audit' => 'حسابرسی', 'audit_report' => 'حسابرسی حسابرسی', 'assets' => 'دارایی ها', + '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' => 'اختصاص داده شده به :name', + 'assignee' => 'Assigned to', 'avatar_delete' => 'حذف آواتار', 'avatar_upload' => 'بارگذاری آواتار', 'back' => 'بازگشت', @@ -41,8 +48,9 @@ return [ ', 'bulk_actions' => 'اقدام دسته جمعی', - 'bulk_checkin_delete' => 'موارد اعلام حضور دسته جمعی از کاربران -', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'به ترتیب وضعیت', 'cancel' => 'انصراف', 'categories' => 'دسته‌بندی‌ها', @@ -90,6 +98,7 @@ return [ 'debug_warning_text' => 'این برنامه در حالت تولید با استفاده از اشکال زدایی فعال است. این می تواند اطلاعات حساس را در صورت درخواست شما برای جهان خارج در دسترس قرار دهد. با تنظیم مقداری APP_DEBUG در .env فایل خود را به false غیرفعال کنید.', 'delete' => 'حذف', 'delete_confirm' => 'آیا اطمینان دارید که می خواهید این را حذف نمایید؟', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'حذف شد', 'delete_seats' => 'صندلی ها حذف شده ', @@ -154,6 +163,7 @@ return [ 'filetypes_size_help' => 'حداکثر اندازه مجاز بارگذاری: اندازه است. ', 'image_filetypes_help' => 'نوع فایل های قابل قبول: jpg, webp, png, gif, و svg. حداکثر سایز فایل :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' => 'واردات', 'importing' => 'در حال وارد کردن', 'importing_help' => 'می‌توانید دارایی‌ها، لوازم جانبی، مجوزها، اجزا، مواد مصرفی و کاربران را از طریق فایل CSV وارد کنید.

CSV باید با کاما محدود شود و با سرصفحه‌هایی که در مطابقت دارند قالب‌بندی شود. نمونه CSV در مستندات. @@ -164,6 +174,8 @@ return [ 'asset_maintenances' => 'نگهداشت دارایی', 'item' => 'مورد', 'item_name' => 'نام کالا', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'دسترسی محدود!', 'kits' => 'مقادیر از پیش تعریف شده', 'language' => 'زبان', @@ -244,6 +256,7 @@ return [ ', 'request_canceled' => 'درخواست لغو شد', 'save' => 'ذخیره کردن', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'انتخاب', 'select_all' => 'انتخاب همه', 'search' => 'جستوجو', @@ -268,10 +281,8 @@ return [ 'signed_off_by' => 'امضا شده توسط ', 'skin' => 'پوسته', - 'slack_msg_note' => 'یک پیام ارسال خواهد شد -', - 'slack_test_msg' => 'اوه هی! به نظر می رسد ادغام Slack شما با Snipe-IT کار می کند! -', + '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!', 'some_features_disabled' => 'MODE DEMO: برخی از ویژگی ها برای این نصب غیر فعال هستند.', 'site_name' => 'نام سایت', 'state' => 'وضعیت', @@ -284,7 +295,6 @@ return [ 'sure_to_delete' => 'مطمئنید که میخواهید حذف شود', 'submit' => 'ارسال', 'target' => 'هدف', - 'toggle_navigation' => 'تغییر وضعیت ناوبری', 'time_and_date_display' => 'نمایش زمان و تاریخ', 'total_assets' => 'کل دارایی', 'total_licenses' => 'کل مجوزهای', @@ -467,7 +477,8 @@ return [ ', 'bulk_checkin_success' => 'موارد برای کاربران انتخاب شده بررسی شده است. ', - 'set_to_null' => 'Delete values for this asset|Delete values for all :asset_count assets ', + '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', @@ -477,8 +488,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/fa/help.php b/resources/lang/fa/help.php index 211ab6b12d..ea6b9a86c6 100644 --- a/resources/lang/fa/help.php +++ b/resources/lang/fa/help.php @@ -15,8 +15,7 @@ return [ 'more_info_title' => 'اطلاعات بیشتر', - 'audit_help' => 'با علامت زدن این کادر، سابقه دارایی برای منعکس کردن این مکان جدید ویرایش می شود. بدون علامت گذاشتن آن، به سادگی مکان در گزارش حسابرسی یادداشت می شود.

توجه داشته باشید که این دارایی بررسی شده است، مکان شخص، دارایی یا مکانی که در آن بررسی شده است را تغییر نمی دهد. -', + 'audit_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.', 'assets' => 'دارایی ها مواردی هستند که توسط شماره سریال یا برچسب دارایی دنبال می شوند. آنها تمایل دارند که مقادیر ارزش بیشتری داشته باشند که در آن شناسایی یک مورد خاص موردنیاز باشد.', diff --git a/resources/lang/fa/localizations.php b/resources/lang/fa/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/fa/localizations.php +++ b/resources/lang/fa/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/fa/mail.php b/resources/lang/fa/mail.php index ba6d684658..151d6e94a1 100644 --- a/resources/lang/fa/mail.php +++ b/resources/lang/fa/mail.php @@ -47,6 +47,7 @@ return [ 'login_first_admin' => 'با نصب مجدد Snipe-IT جدید خود به سیستم وارد شوید', 'login' => 'ورود:', 'Low_Inventory_Report' => 'گزارش موجودی کم', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'حداقل QTY', 'name' => 'نام', 'new_item_checked' => 'یک آیتم جدید تحت نام شما چک شده است، جزئیات زیر است.', @@ -78,6 +79,7 @@ return [ 'Accessory_Checkin_Notification' => 'لوازم جانبی بررسی شد', 'Asset_Checkin_Notification' => 'دارایی ثبت شد ', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'مجوز بررسی شد ', 'Expected_Checkin_Report' => 'گزارش بررسی دارایی مورد انتظار @@ -87,4 +89,5 @@ return [ 'Expected_Checkin_Date' => 'دارایی‌ای که برای شما بررسی شده است باید دوباره در تاریخ :date بررسی شود', 'your_assets' => 'دارایی های خود را مشاهده کنید ', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/fa/validation.php b/resources/lang/fa/validation.php index 30f447d956..a1cb78b89c 100644 --- a/resources/lang/fa/validation.php +++ b/resources/lang/fa/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'ویژگی: باید دارای حداقل موارد: min باشد.', ], 'starts_with' => 'ویژگی : باید با یکی از موارد زیر شروع شود: :values.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'not_in' => 'ویژگی انتخاب شده نامعتبر است.', 'numeric' => 'ویژگی باید عدد باشد.', 'present' => 'فیلد attribute باید باشد.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'رمز عبور فعلی شما اشتباه است', 'dumbpwd' => 'این رمز عبور خیلی رایج است', 'statuslabel_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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/fi/admin/accessories/general.php b/resources/lang/fi/admin/accessories/general.php index a5e7bdc7b6..d96405fc6c 100644 --- a/resources/lang/fi/admin/accessories/general.php +++ b/resources/lang/fi/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Oheistarvikkeen päivittäminen', 'use_default_eula' => 'Käytä yleisiä käyttöehtoja.', 'use_default_eula_disabled' => 'Käytä yleisiä käyttöehtoja. Et ole vielä määritellyt yleisiä käyttöehtoja, voit lisätä ne asetuksista.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/fi/admin/accessories/message.php b/resources/lang/fi/admin/accessories/message.php index 539b984b7c..bb315379d6 100644 --- a/resources/lang/fi/admin/accessories/message.php +++ b/resources/lang/fi/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'Oheistarviketta ei luovutettu, yritä uudelleen', 'success' => 'Oheistarvike luovutettiin onnistuneesti.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'Käyttäjä on virheellinen. Yritä uudelleen.' ), diff --git a/resources/lang/fi/admin/asset_maintenances/form.php b/resources/lang/fi/admin/asset_maintenances/form.php index 79c3999c1c..d000ce901d 100644 --- a/resources/lang/fi/admin/asset_maintenances/form.php +++ b/resources/lang/fi/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Huollon tyyppi', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Otsikko', - 'start_date' => 'Aloituspäivä', - 'completion_date' => 'Valmis', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Kustannus', 'is_warranty' => 'Takuun parannus', - 'asset_maintenance_time' => 'Päivää', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Muistiinpanot', - 'update' => 'Päivitä', - 'create' => 'Luo' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/fi/admin/categories/message.php b/resources/lang/fi/admin/categories/message.php index 81f9591d73..39e03f7c24 100644 --- a/resources/lang/fi/admin/categories/message.php +++ b/resources/lang/fi/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Kategoriaa ei päivitetty, yritä uudelleen', - 'success' => 'Kategoria päivitettiin onnistuneesti.' + 'success' => 'Kategoria päivitettiin onnistuneesti.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/fi/admin/components/general.php b/resources/lang/fi/admin/components/general.php index c99efc61eb..e13c4f5153 100644 --- a/resources/lang/fi/admin/components/general.php +++ b/resources/lang/fi/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Jäljellä', 'total' => 'Yhteensä', 'update' => 'Päivitä komponentti', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/fi/admin/components/message.php b/resources/lang/fi/admin/components/message.php index 3eb759fa0c..9795a338cd 100644 --- a/resources/lang/fi/admin/components/message.php +++ b/resources/lang/fi/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponenttia ei luovutettu, yritä uudelleen', 'success' => 'Komponentin luovutus onnistui.', - 'user_does_not_exist' => 'Kyseinen käyttäjä on virheellinen. Yritä uudelleen.' + 'user_does_not_exist' => 'Kyseinen käyttäjä on virheellinen. Yritä uudelleen.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/fi/admin/consumables/message.php b/resources/lang/fi/admin/consumables/message.php index bb69e00a46..fa17aaf179 100644 --- a/resources/lang/fi/admin/consumables/message.php +++ b/resources/lang/fi/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Kulutustarviketta ei luovutettu, yritä uudelleen', 'success' => 'Kulutustarvike luovutettiin.', - 'user_does_not_exist' => 'Kyseinen käyttäjä on virheellinen. Yritä uudelleen.' + 'user_does_not_exist' => 'Kyseinen käyttäjä on virheellinen. Yritä uudelleen.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/fi/admin/custom_fields/general.php b/resources/lang/fi/admin/custom_fields/general.php index 157e253601..fd65775e4e 100644 --- a/resources/lang/fi/admin/custom_fields/general.php +++ b/resources/lang/fi/admin/custom_fields/general.php @@ -2,7 +2,7 @@ return [ 'custom_fields' => 'Mukautetut kentät', - 'manage' => 'Manage', + 'manage' => 'Hallitse', 'field' => 'Kenttä', 'about_fieldsets_title' => 'Tietoja kenttäsarjoista', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.', @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Käytetään malleissa', 'order' => 'Tilata', 'create_fieldset' => 'Uusi kenttäsarja', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Uusi mukautettu kenttä', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/fi/admin/groups/message.php b/resources/lang/fi/admin/groups/message.php index 1e2272b76d..41ba5fb9e7 100644 --- a/resources/lang/fi/admin/groups/message.php +++ b/resources/lang/fi/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Ryhmä on jo olemassa!', - 'group_not_found' => 'Ryhmää [:id] ei löydy.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Nimi on pakollinen', 'success' => array( diff --git a/resources/lang/fi/admin/hardware/form.php b/resources/lang/fi/admin/hardware/form.php index 1b7f3d8565..8bf4c21f3e 100644 --- a/resources/lang/fi/admin/hardware/form.php +++ b/resources/lang/fi/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Vahvista laitteiden massapoisto', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Tarkasta alla olevat massapoistettavat laitteet. Kun nämä laitteet on poistettu, ne voidaan palauttaa, mutta niitä ei enää yhdistetä niihin käyttäjiin, joille ne on tällä hetkellä luovutettuna.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Olet poistamassa :asset_count laitetta.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Massapäivitä laitteita', 'bulk_update_help' => 'Tämän lomakkeen avulla voit päivittää useita laitteita kerralla. Täytä vain ne kentät joita haluat muuttaa. Tyhjäksi jätettyjä kenttiä ei päivitetä. ', 'bulk_update_warn' => 'Olet muokkaamassa yhden laitteen ominaisuuksia.- Olet muokkaamassa :asset_count laitteen ominaisuuksia.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Päivitä vain oletussijainti', 'asset_not_deployable' => 'Laite ei ole käyttöönotettavissa. Laitetta ei voida luovuttaa.', 'asset_deployable' => 'Laite on käyttöönotettavissa. Laite voidaan luovuttaa.', - 'processing_spinner' => 'Käsitellään...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Valinnaiset tiedot', 'order_details' => 'Tilaukseen liityvät tiedot' ]; diff --git a/resources/lang/fi/admin/hardware/general.php b/resources/lang/fi/admin/hardware/general.php index 6180981fdf..f3c419afa8 100644 --- a/resources/lang/fi/admin/hardware/general.php +++ b/resources/lang/fi/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Tämä laite on poistettu.', 'edit' => 'Muokkaa laitetta', 'model_deleted' => 'Laitemalli on poistettu. Voit palauttaa laitteen kun olet ensin palauttanut poistetun laitemallin.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Pyydettävissä', 'requested' => 'Pyydetty', 'not_requestable' => 'Ei pyydettävissä', @@ -21,6 +23,7 @@ return [ 'restore' => 'Palauta laite', 'pending' => 'Odottaa', 'undeployable' => 'Ei käytettävissä', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Näytä laite', 'csv_error' => 'Sinulla on virhe CSV tiedostossasi:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Virheilmoitukset:', 'success_messages' => 'Onnistuneet:', 'alert_details' => 'Tarkempia tietoja on alla.', - 'custom_export' => 'Mukautettu vienti' + 'custom_export' => 'Mukautettu vienti', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/fi/admin/hardware/message.php b/resources/lang/fi/admin/hardware/message.php index 6ecc8bf815..f6eed3175b 100644 --- a/resources/lang/fi/admin/hardware/message.php +++ b/resources/lang/fi/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Laitetta ei palautettu, ole hyvä ja yritä uudelleen', 'success' => 'Laite palautettiin onnistuneesti.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Tiedostosi on tuotu', 'file_delete_success' => 'Tiedosto on poistettu onnistuneesti', 'file_delete_error' => 'Tiedostoa ei voitu poistaa', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/fi/admin/hardware/table.php b/resources/lang/fi/admin/hardware/table.php index f0dd798767..fd4808c024 100644 --- a/resources/lang/fi/admin/hardware/table.php +++ b/resources/lang/fi/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Toiminto', 'checkout_date' => 'Luovutuspäivä', 'checkoutto' => 'Luovutettu', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Nykyinen arvo', 'diff' => 'Erotus', 'dl_csv' => 'Lataa CSV', diff --git a/resources/lang/fi/admin/licenses/general.php b/resources/lang/fi/admin/licenses/general.php index c6ade5fe44..4cda18c8f3 100644 --- a/resources/lang/fi/admin/licenses/general.php +++ b/resources/lang/fi/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Tietoja lisensseistä', - 'about_licenses' => 'Ohjelmistojen seurantaan käytetään lisenssejä. Lisenssejä on rajattu määrä asennettavaksi', + 'about_licenses_title' => 'Tietoja lisensseistä', + 'about_licenses' => 'Ohjelmistojen seurantaan käytetään lisenssejä. Lisenssejä on rajattu määrä asennettavaksi', 'checkin' => 'Palauta lisenssi', 'checkout_history' => 'Luovutushistoria', 'checkout' => 'Luovuta lisenssi', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Ohjelmistolisenssit', 'user' => 'Käyttäjä', 'view' => 'Näytä lisenssi', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/fi/admin/manufacturers/message.php b/resources/lang/fi/admin/manufacturers/message.php index ab14fdaff2..23c1359710 100644 --- a/resources/lang/fi/admin/manufacturers/message.php +++ b/resources/lang/fi/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Valmistajaa ei löydy.', 'assoc_users' => 'Valmistaja on määritetty käyttöön yhdelle tai useammalle mallille joten sitä ei voida poistaa. Poista valmistaja käytöstä kaikilta malleilta ja yritä uudelleen. ', diff --git a/resources/lang/fi/admin/manufacturers/table.php b/resources/lang/fi/admin/manufacturers/table.php index ec3e0b8e0f..cce44f891a 100644 --- a/resources/lang/fi/admin/manufacturers/table.php +++ b/resources/lang/fi/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Tuen sähköposti', 'support_phone' => 'Tuen puhelin', 'support_url' => 'Tuen URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Päivitä valmistaja', 'url' => 'URL', diff --git a/resources/lang/fi/admin/models/general.php b/resources/lang/fi/admin/models/general.php index 3068e68dcd..fd5c212fcd 100644 --- a/resources/lang/fi/admin/models/general.php +++ b/resources/lang/fi/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Tämä malli on poistettu.', 'bulk_delete' => 'Massapoista laitemalleja', 'bulk_delete_help' => 'Käytä alla olevia valintaruutuja vahvistaaksesi laitemallien poistaminen. Laitemalleja, joissa on niihin liittyviä laitteita, ei voida poistaa ennen kuin laitteet on liitetty toiseen malliin.', - 'bulk_delete_warn' => 'Olet poistamassa :model_count laitemallia.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Palauta malli', 'requestable' => 'Käyttäjät voivat pyytää tätä mallia', 'show_mac_address' => 'Näytä MAC-osoitekenttä tämän mallin laitteille', diff --git a/resources/lang/fi/admin/models/message.php b/resources/lang/fi/admin/models/message.php index 4f1d10bbc8..8b894633cd 100644 --- a/resources/lang/fi/admin/models/message.php +++ b/resources/lang/fi/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Malli ei löydy.', + 'no_association' => 'NO MODEL ASSOCIATED.', + 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Mallia ei päivitetty, yritä uudelleen', - 'success' => 'Malli päivitettiin onnistuneesti.' + 'success' => 'Malli päivitettiin onnistuneesti.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Mitään kentistä ei ollut muutettu, joten mitään ei päivitetty.', - 'success' => 'Mallit päivitetty.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Ei malleja valittuna, mitään ei poistettu.', - 'success' => ':success_count malli(a) poistettu!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count malli(a) poistettiin, mutta :fail_count ei voitu poistaa, koska niillä on vielä niihin liittyviä laitteita.' ), diff --git a/resources/lang/fi/admin/settings/general.php b/resources/lang/fi/admin/settings/general.php index 9d13b9ab21..0c221bdd6e 100644 --- a/resources/lang/fi/admin/settings/general.php +++ b/resources/lang/fi/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Mikäli haluat lähettää erilliseen sähköpostiosoitteeseen kopion käyttäjälle lähetettävästä sähköposti-ilmoituksesta palautuksiin/luovutuksiin liittyen, syötä se tähän. Muussa tapauksessa jätä kenttä tyhjäksi.', 'is_ad' => 'Käytössä on Active Directory -palvelin', 'alerts' => 'Hälytykset', - 'alert_title' => 'Päivitä hälytysasetukset', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Lähetä ilmoitukset', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Sähköposti hälytykset käytössä', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Palauta varmuuskopiosta', 'backups_upload' => 'Lataa varmuuskopio', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Viivakoodi asetukset', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Asiakaspuolen TLS varmenne', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP-asetukset', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Syötä toimiva LDAP-käyttäjätunnus ja salasana määrittelemästäsi base DN: stä testataksesi LDAP-kirjautumisen toimivuutta. SINUN TULEE TALLENTAA UUDET LDAP ASETUKSET ENSIN.', '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 Manager', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Näytä kuvia sähköposteissa', 'show_images_in_email_help' => 'Poista tämä valinta, jos Snipe-IT asennus on toteutettu VPN: n avulla tai suljetussa verkossa, koska sähköposteissa käytetyt kuvat eivät voi latautua näkyviin sähköposteissa.', 'site_name' => 'Sivuston nimi', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack-botin nimi', - 'slack_channel' => 'Slack-kanava', - 'slack_endpoint' => 'Slack-yhdyspiste', - 'slack_integration' => 'Slackin asetukset', - 'slack_integration_help' => 'Slack-integraatio on valinnainen, mutta päätepiste ja kanava vaaditaan, jos haluat käyttää sitä. Määrittääksesi Slack-integraation, sinun täytyy ensin luoda saapuva webhook Slack-tilillesi. Klikkaa Testaa Slack Integraatio -painiketta varmistaaksesi, että asetuksesi ovat oikein ennen tallentamista. ', - 'slack_integration_help_button' => 'Kun olet tallentanut tiedot Slackista, testinappi ilmestyy.', - 'slack_test_help' => 'Testaa, onko integraatio Slackiin määritelty oikein. SINUN TULEE TALLENTAA UUDET ASETUKSET ENSIN.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT versio', 'support_footer' => 'Tuki-alatunnisteen linkit ', 'support_footer_help' => 'Määrittele, kuka voi nähdä linkit Snipe-IT tukipalvelun tietoihin ja käyttöohjeeseen', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/fi/admin/settings/message.php b/resources/lang/fi/admin/settings/message.php index 5d518ab4d3..40a8dc3977 100644 --- a/resources/lang/fi/admin/settings/message.php +++ b/resources/lang/fi/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/fi/admin/users/general.php b/resources/lang/fi/admin/users/general.php index f4e0bbe780..7d0d2709d3 100644 --- a/resources/lang/fi/admin/users/general.php +++ b/resources/lang/fi/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Tulosta kaikki luovutetut', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Käyttäjälle :name luovutetut ohjelmistot', 'send_email_help' => 'Käyttäjälle on määritettävä sähköpostiosoite lähettääksesi salasanan sähköpostitse. Salasanat voi lähettää sähköpostilla vain käyttäjän luonnin yhteydessä. Salasanat tallennetaan järjestelmään yksisuuntaisesti tiivistettyinä, eikä niitä voida lukea selväkielisenä tallennuksen jälkeen.', 'view_user' => 'Näytä käyttäjä :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/fi/admin/users/message.php b/resources/lang/fi/admin/users/message.php index 0e4e127964..880bbbf0b0 100644 --- a/resources/lang/fi/admin/users/message.php +++ b/resources/lang/fi/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Olet onnistuneesti hylännyt tämän laitteen.', 'bulk_manager_warn' => 'Käyttäjät on onnistuneesti päivitetty, mutta esimies-merkintää ei tallennettu, koska valitsemasi esimies oli mukana käyttäjäluettelossa, eikä käyttäjä voi olla itsensä esimies. Valitse käyttäjät uudelleen, poislukien esimies.', 'user_exists' => 'Käyttäjä on jo luotu!', - 'user_not_found' => 'Käyttäjää [:id] ei löydy.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Käyttäjätunnus vaaditaan', 'user_password_required' => 'Salasana vaaditaan.', 'insufficient_permissions' => 'Riittämättömät oikeudet.', diff --git a/resources/lang/fi/auth/general.php b/resources/lang/fi/auth/general.php index b7e93590a2..195981d13e 100644 --- a/resources/lang/fi/auth/general.php +++ b/resources/lang/fi/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Muista minut', 'username_help_top' => 'Palauttaaksesi salasanasi sähköpostilla, anna käyttäjätunnuksesi.', 'username_help_bottom' => 'Käyttäjätunnuksesi ja sähköpostiosoitteesi voivat olla samoja, mutta eivät välttämättä. Jos et muista käyttäjätunnustasi, ota yhteyttä järjestelmänvalvojaan.

Käyttäjätunnuksille, joilla ei ole liitettyä sähköpostiosoitetta, ei voida lähettää sähköpostiin salasanan vaihtamislinkkiä. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/fi/general.php b/resources/lang/fi/general.php index ecdded81d5..a18d0b3b72 100644 --- a/resources/lang/fi/general.php +++ b/resources/lang/fi/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Oheistarvikkeet', 'activated' => 'Aktivoitu', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Oheistarvike', 'accessory_report' => 'Oheistarvikeraportti', 'action' => 'Toiminto', @@ -27,7 +28,13 @@ return [ 'audit' => 'Tarkasta', 'audit_report' => 'Tarkastusloki', 'assets' => 'Laitteet', + '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' => 'Luovutettu käyttäjälle :name', + 'assignee' => 'Assigned to', 'avatar_delete' => 'Poista käyttäjäkuva', 'avatar_upload' => 'Lähetä käyttäjäkuva', 'back' => 'Edellinen', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Massamuokkaus', 'bulk_delete' => 'Massapoista', 'bulk_actions' => 'Massatoimintoja', - 'bulk_checkin_delete' => 'Massapalauta laitteita käyttäjiltä', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'tilan mukaan', 'cancel' => 'Peruuta', 'categories' => 'Kategoriat', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Sovellus on käynnissä tuotantotilassa, jossa virheenkorjaus on käytössä. Tämä voi paljastaa arkaluonteisia tietoja, jos sovellus avoinna internettiin. Poista virheenkorjaus käytöstä asettamalla APP_DEBUG -arvoksi false .env -tiedostoosi.', 'delete' => 'Poista', 'delete_confirm' => 'Oletko varma että haluat poistaa :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Poistettu', 'delete_seats' => 'Poistettu käytöstä', 'deletion_failed' => 'Poisto epäonnistui', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'Hyväksytty tiedostotyyppi on :types. Suurin sallittu tiedostokoko on :size. Hyväksytyt tiedostotyypit ovat :types. Suurin sallittu tiedostokoko on :size.', 'filetypes_size_help' => 'Suurin sallittu tiedostokoko on :size.', 'image_filetypes_help' => 'Hyväksytyt tiedostotyyppejä ovat jpg, png, gif ja svg. Suurin sallittu lähetyskoko on :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' => 'Tuo tiedot', 'importing' => 'Tuonti', 'importing_help' => 'Voit tuoda laitteita, oheistarvikkeita, lisenssejä, komponentteja, kulutustarvikkeita ja käyttäjiä CSV-tiedoston avulla.

CSV tulisi olla pilkulla rajattu ja sisältää otsikot, jotka vastaavat CSV-otsikoita dokumentaatiossa.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Laitteiden huollot', 'item' => 'Nimike', 'item_name' => 'Kohteen nimi', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Riittämättömät käyttöoikeudet!', 'kits' => 'Sarjat', 'language' => 'Kieli', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Pyydetyt laitteet', 'request_canceled' => 'Pyyntö peruutettu', 'save' => 'Tallenna', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Valitse', 'select_all' => 'Valitse kaikki', 'search' => 'Etsi', @@ -240,8 +254,8 @@ return [ 'signature' => 'Allekirjoitus', 'signed_off_by' => 'Luovuttanut', 'skin' => 'Ulkoasu', - 'slack_msg_note' => 'Slack viesti lähetetään', - 'slack_test_msg' => 'Jestas! Näyttää siltä, että Slack integrointi Snipe-IT. n kanssa toimii!', + '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!', 'some_features_disabled' => 'DEMO-TILA: Jotkin ominaisuudet eivät ole käytössä tässä asennuksessa.', 'site_name' => 'Sivuston nimi', 'state' => 'Maakunta', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Haluatko varmasti poistaa', 'submit' => 'Lähetä', 'target' => 'Kohde', - 'toggle_navigation' => 'Näytä/piilota navigointi', 'time_and_date_display' => 'Ajan ja päivämäärän näyttö', 'total_assets' => 'laitetta', 'total_licenses' => 'lisenssejä', @@ -375,7 +388,8 @@ return [ 'bulk_soft_delete' =>'Piilota myös nämä käyttäjät. Heidän laitehistoria säilyy ennallaan ellet/kunnes puhdistat poistetut tietueet Admin Asetuksista.', 'bulk_checkin_delete_success' => 'Valitut käyttäjät on poistettu ja heidän kohteet on palautettu.', 'bulk_checkin_success' => 'Valittujen käyttäjien laitteet on palautettu.', - 'set_to_null' => 'Poista tämän laitteen arvot|Poista arvot kaikille :asset_count laitteille ', + 'set_to_null' => 'Poista tämän laitteen arvot|Poista arvot kaikille :asset_count laitteille ', + '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 - ostopäivää ei annettu', 'assets_by_status' => 'Laitteet tilan mukaan', 'assets_by_status_type' => 'Laitteet tilan tyypin mukaan', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Aloituspäivä', 'end_date' => 'Päättymispäivä', 'alt_uploaded_image_thumbnail' => 'Ladattu pikkukuva', - 'placeholder_kit' => 'Valitse sarja' + 'placeholder_kit' => 'Valitse sarja', + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/fi/help.php b/resources/lang/fi/help.php index a96523e577..4f0c7210e7 100644 --- a/resources/lang/fi/help.php +++ b/resources/lang/fi/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Lisätietoa', - 'audit_help' => 'Tämän valitseminen muuttaa laitetiedot vastaamaan uutta sijaintia. Jos sitä ei ole valittu, sijainti kirjataan vain lokiin.

Huomaa, että jos laite on jo luovutettuna, tämä ei muuta sen henkilön, tai laitteen sijaintia mihin se on luovutettuna.', + 'audit_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.', 'assets' => 'Laitteet ovat nimmeitä joita seurataan sarjanumeron tai laitetunnisteen avulla. Laitteiksi määritellään yleensä arvokkaampaa omaisuutta, joiden tunnistaminen yksilöllisesti on tärkeää.', diff --git a/resources/lang/fi/localizations.php b/resources/lang/fi/localizations.php index eee5a3b4c2..d0c0c65626 100644 --- a/resources/lang/fi/localizations.php +++ b/resources/lang/fi/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Skotlanti', 'SB'=>'Salomonsaaret', 'SC'=>'Seychellit', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Ruotsi', 'SG'=>'Singapore', diff --git a/resources/lang/fi/mail.php b/resources/lang/fi/mail.php index 96f8f15a46..68432c6768 100644 --- a/resources/lang/fi/mail.php +++ b/resources/lang/fi/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Kirjaudu sisään uuteen Snipe-IT asennukseen käyttäen alla olevia tunnistetietoja:', 'login' => 'Kirjaudu sisään:', 'Low_Inventory_Report' => 'Alhainen määrä raportti', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Minimi määrä', 'name' => 'Nimi', 'new_item_checked' => 'Uusi nimike on luovutettu sinulle, yksityiskohdat ovat alla.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Snipe-IT - kirjautumistietosi', 'Accessory_Checkin_Notification' => 'Oheistarvike palautettu', 'Asset_Checkin_Notification' => 'Laite palautettu', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'Lisenssi palautettu', 'Expected_Checkin_Report' => 'Odotettujen palautuspäivien raportti', 'Expected_Checkin_Notification' => 'Muistutus: :name palautuspäivä lähestyy', 'Expected_Checkin_Date' => 'Sinulle luovutettu laite on määrä palauttaa takaisin :date', 'your_assets' => 'Omat laitteesi', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/fi/validation.php b/resources/lang/fi/validation.php index fe5ecc2b27..62abf3228c 100644 --- a/resources/lang/fi/validation.php +++ b/resources/lang/fi/validation.php @@ -67,6 +67,8 @@ return [ 'array' => ':attribute on oltava vähintään :min nimikettä.', ], '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' => 'Valittu :attribute on virheellinen.', 'numeric' => ':attribute tulee olla numero.', 'present' => ':attribute kentän on oltava määritettynä.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Nykyinen salasanasi on virheellinen', 'dumbpwd' => 'Salasana on liian yleinen.', 'statuslabel_type' => 'Sinun on valittava kelvollinen tilamerkintätyyppi', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/fil/admin/accessories/general.php b/resources/lang/fil/admin/accessories/general.php index 7c353d3629..bae609b721 100644 --- a/resources/lang/fil/admin/accessories/general.php +++ b/resources/lang/fil/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'I-update ang Aksesorya', 'use_default_eula' => 'Sa halip ay gamitin ang ang pangunahing default ng EULA.', 'use_default_eula_disabled' => 'Sa halip ay gumamit ng pangunahing default na EULA. Walang pangunahing default na EULA na nai-set. Paki-dagdag ng isa sa mga setting.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/fil/admin/accessories/message.php b/resources/lang/fil/admin/accessories/message.php index 4c25713a2f..3ebe9c58eb 100644 --- a/resources/lang/fil/admin/accessories/message.php +++ b/resources/lang/fil/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/fil/admin/asset_maintenances/form.php b/resources/lang/fil/admin/asset_maintenances/form.php index c800b1753b..1f62cb2d14 100644 --- a/resources/lang/fil/admin/asset_maintenances/form.php +++ b/resources/lang/fil/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Ang Tipo ng Pagpapanatili', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Ang Pamagat', - 'start_date' => 'Nagsimula na', - 'completion_date' => 'Nakompleto na', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Gastos', 'is_warranty' => 'Ang Pagpapabuti ng Warantiya', - 'asset_maintenance_time' => 'Mga Araw', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Mga Palatandaan', - 'update' => 'I-update', - 'create' => 'Magsagawa' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/fil/admin/categories/message.php b/resources/lang/fil/admin/categories/message.php index 88f8534c82..d4115ac636 100644 --- a/resources/lang/fil/admin/categories/message.php +++ b/resources/lang/fil/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Hindi na-update ang kategorya, mangyaring subukang muli', - 'success' => 'Matagumpay na nai-update ang kategorya.' + 'success' => 'Matagumpay na nai-update ang kategorya.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/fil/admin/components/general.php b/resources/lang/fil/admin/components/general.php index b373aa38b5..528316539c 100644 --- a/resources/lang/fil/admin/components/general.php +++ b/resources/lang/fil/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Ang Natitira', 'total' => 'Ang Kabuuan', 'update' => 'I-update ang Komponent', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/fil/admin/components/message.php b/resources/lang/fil/admin/components/message.php index 1d18089b96..73549b80e7 100644 --- a/resources/lang/fil/admin/components/message.php +++ b/resources/lang/fil/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Ang komponent ay hindi nai-check out, mangyaring subukang muli', 'success' => 'Ang komponent ay matagukpay nang nai-check out.', - 'user_does_not_exist' => 'Ang user na iyon ay hindi balido. Mangyaring subukang muli.' + 'user_does_not_exist' => 'Ang user na iyon ay hindi balido. Mangyaring subukang muli.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/fil/admin/consumables/message.php b/resources/lang/fil/admin/consumables/message.php index 6bfce0c757..21c2ff52ef 100644 --- a/resources/lang/fil/admin/consumables/message.php +++ b/resources/lang/fil/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Ang consumable ay hindi nai-check out, mangyaring subukang muli', 'success' => 'Ang consumable ay matagumpay na nai-check out.', - 'user_does_not_exist' => 'Ang user na iyon ay hindi balido. Mangyaring subukang muli.' + 'user_does_not_exist' => 'Ang user na iyon ay hindi balido. Mangyaring subukang muli.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/fil/admin/custom_fields/general.php b/resources/lang/fil/admin/custom_fields/general.php index 8a4e21ef83..3d7710cb7f 100644 --- a/resources/lang/fil/admin/custom_fields/general.php +++ b/resources/lang/fil/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Ginagamit ng mga Modelo', 'order' => 'Ang Kaayusan', 'create_fieldset' => 'Ang Bagong Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Ang Bagong Custom Field', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/fil/admin/groups/message.php b/resources/lang/fil/admin/groups/message.php index 8ccbe709c0..9d0826c3ad 100644 --- a/resources/lang/fil/admin/groups/message.php +++ b/resources/lang/fil/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Ang grupo ay umiiral na!', - 'group_not_found' => 'Ang grupo [:id] ay hindi umiiral.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Ang pangalan ng field ay kinakailangan', 'success' => array( diff --git a/resources/lang/fil/admin/hardware/form.php b/resources/lang/fil/admin/hardware/form.php index d4c7835f0f..e12062e5e2 100644 --- a/resources/lang/fil/admin/hardware/form.php +++ b/resources/lang/fil/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'I-kumperma ang Maramihang Pagdelete ng mga Assets', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Surrin ang mga asset para sa maramihing pagdelete sa ibaba. Kapag nai-delete na, ang mga asset na ito ay pwedeng maibalik sa dati, pero hindi na ito maiugnay sa kahit sinong user na nakatalaga nito.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Ikaw ay mag-delete ng :asset_count na mga asset.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Ang Maramihang Asset na Nai-update', 'bulk_update_help' => 'Ang form na ito ay nagbibigay sa iyo ng pahintulot para mag-update ng maramihang asset nang sabay-sabay. Lagyan lamang ang mga field na gusto mong baguhin. Anumang mga field na blangko ay mananatiling walang pagbabago. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/fil/admin/hardware/general.php b/resources/lang/fil/admin/hardware/general.php index f9b84a1924..f1b1a6fe0a 100644 --- a/resources/lang/fil/admin/hardware/general.php +++ b/resources/lang/fil/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'I-edit ang Asset', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Pwedeng Ma-rekwest', 'requested' => 'Ni-rekwest', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Ibalik sa dati ang Asset', 'pending' => 'Hindi pa nasimulan', 'undeployable' => 'Hindi pwedeng i-deploy', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Tingnan ang Asset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/fil/admin/hardware/message.php b/resources/lang/fil/admin/hardware/message.php index 432775e172..ebd3f2e700 100644 --- a/resources/lang/fil/admin/hardware/message.php +++ b/resources/lang/fil/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Ang asset ay hindi naibalik sa dati, mangyaring subukang muli', 'success' => 'Ang asset ay matagumpay nang naibalik sa dati.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Ang iyong file ay na-import na', 'file_delete_success' => 'Ang iyong file ay matagumpay nang nai-upload', 'file_delete_error' => 'Ang file ay hindi mai-delete', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/fil/admin/hardware/table.php b/resources/lang/fil/admin/hardware/table.php index a9ca24bb6a..8a35fdb77c 100644 --- a/resources/lang/fil/admin/hardware/table.php +++ b/resources/lang/fil/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Papasok/Palabas', 'checkout_date' => 'Ang Petsa ng Pagcheck-out', 'checkoutto' => 'Nai-check Out', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Ang Diff', 'dl_csv' => 'I-download ang CSV', diff --git a/resources/lang/fil/admin/licenses/general.php b/resources/lang/fil/admin/licenses/general.php index 866da0e8cd..ec321d5833 100644 --- a/resources/lang/fil/admin/licenses/general.php +++ b/resources/lang/fil/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Ang Tungkol sa mga Lisensya', - 'about_licenses' => 'Ang mga lisensya ay ay ginagamit para subaybayan ang software. Mayrron itong tuloy na mga numero ng seats na pwedeng i-check out sa mga indibidwal', + 'about_licenses_title' => 'Ang Tungkol sa mga Lisensya', + 'about_licenses' => 'Ang mga lisensya ay ay ginagamit para subaybayan ang software. Mayrron itong tuloy na mga numero ng seats na pwedeng i-check out sa mga indibidwal', 'checkin' => 'I-checkin ang Lisensya ng Seat', 'checkout_history' => 'I-checkout ang Kasaysayan', 'checkout' => 'I-checkout ang Lisensya ng Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Ang mga Lisenysa ng Software', 'user' => 'Ang gumagamit', 'view' => 'Tingnan ang Lisensya', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/fil/admin/manufacturers/message.php b/resources/lang/fil/admin/manufacturers/message.php index 4be4d7ae1e..f26b01f602 100644 --- a/resources/lang/fil/admin/manufacturers/message.php +++ b/resources/lang/fil/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Ang Tagapagsagawa ay hindi umiiral.', 'assoc_users' => 'Ang tagapagsagawa ay kasalukuyang naiugnay sa hindi bumaba sa isang modelo at hindi maaaring mai-delete. Mangyaring i-update ang iyong mga modelo upang hindi na mag-reperens sa tagapagsagawang ito at paki-subokang muli. ', diff --git a/resources/lang/fil/admin/manufacturers/table.php b/resources/lang/fil/admin/manufacturers/table.php index 9ab1201c1a..d99a786e34 100644 --- a/resources/lang/fil/admin/manufacturers/table.php +++ b/resources/lang/fil/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Ang Suportang Email', 'support_phone' => 'Ang Suporta sa Telepono', 'support_url' => 'Ang Suportang URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'I-update ang Tagapagsagawa', 'url' => 'Ang URL', diff --git a/resources/lang/fil/admin/models/general.php b/resources/lang/fil/admin/models/general.php index d511ca8ee5..ee943e0d60 100644 --- a/resources/lang/fil/admin/models/general.php +++ b/resources/lang/fil/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Ang Maramihang Pag-delete sa mga Modelo ng Asset', 'bulk_delete_help' => 'Gamitin ang mga checkboxes sa ibaba para i-komperma ang pag-delete sa mga napiling mga modelo ng asset. Ang mga modelo ng asset na mayroong mga asset na nai-ugnay sa mga ito ay hindi pwedeng i-delete hanggang sa ang lahat ng mga asset ay nai-ugnay sa ibat-ibang modelo.', - 'bulk_delete_warn' => 'Ikaw ay mag-delete ng :model_count mga modelo ng asset.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Ibalik sa dati ang Modelo', 'requestable' => 'Ang mga gumagamit ay pwedeng mag-rekwest ng modelong ito', 'show_mac_address' => 'Ipakita ang field MAC address sa mga asset ng modelong ito', diff --git a/resources/lang/fil/admin/models/message.php b/resources/lang/fil/admin/models/message.php index b5022bffde..5ec25d2566 100644 --- a/resources/lang/fil/admin/models/message.php +++ b/resources/lang/fil/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Ang modelo ay hindi umiiral.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Ang modelo ay hindi nai-update, mangyaring subukang muli', - 'success' => 'Ang modelo ay matagumpay na nai-update.' + 'success' => 'Ang modelo ay matagumpay na nai-update.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Walang nabagong mga field, kaya walang nai-update.', - 'success' => 'Ang mga modelo ay naiupdate na.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Walang napiling mga model, kaya walang nai-delete.', - 'success' => ':success_count model(s) na-delete na!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count ang mga modelo ay na-delete na, gayunpaman ::success_count ang mga modelo ay hindi mai-delete dahil sa mayron pa silang asset na naiuugnay sa kanila.' ), diff --git a/resources/lang/fil/admin/settings/general.php b/resources/lang/fil/admin/settings/general.php index 2ab5d58fb2..f91d072c89 100644 --- a/resources/lang/fil/admin/settings/general.php +++ b/resources/lang/fil/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'Ito ay isang server ng Aktibong Direktorya', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Magpadala ng mga alert sa', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Ang Email Alerts ay Pinagana', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Ang mga Setting sa Barcode', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Ang mga setting ng LDAP', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Mag-enter ng balidong LDAP username at password mula sa binatayang DN na iyong ibinatay sa itaas upang subukan kung ang iyong LDAP login ay maayos na nai-configure. DAPAT MO MUNANG I-SAVE ANG IYONG UPDATED NA MGA SETTING NG LDAP.', '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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Ang Pangalan ng Site', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Ang Slack Botname', - 'slack_channel' => 'Ang Slack Channel', - 'slack_endpoint' => 'Ang Slack Endpoint', - 'slack_integration' => 'Ang mga Setting ng Slack', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Ang bersyon ng Snipe-IT', 'support_footer' => 'Sumusuporta ng mga Link ng Footer ', 'support_footer_help' => 'I-specify kung sino ang nakakakita ng mga link sa impormasyon ng Snipe-IT Support at ang mga User Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/fil/admin/settings/message.php b/resources/lang/fil/admin/settings/message.php index 02d2db0035..8854d020fe 100644 --- a/resources/lang/fil/admin/settings/message.php +++ b/resources/lang/fil/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/fil/admin/users/general.php b/resources/lang/fil/admin/users/general.php index 4299d9f85c..916c934f87 100644 --- a/resources/lang/fil/admin/users/general.php +++ b/resources/lang/fil/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'I-print ang Lahat ng Nakatalaga', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Ang Software ay Nai-check out sa :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Tingnan ang User :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/fil/admin/users/message.php b/resources/lang/fil/admin/users/message.php index d9a70cccc6..313add3f01 100644 --- a/resources/lang/fil/admin/users/message.php +++ b/resources/lang/fil/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Matagumpay mong hindi tinaggap ang asset na ito.', 'bulk_manager_warn' => 'Ang iyong mga user ay matagumpay nang nai-update, subalit ang iyong manager entry ay hindi nai-save dahil ang manager na iyong pinili ay kabilang sa listahan ng user na kailangang i-edit, at ang mga user ay maaaring wala sa sarili nilang pamamahala. Mangyaring pumiling muli ng iyong user, hindi kasama ang manager.', 'user_exists' => 'Ang user ay umiiral na!', - 'user_not_found' => 'Ang User [:id] hindi umiiral.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Ang field ng login ay kinakailangan', 'user_password_required' => 'Ang password ay kinakailangan.', 'insufficient_permissions' => 'Hindi sapat na mga pahintulot.', diff --git a/resources/lang/fil/auth/general.php b/resources/lang/fil/auth/general.php index a2fe73d79c..51a3443326 100644 --- a/resources/lang/fil/auth/general.php +++ b/resources/lang/fil/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Tandaan ako', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/fil/general.php b/resources/lang/fil/general.php index 45fa466fdf..b4c3403fc2 100644 --- a/resources/lang/fil/general.php +++ b/resources/lang/fil/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Mga Aksesorya', 'activated' => 'Pinagana', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Ang Aksesorya', 'accessory_report' => 'Ang Ulat sa Aksesorya', 'action' => 'Aksyon', @@ -27,7 +28,13 @@ return [ 'audit' => 'Ang Audit', 'audit_report' => 'Ang Log ng Audit', 'assets' => 'Ang mga Assets', + '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', 'avatar_delete' => 'I-delete ang Avatar', 'avatar_upload' => 'I-upload ang Avatar', 'back' => 'Bumalik', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'I-kansela', 'categories' => 'Mga kategorya', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Ang applilasyon na ito ay tumatakbo sa produksyon na may pagpapagana sa pag-debug. ito ay ma-expose sa sensitibong datus kapag ang iyong aplikasyon ay madaling ma-akses sa labas ng mundo. Huwag paganahin ang debug mode sa pamamagitan pag-set sa APP_DEBUG balyu ng iyong .env file sa false.', 'delete' => 'I-delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Nai-delete na', 'delete_seats' => 'Ang Nai-delete na mga Seats', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'I-import', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Ang mga Pagpapanatili sa Asset', 'item' => 'Aytem', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Hindi sapat na mha pahintulot!', 'kits' => 'Predefined Kits', 'language' => 'Lengguwahe', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Ang mga Rekwest ay Nakansela', 'save' => 'I-save', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Pumili', 'select_all' => 'Select All', 'search' => 'Maghanap', @@ -240,8 +254,8 @@ return [ 'signature' => 'Ang Lagda', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Ang iilang mga katangian ay na-disable para sa pag-install na ito.', 'site_name' => 'Ang Pangalan ng Site', 'state' => 'Ang Estado', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Sigurado kaba na gusto mong i-delete', 'submit' => 'I-sumita', 'target' => 'Ang Punterya', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Ang Pagpapakita sa Oras at Petsa', 'total_assets' => 'ang kabuuang mga asset', 'total_licenses' => 'ang kabuuang mga lisensya', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/fil/help.php b/resources/lang/fil/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/fil/help.php +++ b/resources/lang/fil/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/fil/localizations.php b/resources/lang/fil/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/fil/localizations.php +++ b/resources/lang/fil/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/fil/mail.php b/resources/lang/fil/mail.php index 15c5e3500e..288d3f61eb 100644 --- a/resources/lang/fil/mail.php +++ b/resources/lang/fil/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Mag-login sa iyong bagong pag-install ng Snipe-IT gamit ang mga kredensyal sa ibaba:', 'login' => 'Mag-login:', 'Low_Inventory_Report' => 'Ang Mababang Report ng Imbentaryo', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Ang Min QTY', 'name' => 'Ang Pangalan', 'new_item_checked' => 'Ang bagong aytem na nai-check out sa ilalim ng iyong pangalan, ang mga detalye ay nasa ibaba.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Ang iyong mga Kredensyal sa Snipe-IT', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/fil/validation.php b/resources/lang/fil/validation.php index 34fd95e35f..68d522a355 100644 --- a/resources/lang/fil/validation.php +++ b/resources/lang/fil/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Ang :katangian ay dapat na magkaroon ng hindi bumaba sa :min na mga aytem.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Ang iyong kasalukuyang password ay hindi wasto', 'dumbpwd' => 'Ang password ay sobrang pangkaraniwan.', 'statuslabel_type' => 'Kinakailangang pumili ng balidong uri ng label ng estado', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/fr/admin/accessories/general.php b/resources/lang/fr/admin/accessories/general.php index 5760313657..897c2d6c81 100644 --- a/resources/lang/fr/admin/accessories/general.php +++ b/resources/lang/fr/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Mise à jour d\'accessoires', 'use_default_eula' => 'Utiliser la license primaire par défaut à la place.', 'use_default_eula_disabled' => 'Utilisez la license par défaut à la place. Aucune licence d\'utilisation par défaut trouvée. Ajoutez-en une dans la section "Préférences".', + 'clone' => 'Dupliquer l\'accessoire', + 'delete_disabled' => 'Cet accessoire ne peut pas encore être supprimé car certaines pièces sont encore attribuées.', ); diff --git a/resources/lang/fr/admin/accessories/message.php b/resources/lang/fr/admin/accessories/message.php index 7091783f3c..ef09bceab7 100644 --- a/resources/lang/fr/admin/accessories/message.php +++ b/resources/lang/fr/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/fr/admin/asset_maintenances/form.php b/resources/lang/fr/admin/asset_maintenances/form.php index 374ae092e9..7bcd42751f 100644 --- a/resources/lang/fr/admin/asset_maintenances/form.php +++ b/resources/lang/fr/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Type d\'entretien d\'actif', + 'asset_maintenance_type' => 'Type de maintenance de la ressource', 'title' => 'Titre', 'start_date' => 'Date de début', 'completion_date' => 'Date d\'achèvement', 'cost' => 'Coût', 'is_warranty' => 'Garantie sur amélioration', - 'asset_maintenance_time' => 'Durée de l\'entretien (en jours)', + 'asset_maintenance_time' => 'Durée de la maintenance de la ressource (en jours)', 'notes' => 'Notes', - 'update' => 'Modification des types entretiens d\'actifs', - 'create' => 'Création de type d\'entretien d\'actif' + 'update' => 'Mettre à jour maintenance de la ressource', + 'create' => 'Création de maintenance de la ressource' ]; diff --git a/resources/lang/fr/admin/categories/general.php b/resources/lang/fr/admin/categories/general.php index 08e61e743c..0a094d0bb9 100644 --- a/resources/lang/fr/admin/categories/general.php +++ b/resources/lang/fr/admin/categories/general.php @@ -1,21 +1,21 @@ 'Catégories', - 'category_name' => 'Catégorie', - 'checkin_email' => 'Envoyer un courriel à l\'utilisateur lors de l\'association/dissociation.', - 'checkin_email_notification' => 'Un courriel sera envoyé à l\'utilisateur lors de l\'association/dissociation.', + 'asset_categories' => 'Catégories d\'actifs', + 'category_name' => 'Nom de la catégorie', + 'checkin_email' => 'Envoyer un courriel à l\'utilisateur·trice lors de l\'association/dissociation.', + 'checkin_email_notification' => 'Un courriel sera envoyé à l\'utilisateur·trice lors de l\'association/dissociation.', 'clone' => 'Cloner la catégorie', - 'create' => 'Créer Catégorie', + 'create' => 'Créer une catégorie', 'edit' => 'Modifier la catégorie', 'eula_text' => 'Catégorie de licence d\'utilisation', - 'eula_text_help' => 'Ce champ vous permet de configurer vos licences d\'utilisation pour chaque type d\'items. Si vous avez seulement une licence pour tout vos items, vous pouvez cochez la case ci-dessous pour utiliser celle par défaut.', + 'eula_text_help' => 'Ce champ vous permet de configurer vos licences d\'utilisation pour chaque type d\'actif. Si vous avez une seule licence pour tous vos actifs, vous pouvez cocher la case ci-dessous pour utiliser celle par défaut.', 'name' => 'Nom de la catégorie', - 'require_acceptance' => 'L\'utilisateur doit confirmer qu\'il accepte les actifs de cette catégorie.', - 'required_acceptance' => 'L\'utilisateur recevra un courriel avec un lien de confirmation pour accepter ce produit.', - 'required_eula' => 'Cet utilisateur recevra par courriel une copie de la licence d\'utilisation', + 'require_acceptance' => 'L\'utilisateur·trice doit confirmer qu\'iel accepte les actifs de cette catégorie.', + 'required_acceptance' => 'L\'utilisateur·trice recevra un courriel avec un lien d\'acceptation de cet article.', + 'required_eula' => 'L\'utilisateur·trice recevra par courriel une copie de la licence d\'utilisation', 'no_default_eula' => 'Il n\'y a pas de licence d\'utilisation par défaut. Veuillez en ajouter une dans Préférences.', - 'update' => 'Actualiser Catégorie', + 'update' => 'Mettre à jour la catégorie', 'use_default_eula' => 'Utiliser la license primaire par défaut à la place.', 'use_default_eula_disabled' => 'Utilisez la licence par défaut à la place. Aucune licence d\'utilisation par défaut trouvée. Ajoutez-en une dans la section "Préférences".', 'use_default_eula_column' => 'Utilisez les CGU par défaut', diff --git a/resources/lang/fr/admin/categories/message.php b/resources/lang/fr/admin/categories/message.php index f3a543a181..0e281f9c5e 100644 --- a/resources/lang/fr/admin/categories/message.php +++ b/resources/lang/fr/admin/categories/message.php @@ -7,19 +7,20 @@ return array( 'assoc_items' => 'Cette catégorie est actuellement associée à au moins un :asset_type et ne peut pas être supprimée. Merci de mettre à jour les :asset_type afin de ne plus référencer cette catégorie et essayez à nouveau. ', 'create' => array( - 'error' => 'Cette catégorie n\'a pas été créée, veuillez réessayer.', - 'success' => 'Catégorie créée correctement.' + 'error' => 'Cette catégorie n\'a pas été créée, merci de réessayer.', + 'success' => 'Catégorie créée avec succès.' ), 'update' => array( - 'error' => 'Catégorie n\'a pas été actualisée, veuillez réessayer', - 'success' => 'Catégorie actualisée correctement.' + 'error' => 'La catégorie n\'a pas été mise à jour, merci de réessayer', + 'success' => 'Catégorie mise à jour avec succès.', + 'cannot_change_category_type' => 'Vous ne pouvez pas modifier le type de catégorie une fois qu\'il a été créé', ), 'delete' => array( - 'confirm' => 'Etes-vous sûr de vouloir supprimer cette catégorie?', - 'error' => 'Il y a eu un problème en supprimant cette catégorie. Veuillez réessayer.', - 'success' => 'Cette catégorie a été supprimée correctement.' + 'confirm' => 'Êtes-vous sûr·e de vouloir supprimer cette catégorie ?', + 'error' => 'Il y a eu un problème lors de la suppression de cette catégorie. Merci de réessayer.', + 'success' => 'Catégorie supprimée avec succès.' ) ); diff --git a/resources/lang/fr/admin/categories/table.php b/resources/lang/fr/admin/categories/table.php index 1cb48579e4..5e658d3783 100644 --- a/resources/lang/fr/admin/categories/table.php +++ b/resources/lang/fr/admin/categories/table.php @@ -1,10 +1,10 @@ 'Licence d\'utilisation', + 'eula_text' => 'CLUF', 'id' => 'ID', 'parent' => 'Parent', 'require_acceptance' => 'Acceptation', - 'title' => 'Nom de Catégorie', + 'title' => 'Nom de la catégorie d\'actif', ); diff --git a/resources/lang/fr/admin/components/general.php b/resources/lang/fr/admin/components/general.php index dcea9b0d51..030dff22f4 100644 --- a/resources/lang/fr/admin/components/general.php +++ b/resources/lang/fr/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Restant', 'total' => 'Total', 'update' => 'Mettre à jour un composant', + 'checkin_limit' => 'Le montant enregistré doit être égal ou inférieur à :assigned_qty' ); diff --git a/resources/lang/fr/admin/components/message.php b/resources/lang/fr/admin/components/message.php index 650626e937..973fbdcda6 100644 --- a/resources/lang/fr/admin/components/message.php +++ b/resources/lang/fr/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Le composant n\'a pas été libéré, merci d\'essayer à nouveau', 'success' => 'Le composant a bien été libéré.', - 'user_does_not_exist' => 'Cet utilisateur n\'est pas valide. Merci d\'essayer à nouveau.' + 'user_does_not_exist' => 'Cet utilisateur n\'est pas valide. Merci d\'essayer à nouveau.', + 'unavailable' => 'Pas assez de composants restants : :remaining restant, :requested requis ', ), 'checkin' => array( diff --git a/resources/lang/fr/admin/consumables/general.php b/resources/lang/fr/admin/consumables/general.php index 5f53f1e473..a088799a9e 100644 --- a/resources/lang/fr/admin/consumables/general.php +++ b/resources/lang/fr/admin/consumables/general.php @@ -1,11 +1,11 @@ 'Attribuer une fourniture à un utilisateur', - 'consumable_name' => 'Nom de la fourniture', - 'create' => 'Créer une fourniture', + 'checkout' => 'Attribuer un consommable à un·e utilisateur·trice', + 'consumable_name' => 'Nom du consommable ', + 'create' => 'Créer un consommable', 'item_no' => 'Num. d\'élément', - 'remaining' => 'Quantité restante', + 'remaining' => 'Restant', 'total' => 'Total', - 'update' => 'Actualiser la fourniture', + 'update' => 'Mettre à jour le consommable', ); diff --git a/resources/lang/fr/admin/consumables/message.php b/resources/lang/fr/admin/consumables/message.php index eb9412ff7f..2de8d5df22 100644 --- a/resources/lang/fr/admin/consumables/message.php +++ b/resources/lang/fr/admin/consumables/message.php @@ -2,34 +2,35 @@ return array( - 'does_not_exist' => 'Cette fourniture n\'existe pas.', + 'does_not_exist' => 'Ce consommable n\'existe pas.', 'create' => array( - 'error' => 'La fourniture n\'a pas été créé, veuillez réessayer.', - 'success' => 'La fourniture a été créé correctement.' + 'error' => 'Le consommable n\'a pas été créé, merci de réessayer.', + 'success' => 'Le consommable a été créé correctement.' ), 'update' => array( - 'error' => 'La fourniture n\'a pas été actualisé, veuillez réessayer', - 'success' => 'La fourniture a été actualisé correctement.' + 'error' => 'Le consommable n\'a pas été mis-à-jour, merci de réessayer', + 'success' => 'Le consommable a été mis-à-jour.' ), 'delete' => array( - 'confirm' => 'Êtes-vous certain de vouloir détruire cette fourniture ?', - 'error' => 'Il y a eu un problème en détruisant la fourniture. Veuillez réessayer.', - 'success' => 'La fourniture a été détruite correctement.' + 'confirm' => 'Êtes-vous certain·e de vouloir supprimer ce consommable ?', + 'error' => 'Il y a eu un problème lors de la suppression du consommable. Merci de réessayer.', + 'success' => 'Le consommable a été supprimé correctement.' ), 'checkout' => array( - 'error' => 'La fourniture n\'a pas été attribué correctement, veuillez réessayer', - 'success' => 'La fourniture a été attribué correctement.', - 'user_does_not_exist' => 'Cet utilisateur est invalide. Veuillez réessayer.' + 'error' => 'Le consommable n\'a pas été attribué correctement, merci de réessayer', + 'success' => 'Le consommable a été attribué correctement.', + 'user_does_not_exist' => 'Cet·te utilisateur·trice est invalide. Merci de réessayer.', + 'unavailable' => 'Il n\'y a pas assez de consommables pour cette attribution. Veuillez vérifier la quantité restante. ', ), 'checkin' => array( - 'error' => 'La fourniture n\'a pas été dissocié correctement, veuillez réessayer', - 'success' => 'La fourniture à été dissocié correctement.', - 'user_does_not_exist' => 'Cet utilisateur est invalide. Veuillez réessayer.' + 'error' => 'Le consommable n\'a pas été dissocié correctement, merci de réessayer', + 'success' => 'Le consommable a été dissocié correctement.', + 'user_does_not_exist' => 'Cet·te utilisateur·trice est invalide. Merci de réessayer.' ) diff --git a/resources/lang/fr/admin/consumables/table.php b/resources/lang/fr/admin/consumables/table.php index c47cd0e7fa..fff24cb2c5 100644 --- a/resources/lang/fr/admin/consumables/table.php +++ b/resources/lang/fr/admin/consumables/table.php @@ -1,5 +1,5 @@ 'Nom de la fourniture', + 'title' => 'Nom du consommable', ); diff --git a/resources/lang/fr/admin/custom_fields/general.php b/resources/lang/fr/admin/custom_fields/general.php index b9d99afd9b..917e8b4353 100644 --- a/resources/lang/fr/admin/custom_fields/general.php +++ b/resources/lang/fr/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Utilisé par les modèles', 'order' => 'Commande', 'create_fieldset' => 'Nouveau Fieldset', + 'update_fieldset' => 'Mettre à jour le Fieldset', + 'fieldset_does_not_exist' => 'Le Fieldset :id n\'existe pas', + 'fieldset_updated' => 'Fieldset mis à jour', 'create_fieldset_title' => 'Créer un nouveau jeu de champs', 'create_field' => 'Nouveau champ personnalisé', 'create_field_title' => 'Créer un champ personnalisé', @@ -44,6 +47,8 @@ return [ 'db_convert_warning' => 'ATTENTION. Ce champ est dans la table personnalisée en tant que :db_column mais devrait être :expected.', 'is_unique' => 'Cette valeur doit être unique parmi tous les actifs', 'unique' => 'Unique', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Permettre à l\'utilisateur de vérifier ces valeurs dans sa page Voir Ressources Affectées', + 'display_in_user_view_table' => 'Visible par l\'utilisateur', + 'auto_add_to_fieldsets' => 'Ajouter ceci automatiquement à tous les nouveaux fieldsets', + 'add_to_preexisting_fieldsets' => 'Ajouter à tous les fieldsets existants', ]; diff --git a/resources/lang/fr/admin/departments/message.php b/resources/lang/fr/admin/departments/message.php index 21ee531fa0..0cbb36a4a9 100644 --- a/resources/lang/fr/admin/departments/message.php +++ b/resources/lang/fr/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Le département n\'existe pas.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Un service portant ce nom existe déjà à cet emplacement de l\'entreprise. Ou choisissez un nom plus spécifique pour ce service. ', 'assoc_users' => 'Ce service est actuellement associé à au moins un utilisateur et ne peut pas être supprimé. Veuillez mettre à jour vos utilisateurs pour ne plus référencer ce service et réessayer.', 'create' => array( 'error' => 'Le département n\'a pas été créé. Veuillez réessayer.', diff --git a/resources/lang/fr/admin/groups/message.php b/resources/lang/fr/admin/groups/message.php index a374bf8c39..89092bba90 100644 --- a/resources/lang/fr/admin/groups/message.php +++ b/resources/lang/fr/admin/groups/message.php @@ -3,8 +3,8 @@ return array( 'group_exists' => 'Ce groupe existe déjà!', - 'group_not_found' => 'Ce groupe [:id] n\'existe pas.', - 'group_name_required' => 'Le champ nom est obligatoire.', + 'group_not_found' => 'L\'identifiant de groupe :id n\'existe pas.', + 'group_name_required' => 'Le champ "nom" est obligatoire', 'success' => array( 'create' => 'Ce groupe a été créé correctement.', diff --git a/resources/lang/fr/admin/hardware/form.php b/resources/lang/fr/admin/hardware/form.php index 28eba855cc..adc0f0333e 100644 --- a/resources/lang/fr/admin/hardware/form.php +++ b/resources/lang/fr/admin/hardware/form.php @@ -2,15 +2,18 @@ return [ 'bulk_delete' => 'Confirmez la suppression du lot d\'objets', + 'bulk_restore' => 'Confirmer la restauration des actifs en bloc', 'bulk_delete_help' => 'Vérifiez les objets ci-dessous pour la suppression du lot. Une fois supprimés, ces objets peuvent être restaurés, mais ils ne seront plus associés avec les utilisateurs auxquels ils sont actuellement assignés.', - 'bulk_delete_warn' => 'Vous allez supprimer :asset_count objets.', - 'bulk_update' => 'Mise à jour en bloc d\'actifs', - 'bulk_update_help' => 'Ce formulaire vous permet de mettre à jour plusieurs actifs à la fois. Seulement remplir les champs que vous devez modifier. Tous les champs laissés vides resteront inchangés. ', + 'bulk_restore_help' => 'Examinez les actifs pour la restauration en masse ci-dessous. Une fois restaurés, ces actifs ne seront pas associés aux utilisateurs·trices auxquels ils ont été assignés précédemment.', + 'bulk_delete_warn' => 'Vous êtes sur le point de supprimer :asset_count objets.', + 'bulk_restore_warn' => 'Vous êtes sur le point de restaurer :asset_count actifs.', + 'bulk_update' => 'Mise à jour en masse des actifs', + 'bulk_update_help' => 'Ce formulaire vous permet de mettre à jour plusieurs actifs à la fois. Remplissez seulement les champs que vous devez modifier. Tous les champs laissés vides resteront inchangés. ', 'bulk_update_warn' => 'Vous êtes sur le point de modifier les propriétés d\'un seul matériel.|Vous êtes sur le point de modifier les propriétés de :asset_count matériels.', 'checkedout_to' => 'Extrait vers', 'checkout_date' => 'Date d\'attribution', 'checkin_date' => 'Date de dissociation', - 'checkout_to' => 'Caisse à', + 'checkout_to' => 'Attribuer à', 'cost' => 'Coût d\'achat', 'create' => 'Créer des actifs', 'date' => 'Date d\'achat', @@ -31,7 +34,7 @@ return [ 'notes' => 'Remarques', 'order' => 'Numéro de Commande', 'qr' => 'Code QR', - 'requestable' => 'Les utilisateurs peuvent demander à cet actif', + 'requestable' => 'Les utilisateurs·trices peuvent demander cet actif', 'select_statustype' => 'Choisissez le type de statut', 'serial' => 'Série ', 'status' => 'Statut', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Mettre à jour uniquement l\'emplacement par défaut', 'asset_not_deployable' => 'L\'actif n\'est pas déployable. L\'actif ne peut pas être affecté.', 'asset_deployable' => 'L\'actif est déployable. L\'actif peut être affecté.', - 'processing_spinner' => 'Traitement en cours...', + 'processing_spinner' => 'Traitement... (Cela peut prendre un peu de temps sur les fichiers volumineux)', 'optional_infos' => 'Information facultative', 'order_details' => 'Information liée à l\'achat' ]; diff --git a/resources/lang/fr/admin/hardware/general.php b/resources/lang/fr/admin/hardware/general.php index a5bdaca974..27b8e61541 100644 --- a/resources/lang/fr/admin/hardware/general.php +++ b/resources/lang/fr/admin/hardware/general.php @@ -8,19 +8,22 @@ return [ 'bulk_checkout' => 'Attribuer les actifs', 'bulk_checkin' => 'Restitution d\'actifs', 'checkin' => 'Retour des Biens', - 'checkout' => 'Commander l\'actif', + 'checkout' => 'Associer l\'actif', 'clone' => 'Cloner le Bien', 'deployable' => 'Déployable', 'deleted' => 'Cet actif a été supprimé.', '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.', - 'requestable' => 'Réquisitionnable', + 'model_invalid' => 'Le modèle de cette ressource n\'est pas valide.', + 'model_invalid_fix' => 'La ressource doit être éditée pour corriger cela avant d\'essayer de l\'enregistrer ou de l\'affecter.', + 'requestable' => 'Demandable', 'requested' => 'Demandé', - 'not_requestable' => 'Non-réquisitionnable', - 'requestable_status_warning' => 'Ne pas modifier le statut de demande', + 'not_requestable' => 'Non demandable', + 'requestable_status_warning' => 'Ne pas modifier la demandabilité', 'restore' => 'Restaurer l\'actif', 'pending' => 'En attente', 'undeployable' => 'Non déployable', + 'undeployable_tooltip' => 'Cet actif est dans un état non déployable et ne peut donc pas être attribué pour le moment.', 'view' => 'Voir le Bien', 'csv_error' => 'Vous avez une erreur dans votre fichier CSV :', 'import_text' => ' @@ -28,7 +31,7 @@ return [ Téléchargez un fichier CSV qui contient l\'historique des ressources. Les assets et les utilisateurs DOIVENT déjà exister dans le système, ou ils seront ignorés. La correspondance des assets pour l’importation de l’historique se produit avec le tag de l’actif. Nous allons essayer de trouver un utilisateur correspondant en fonction du nom d\'utilisateur que vous fournissez, et des critères que vous sélectionnez ci-dessous. Si vous ne sélectionnez aucun critère ci-dessous, il essaiera simplement de correspondre au format d\'utilisateur que vous avez configuré dans les paramètres généraux de l\'Admin > .

-

Les champs inclus dans le CSV doivent correspondre aux en-têtes : Étiquette d\'actif, Nom, date de paiement, date d\'enregistrement. Tous les champs supplémentaires seront ignorés.

+

Les champs inclus dans le CSV doivent correspondre aux en-têtes : Étiquette d\'actif, Nom, date d\'attribution, date de récupération. Tous les champs supplémentaires seront ignorés.

Date de check-in : les dates de check-in vides ou futures seront utilisées par l\'utilisateur associé. En excluant la colonne Date d\'enregistrement, vous créerez une date de check-in avec la date d\'aujourd\'hui.

', @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Messages d\'erreur:', 'success_messages' => 'Messages de succès:', 'alert_details' => 'Voir ci-dessous pour plus de détails.', - 'custom_export' => 'Exportation personnalisée' + 'custom_export' => 'Exportation personnalisée', + 'mfg_warranty_lookup' => 'Vérification de la garantie :manufacturer', ]; diff --git a/resources/lang/fr/admin/hardware/message.php b/resources/lang/fr/admin/hardware/message.php index 6469c52e4a..a997967755 100644 --- a/resources/lang/fr/admin/hardware/message.php +++ b/resources/lang/fr/admin/hardware/message.php @@ -5,7 +5,7 @@ return [ 'undeployable' => 'Attention: Ce bien a été marqué non déployable. Si ce statut a changé, veuillez l\'actualiser.', 'does_not_exist' => 'Ce bien n\'existe pas.', - 'does_not_exist_or_not_requestable' => 'Cet actif n\'existe pas ou ne peut pas être réquisitionné.', + '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.', 'create' => [ @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'L\'actif n\'a pas été restauré, veuillez réessayer', 'success' => 'Actif restauré correctement.', + 'bulk_success' => 'Actif restauré avec succès.', + 'nothing_updated' => 'Aucun actif n\'a été sélectionné, donc rien n\'a été restauré.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Votre fichier a bien été importé', 'file_delete_success' => 'Votre fichier a été correctement supprimé', 'file_delete_error' => 'Le fichier n’a pas pu être supprimé', + 'header_row_has_malformed_characters' => 'Un ou plusieurs attributs dans la ligne d\'en-tête contiennent des caractères UTF-8 invalides', + 'content_row_has_malformed_characters' => 'Un ou plusieurs attributs dans la première ligne de contenu contiennent des caractères UTF-8 invalides', ], @@ -76,9 +80,9 @@ return [ ], 'requests' => [ - 'error' => 'Le bien n\'a pas été demandé, merci d\'essayer à nouveau', - 'success' => 'Le bien a été demandé correctement.', - 'canceled' => 'La demande de paiement a été annulée', + 'error' => 'L\'actif n\'a pas été demandé, merci d\'essayer à nouveau', + 'success' => 'L\'actif a été demandé avec succès.', + 'canceled' => 'La demande d\'association a été annulée avec succès', ], ]; diff --git a/resources/lang/fr/admin/hardware/table.php b/resources/lang/fr/admin/hardware/table.php index 146b4da82a..950863355f 100644 --- a/resources/lang/fr/admin/hardware/table.php +++ b/resources/lang/fr/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Associer/Libérer', 'checkout_date' => 'Date d\'association', 'checkoutto' => 'Date de libération', + 'components_cost' => 'Coût total des composants', 'current_value' => 'Valeur actuelle', 'diff' => 'Différence', 'dl_csv' => 'Télécharger en CSV', @@ -23,8 +24,8 @@ return [ 'days_without_acceptance' => 'Jours sans acceptation', 'monthly_depreciation' => 'Dépréciation mensuelle', 'assigned_to' => 'Affecté à', - 'requesting_user' => 'Utilisateur requérant', - 'requested_date' => 'Date de la requête', + 'requesting_user' => 'Demandeur·euse', + 'requested_date' => 'Date de la demande', 'changed' => 'Modifié', 'icon' => 'Icône', ]; diff --git a/resources/lang/fr/admin/licenses/general.php b/resources/lang/fr/admin/licenses/general.php index ed20681369..8d21062d89 100644 --- a/resources/lang/fr/admin/licenses/general.php +++ b/resources/lang/fr/admin/licenses/general.php @@ -1,8 +1,8 @@ 'A propos des licences', - 'about_licenses' => 'Les licences sont utilisées pour suivre les logiciels. Ils ont un certain nombre d\'attribution pouvant être associés individuellement', + 'about_licenses_title' => 'A propos des licences', + 'about_licenses' => 'Les licences sont utilisées pour suivre les logiciels. Ils ont un certain nombre d\'attribution pouvant être associés individuellement', 'checkin' => 'Libérer la licence multiposte', 'checkout_history' => 'Historique des associations', 'checkout' => 'Associer la licence multiposte', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Licences de logiciel', 'user' => 'Utilisateur', 'view' => 'Voir la licence', + 'delete_disabled' => 'Cette licence ne peut pas encore être supprimée car certains sièges sont encore attribués.', + 'bulk' => + [ + '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.', + '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é', + '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', + ], + + 'checkout_all' => [ + 'button' => 'Associer tous les sièges', + 'modal' => 'Cette action associera un siège au premier utilisateur disponible. | Cette action associera :available_seats_count sièges aux premiers utilisateurs disponibles. Un·e utilisateur·trice est considéré·e disponible pour un siège si iel n\'a pas déjà cette licence associée à son profil, et que l\'auto-association de licence est active sur son compte.', + 'enabled_tooltip' => 'Associer TOUS les sièges (ou autant que disponible) à TOUS les utilisateurs·trices', + 'disabled_tooltip' => 'Ceci est désactivé car il n\'y a pas de siège actuellement disponible', + 'success' => 'Licence associée avec succès ! | :count licences ont été associées avec succès !', + 'error_no_seats' => 'Il n\'y a plus de siège disponible pour cette licence.', + 'warn_not_enough_seats' => ':count utilisateurs·trices ont été assigné·es à cette licence, mais nous avons manqué de sièges disponibles.', + 'warn_no_avail_users' => 'Rien à faire. Il n\'y a pas d\'utilisateur·trice qui n\'ont pas encore cette licence attribuée.', + 'log_msg' => 'Attribué via l\'outil d\'attribution de licences en volume', + + + ], + ], ); diff --git a/resources/lang/fr/admin/locations/message.php b/resources/lang/fr/admin/locations/message.php index b945813a19..249e8f228c 100644 --- a/resources/lang/fr/admin/locations/message.php +++ b/resources/lang/fr/admin/locations/message.php @@ -4,10 +4,10 @@ return array( 'does_not_exist' => 'Le lieu n\'existe pas.', 'assoc_users' => 'Ce lieu est actuellement associé avec au moins un utilisateur et ne peut pas être supprimé. Veuillez mettre à jour vos utilisateurs pour ne plus faire référence à ce lieu et essayez à nouveau. ', - 'assoc_assets' => 'Cet emplacement est actuellement associé à au moins un utilisateur et ne peut pas être supprimé. Veuillez mettre à jour vos utilisateurs pour ne plus faire référence à cet emplacement 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' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Actifs assignés', + 'current_location' => 'Emplacement actuel', 'create' => array( diff --git a/resources/lang/fr/admin/locations/table.php b/resources/lang/fr/admin/locations/table.php index 7875a6f540..4ef467276a 100644 --- a/resources/lang/fr/admin/locations/table.php +++ b/resources/lang/fr/admin/locations/table.php @@ -3,8 +3,8 @@ return [ 'about_locations_title' => 'A propos des emplacements', 'about_locations' => 'Les lieux sont utilisés pour suivre les informations de localisation des utilisateurs, des actifs et d\'autres éléments', - 'assets_rtd' => 'Biens', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. - 'assets_checkedout' => 'Biens assignés', + 'assets_rtd' => 'Actifs', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. + 'assets_checkedout' => 'Actifs assignés', 'id' => 'ID', 'city' => 'Ville', 'state' => 'État', diff --git a/resources/lang/fr/admin/manufacturers/message.php b/resources/lang/fr/admin/manufacturers/message.php index 5b0a9d3b61..a01615b5ea 100644 --- a/resources/lang/fr/admin/manufacturers/message.php +++ b/resources/lang/fr/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Utilisez {LOCALE} et {SERIAL} comme variables dans votre URL pour que ces valeurs soient remplies automatiquement lors de la visualisation des actifs.', 'does_not_exist' => 'Le fabricant n\'existe pas.', 'assoc_users' => 'Ce fabricant est actuellement associé avec au moins un modèle et ne peut pas être supprimé. Veuillez mettre à jour les modèles pour ne plus référencer un fabricant et essayer à nouveau. ', diff --git a/resources/lang/fr/admin/manufacturers/table.php b/resources/lang/fr/admin/manufacturers/table.php index 64cc317101..6a6f0513e1 100644 --- a/resources/lang/fr/admin/manufacturers/table.php +++ b/resources/lang/fr/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Email du support', 'support_phone' => 'Téléphone du support', 'support_url' => 'URL du support', + 'warranty_lookup_url' => 'URL de vérification de la garantie', 'update' => 'Mettre à jour le fabricant', 'url' => 'URL', diff --git a/resources/lang/fr/admin/models/general.php b/resources/lang/fr/admin/models/general.php index 9a4444a9ed..59e01c50fe 100644 --- a/resources/lang/fr/admin/models/general.php +++ b/resources/lang/fr/admin/models/general.php @@ -6,9 +6,9 @@ return array( 'deleted' => 'Ce modèle a été supprimé.', 'bulk_delete' => 'Suppression en masse des modèles d\'actifs', 'bulk_delete_help' => 'Cochez la case ci-dessous pour confirmer la suppression des modèles d\'actifs sélectionnés. Les modèles d\'actifs associés à des actifs ne peuvent pas être supprimés tant que les actifs ne sont pas associés à un modèle différent.', - 'bulk_delete_warn' => 'Vous êtes sur le points de suppimer :model_count modèles d\'actifs.', + 'bulk_delete_warn' => 'Vous êtes sur le point de supprimer un modèle d\'actif.|Vous êtes sur le point de supprimer :model_count modèles d\'actif.', 'restore' => 'Restaurer le modèle', - 'requestable' => 'Les utilisateurs peuvent demander ce modèle', + 'requestable' => 'Les utilisateurs·trices peuvent demander ce modèle', 'show_mac_address' => 'Afficher le champ pour l\'adresse MAC pour ce modèle d\'actif', 'view_deleted' => 'Voir les modèles détruits', 'view_models' => 'Voir les différents modèles', diff --git a/resources/lang/fr/admin/models/message.php b/resources/lang/fr/admin/models/message.php index 28ac0152c4..01660ef782 100644 --- a/resources/lang/fr/admin/models/message.php +++ b/resources/lang/fr/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Le modèle n\'existe pas.', + 'no_association' => 'AUCUN MODELE ASSOCIÉ.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Le modèle n\'a pas été mis à jour, veuillez essayer à nouveau', - 'success' => 'Le modèle a été mis à jour avec succès.' + 'success' => 'Le modèle a été mis à jour avec succès.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Aucun champ n\'a été changé, donc rien n\'a été mis à jour.', - 'success' => 'Modèles mis à jour.' + 'success' => 'Modèle mis à jour avec succès. |:model_count modèles mis à jour avec succès.', + 'warn' => 'Vous êtes sur le point de mettre à jour les propriétés du modèle suivant : |Vous êtes sur le point de modifier les propriétés des :model_count modèles suivants :', + ), 'bulkdelete' => array( 'error' => 'Aucun modèle n\'a été sélectionné, donc rien n\'a été supprimé.', - 'success' => ': modèle(s) succes_count supprimé(s) !', + 'success' => 'Modèle supprimé !|:success_count modèles supprimés !', 'success_partial' => ': les modèles success_count ont été supprimés, cependant : fail_count n\'a pas pu être supprimé car ils ont toujours des ressources associées.' ), diff --git a/resources/lang/fr/admin/settings/general.php b/resources/lang/fr/admin/settings/general.php index 31d82d62fc..488343e4be 100644 --- a/resources/lang/fr/admin/settings/general.php +++ b/resources/lang/fr/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Si vous souhaitez envoyer une copie des courriels d\'association/dissociation qui sont envoyés aux utilisateurs à un compte de messagerie supplémentaire, entrez-le ici. Sinon, laissez ce champ vide.', 'is_ad' => 'C\'est un serveur Active Directory', 'alerts' => 'Alertes', - 'alert_title' => 'Mettre à jour les paramètres des alertes', + 'alert_title' => 'Mettre à jour les paramètres de notification', 'alert_email' => 'Envoyer les alertes à', 'alert_email_help' => 'Adresses de courriel ou listes de distribution auxquelles vous souhaitez envoyer des alertes, séparées par des virgules', 'alerts_enabled' => 'Alertes activées', @@ -21,7 +21,7 @@ return [ 'allow_user_skin_help_text' => 'Cocher cette case permettra à un utilisateur de remplacer le thème de l\'interface utilisateur par un autre.', 'asset_ids' => 'ID de l\'actif', 'audit_interval' => 'Intervalle d\'audit', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Si vous devez régulièrement vérifier physiquement vos ressources, entrez l\'intervalle en mois entre deux vérifications. La mise à jour de cette valeur s\'appliquera à toutes les « prochaines dates de vérifications » pour les ressources avec une date de vérification dans le futur.', 'audit_warning_days' => 'Seuil d\'avertissement d\'audit', 'audit_warning_days_help' => 'Combien de jours à l\'avance devrions-nous vous avertir lorsque les actifs doivent être vérifiés?', 'auto_increment_assets' => 'Générer des numéros d\'inventaire auto-incrémentés', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restaurer à partir d\'une sauvegarde', 'backups_upload' => 'Téléverser la sauvegarde', 'backups_path' => 'Les sauvegardes sont stockées dans :path sur le serveur', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Utilisez le bouton de restauration pour restaurer à partir d\'une sauvegarde (cela ne fonctionne pas actuellement avec le stockage de fichiers S3 ou Docker).

Votre base de données :app_name tout entière et tous les fichiers téléchargés seront intégralement remplacés par ce qui se trouve dans le fichier de sauvegarde. ', 'backups_logged_out' => 'Tous les utilisateurs existants, y compris vous, seront déconnectés une fois la restauration achevée.', 'backups_large' => 'La restauration de fichiers de sauvegardes volumineux peut provoquer une erreur de délai d\'attente (time-out error) et nécessiter d\'être effectuée à l\'aide de la ligne de commande. ', 'barcode_settings' => 'Configuration des codes à barres', @@ -66,7 +66,7 @@ return [ 'footer_text' => 'Texte supplémentaire en pied de page ', 'footer_text_help' => 'Ce texte apparaîtra dans le pied de page de droitre. Les liens sont autorisés en utilisant Github flavored markdown. Les sauts de ligne, les en-têtes, les images, etc. peuvent entraîner des résultats imprévisibles.', 'general_settings' => 'Configuration générale', - 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, tos, dashboard, privacy', + 'general_settings_keywords' => 'support de l\'entreprise, signature, acceptation, format de courriel, format de nom d\'utilisateur, images, par page, vignette, eula, tos, tableau de bord, confidentialité', 'general_settings_help' => 'CLUF par défaut et plus encore', 'generate_backup' => 'Générer une sauvegarde', 'header_color' => 'Couleur de l\'en-tête', @@ -75,8 +75,9 @@ return [ 'label_logo_size' => 'Les logos, de préférence carrés, sont affichés en haut à droite de chaque étiquette. ', 'laravel' => 'Version de Laravel', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group' => 'Groupe de permissions par défaut', + 'ldap_default_group_info' => 'Sélectionner un groupe à assigner aux utilisateurs nouvellement synchronisés. N\'oubliez-pas que l\'utilisateur possèdera les droits de ce groupe.', + 'no_default_group' => 'Aucun groupe par défaut', 'ldap_help' => 'Service d\'annuaire', 'ldap_client_tls_key' => 'Clé TLS du client LDAP', 'ldap_client_tls_cert' => 'Certificat TLS côté client pour LDAP', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Paramètres LDAP', 'ldap_client_tls_cert_help' => 'Le certificat TLS côté client et la clé pour les connexions LDAP ne sont généralement utiles qu\'avec les configurations Google Workspace en mode "LDAP sécurisé". Les deux sont requis.', 'ldap_client_tls_key' => 'Clé TLS du client LDAP', + 'ldap_location' => 'LDAP Localisation', +'ldap_location_help' => 'Le champ "LDAP Localisation" ne doit être utilisé que si aucune OU n\'est définie dans le champ Bind de base DN. Laissez vide si une recherche par OU est utilisée.', 'ldap_login_test_help' => 'Entrez un nom d\'utilisateur et mot de passe LDAP valide depuis la base DN que vous avez spécifié ci-dessus afin de tester si votre configuration LDAP est correcte. VOUS DEVEZ D\'ABORD ENREGISTRER VOS PARAMÈTRES LDAP MIS À JOUR.', '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', @@ -111,7 +114,7 @@ return [ 'ldap_auth_filter_query' => 'Requête d\'authentification LDAP', 'ldap_version' => 'Version LDAP', 'ldap_active_flag' => 'Signal d\'activation LDAP', - 'ldap_activated_flag_help' => 'This value is used to determine whether a synced user can login to Snipe-IT. It does not affect the ability to check items in or out to them, and should be the attribute name within your AD/LDAP, not the value.

If this field is set to a field name that does not exist in your AD/LDAP, or the value in the AD/LDAP field is set to 0 or false, user login will be disabled. If the value in the AD/LDAP field is set to 1 or true or any other text means the user can log in. When the field is blank in your AD, we respect the userAccountControl attribute, which usually allows non-suspended users to log in.', + 'ldap_activated_flag_help' => 'Cette valeur est utilisée pour déterminer si un utilisateur synchronisé peut se connecter à Snipe-IT. Cela n\'affecte pas la possibilité de leur affecter ou retirer des ressources, et devrait être le nom d\'attribut dans votre AD/LDAP, pas la valeur.

Si ce champ est défini à un nom de champ qui n\'existe pas dans votre AD/LDAP, ou la valeur dans le champ AD/LDAP est définie à 0 ou false, la connexion de l\'utilisateur sera désactivée. Si la valeur du champ AD/LDAP est définie à 1 ou vrai ou tout autre valeur signifie que l\'utilisateur peut se connecter. Lorsque le champ est vide dans votre AD, nous respectons l\'attribut userAccountControl , qui permet généralement aux utilisateurs non desactivés de se connecter.', 'ldap_emp_num' => 'Numéro d\'employé LDAP', 'ldap_email' => 'E-mail LDAP', 'ldap_test' => 'Tester LDAP', @@ -178,7 +181,7 @@ return [ 'saml_idp_metadata_help' => 'Vous pouvez spécifier les métadonnées IdP en utilisant une URL ou un fichier XML.', 'saml_attr_mapping_username' => 'Mapping d\'attributs - Nom d\'utilisateur', 'saml_attr_mapping_username_help' => 'NameID sera utilisé si le mapping des attributs n\'est pas spécifié ou est invalide.', - 'saml_forcelogin_label' => 'SAML Force Login', + 'saml_forcelogin_label' => 'Connexion SAML forcée', 'saml_forcelogin' => 'Faire de SAML la connexion principale', 'saml_forcelogin_help' => 'Vous pouvez utiliser \'/login?nosaml\' pour accéder à la page de connexion normale.', 'saml_slo_label' => 'Déconnexion unique SAML', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Afficher les images dans les courriels', 'show_images_in_email_help' => 'Décocher cette case si votre installation de Snipe-IT est derrière un VPN ou un réseau fermé et que les utilisateurs en dehors du réseau ne peuvent pas charger les images servies depuis cette installation dans leurs courriels.', 'site_name' => 'Nom du site', + 'integrations' => 'Intégrations', 'slack' => 'Slack', - 'slack_title' => 'Mettre à jour les paramètres Slack', - 'slack_help' => 'Paramètres Slack', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Configuration "Slack"', - 'slack_integration_help' => 'L\'intégration de Slack est optionnelle, cependant le point de terminaison et le canal sont requis si vous souhaitez l\'utiliser. Pour configurer l\'intégration de Slack, vous devez d\'abord créer un webhook entrant sur votre compte Slack. Cliquez sur le bouton Tester l\'intégration Slack pour confirmer que vos paramètres sont corrects avant d\'enregistrer. ', - 'slack_integration_help_button' => 'Une fois que vous avez enregistré vos informations Slack, un bouton de test apparaîtra.', - 'slack_test_help' => 'Testez si votre intégration Slack est correctement configurée. VOUS DEVEZ D\'ABORD ENREGISTRER LES PARAMÈTRES DE SLACK MIS À JOUR.', + 'general_webhook' => 'Webhook général', + 'webhook' => ':app', + 'webhook_presave' => 'Tester pour enregistrer', + 'webhook_title' => 'Mettre à jour les paramètres Webhook', + 'webhook_help' => 'Paramètres d\'intégration', + 'webhook_botname' => 'Nom du bot :app', + 'webhook_channel' => 'Canal :app', + 'webhook_endpoint' => 'Point d\'accès :app', + 'webhook_integration' => 'Paramètres :app', + 'webhook_test' =>'Tester l\'intégration de :app', + 'webhook_integration_help' => ':L\'intégration de :app est optionnelle, cependant le point de terminaison et le canal sont requis si vous souhaitez l\'utiliser. Pour configurer l\'intégration de :app, vous devez d\'abord créer un webhook entrant sur votre compte :app. Cliquez sur le bouton Tester l\'intégration :app pour confirmer que vos paramètres sont corrects avant d\'enregistrer. ', + 'webhook_integration_help_button' => 'Une fois que vous aurez enregistré vos informations :app, un bouton de test apparaîtra.', + 'webhook_test_help' => 'Testez si votre intégration :app est correctement configurée. VOUS DEVEZ D\'ABORD ENREGISTRER LES PARAMÈTRES MIS À JOUR DE :app.', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Support des liens de pied de page ', 'support_footer_help' => 'Spécifiez qui voit les liens vers les manuels de support utilisateur Snipe-IT', @@ -216,7 +224,7 @@ return [ 'update' => 'Mettre à jour les paramètres', 'value' => 'Valeur', 'brand' => 'Marque', - 'brand_keywords' => 'footer, logo, print, theme, skin, header, colors, color, css', + 'brand_keywords' => 'pied de page, logo, impression, thème, habillage, en-tête, couleurs, couleur, css', 'brand_help' => 'Logo, nom du site', 'web_brand' => 'Type de Web Branding', 'about_settings_title' => 'A propos des réglages', @@ -292,7 +300,7 @@ return [ 'filter_by_keyword' => 'Filtrer par mot clé', 'security' => 'Sécurité', 'security_title' => 'Gérer les paramètres de sécurité', - 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', + 'security_keywords' => 'mot de passe, mots de passe, exigences, deux facteurs, deux-facteurs, mots de passe communs, connexion distante, déconnexion, authentification', 'security_help' => 'Authentification à deux facteurs (2FA), Restrictions de mot de passe', 'groups_keywords' => 'permissions, permissions de groupe, autorisation', 'groups_help' => 'Permissions de groupe du compte', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localisation, devise, locale, locale, fuseau horaire, fuseau horaire, international, internationalisation, langue, traduction, traduction', 'localization_help' => 'Langue, affichage de la date', 'notifications' => 'Notifications', - 'notifications_help' => 'Alertes par e-mail, paramètres d\'audit', + 'notifications_help' => 'Paramètres d\'alerte et d\'audit par e-mail', 'asset_tags_help' => 'Incrémentation et préfixes', 'labels' => 'Étiquettes', 'labels_title' => 'Mettre à jour les paramètres d\'étiquetage', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Étape suivante : créer un utilisateur', 'ldap_settings_link' => 'Page des paramètres LDAP', 'slack_test' => 'Tester l\'intégration de ', + 'google_callback_help' => 'Ceci doit être entré comme URL de rappel dans les paramètres de votre application Google OAuth dans la console de développement Google de votre organisation.', + 'google_login' => 'Paramètres de connexion via Google Workspace', + 'enable_google_login' => 'Permettre aux utilisateurs·trices de se connecter avec Google Workspace', + 'enable_google_login_help' => 'Les utilisateurs·trices ne seront pas créé·es automatiquement. Iels doivent avoir un compte existant ici ET dans Google Workspace, et leur nom d\'utilisateur·trice doit correspondre à leur adresse e-mail Google Workspace. ', + ]; diff --git a/resources/lang/fr/admin/settings/message.php b/resources/lang/fr/admin/settings/message.php index c935b942e8..c0c14f3cdb 100644 --- a/resources/lang/fr/admin/settings/message.php +++ b/resources/lang/fr/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Test de l\'authentification LDAP...', 'authentication_success' => 'Utilisateur authentifié contre LDAP avec succès !' ], - 'slack' => [ - 'sending' => 'Envoi du message de test Slack...', + 'webhook' => [ + 'sending' => 'Envoi du message de test :app...', 'success_pt1' => 'Succès ! Vérifiez le ', - 'success_pt2' => ' canal pour votre message de test, soyez sûr de cliquer sur Enregistrer ci-dessous afin de sauvegarder vos réglages.', + 'success_pt2' => ' canal pour votre message de test, et assurez-vous de cliquer sur ENREGISTRER ci-dessous afin de sauvegarder vos réglages.', '500' => '500 Erreur du serveur.', - 'error' => 'Une erreur est survenue.', + 'error' => 'Quelque chose s\'est mal passé. :app a répondu avec: :error_message', + 'error_misc' => 'Une erreur est survenue. :( ', ] ]; diff --git a/resources/lang/fr/admin/users/general.php b/resources/lang/fr/admin/users/general.php index 0598870090..38059c4997 100644 --- a/resources/lang/fr/admin/users/general.php +++ b/resources/lang/fr/admin/users/general.php @@ -17,8 +17,10 @@ return [ 'last_login' => 'Dernière connexion', 'ldap_config_text' => 'Les paramètres de configuration LDAP se trouvent sous Admin > Réglages. La localisation sélectionnée (optionnelle) sera définie pour tous les utilisateurs importés.', 'print_assigned' => 'Imprimer tout ceux assignés', - 'email_assigned' => 'Liste des emails de toutes les assignées', + 'email_assigned' => 'Envoyer la liste des matériels assignés par email', 'user_notified' => 'Un mail récapitulatif de tous les articles associés à cet utilisateur lui a été envoyé.', + 'auto_assign_label' => 'Inclure cet utilisateur lors de l\'affectation automatique des licences éligibles', + 'auto_assign_help' => 'Ignorer cet utilisateur dans l\'affectation automatique des licences', 'software_user' => 'Logiciels associés avec :name', 'send_email_help' => 'Vous devez fournir une adresse e-mail pour que cet utilisateur puisse recevoir ses identifiants. Les envois d\'identifiants par email ne peuvent être faits que lors de la création de l\'utilisateur. Les mots de passe sont stockés dans un hachage à sens unique et ne peuvent pas être récupérés une fois enregistrés.', 'view_user' => 'Voir l\'utilisateur :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Seuls les super-administrateurs peuvent accorder un accès de super-administrateur à un utilisateur.', 'admin_permission_warning' => 'Seuls les utilisateurs possédant des droits d\'administrateur ou mieux peuvent accorder un accès d\'administrateur à un utilisateur.', 'remove_group_memberships' => 'Supprimer les appartenances de groupe', - 'warning_deletion' => 'AVERTISSEMENT :', 'warning_deletion_information' => 'Vous êtes sur le point d\'associer TOUS les articles des :count utilisateur(s) ci-dessous. Les noms des super-administrateurs sont indiqués en rouge.', 'update_user_assets_status' => 'Appliquer ce status à tous les articles associés à ces utilisateurs', 'checkin_user_properties' => 'Soumettre toutes les propriétés associées à ces utilisateurs', @@ -41,4 +42,13 @@ return [ 'remote' => 'Distant', 'remote_help' => 'Cela peut être utile si vous avez besoin de filtrer les utilisateurs distants qui ne viennent pas ou peu dans vos locaux.', 'not_remote_label' => 'Il ne s\'agit pas d\'un utilisateur distant', + 'vip_label' => 'Utilisateur VIP', + 'vip_help' => 'Cela peut être utile pour marquer des personnes importantes dans votre organisation si vous souhaitez les gérer de manière particulière.', + 'create_user' => 'Créer un utilisateur', + 'create_user_page_explanation' => 'Voici les informations de compte que vous utiliserez pour accéder au site la première fois.', + 'email_credentials' => 'Identifiants de l\'e-mail', + 'email_credentials_text' => 'Envoyer mes identifiants à l\'adresse e-mail ci-dessus', + 'next_save_user' => 'Étape suivante : Enregistrer l\'utilisateur', + 'all_assigned_list_generation' => 'Généré le :', + 'email_user_creds_on_create' => 'Envoyer à cet·te utilisateur·trice ses informations d\'identification par e-mail ?', ]; diff --git a/resources/lang/fr/admin/users/message.php b/resources/lang/fr/admin/users/message.php index f6ac8ff909..6ee8ab4719 100644 --- a/resources/lang/fr/admin/users/message.php +++ b/resources/lang/fr/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Vous avez refusé cet actif.', 'bulk_manager_warn' => 'Vos utilisateurs ont été mis à jour avec succès, mais votre entrée de gestionnaire n\'a pas été enregistrée, car le gestionnaire que vous avez sélectionné était également dans la liste d\'utilisateurs à éditer, et les utilisateurs peuvent ne pas être leur propre gestionnaire. Sélectionnez à nouveau vos utilisateurs, à l\'exclusion du gestionnaire.', 'user_exists' => 'L\'utilisateur existe déjà !', - 'user_not_found' => 'L\'utilisateur [:id] n\'existe pas.', + 'user_not_found' => 'L\'utilisateur·trice n\'existe pas.', 'user_login_required' => 'Le champ identifiant est obligatoire', 'user_password_required' => 'Le mot de passe est obligatoire.', 'insufficient_permissions' => 'Droits insuffisants.', @@ -15,7 +15,7 @@ return array( 'password_resets_sent' => 'Les utilisateurs sélectionnés qui sont activés et ont une adresse e-mail valide ont reçu un lien de réinitialisation du mot de passe.', 'password_reset_sent' => 'Un lien de réinitialisation du mot de passe a été envoyé à :email!', 'user_has_no_email' => 'Cet utilisateur n\'a pas renseigné d\'adresse e-mail dans son profil.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_assets_assigned' => 'Cet utilisateur n\'a aucune ressource affectée', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Cet utilisateur n\'a pas d\'e-mail défini.', + 'success' => 'L\'utilisateur a été informé de son inventaire actuel.' ) ); \ No newline at end of file diff --git a/resources/lang/fr/auth/general.php b/resources/lang/fr/auth/general.php index e56d1de9f8..ff2c91921d 100644 --- a/resources/lang/fr/auth/general.php +++ b/resources/lang/fr/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Rappelez-vous de moi', 'username_help_top' => 'Entrez votre nom d\'utilisateur pour recevoir un lien de réinitialisation du mot de passe.', 'username_help_bottom' => 'Votre nom d\'utilisateur et votre adresse e-mail peuvent être les mêmes, mais peuvent ne pas l\'être, selon votre configuration. Si vous ne pouvez pas vous souvenir de votre nom d\'utilisateur, contactez votre administrateur.

Les noms d\'utilisateur sans adresse e-mail associée ne seront pas envoyés par e-mail un lien de réinitialisation du mot de passe. ', - ]; + 'google_login' => 'Ou se connecter via Google Workspace', + 'google_login_failed' => 'La connexion via Google a échoué, merci de réessayer.', + +]; diff --git a/resources/lang/fr/button.php b/resources/lang/fr/button.php index 1234aab9e4..eff38f20de 100644 --- a/resources/lang/fr/button.php +++ b/resources/lang/fr/button.php @@ -9,7 +9,7 @@ return [ 'edit' => 'Éditer', 'restore' => 'Restaurer', 'remove' => 'Supprimer', - 'request' => 'Requête ', + 'request' => 'Demander', 'submit' => 'Soumettre', 'upload' => 'Uploader', 'select_file' => 'Sélectionner un fichier...', diff --git a/resources/lang/fr/general.php b/resources/lang/fr/general.php index 5a18d66a0b..485eadeac5 100644 --- a/resources/lang/fr/general.php +++ b/resources/lang/fr/general.php @@ -3,23 +3,24 @@ return [ 'accessories' => 'Accessoires', 'activated' => 'Activé', + 'accepted_date' => 'Date d\'acceptation', 'accessory' => 'Accessoire', 'accessory_report' => 'Rapport sur les accessoires', 'action' => 'Action', 'activity_report' => 'Rapport d\'activité', 'address' => 'Adresse', 'admin' => 'Admin', - 'administrator' => 'Administrateur', + 'administrator' => 'Administrateur·trice', 'add_seats' => 'Places ajoutées', - 'age' => "Age", + 'age' => "Âge", 'all_assets' => 'Tous les actifs', 'all' => 'Tous', - 'archived' => 'Retiré', + 'archived' => 'Archivé', 'asset_models' => 'Modèles d\'actif', - 'asset_model' => 'maquette', + 'asset_model' => 'Modèle', 'asset' => 'Actif', 'asset_report' => 'Rapport d\'actif', - 'asset_tag' => 'Étiquette de l\'actif', + 'asset_tag' => 'Numéro d\'inventaire', 'asset_tags' => 'Numéros d\'inventaire', 'assets_available' => 'Actifs disponibles', 'accept_assets' => 'Accepter les actifs :name', @@ -27,18 +28,26 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Journal d\'audit', 'assets' => 'Actifs', + 'assets_audited' => 'actifs audités', + 'assets_checked_in_count' => 'actifs récupérés', + 'assets_checked_out_count' => 'actifs affectés', + 'asset_deleted_warning' => 'Cet actif a été supprimé. Vous devez le restaurer avant de pouvoir l\'associer à quelqu\'un.', + 'assigned_date' => 'Date d\'attribution', 'assigned_to' => 'Assigné à :name', - 'avatar_delete' => 'Supprimer l\'Avatar', - 'avatar_upload' => 'Charger un Avatar', + 'assignee' => 'Assigné à', + 'avatar_delete' => 'Supprimer l\'avatar', + 'avatar_upload' => 'Charger un avatar', 'back' => 'Retour', 'bad_data' => 'Aucun résultat, les données sont peut-être erronées?', - 'bulkaudit' => 'Vérification en bloc', - 'bulkaudit_status' => 'État de la vérification', + 'bulkaudit' => 'Audit par lot', + 'bulkaudit_status' => 'Statut de l\'audit', 'bulk_checkout' => 'Attribution par lot', 'bulk_edit' => 'Modifier en masse', 'bulk_delete' => 'Supprimer en masse', 'bulk_actions' => 'Actions de masse', - 'bulk_checkin_delete' => 'Associer de nombreux articles à l\'utilisateur', + 'bulk_checkin_delete' => 'Enregistrement de matériel & Suppression d\'utilisateurs en bloc', + 'byod' => 'BYOD', + 'byod_help' => 'Cet appareil appartient à l\'utilisateur·trice', 'bystatus' => 'par statut', 'cancel' => 'Annuler', 'categories' => 'Catégories', @@ -60,8 +69,8 @@ return [ 'component' => 'Composant', 'components' => 'Composants', 'complete' => 'Terminé', - 'consumable' => 'Fourniture', - 'consumables' => 'Fournitures', + 'consumable' => 'Consommable', + 'consumables' => 'Consommables', 'country' => 'Pays', 'create' => 'Créer', 'created' => 'Élément créé', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Cette application fonctionne en mode de production avec le débogage activé. Cela peut exposer des données sensibles si votre application est accessible au monde extérieur. Désactivez le mode de débogage en définissant la valeur APP_DEBUG dans votre fichier .env sur false .', 'delete' => 'Supprimer', 'delete_confirm' => 'Êtes-vous certain de vouloir supprimer :item?', + 'delete_confirm_no_undo' => 'Êtes-vous sûr·e de vouloir supprimer :item ? Cette action est irréversible.', 'deleted' => 'Supprimé', 'delete_seats' => 'Places supprimées', 'deletion_failed' => 'Échec de la suppression', @@ -139,6 +149,7 @@ return [ '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' => 'Les types de fichiers acceptés sont jpg, webp, png, gif et svg. Taille maximale est de: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', 'importing' => 'Importation en cours', 'importing_help' => 'Vous pouvez importer des matériels, accessoires, licences, composants, consommables et utilisateurs via un fichier CSV.

Le CSV doit être délimité par des virgules et formaté avec des en-têtes qui correspondent à ceux des exemples de CSV présents dans la documentation.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Entretien d\'actifs', 'item' => 'Item', 'item_name' => 'Nom de l\'élément', + 'import_file' => 'Importer un fichier CSV', + 'import_type' => 'Importation en CSV', 'insufficient_permissions' => 'Autorisations insuffisantes !', 'kits' => 'Kits prédéfinis', 'language' => 'Langue', @@ -211,13 +224,14 @@ return [ 'reports' => 'Rapports', 'restored' => 'restauré', 'restore' => 'Restaurer', - 'requestable_models' => 'Modèles demandés', + 'requestable_models' => 'Modèles demandables', 'requested' => 'Demandé', 'requested_date' => 'Date de la demande', 'requested_assets' => 'Actifs demandés', 'requested_assets_menu' => 'Actifs demandés', 'request_canceled' => 'Demande annulée', 'save' => 'Sauvegarder', + 'select_var' => 'Sélectionner :thing... ', // this will eventually replace all of our other selects 'select' => 'Sélectionner', 'select_all' => 'Tout sélectionner', 'search' => 'Rechercher', @@ -240,8 +254,8 @@ return [ 'signature' => 'Signature', 'signed_off_by' => 'Déconnecté par', 'skin' => 'Habillage', - 'slack_msg_note' => 'Un message Slack sera envoyé', - 'slack_test_msg' => 'Woohoo ! On dirait que votre intégration Slack -> Snipe-IT fonctionne !', + 'webhook_msg_note' => 'Une notification sera envoyée via le webhook', + 'webhook_test_msg' => 'Woohoo ! Il semble que votre intégration :app vers Snipe-IT fonctionne !', 'some_features_disabled' => 'MODE DEMO: Certaines fonctionnalités sont désactivées pour cette installation.', 'site_name' => 'Nom du Site', 'state' => 'État', @@ -253,12 +267,11 @@ return [ 'sure_to_delete' => 'Êtes-vous sûr de vouloir supprimer ?', 'submit' => 'Soumettre', 'target' => 'Cible', - 'toggle_navigation' => 'Basculer la navigation', 'time_and_date_display' => 'Affichage de l\'heure et de la date', 'total_assets' => 'actifs au total', 'total_licenses' => 'licences au total', 'total_accessories' => 'accessoires au total', - 'total_consumables' => 'fournitures au total', + 'total_consumables' => 'consommables totaux', 'type' => 'Type ', 'undeployable' => 'Non déployable', 'unknown_admin' => 'Admin inconnu', @@ -281,9 +294,9 @@ return [ 'yes' => 'Oui', 'zip' => 'Code postal', 'noimage' => 'Aucune image envoyée ou aucune image trouvée.', - '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' => 'Le fichier demandé n\'existe pas sur le serveur.', + 'file_upload_success' => 'Fichier téléversé avec succès !', + 'no_files_uploaded' => 'Fichier téléversé avec succès !', 'token_expired' => 'La session de votre formulaire a expiré. Merci d\'essayer à nouveau.', 'login_enabled' => 'Connexion activée', 'audit_due' => 'Dû pour l\'audit', @@ -317,7 +330,7 @@ return [ 'last_checkout' => 'Dernière affectation', 'due_to_checkin' => 'Les :count éléments suivants doivent bientôt être restitués:', 'expected_checkin' => 'Date de restitution prévue', - 'reminder_checked_out_items' => 'Ceci est un rappel des éléments associés à votre compte. Si vous pensez que cette liste est erronée (un article est manquant, ou quelque chose apparaît que vous n\'avez jamais eu), merci d\'adresser un courriel à :reply_to_name à l\'adresse :reply_to_adress.', + 'reminder_checked_out_items' => 'Ceci est un rappel des éléments associés à votre compte. Si vous pensez que cette liste est erronée (un article est manquant, ou quelque chose apparaît que vous n\'avez jamais eu), merci d\'adresser un courriel à :reply_to_name à l\'adresse :reply_to_address.', 'changed' => 'Modifié', 'to' => 'À', 'report_fields_info' => '

Merci de sélectionner les champs que vous souhaitez inclure dans votre rapport personnalisé, puis cliquez sur Générer. Le fichier (custom-asset-report-AAAA-MM-JJ.csv) sera télécharger automatiquement, et vous pourrrez l\'ouvrir dans Excel.

@@ -375,18 +388,65 @@ return [ 'bulk_soft_delete' =>'Supprimer ces utilisateurs également. Leur historique de matériel restera intact jusqu\'à ce que vous les supprimiez définitivement depuis le panneau de configuration de l\'administrateur.', 'bulk_checkin_delete_success' => 'Les utilisateurs sélectionnés ont été supprimés et leurs matériels ont été dissociés.', 'bulk_checkin_success' => 'Les articles des utilisateurs sélectionnés ont été dissociés.', - 'set_to_null' => 'Supprimer des valeurs pour ce matériel|Supprimer des valeurs pour :asset_count matériels ', + 'set_to_null' => 'Supprimer des valeurs pour ce matériel|Supprimer des valeurs pour :asset_count matériels ', + 'set_users_field_to_null' => 'Supprimer les valeurs du champ :field pour cet·te utilisateur·trice|Supprimer les valeurs du champ :field pour les :user_count utilisateurs·trices ', 'na_no_purchase_date' => 'NC - Pas de date d\'achat renseignée', 'assets_by_status' => 'Matériels par statut', 'assets_by_status_type' => 'Matériels par type de status', 'pie_chart_type' => 'Type de diagramme circulaire', 'hello_name' => 'Bonjour, :name!', 'unaccepted_profile_warning' => 'Vous avez :count article(s) en cours d\'acceptation. Merci de cliquer ici pour valider ou refuser leur emprunt', - 'start_date' => 'Start Date', - 'end_date' => 'End Date', - 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + 'start_date' => 'Date de début', + 'end_date' => 'Date de fin', + 'alt_uploaded_image_thumbnail' => 'Miniature téléchargée', + 'placeholder_kit' => 'Sélectionnez un kit', + 'file_not_found' => 'Fichier non trouvé', + 'preview_not_available' => '(aucun aperçu)', + 'setup' => 'Configuration', + 'pre_flight' => 'Pre-Flight', + 'skip_to_main_content' => 'Passer au contenu principal', + 'toggle_navigation' => 'Activer/Désactiver la navigation', + 'alerts' => 'Alertes', + 'tasks_view_all' => 'Afficher toutes les tâches', + 'true' => 'Vrai', + 'false' => 'Faux', + 'integration_option' => 'Option d\'intégration', + 'log_does_not_exist' => 'Aucun enregistrement de log correspondant.', + 'merge_users' => 'Fusionner les utilisateurs', + 'merge_information' => 'Cela fusionnera les :count utilisateurs en un seul utilisateur. Sélectionnez ci-dessous l\'utilisateur dans lequel vous souhaitez fusionner les autres. Les ressources, licences associées, etc seront déplacées vers l\'utilisateur sélectionné et les autres utilisateurs seront marqués comme supprimés.', + 'warning_merge_information' => 'Cette action NE PEUT PAS être annulée et ne devrait être utilisée que lorsque vous devez fusionner des utilisateurs à cause d\'une mauvaise importation ou d\'une mauvaise synchronisation. Assurez-vous d\'effectuer une sauvegarde d\'abord.', + 'no_users_selected' => 'Aucun utilisateur sélectionné', + 'not_enough_users_selected' => 'Au moins :count utilisateurs doivent être sélectionnés', + 'merge_success' => ':count utilisateurs fusionnés avec succès dans :into_username !', + 'merged' => 'fusionné', + 'merged_log_this_user_into' => 'Utilisateur fusionné (ID :to_id - :to_username) dans l\'ID de l\'utilisateur :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Identifiant utilisateur fusionné :from_id (:from_username) dans cet utilisateur (ID :to_id - :to_username)', + 'clear_and_save' => 'Effacer et enregistrer', + 'update_existing_values' => 'Mettre à jour les valeurs existantes ?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La génération de numéros d\'inventaire autoincrémentés est désactivée, toutes les lignes doivent donc avoir la colonne "Numéro d\'inventaire" renseignée.', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Note : La génération de numéros d\'inventaire autoincrémentés est activée, de sorte que les actifs seront créés pour les lignes qui n\'ont pas de numéro d\'inventaire renseigné. Les lignes qui comprennent un numéro d\'inventaire seront mises à jour avec les informations fournies.', + 'send_welcome_email_to_users' => ' Envoyer un e-mail de bienvenue aux nouveaux·elles utilisateurs·trices ?', + 'back_before_importing' => 'Sauvegarder avant d\'importer ?', + 'csv_header_field' => 'Champ d\'en-tête CSV', + 'import_field' => 'Importer le champ', + 'sample_value' => 'Exemple de valeur', + 'no_headers' => 'Aucune colonne trouvée', + 'error_in_import_file' => 'Une erreur s\'est produite lors de la lecture du fichier CSV : :error', + 'percent_complete' => ':percent % achevé', + 'errors_importing' => 'Des erreurs se sont produites lors de l\'importation : ', + 'warning' => 'ATTENTION : :warning', + 'success_redirecting' => '"Succès... Redirection.', + 'setup_successful_migrations' => 'Vos tables de base de données ont été créées', + 'setup_migration_output' => 'Sortie de migration :', + 'setup_migration_create_user' => 'Étape suivante : créer un·e utilisateur·trice', + 'importer_generic_error' => 'L\'importation de votre fichier est terminée, mais nous avons reçu une erreur. Cela est généralement dû à la limitation d\'une API tierce à partir d\'un webhook de notification (tel que Slack) et n\'aurait pas interféré avec l\'importation elle-même, mais vous devez le confirmer.', + 'confirm' => 'Valider', + 'autoassign_licenses' => 'Attribuer les licences automatiquement', + 'autoassign_licenses_help' => 'Autoriser l\'utilisateur·trice à se voir attribuer des licences via l\'outil d\'attribution de licence en volume ou bien via l\'outil CLI.', + 'autoassign_licenses_help_long' => 'Cela permet à un·e utilisateur·trice de se voir attribuer des licences via l\'interface utilisateur de licence d\'attribution en masse ou les outils CLI. (Par exemple, vous ne souhaitez peut-être pas que les sous-traitants se voient attribuer automatiquement une licence que vous fourniriez uniquement aux membres du personnel. Vous pouvez toujours attribuer des licences individuellement à ces utilisateurs·trices, mais iels ne seront pas inclus·es dans les fonctions d\'attribution de licence à tous·tes les utilisateurs·trices.)', + 'no_autoassign_licenses_help' => 'Ne pas inclure l\'utilisateur·trice dans l\'attribution groupée via l\'interface utilisateur de licence ou les outils CLI.', + 'modal_confirm_generic' => 'Êtes-vous sûr·e ?', + 'cannot_be_deleted' => 'Cet élément ne peut pas être supprimé', + 'undeployable_tooltip' => 'Cet élément ne peut pas être attribué. Vérifiez la quantité restante.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/fr/help.php b/resources/lang/fr/help.php index 3a5abaf9ae..63c564be44 100644 --- a/resources/lang/fr/help.php +++ b/resources/lang/fr/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Plus d\'info', - 'audit_help' => 'Cocher cette case va modifier l\'enregistrement de la ressource pour refléter ce nouvel emplacement. Laisser décoché notera simplement l\'emplacement dans le journal d\'audit.

Notez que cette ressource est vérifiée, elle ne changera pas l\'emplacement de la personne, de la ressource ou de l\'emplacement où elle est vérifiée.', + 'audit_help' => 'Cocher cette case va modifier l\'enregistrement de l\'actif pour refléter ce nouvel emplacement. Laisser décoché notera simplement l\'emplacement dans le journal d\'audit.

Notez que si cette ressource est affectée, cela ne changera pas l\'emplacement de la personne, de la ressource ou de l\'emplacement auquel elle est affectée.', 'assets' => 'Les actifs sont des éléments suivis par le numéro de série ou la balise d\'actif. Ils ont tendance à être des éléments de valeur plus élevée lorsque l\'identification d\'un élément spécifique importe.', diff --git a/resources/lang/fr/localizations.php b/resources/lang/fr/localizations.php index 2de098b770..a58c7aaabd 100644 --- a/resources/lang/fr/localizations.php +++ b/resources/lang/fr/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Écosse', 'SB'=>'Îles Salomon', 'SC'=>'Seychelles', + 'SS'=>'Soudan du Sud', 'SD'=>'Soudan', 'SE'=>'Suède', 'SG'=>'Singapour', diff --git a/resources/lang/fr/mail.php b/resources/lang/fr/mail.php index 5e6e606841..0d74de3464 100644 --- a/resources/lang/fr/mail.php +++ b/resources/lang/fr/mail.php @@ -3,8 +3,8 @@ return [ 'acceptance_asset_accepted' => 'Un utilisateur a accepté un article', 'acceptance_asset_declined' => 'Un utilisateur a refusé un article', - 'a_user_canceled' => 'Un utilisateur a annulé une commande d’article sur le site Web', - 'a_user_requested' => 'Un utilisateur a commandé un article sur le site Web', + 'a_user_canceled' => 'Un·e utilisateur·trice a annulé une demande d’article sur le site Web', + 'a_user_requested' => 'Un·e utilisateur·trice a demandé un article sur le site Web', 'accessory_name' => 'Nom de l’accessoire :', 'additional_notes' => 'Notes complémentaires :', 'admin_has_created' => 'Un administrateur a créé un compte pour vous sur le site :web.', @@ -38,11 +38,12 @@ return [ 'i_have_read' => 'J\'ai bien lu et approuvé les conditions d\'utilisation, et reçu cet objet.', 'item' => 'Article :', 'Item_Request_Canceled' => 'Demande d\'article annulée', - 'Item_Requested' => 'Demande d\'article', + 'Item_Requested' => 'Article demandé', 'link_to_update_password' => 'Veuillez cliquer sur le lien suivant pour confirmer votre :web account:', 'login_first_admin' => 'Connectez-vous à votre nouvelle installation Snipe-IT en utilisant les informations d\'identification ci-dessous :', 'login' => 'Nom d\'utilisateur:', 'Low_Inventory_Report' => 'Rapport d’inventaire bas', + 'inventory_report' => 'Rapport d\'inventaire', 'min_QTY' => 'Quantité minimum', 'name' => 'Nom', 'new_item_checked' => 'Un nouvel élément a été vérifié sous votre nom, les détails sont ci-dessous.', @@ -51,7 +52,7 @@ return [ 'read_the_terms' => 'Merci de lire les conditions d\'utilisation ci-dessous.', 'read_the_terms_and_click' => 'Merci de lire les conditions d\'utilisation ci-dessous, et cliquer sur le lien ci-dessous pour confirmer que vous avez lu et accepté les conditions d\'utilisation et reçu l\'équipement.', - 'requested' => 'Demandé:', + 'requested' => 'Demandé :', 'reset_link' => 'Votre lien pour réinitialiser le mot de passe', 'reset_password' => 'Cliquez ici pour réinitialiser votre mot de passe:', 'serial' => 'N° de série ', @@ -72,10 +73,12 @@ return [ 'welcome_to' => 'Bienvenue sur :web!', 'your_credentials' => 'Vos identifiants Snipe-IT', 'Accessory_Checkin_Notification' => 'Accessoire enregistré', - 'Asset_Checkin_Notification' => 'Matériel enregistré', + 'Asset_Checkin_Notification' => 'Actif restitué', + 'Asset_Checkout_Notification' => 'Actif affecté', 'License_Checkin_Notification' => 'Licence enregistrée', 'Expected_Checkin_Report' => 'Rapport de vérification de matériel attendu', 'Expected_Checkin_Notification' => 'Rappel : la date limite de vérification de :name approche', 'Expected_Checkin_Date' => 'Un matériel que vous avez emprunté doit être vérifié à nouveau le :date', 'your_assets' => 'Voir vos matériels', + 'rights_reserved' => 'Tous droits réservés.', ]; diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index 01b3c6a93c..0ed774f9ca 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'L\'attribut: doit être un fichier.', 'filled' => 'Le champ d\'attribut: doit avoir une valeur.', 'image' => 'L\'attribut ":attribute" doit être une image.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + '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.', @@ -67,6 +67,8 @@ return [ 'array' => 'L\'attribut: doit avoir au moins: éléments min.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Votre mot de passe actuel est incorrect', 'dumbpwd' => 'Ce mot de passe est trop commun.', 'statuslabel_type' => 'Vous devez sélectionner un type d\'étiquette de statut valide', + + // 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 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', + 'termination_date.date_format' => ':attribute doit être une date valide au format AAAA-MM-JJ', + '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', + ], /* diff --git a/resources/lang/ga-IE/admin/accessories/general.php b/resources/lang/ga-IE/admin/accessories/general.php index 1d72028720..caf32b034d 100644 --- a/resources/lang/ga-IE/admin/accessories/general.php +++ b/resources/lang/ga-IE/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Nuashonraigh Cúlpháirtí', 'use_default_eula' => 'Bain úsáid as an réamhshocraithe réamhshocrú EULA ina ionad.', 'use_default_eula_disabled' => 'Cuir an príomh-réamhshocraithe EULA in ionad. Níl aon réamhshocraithe EULA leagtha síos. Cuir ceann amháin i Socruithe le do thoil.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/ga-IE/admin/accessories/message.php b/resources/lang/ga-IE/admin/accessories/message.php index d7f58c60c7..d13a2b3963 100644 --- a/resources/lang/ga-IE/admin/accessories/message.php +++ b/resources/lang/ga-IE/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/ga-IE/admin/asset_maintenances/form.php b/resources/lang/ga-IE/admin/asset_maintenances/form.php index 8eae40a843..4eb9902e91 100644 --- a/resources/lang/ga-IE/admin/asset_maintenances/form.php +++ b/resources/lang/ga-IE/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Cineál Cothabhála', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Teideal', - 'start_date' => 'Tosaithe', - 'completion_date' => 'Críochnaithe', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Costas', 'is_warranty' => 'Feabhas ar bharántas', - 'asset_maintenance_time' => 'Laethanta', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Nótaí', - 'update' => 'Nuashonrú', - 'create' => 'Cruthaigh' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/ga-IE/admin/categories/message.php b/resources/lang/ga-IE/admin/categories/message.php index 374feec79e..4edc669d7c 100644 --- a/resources/lang/ga-IE/admin/categories/message.php +++ b/resources/lang/ga-IE/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Níor nuashonraíodh an chatagóir, déan iarracht arís', - 'success' => 'Catagóir nuashonraithe go rathúil.' + 'success' => 'Catagóir nuashonraithe go rathúil.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/ga-IE/admin/components/general.php b/resources/lang/ga-IE/admin/components/general.php index 83e3f4e358..2ca4888906 100644 --- a/resources/lang/ga-IE/admin/components/general.php +++ b/resources/lang/ga-IE/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Ag fágáil', 'total' => 'Iomlán', 'update' => 'Comhpháirt Nuashonraithe', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/ga-IE/admin/components/message.php b/resources/lang/ga-IE/admin/components/message.php index c84b014629..644075c5a7 100644 --- a/resources/lang/ga-IE/admin/components/message.php +++ b/resources/lang/ga-IE/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Níor sheiceáil amach an comhpháirt, déan iarracht arís', 'success' => 'Seiceáil amach an comhpháirt go rathúil.', - '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.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/ga-IE/admin/consumables/message.php b/resources/lang/ga-IE/admin/consumables/message.php index b6add857ad..785258fb7b 100644 --- a/resources/lang/ga-IE/admin/consumables/message.php +++ b/resources/lang/ga-IE/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Níor sheiceáil amach an méid inmhuirearaithe, déan iarracht arís', 'success' => 'Seiceáil inbhuanaithe go rathúil.', - '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.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/ga-IE/admin/custom_fields/general.php b/resources/lang/ga-IE/admin/custom_fields/general.php index 18eb8caec1..4fb5a4ab89 100644 --- a/resources/lang/ga-IE/admin/custom_fields/general.php +++ b/resources/lang/ga-IE/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Úsáidte trí Mhúnlaí', 'order' => 'Ordú', 'create_fieldset' => 'New Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Réimse Nua Chustaim', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/ga-IE/admin/groups/message.php b/resources/lang/ga-IE/admin/groups/message.php index 1589ad531f..036a3f1e9e 100644 --- a/resources/lang/ga-IE/admin/groups/message.php +++ b/resources/lang/ga-IE/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Tá grúpa ann cheana!', - 'group_not_found' => 'Níl grúpa [: id] ann.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Tá an réimse ainmnithe ag teastáil', 'success' => array( diff --git a/resources/lang/ga-IE/admin/hardware/form.php b/resources/lang/ga-IE/admin/hardware/form.php index 711e3042a7..dbfde2c976 100644 --- a/resources/lang/ga-IE/admin/hardware/form.php +++ b/resources/lang/ga-IE/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Dearbhaigh Bulk Sócmhainní a Scriosadh', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Athbhreithniú a dhéanamh ar na sócmhainní le haghaidh scriosadh mórchóir thíos. Nuair a bheidh sé scriosta, is féidir na sócmhainní seo a chur ar ais, ach ní bheidh baint acu le haon úsáideoirí a bhfuil siad á sannadh faoi láthair.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Tá tú ar tí a scriosadh: sócmhainní asset_count.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Sócmhainní Nuashonraithe Bulc', 'bulk_update_help' => 'Ceadaíonn an fhoirm seo duit il-sócmhainní a thabhairt cothrom le dáta ag an am céanna. Líon isteach na réimsí is gá duit a athrú ach amháin. Ní dhéanfar aon réimsí fágtha gan athrú.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/ga-IE/admin/hardware/general.php b/resources/lang/ga-IE/admin/hardware/general.php index 8d3df87687..9e3bb863a4 100644 --- a/resources/lang/ga-IE/admin/hardware/general.php +++ b/resources/lang/ga-IE/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Athraigh Sócmhainn', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Inrianaithe', 'requested' => 'Iarrtar', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Athchóirigh Sócmhainn', 'pending' => 'Ar feitheamh', 'undeployable' => 'Neamhfhostaithe', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Féach Sócmhainn', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/ga-IE/admin/hardware/message.php b/resources/lang/ga-IE/admin/hardware/message.php index eb5f910dde..10d999e6bf 100644 --- a/resources/lang/ga-IE/admin/hardware/message.php +++ b/resources/lang/ga-IE/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Níor cuireadh an tsócmhainn ar ais, déan iarracht arís', 'success' => 'Aisghabháil sócmhainne go rathúil.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'Tá do chomhad iompórtáilte', 'file_delete_success' => 'Tá do chomhad scriosta go rathúil', 'file_delete_error' => 'Níorbh fhéidir an comhad a scriosadh', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/ga-IE/admin/hardware/table.php b/resources/lang/ga-IE/admin/hardware/table.php index 9cad6351a6..88851460a3 100644 --- a/resources/lang/ga-IE/admin/hardware/table.php +++ b/resources/lang/ga-IE/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In / Amach', 'checkout_date' => 'Dáta Seiceáil', 'checkoutto' => 'Seiceáil Amach', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Íoslódáil CSV', diff --git a/resources/lang/ga-IE/admin/licenses/general.php b/resources/lang/ga-IE/admin/licenses/general.php index b67eda5593..6e20c5baa4 100644 --- a/resources/lang/ga-IE/admin/licenses/general.php +++ b/resources/lang/ga-IE/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Maidir Ceadúnais', - 'about_licenses' => 'Úsáidtear ceadúnais chun bogearraí a rianú. Tá líon áirithe suíochán acu ar féidir iad a sheiceáil amach do dhaoine aonair', + 'about_licenses_title' => 'Maidir Ceadúnais', + 'about_licenses' => 'Úsáidtear ceadúnais chun bogearraí a rianú. Tá líon áirithe suíochán acu ar féidir iad a sheiceáil amach do dhaoine aonair', 'checkin' => 'Suíochán Ceadúnas Checkin', 'checkout_history' => 'Stair Seiceáil', 'checkout' => 'Seiceáil Ceadúnas Seiceáil', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Ceadúnais Bogearraí', 'user' => 'Úsáideoir', 'view' => 'Féach ar an gCeadúnas', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/ga-IE/admin/manufacturers/message.php b/resources/lang/ga-IE/admin/manufacturers/message.php index e861d4b6de..bdadbf22ef 100644 --- a/resources/lang/ga-IE/admin/manufacturers/message.php +++ b/resources/lang/ga-IE/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Níl an monaróir ann.', 'assoc_users' => 'Tá baint ag an monaróir seo faoi láthair le múnla amháin ar a laghad agus ní féidir é a scriosadh. Nuashonraigh do chuid samhlacha le do thoil gan tagairt a dhéanamh don monaróir seo agus déan iarracht arís.', diff --git a/resources/lang/ga-IE/admin/manufacturers/table.php b/resources/lang/ga-IE/admin/manufacturers/table.php index 612719dc26..3ec0352d76 100644 --- a/resources/lang/ga-IE/admin/manufacturers/table.php +++ b/resources/lang/ga-IE/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Ríomhphost Tacaíochta', 'support_phone' => 'Fón Tacaíochta', 'support_url' => 'URL Tacaíochta', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Déantóir Nuashonraithe', 'url' => 'URL', diff --git a/resources/lang/ga-IE/admin/models/general.php b/resources/lang/ga-IE/admin/models/general.php index 34b59aafea..7e677eccb2 100644 --- a/resources/lang/ga-IE/admin/models/general.php +++ b/resources/lang/ga-IE/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Múnla Athchóirigh', 'requestable' => 'Féadfaidh úsáideoirí an tsamhail seo a iarraidh', 'show_mac_address' => 'Taispeáin réimse seoladh MAC i sócmhainní sa mhúnla seo', diff --git a/resources/lang/ga-IE/admin/models/message.php b/resources/lang/ga-IE/admin/models/message.php index 2162bd5166..9e64f76d02 100644 --- a/resources/lang/ga-IE/admin/models/message.php +++ b/resources/lang/ga-IE/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Níl múnla ann.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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.', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Níor nuashonraíodh an tsamhail, déan iarracht arís', - 'success' => 'Modúl nuashonraithe go rathúil' + 'success' => 'Modúl nuashonraithe go rathúil', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Níor athraíodh aon réimsí, mar sin níor nuashonraíodh aon rud.', - 'success' => 'Modhanna nuashonraithe.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/ga-IE/admin/settings/general.php b/resources/lang/ga-IE/admin/settings/general.php index e5ddd84ad9..b30d883413 100644 --- a/resources/lang/ga-IE/admin/settings/general.php +++ b/resources/lang/ga-IE/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'Is freastalaí Gníomhach Eolaire é seo', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Seol foláirimh chuig', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Cumarsáid Cumarsáide', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Socruithe Barcode', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Socruithe LDAP', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Ainm an tSuímh', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Botharc Slack', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Dúnadh Deiridh', - 'slack_integration' => 'Socruithe Slack', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT leagan', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/ga-IE/admin/settings/message.php b/resources/lang/ga-IE/admin/settings/message.php index 7f8f1d7a45..54934d1929 100644 --- a/resources/lang/ga-IE/admin/settings/message.php +++ b/resources/lang/ga-IE/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/ga-IE/admin/users/general.php b/resources/lang/ga-IE/admin/users/general.php index 68bf55a48e..f566e2405b 100644 --- a/resources/lang/ga-IE/admin/users/general.php +++ b/resources/lang/ga-IE/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Bogearraí Seiceáil amach chuig: ainm', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Féach Úsáideoir: ainm', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/ga-IE/admin/users/message.php b/resources/lang/ga-IE/admin/users/message.php index 5ad9e10de7..54db6b157e 100644 --- a/resources/lang/ga-IE/admin/users/message.php +++ b/resources/lang/ga-IE/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Dhiúltaigh tú an tsócmhainn seo go rathúil.', 'bulk_manager_warn' => 'Rinneadh do chuid úsáideoirí a nuashonrú go rathúil, áfach, níor shábháil do iontráil bainisteora toisc go raibh an bainisteoir a roghnaigh tú chomh maith sa liosta úsáideora le bheith in eagar, agus b\'fhéidir nach mbainfeadh úsáideoirí a mbainisteoir féin. Roghnaigh d\'úsáideoirí arís, gan an bainisteoir a áireamh.', 'user_exists' => 'Úsáideoir ann cheana!', - 'user_not_found' => 'Ní Úsáideoir [: id] ann.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Is gá an réimse logála isteach', 'user_password_required' => 'Tá an focal faire ag teastáil.', 'insufficient_permissions' => 'Ceadanna Easpa.', diff --git a/resources/lang/ga-IE/auth/general.php b/resources/lang/ga-IE/auth/general.php index e13eb8826f..f4eef4a6af 100644 --- a/resources/lang/ga-IE/auth/general.php +++ b/resources/lang/ga-IE/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Cuimhnigh orm', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/ga-IE/general.php b/resources/lang/ga-IE/general.php index 8088e7f9b0..edf2be1d7b 100644 --- a/resources/lang/ga-IE/general.php +++ b/resources/lang/ga-IE/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accessories', 'activated' => 'Gníomhachtaithe', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Cúlpháirtí', 'accessory_report' => 'Tuarascáil Cúlpháirtí', 'action' => 'Gníomh', @@ -27,7 +28,13 @@ return [ 'audit' => 'Iniúchadh', 'audit_report' => 'Logáil Iniúchta', 'assets' => 'Sócmhainní', + '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', 'avatar_delete' => 'Scrios Avatar', 'avatar_upload' => 'Upload Upload', 'back' => 'Ar ais', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Cealaigh', 'categories' => 'Catagóirí', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Tá an t-iarratas seo á reáchtáil i mód táirgthe le cumas dífhabhtaithe. Féadfaidh sé seo sonraí íogaire a nochtadh má tá do iarratas inrochtana don domhan lasmuigh. Díchumasaigh an modh dífhabhtaithe trí luachanna APP_DEBUG a leagan amach i do chomhad .env chuig false.', 'delete' => 'Scrios', 'delete_confirm' => 'Are you sure you wish to delete :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Scriosta', 'delete_seats' => 'Suíocháin Scriosta', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Iompórtáil', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Feabhsúcháin Sócmhainní', 'item' => 'Mír', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Ceadanna leordhóthanach!', 'kits' => 'Predefined Kits', 'language' => 'Teanga', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Iarratas Ar Ceal', 'save' => 'Sábháil', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Roghnaigh', 'select_all' => 'Select All', 'search' => 'Cuardaigh', @@ -240,8 +254,8 @@ return [ 'signature' => 'Síniú', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'MODH DEMO: Tá gnéithe áirithe faoi mhíchumas don shuiteáil seo agus athshocróidh na sonraí sa chóras seo go laethúil.', 'site_name' => 'Ainm an tSuímh', 'state' => 'Stáit', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'An bhfuil tú cinnte gur mian leat a scriosadh', 'submit' => 'Cuir isteach', 'target' => 'Sprioc', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Taispeáin Am agus Dáta', 'total_assets' => 'sócmhainní iomlána', 'total_licenses' => 'ceadúnais iomlána', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/ga-IE/help.php b/resources/lang/ga-IE/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/ga-IE/help.php +++ b/resources/lang/ga-IE/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/ga-IE/localizations.php b/resources/lang/ga-IE/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/ga-IE/localizations.php +++ b/resources/lang/ga-IE/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/ga-IE/mail.php b/resources/lang/ga-IE/mail.php index 69273e2d86..d8721864a8 100644 --- a/resources/lang/ga-IE/mail.php +++ b/resources/lang/ga-IE/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Logáil isteach i do shuiteáil Snipe-IT nua ag baint úsáide as na dintiúir thíos:', 'login' => 'Logáil isteach:', 'Low_Inventory_Report' => 'Tuarascáil Fardal Íseal', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Ainm', 'new_item_checked' => 'Rinneadh mír nua a sheiceáil faoi d\'ainm, tá na sonraí thíos.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Do dhintiúir Snipe-IT', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/ga-IE/validation.php b/resources/lang/ga-IE/validation.php index 6769e03cdb..478b5a0f15 100644 --- a/resources/lang/ga-IE/validation.php +++ b/resources/lang/ga-IE/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Ní mór go mbeadh míreanna min ar a laghad ag an tréith.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Tá do phasfhocal reatha mícheart', 'dumbpwd' => 'Tá an focal faire sin ró-choitianta.', 'statuslabel_type' => 'Ní mór duit cineál lipéad stádas bailí a roghnú', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/he/account/general.php b/resources/lang/he/account/general.php index 7fc060a849..71d48b14b5 100644 --- a/resources/lang/he/account/general.php +++ b/resources/lang/he/account/general.php @@ -1,7 +1,7 @@ 'Personal API Keys', + '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.', 'api_base_url' => 'Your API base url is located at:', diff --git a/resources/lang/he/admin/accessories/general.php b/resources/lang/he/admin/accessories/general.php index a546cb5c22..e5ae4ead90 100644 --- a/resources/lang/he/admin/accessories/general.php +++ b/resources/lang/he/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'עידכון אביזר', 'use_default_eula' => 'במקום זאת, השתמש ב- ברירת המחדל הראשית EULA.', 'use_default_eula_disabled' => ' השתמש ב- EULA ברירת המחדל הראשוני במקום. לא נקבעה ברירת המחדל הראשית של הסכם הרישיון למשתמש קצה. הוסף אחד בהגדרות.', + 'clone' => 'שכפול אביזר', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/he/admin/accessories/message.php b/resources/lang/he/admin/accessories/message.php index 7b3c5281ea..aa3ae924bf 100644 --- a/resources/lang/he/admin/accessories/message.php +++ b/resources/lang/he/admin/accessories/message.php @@ -25,6 +25,7 @@ return array( 'checkout' => array( 'error' => 'האבזר לא הונפק, אנא נסה שנית', 'success' => 'האבזר הונפק בהצלחה.', + 'unavailable' => 'Accessory is not available for checkout. Check quantity available', 'user_does_not_exist' => 'משתמש אינו קיים. אנא נסה/י שנית.' ), diff --git a/resources/lang/he/admin/asset_maintenances/form.php b/resources/lang/he/admin/asset_maintenances/form.php index deb1b77821..7b1c46f221 100644 --- a/resources/lang/he/admin/asset_maintenances/form.php +++ b/resources/lang/he/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'סוג תחזוקה', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'כותרת', - 'start_date' => 'התחיל', - 'completion_date' => 'הושלם', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'מחיר', 'is_warranty' => 'שיפור באחריות', - 'asset_maintenance_time' => 'ימים', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'הערות', - 'update' => 'עדכון', - 'create' => 'לִיצוֹר' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/he/admin/categories/message.php b/resources/lang/he/admin/categories/message.php index 0508d5310b..c973ab1a59 100644 --- a/resources/lang/he/admin/categories/message.php +++ b/resources/lang/he/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'הקטגוריה לא עודכנה, נסה שוב', - 'success' => 'קטגוריה עודכנה בהצלחה.' + 'success' => 'קטגוריה עודכנה בהצלחה.', + 'cannot_change_category_type' => 'אי אפשר לשנות את סוג הקטגוריה לאחר יצירתה', ), 'delete' => array( diff --git a/resources/lang/he/admin/components/general.php b/resources/lang/he/admin/components/general.php index d7a924e490..49188b15e2 100644 --- a/resources/lang/he/admin/components/general.php +++ b/resources/lang/he/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'נוֹתָר', 'total' => 'סה"כ', 'update' => 'עדכון רכיב', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/he/admin/components/message.php b/resources/lang/he/admin/components/message.php index 32cb4c4fec..60f4805c1e 100644 --- a/resources/lang/he/admin/components/message.php +++ b/resources/lang/he/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'הרכיב לא נבדק, נסה שוב', 'success' => 'רכיב הוצא בהצלחה.', - 'user_does_not_exist' => 'משתמש זה אינו חוקי. בבקשה נסה שוב.' + 'user_does_not_exist' => 'משתמש זה אינו חוקי. בבקשה נסה שוב.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/he/admin/consumables/message.php b/resources/lang/he/admin/consumables/message.php index d4c2a78cf1..ccc2d23884 100644 --- a/resources/lang/he/admin/consumables/message.php +++ b/resources/lang/he/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'הצריכה לא נבדקה, נסה שוב', 'success' => 'הצריכה נשללה בהצלחה.', - 'user_does_not_exist' => 'משתמש זה אינו חוקי. בבקשה נסה שוב.' + 'user_does_not_exist' => 'משתמש זה אינו חוקי. בבקשה נסה שוב.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/he/admin/custom_fields/general.php b/resources/lang/he/admin/custom_fields/general.php index b6464ceaf8..2b3aa49cb5 100644 --- a/resources/lang/he/admin/custom_fields/general.php +++ b/resources/lang/he/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'דגמים משומשים', 'order' => 'להזמין', 'create_fieldset' => 'שדה חדש', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'שדה מותאם אישית חדש', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'ייחודי', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/he/admin/groups/message.php b/resources/lang/he/admin/groups/message.php index 949d1754a6..aa57f7b8b2 100644 --- a/resources/lang/he/admin/groups/message.php +++ b/resources/lang/he/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'הקבוצה כבר קיימת!', - 'group_not_found' => 'קבוצה [: id] לא קיימת.', + 'group_not_found' => 'מזהה הקבוצה :id לא קיים.', 'group_name_required' => 'שדה השדה נדרש', 'success' => array( diff --git a/resources/lang/he/admin/hardware/form.php b/resources/lang/he/admin/hardware/form.php index 4e9828a4e3..ca18936f94 100644 --- a/resources/lang/he/admin/hardware/form.php +++ b/resources/lang/he/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'אשר מחיקה גורפת של נכסים', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'עיין בנכסים למחיקה בכמות גדולה בהמשך. לאחר המחיקה, ניתן לשחזר נכסים אלה, אך הם לא יהיו משויכים עוד עם משתמשים שאליהם הם מוקצים כעת.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'אתה עומד למחוק את הנכסים: asset_count.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'עדכון גורפת נכסים', 'bulk_update_help' => 'טופס זה מאפשר לך לעדכן מספר נכסים בבת אחת. מלא רק את השדות שאתה צריך לשנות. כל השדות שנותרו ריקים יישארו ללא שינוי.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'עדכן מיקום ברירת מחדל', 'asset_not_deployable' => 'הנכס הזה לא זמין. לא ניתן לספק ללקוח.', 'asset_deployable' => 'הנכס זמין. ניתן לשייך למיקום.', - 'processing_spinner' => 'מעבד...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/he/admin/hardware/general.php b/resources/lang/he/admin/hardware/general.php index ab45bd1b85..0e144efcc7 100644 --- a/resources/lang/he/admin/hardware/general.php +++ b/resources/lang/he/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'הנכס הזה נמחק.', 'edit' => 'ערוך נכס', 'model_deleted' => 'המודל של הנכס נמחק. יש לשחזר את המודל לפני שניתן לשחזר את הנכס.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'ניתן לבקש', 'requested' => 'מבוקש', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'שחזור נכס', 'pending' => 'ממתין ל', 'undeployable' => 'לא ניתן לפריסה', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'הצג נכס', 'csv_error' => 'קיימת שגיאה בקובץ ה-CSV שלך:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'שגיאות:', 'success_messages' => 'אישור:', 'alert_details' => 'נא ראה הסבר בהמשך.', - 'custom_export' => 'יבוא מותאם' + 'custom_export' => 'יבוא מותאם', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/he/admin/hardware/message.php b/resources/lang/he/admin/hardware/message.php index 95e9d96981..5259805458 100644 --- a/resources/lang/he/admin/hardware/message.php +++ b/resources/lang/he/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'הנכס לא שוחזר, נסה שוב', 'success' => 'הנכס שוחזר בהצלחה.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'הקובץ שלך יובא', 'file_delete_success' => 'הקובץ שלך נמחק בהצלחה', 'file_delete_error' => 'לא ניתן היה למחוק את הקובץ', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/he/admin/hardware/table.php b/resources/lang/he/admin/hardware/table.php index 9312732ffd..f2dbbd63b9 100644 --- a/resources/lang/he/admin/hardware/table.php +++ b/resources/lang/he/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'בפנים בחוץ', 'checkout_date' => 'תבדוק את התאריך', 'checkoutto' => 'נבדק', + 'components_cost' => 'עלות הרכיבים הכוללת', 'current_value' => 'הערך הנוכחי', 'diff' => 'דיף', 'dl_csv' => 'הורד CSV', diff --git a/resources/lang/he/admin/licenses/general.php b/resources/lang/he/admin/licenses/general.php index 7e968671ab..c9093c7e45 100644 --- a/resources/lang/he/admin/licenses/general.php +++ b/resources/lang/he/admin/licenses/general.php @@ -1,8 +1,8 @@ 'על רישיונות', - 'about_licenses' => 'רשיונות משמשים למעקב אחר תוכנה. יש להם מספר מסוים של מושבים כי ניתן לבדוק את הפרטים', + 'about_licenses_title' => 'על רישיונות', + 'about_licenses' => 'רשיונות משמשים למעקב אחר תוכנה. יש להם מספר מסוים של מושבים כי ניתן לבדוק את הפרטים', 'checkin' => 'רישיון רישיון', 'checkout_history' => 'היסטוריית Checkout', 'checkout' => 'רישיון', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'רשיונות תוכנה', 'user' => 'מִשׁתַמֵשׁ', 'view' => 'הצג רישיון', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/he/admin/locations/message.php b/resources/lang/he/admin/locations/message.php index 305ecad24f..e748eedc18 100644 --- a/resources/lang/he/admin/locations/message.php +++ b/resources/lang/he/admin/locations/message.php @@ -7,7 +7,7 @@ return array( 'assoc_assets' => 'המיקום משויך לפחות לפריט אחד ולכן לא ניתן למחוק אותו. אנא עדכן את הפריטים כך שלא יהיה אף פריט משויך למיקום זה ונסה שנית. ', 'assoc_child_loc' => 'למיקום זה מוגדרים תתי-מיקומים ולכן לא ניתן למחוק אותו. אנא עדכן את המיקומים כך שלא שמיקום זה לא יכיל תתי מיקומים ונסה שנית. ', 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'current_location' => 'מיקום נוכחי', 'create' => array( diff --git a/resources/lang/he/admin/manufacturers/message.php b/resources/lang/he/admin/manufacturers/message.php index 200f079ccd..0d534fb249 100644 --- a/resources/lang/he/admin/manufacturers/message.php +++ b/resources/lang/he/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'היצרן אינו קיים.', 'assoc_users' => 'יצרן זה משויך כרגע עם דגם אחד לפחות ולא ניתן למחוק אותו. אנא עדכן את הדגמים שלך כדי לא להתייחס עוד ליצרן זה ונסה שוב.', diff --git a/resources/lang/he/admin/manufacturers/table.php b/resources/lang/he/admin/manufacturers/table.php index d788333f4e..97907a4d25 100644 --- a/resources/lang/he/admin/manufacturers/table.php +++ b/resources/lang/he/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'דוא"ל תמיכה', 'support_phone' => 'טלפון תמיכה', 'support_url' => 'כתובת אתר לתמיכה', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'עדכון היצרן', 'url' => 'כתובת אתר', diff --git a/resources/lang/he/admin/models/general.php b/resources/lang/he/admin/models/general.php index cbb6dd4e58..4b710b7799 100644 --- a/resources/lang/he/admin/models/general.php +++ b/resources/lang/he/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'שחזור מודל', 'requestable' => 'משתמשים רשאים לבקש מודל זה', 'show_mac_address' => 'הצג שדה כתובת MAC בנכסים במודל זה', diff --git a/resources/lang/he/admin/models/message.php b/resources/lang/he/admin/models/message.php index 227ba73f87..2de9f5f37d 100644 --- a/resources/lang/he/admin/models/message.php +++ b/resources/lang/he/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'המודל אינו קיים.', + 'no_association' => 'NO MODEL ASSOCIATED.', + 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'מודל זה משויך כרגע לנכס אחד או יותר ולא ניתן למחוק אותו. מחק את הנכסים ולאחר מכן נסה למחוק שוב.', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'המודל לא עודכן, נסה שוב', - 'success' => 'המודל עודכן בהצלחה.' + 'success' => 'המודל עודכן בהצלחה.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'לא השתנו שדות, ולכן שום דבר לא עודכן.', - 'success' => 'המודלים עודכנו.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'לא נבחרו מודלים, לכן לא נמחק שום דבר.', - 'success' => ':success_count מודלים נמחקו!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/he/admin/settings/general.php b/resources/lang/he/admin/settings/general.php index 48a31b0bd1..19e4f739a8 100644 --- a/resources/lang/he/admin/settings/general.php +++ b/resources/lang/he/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'זהו שרת Active Directory', 'alerts' => 'התראות', - 'alert_title' => 'עדכן הגדרות התראה', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'שלח התראות אל', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'התראות מופעלות', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'משחזר מגיבוי', 'backups_upload' => 'העלה גיבוי', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'הגדרות ברקוד', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'הגדרות LDAP', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'שם אתר', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'שם בוטני', - 'slack_channel' => 'ערוץ רפה', - 'slack_endpoint' => 'נקודת הקצה המרוחקת', - 'slack_integration' => 'הגדרות רפוי', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT גירסה', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/he/admin/settings/message.php b/resources/lang/he/admin/settings/message.php index e5531735ab..e7bf4d8a20 100644 --- a/resources/lang/he/admin/settings/message.php +++ b/resources/lang/he/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'בודק אימות מול שרת LDAP...', 'authentication_success' => 'התחברות לשרת LDAפ עברה בהצלחה!' ], - 'slack' => [ - 'sending' => 'שולח הודעת Slack לבדיקה...', - 'success_pt1' => 'הבדיקה עברה בהצלחה! בדוק את ', + 'webhook' => [ + 'sending' => 'Sending :app test message...', + 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', - '500' => '500 שגיאת שרת.', - 'error' => 'משהו השתבש אופסי פופסי.', + '500' => '500 Server Error.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/he/admin/users/general.php b/resources/lang/he/admin/users/general.php index dff4d63267..59633cc37a 100644 --- a/resources/lang/he/admin/users/general.php +++ b/resources/lang/he/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'התוכנה נבדקה אל: שם', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'הצג משתמש: שם', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'אזהרה:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/he/admin/users/message.php b/resources/lang/he/admin/users/message.php index 7bb42a1898..3bfad2d61b 100644 --- a/resources/lang/he/admin/users/message.php +++ b/resources/lang/he/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'דחיית את הנכס הזה בהצלחה.', 'bulk_manager_warn' => 'המשתמשים שלך עודכנו בהצלחה, אך רשומת המנהל שלך לא נשמרה מפני שהמנהל שבחרת נבחר גם ברשימת המשתמשים כדי לערוך, והמשתמשים לא יכולים להיות המנהל שלהם. בחר שוב את המשתמשים שלך, למעט המנהל.', 'user_exists' => 'משתמש כבר קיים!', - 'user_not_found' => 'משתמש [: id] אינו קיים.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'יש להזין את שדה הכניסה', 'user_password_required' => 'נדרשת הסיסמה.', 'insufficient_permissions' => 'הרשאות לא מספיקות.', diff --git a/resources/lang/he/auth/general.php b/resources/lang/he/auth/general.php index 9f1612ffce..5ca1457b3a 100644 --- a/resources/lang/he/auth/general.php +++ b/resources/lang/he/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'זכור אותי', 'username_help_top' => 'נא למלא את שם המשתמש לשליחת הודעת דוא״ל עם קישור לאיפוס ססמה.', 'username_help_bottom' => 'שם המשתמש וכתובת הדוא״ל שלך עשויים להיות זהים, אך גם עשויים שלא, תלוי בהגדרות שלך. אם לא הצלחת להיזכר בשם המשתמש שלך, מוטב ליצור קשר עם הנהלת המערכת.

שמות משתמשים שלא שויכה להם כתובת דוא״ל לא יקבלו הודעות עם קישור לאיפוס ססמה. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/he/general.php b/resources/lang/he/general.php index 2f4dbec371..bf87b166f3 100644 --- a/resources/lang/he/general.php +++ b/resources/lang/he/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'אביזרים', 'activated' => 'מוּפעָל', + 'accepted_date' => 'Date Accepted', 'accessory' => 'אבזר', 'accessory_report' => 'דוח אביזר', 'action' => 'פעולה', @@ -27,7 +28,13 @@ return [ 'audit' => 'בְּדִיקָה', 'audit_report' => 'יומן ביקורת', 'assets' => 'נכסים', + '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' => 'הוקצה לטובת :name', + 'assignee' => 'Assigned to', 'avatar_delete' => 'מחק את אווטר', 'avatar_upload' => 'העלה את הסמל', 'back' => 'חזור', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'עריכה גורפת', 'bulk_delete' => 'מחיקה גורפת', 'bulk_actions' => 'פעולות גורפות', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'לפי סטאטוס', 'cancel' => 'לְבַטֵל', 'categories' => 'קטגוריות', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'יישום זה פועל במצב ייצור עם איתור באגים. זה יכול לחשוף נתונים רגישים אם היישום שלך נגיש לעולם החיצון. השבת את מצב איתור הבאגים על ידי הגדרת הערך APP_DEBUG בקובץ .env ל false.', 'delete' => 'לִמְחוֹק', 'delete_confirm' => 'האם אתה בטוח שברצונך למחוק?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'נמחק', 'delete_seats' => 'מושבים שנמחקו', 'deletion_failed' => 'המחיקה נכשלה', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'סוגי קובץ אפשריים הם :types. גודל קובץ אפשרי מקסימלי:size.', 'filetypes_size_help' => 'גודל קובץ מותר הוא :size.', 'image_filetypes_help' => 'סוגי הקבצים המותרים הם jpg,‏ webp,‏ png,‏ gif ו־svg. גודל ההעלאה המרבי המותר הוא :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' => 'יְבוּא', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'אחזקת נכסים', 'item' => 'פריט', 'item_name' => 'שם פריט', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'הרשאות לא מספיקות!', 'kits' => 'ערכות מוגדרות מראש', 'language' => 'שפה', @@ -168,7 +181,7 @@ return [ 'logout' => 'להתנתק', 'lookup_by_tag' => 'בדיקה על ידי תג הנכס', 'maintenances' => 'אירועי תחזוקה', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'נהל מפתחות API', 'manufacturer' => 'יַצרָן', 'manufacturers' => 'היצרנים', 'markdown' => 'שדה זה מאפשר Github בטעם מרקדון .', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'נכסים שנדרשו', 'request_canceled' => 'הבקשה בוטלה', 'save' => 'להציל', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'בחר', 'select_all' => 'בחר הכל', 'search' => 'חפש', @@ -240,8 +254,8 @@ return [ 'signature' => 'חֲתִימָה', 'signed_off_by' => 'אושר על ידי', 'skin' => 'ערכת עיצוב', - 'slack_msg_note' => 'הודעת סלאק תישלח', - 'slack_test_msg' => 'יאי! נראה שהשילוב של Slack עם Snipe-IT עובד!', + 'webhook_msg_note' => 'תישלח התראה דרך התליית רשת', + 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: תכונות מסוימות מושבתות עבור התקנה זו.', 'site_name' => 'שם אתר', 'state' => 'מדינה', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'האם אתה בטוח שברצונך למחוק', 'submit' => 'שלח', 'target' => 'יַעַד', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'תצוגת זמן ותאריך', 'total_assets' => 'סך נכסים', 'total_licenses' => 'סך כל הרישיונות', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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' => 'פעולה זו תמזג :count משתמשים למשתמש אחד. נא לבחור את המשתמש אליו ימוזגו הבאים, והנכסים המשויכים, הרישיונות ועוד יועברו למשתמש הנבחר והמשתמשים האחרים יסומנו כמחוקים.', + '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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'טבלאות מסד הנתונים שלך נוצרו', + 'setup_migration_output' => 'פלט ההגירה:', + 'setup_migration_create_user' => 'הבא: יצירת משתמש', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/he/help.php b/resources/lang/he/help.php index 8908f1962f..7c21474d3a 100644 --- a/resources/lang/he/help.php +++ b/resources/lang/he/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'מידע נוסף', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'נכסים הם פריטים במעקב לפי מספר סידורי או תג נכס. הם נוטים להיות פריטים בעלי ערך גבוה יותר במקרים בהם זיהוי של פריט מסוים חשוב.', diff --git a/resources/lang/he/localizations.php b/resources/lang/he/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/he/localizations.php +++ b/resources/lang/he/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/he/mail.php b/resources/lang/he/mail.php index 705403bc6e..850e1016c3 100644 --- a/resources/lang/he/mail.php +++ b/resources/lang/he/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'היכנס למערכת ההתקנה החדשה של Snipe-IT באמצעות פרטי הכניסה הבאים:', 'login' => 'התחברות:', 'Low_Inventory_Report' => 'דו"ח מלאי נמוך', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'מינימום QTY', 'name' => 'שֵׁם', 'new_item_checked' => 'פריט חדש נבדק תחת שמך, הפרטים להלן.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'שלך Snipe- IT אישורים', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php index f3814ae162..22aa9ec6c5 100644 --- a/resources/lang/he/validation.php +++ b/resources/lang/he/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'התכונה: חייבת לכלול לפחות פריטים מינימליים.', ], 'starts_with' => 'השדה חייב להכיל לפחות אחד מהערכים הבאים.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'not_in' => 'התכונה שנבחרה: אינה חוקית.', 'numeric' => 'התכונה: חייבת להיות מספר.', 'present' => 'שדה התכונה: חייב להיות נוכח.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'הסיסמה הנוכחית שלך שגויה', 'dumbpwd' => 'סיסמה זו נפוצה מדי.', 'statuslabel_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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/hr/admin/accessories/general.php b/resources/lang/hr/admin/accessories/general.php index cb409fd1ed..2a2d151ac4 100644 --- a/resources/lang/hr/admin/accessories/general.php +++ b/resources/lang/hr/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Ažuriranje dodatne opreme', 'use_default_eula' => 'Umjesto toga upotrijebite primarnu postavku EULA.', 'use_default_eula_disabled' => 'Uporedi primarnu zadanu EULA. Nije postavljena primarna zadana EULA. Dodajte jednu u Postavke.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/hr/admin/accessories/message.php b/resources/lang/hr/admin/accessories/message.php index 58418733c0..efc94ec6d3 100644 --- a/resources/lang/hr/admin/accessories/message.php +++ b/resources/lang/hr/admin/accessories/message.php @@ -2,7 +2,7 @@ return array( - 'does_not_exist' => 'The accessory [:id] does not exist.', + 'does_not_exist' => 'Dodatna oprema [:id] ne postoji.', 'assoc_users' => 'Ovaj pribor trenutačno ima: brojčanu stavku označenu korisnicima. Provjerite pribor i pokušajte ponovo.', 'create' => array( @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/hr/admin/asset_maintenances/form.php b/resources/lang/hr/admin/asset_maintenances/form.php index 8e8ad59200..cce4685514 100644 --- a/resources/lang/hr/admin/asset_maintenances/form.php +++ b/resources/lang/hr/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Vrsta održavanja', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Titula', - 'start_date' => 'počeo', - 'completion_date' => 'dovršen', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'cijena', 'is_warranty' => 'Poboljšanje jamstva', - 'asset_maintenance_time' => 'dana', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Bilješke', - 'update' => 'Ažuriraj', - 'create' => 'Stvoriti' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/hr/admin/categories/message.php b/resources/lang/hr/admin/categories/message.php index ec51a8307c..81af0f28e5 100644 --- a/resources/lang/hr/admin/categories/message.php +++ b/resources/lang/hr/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Kategorija nije ažurirana, pokušajte ponovo', - 'success' => 'Kategorija je uspješno ažurirana.' + 'success' => 'Kategorija je uspješno ažurirana.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/hr/admin/components/general.php b/resources/lang/hr/admin/components/general.php index ddcfa760f5..5d273b7f62 100644 --- a/resources/lang/hr/admin/components/general.php +++ b/resources/lang/hr/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'ostali', 'total' => 'ukupno', 'update' => 'Ažuriraj komponentu', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/hr/admin/components/message.php b/resources/lang/hr/admin/components/message.php index a687bec21b..61dea43341 100644 --- a/resources/lang/hr/admin/components/message.php +++ b/resources/lang/hr/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponenta nije provjerena, pokušajte ponovo', 'success' => 'Komponenta je uspješno provjerena.', - '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.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/hr/admin/consumables/message.php b/resources/lang/hr/admin/consumables/message.php index a0420ff270..85ac9b6a63 100644 --- a/resources/lang/hr/admin/consumables/message.php +++ b/resources/lang/hr/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Potrošnja nije provjerena, pokušajte ponovo', 'success' => 'Isporuka potrošnog materijala uspješno je provjerena.', - '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.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/hr/admin/custom_fields/general.php b/resources/lang/hr/admin/custom_fields/general.php index c559379b4a..fe15457cfe 100644 --- a/resources/lang/hr/admin/custom_fields/general.php +++ b/resources/lang/hr/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Koristi se po modelu', 'order' => 'Narudžba', 'create_fieldset' => 'Novi Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'Novi prilagođeni polje', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/hr/admin/groups/message.php b/resources/lang/hr/admin/groups/message.php index a4ada9dcf0..87d4fb75a0 100644 --- a/resources/lang/hr/admin/groups/message.php +++ b/resources/lang/hr/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Grupa već postoji!', - 'group_not_found' => 'Grupa [: id] ne postoji.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Polje naziva je obavezno', 'success' => array( diff --git a/resources/lang/hr/admin/hardware/form.php b/resources/lang/hr/admin/hardware/form.php index b55200ddbc..dd755b0df8 100644 --- a/resources/lang/hr/admin/hardware/form.php +++ b/resources/lang/hr/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Potvrda opcije brisanja brisanja', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'U nastavku pregledajte materijale za skupnu brisanje. Nakon što se izbrisati, ta se sredstva mogu vratiti, ali više neće biti povezana s korisnicima kojima su trenutačno dodijeljeni.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Izbrisat ćete: asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Skupna aktivacija ažuriranja', 'bulk_update_help' => 'Ovaj vam obrazac omogućuje ažuriranje više imovine odjednom. Popunite polja koja su vam potrebna za promjenu. Sva polja koja su ostala prazna ostat će nepromijenjena.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/hr/admin/hardware/general.php b/resources/lang/hr/admin/hardware/general.php index 10a2e708cc..82dd7c87a0 100644 --- a/resources/lang/hr/admin/hardware/general.php +++ b/resources/lang/hr/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Uređivanje imovine', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Requestable', 'requested' => 'Traženi', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Vraćanje imovine', 'pending' => 'U tijeku', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Prikaz opcije Asset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/hr/admin/hardware/message.php b/resources/lang/hr/admin/hardware/message.php index d5fd4d0e64..3a9196ae14 100644 --- a/resources/lang/hr/admin/hardware/message.php +++ b/resources/lang/hr/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Imovina nije obnovljena, pokušajte ponovo', 'success' => 'Imovina je uspješno obnovljena.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'Vaša je datoteka uvezena', 'file_delete_success' => 'Vaša je datoteka uspješno izbrisana', 'file_delete_error' => 'Datoteka nije mogla biti izbrisana', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/hr/admin/hardware/table.php b/resources/lang/hr/admin/hardware/table.php index 127294c7a4..9011dd5a56 100644 --- a/resources/lang/hr/admin/hardware/table.php +++ b/resources/lang/hr/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In / Out', 'checkout_date' => 'Datum kupnje', 'checkoutto' => 'Odjavio', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'diff', 'dl_csv' => 'Preuzmite CSV', diff --git a/resources/lang/hr/admin/licenses/general.php b/resources/lang/hr/admin/licenses/general.php index b7f844a7eb..948ea6a3c9 100644 --- a/resources/lang/hr/admin/licenses/general.php +++ b/resources/lang/hr/admin/licenses/general.php @@ -1,8 +1,8 @@ 'O licencama', - 'about_licenses' => 'Licence se koriste za praćenje softvera. Imaju određeni broj mjesta koja se mogu provjeriti pojedincima', + 'about_licenses_title' => 'O licencama', + 'about_licenses' => 'Licence se koriste za praćenje softvera. Imaju određeni broj mjesta koja se mogu provjeriti pojedincima', 'checkin' => 'Provjerite mjesto licence', 'checkout_history' => 'Povijest kupovine', 'checkout' => 'Mjesto licence za provjeru', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Licence za softver', 'user' => 'Korisnik', 'view' => 'Pogledajte licencu', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/hr/admin/manufacturers/message.php b/resources/lang/hr/admin/manufacturers/message.php index 5ea24c9ce3..a29f359e3f 100644 --- a/resources/lang/hr/admin/manufacturers/message.php +++ b/resources/lang/hr/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Proizvođač ne postoji.', 'assoc_users' => 'Ovaj je proizvođač trenutno povezan s barem jednim modelom i ne može se izbrisati. Ažurirajte svoje modele da više ne referiraju ovog proizvođača i pokušajte ponovno.', diff --git a/resources/lang/hr/admin/manufacturers/table.php b/resources/lang/hr/admin/manufacturers/table.php index b9041bd74c..c7b9e26a2f 100644 --- a/resources/lang/hr/admin/manufacturers/table.php +++ b/resources/lang/hr/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Podrška e-poštom', 'support_phone' => 'Podrška telefonu', 'support_url' => 'Podrška URL-a', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Ažuriraj proizvođača', 'url' => 'URL', diff --git a/resources/lang/hr/admin/models/general.php b/resources/lang/hr/admin/models/general.php index d90867dc0b..1a78e9bd9b 100644 --- a/resources/lang/hr/admin/models/general.php +++ b/resources/lang/hr/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Skupno brisanje modela imovine', 'bulk_delete_help' => 'Koristeći checkbox-ove niže potvrdite brisanje odabranih modela imovine. Modeli imovine koji na sebi imaju povezanu imovinu se ne mogu brisati dok se imovina ne poveže sa drugim modelom.', - 'bulk_delete_warn' => 'Izbrisati ćete :model_count model(a) imovine.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Vraćanje modela', 'requestable' => 'Korisnici mogu zatražiti ovaj model', 'show_mac_address' => 'Prikaži polje MAC adrese u imovini ovog modela', diff --git a/resources/lang/hr/admin/models/message.php b/resources/lang/hr/admin/models/message.php index 6e3a15a2be..2b46720e74 100644 --- a/resources/lang/hr/admin/models/message.php +++ b/resources/lang/hr/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model ne postoji.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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.', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model nije ažuriran, pokušajte ponovo', - 'success' => 'Model je uspješno ažuriran.' + 'success' => 'Model je uspješno ažuriran.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Nijedna polja nisu promijenjena, tako da ništa nije ažurirano.', - 'success' => 'Modeli su ažurirani.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Nijedan model nije odabran, tako da ništa nije izbrisano.', - 'success' => ':success_count model(a) izbrisan(o)!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(a) je izbrisano, no :fail_count nije bilo moguće izbrisati jer još uvijek imaju imovinu povezanu s njima.' ), diff --git a/resources/lang/hr/admin/settings/general.php b/resources/lang/hr/admin/settings/general.php index 4a707bea02..c756517efc 100644 --- a/resources/lang/hr/admin/settings/general.php +++ b/resources/lang/hr/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Ako želite poslati kopiju checkin/checkout poruka e-pošte koje se šalju korisnicima na dodatni račun e-pošte, unesite ga ovdje. U suprotnom ostavite ovo polje prazno.', 'is_ad' => 'Ovo je poslužitelj Active Directory', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Pošaljite upozorenja za', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Upozorenja su omogućena', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Postavke crtičnog koda', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP postavke', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Unesite valjano korisničko ime i lozinku LDAP-a iz osnovnog DN-a koji ste prethodno naveli da biste provjerili je li vaša LDAP prijava ispravno konfigurirana. MORATE NAJPRIJE SPREMITI SVOJE AŽURIRANE LDAP POSTAVKE.', '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', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Prikaži slike u e-porukama', 'show_images_in_email_help' => 'Isključite ovaj okvir ako je vaša Snipe-IT instalacija iza VPN ili zatvorene mreže, a korisnici izvan mreže neće moći učitati slike poslužene s ove instalacije u njihovu e-poštu.', 'site_name' => 'Ime stranice', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Zatezanje postavki', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Nakon što spremite svoje Slack podatke, pojavit će se gumb za testiranje.', - 'slack_test_help' => 'Provjerite je li vaša Slack integracija pravilno konfigurirana. NAJPRIJE MORATE POHRANITI SVOJE AŽURIRANE SLACK POSTAVKE.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT verzija', 'support_footer' => 'Podrška poveznica u podnožju ', 'support_footer_help' => 'Navedite tko vidi poveznice na informacije o Snipe-IT podršci i korisničkom priručniku', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/hr/admin/settings/message.php b/resources/lang/hr/admin/settings/message.php index fbab6d2dd5..d6681abe9f 100644 --- a/resources/lang/hr/admin/settings/message.php +++ b/resources/lang/hr/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/hr/admin/users/general.php b/resources/lang/hr/admin/users/general.php index aef3f687d7..0a08f92a49 100644 --- a/resources/lang/hr/admin/users/general.php +++ b/resources/lang/hr/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Ispiši sve dodijeljeno', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Softver je provjeren na: ime', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Prikaži korisnika: ime', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/hr/admin/users/message.php b/resources/lang/hr/admin/users/message.php index e5565b79bf..1bb48e25d1 100644 --- a/resources/lang/hr/admin/users/message.php +++ b/resources/lang/hr/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Uspješno ste odbili ovaj materijal.', 'bulk_manager_warn' => 'Vaši su korisnici uspješno ažurirani, ali vaš unos upravitelja nije spremljen jer je upravitelj koji ste odabrali također bio na popisu korisnika koji se uređuje, a korisnici možda nisu vlastiti upravitelj. Ponovno odaberite svoje korisnike, isključujući upravitelja.', 'user_exists' => 'Korisnik već postoji!', - 'user_not_found' => 'Korisnik [: id] ne postoji.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Potrebno je polje za prijavu', 'user_password_required' => 'Zaporka je potrebna.', 'insufficient_permissions' => 'Nedovoljna dozvola.', diff --git a/resources/lang/hr/auth.php b/resources/lang/hr/auth.php index db310aa1bb..9a6752e139 100644 --- a/resources/lang/hr/auth.php +++ b/resources/lang/hr/auth.php @@ -13,8 +13,8 @@ return array( | */ - 'failed' => 'These credentials do not match our records.', - 'password' => 'The provided password is incorrect.', - 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + 'failed' => 'Vjerodajnice ne odgovaraju.', + 'password' => 'Upisana lozinka je pogrešna.', + 'throttle' => 'Previše neuspješnih pokušaja prijave. Pokušajte ponovno za :sekunda sekunda.', ); diff --git a/resources/lang/hr/auth/general.php b/resources/lang/hr/auth/general.php index 3d322bafda..8f567b22b5 100644 --- a/resources/lang/hr/auth/general.php +++ b/resources/lang/hr/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Zapamti me', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/hr/button.php b/resources/lang/hr/button.php index c6bdbdfe3f..cc44b0fb9f 100644 --- a/resources/lang/hr/button.php +++ b/resources/lang/hr/button.php @@ -4,21 +4,21 @@ return [ 'actions' => 'akcije', 'add' => 'Dodaj novi', 'cancel' => 'Otkazati', - 'checkin_and_delete' => 'Checkin All / Delete User', + 'checkin_and_delete' => 'Dodijeli sve / Izbriši korisnika', 'delete' => 'Izbrisati', 'edit' => 'Uredi', 'restore' => 'Vratiti', - 'remove' => 'Remove', + 'remove' => 'Izbriši', 'request' => 'Zahtjev', 'submit' => 'podnijeti', 'upload' => 'Postavi', 'select_file' => 'Odaberite datoteku ...', 'select_files' => 'Odaberite datoteke...', - 'generate_labels' => '{1} Generate Label|[2,*] Generate Labels', - 'send_password_link' => 'Send Password Reset Link', - 'go' => 'Go', - 'bulk_actions' => 'Bulk Actions', - 'add_maintenance' => 'Add Maintenance', - 'append' => 'Append', - 'new' => 'New', + 'generate_labels' => '{1} Kreiraj barkod|[2,*] Kreiraj barkod', + 'send_password_link' => 'Pošalji link za ponovno postavljanje lozinke', + 'go' => 'Ići', + 'bulk_actions' => 'Masovne radnje', + 'add_maintenance' => 'Dodati održavanje', + 'append' => 'Prikačiti', + 'new' => 'Novi', ]; diff --git a/resources/lang/hr/general.php b/resources/lang/hr/general.php index 54141ff74b..47fbf82e28 100644 --- a/resources/lang/hr/general.php +++ b/resources/lang/hr/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Pribor', 'activated' => 'aktiviran', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Oprema', 'accessory_report' => 'Izvješće o dodatku', 'action' => 'Akcijski', @@ -27,7 +28,13 @@ return [ 'audit' => 'Revizija', 'audit_report' => 'Zapisnik revizije', 'assets' => 'Imovina', + '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', 'avatar_delete' => 'Obriši avatar', 'avatar_upload' => 'Učitaj avatar', 'back' => 'Nazad', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Otkazati', 'categories' => 'Kategorije', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Ova se aplikacija izvodi u načinu rada s omogućenim uklanjanjem pogrešaka. To može otkriti osjetljive podatke ako je aplikacija dostupna vanjskom svijetu. Onemogućite način otklanjanja pogrešaka postavljanjem vrijednosti APP_DEBUG u .env datoteci na false.', 'delete' => 'Izbrisati', 'delete_confirm' => 'Jeste li sigurni da želite izbrisati :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'izbrisana', 'delete_seats' => 'Izbrisana mjesta', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Uvoz', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Upravljanje imovinom', 'item' => 'Artikal', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Nedovoljna dozvola!', 'kits' => 'Predefined Kits', 'language' => 'Jezik', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Zahtjev je otkazan', 'save' => 'Uštedjeti', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Izaberi', 'select_all' => 'Select All', 'search' => 'traži', @@ -240,8 +254,8 @@ return [ 'signature' => 'Potpis', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Neke su značajke onemogućene za ovu instalaciju.', 'site_name' => 'Ime stranice', 'state' => 'država', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Jeste li sigurni da želite izbrisati', 'submit' => 'podnijeti', 'target' => 'Cilj', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Prikaz vremena i datuma', 'total_assets' => 'Ukupna imovina', 'total_licenses' => 'ukupne licence', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/hr/help.php b/resources/lang/hr/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/hr/help.php +++ b/resources/lang/hr/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/hr/localizations.php b/resources/lang/hr/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/hr/localizations.php +++ b/resources/lang/hr/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/hr/mail.php b/resources/lang/hr/mail.php index 13d0deaa07..aa54e50cf3 100644 --- a/resources/lang/hr/mail.php +++ b/resources/lang/hr/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Prijavite se na svoju novu Snipe-IT instalaciju pomoću vjerodajnica u nastavku:', 'login' => 'Prijaviti se:', 'Low_Inventory_Report' => 'Izvješće o niskom oglasnom prostoru', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Ime', 'new_item_checked' => 'Nova stavka je provjerena pod vašim imenom, detalji su u nastavku.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Vaše vjerodajnice za Snipe-IT', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/hr/passwords.php b/resources/lang/hr/passwords.php index 25633b4581..8de23ff3e7 100644 --- a/resources/lang/hr/passwords.php +++ b/resources/lang/hr/passwords.php @@ -1,8 +1,8 @@ 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', - 'user' => 'If a matching user with a valid email address exists in our system, a password recovery email has been sent.', - 'token' => 'This password reset token is invalid or expired, or does not match the username provided.', - 'reset' => 'Your password has been reset!', + 'sent' => 'Ako odgovarajući korisnik s valjanom adresom e-pošte postoji u sustavu, poslan je email za oporavak lozinke.', + 'user' => 'Ako odgovarajući korisnik s valjanom adresom e-pošte postoji u sustavu, poslan je email za oporavak lozinke.', + 'token' => 'Token za poništavanje zaporke nije valjan, istekao je ili ne odgovara navedenom korisničkom računu.', + 'reset' => 'Vaša lozinka je resetirana!', ]; diff --git a/resources/lang/hr/validation.php b/resources/lang/hr/validation.php index 0efbe998e4..02fd59eefa 100644 --- a/resources/lang/hr/validation.php +++ b/resources/lang/hr/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Atribut mora imati barem: min stavke.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Vaša trenutačna zaporka nije točna', 'dumbpwd' => 'Ta je lozinka prečestna.', 'statuslabel_type' => 'Morate odabrati valjanu vrstu oznake statusa', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/hu/admin/accessories/general.php b/resources/lang/hu/admin/accessories/general.php index 9b4e1888bf..c24182271c 100644 --- a/resources/lang/hu/admin/accessories/general.php +++ b/resources/lang/hu/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Tartozék frissítése', 'use_default_eula' => 'Használja inkább az alapértelmezett EULA-t.', 'use_default_eula_disabled' => 'Használja inkább az alapértelmezett EULA-t. Nincs alapértelmezett EULA beállítva. Kérem adjon hozzá egyet a Beállításokban!', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'A tartozék még nem törölhető, mert még néhány belőle ki van adva.', ); diff --git a/resources/lang/hu/admin/accessories/message.php b/resources/lang/hu/admin/accessories/message.php index 0795e5dfa9..05683581aa 100644 --- a/resources/lang/hu/admin/accessories/message.php +++ b/resources/lang/hu/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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!' ), diff --git a/resources/lang/hu/admin/asset_maintenances/form.php b/resources/lang/hu/admin/asset_maintenances/form.php index 991c1c3a30..7f7b45952f 100644 --- a/resources/lang/hu/admin/asset_maintenances/form.php +++ b/resources/lang/hu/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Karbantartás típusa', + 'asset_maintenance_type' => 'Eszköz karbantartásának típusa', 'title' => 'Elnevezés', - 'start_date' => 'Kezdés', - 'completion_date' => 'Befejezés', + 'start_date' => 'Kezdő dátum', + 'completion_date' => 'Befejezés dátuma', 'cost' => 'Költség', 'is_warranty' => 'Garanciális javítás', - 'asset_maintenance_time' => 'Napok', + 'asset_maintenance_time' => 'Eszköz karbantartásának ideje (napokban)', 'notes' => 'Megjegyzések', - 'update' => 'Frissít', - 'create' => 'Létrehoz' + 'update' => 'Eszköz karbantartás szerkesztése', + 'create' => 'Eszköz karbantartás létrehozása' ]; diff --git a/resources/lang/hu/admin/categories/message.php b/resources/lang/hu/admin/categories/message.php index dd5774709d..e51e8b91e3 100644 --- a/resources/lang/hu/admin/categories/message.php +++ b/resources/lang/hu/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Nem sikerült a kategória módosítása, kérjük, próbálja újra', - 'success' => 'Sikeresen módosította a kategóriát.' + 'success' => 'Sikeresen módosította a kategóriát.', + 'cannot_change_category_type' => 'Létrehozás után nem tudod megváltoztatni a kategória tipusát', ), 'delete' => array( diff --git a/resources/lang/hu/admin/components/general.php b/resources/lang/hu/admin/components/general.php index 0719ca75e3..62e01dbe95 100644 --- a/resources/lang/hu/admin/components/general.php +++ b/resources/lang/hu/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Fennmaradó', 'total' => 'Összesen', 'update' => 'Alkatrész frissítés', + 'checkin_limit' => 'A visszavett mennyiségnek egyenlőnek, vagy kisebbnek kell lennie, mint: :assigned_qty' ); diff --git a/resources/lang/hu/admin/components/message.php b/resources/lang/hu/admin/components/message.php index 87dfdfb4fe..2a8435b9f2 100644 --- a/resources/lang/hu/admin/components/message.php +++ b/resources/lang/hu/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Az alkatrész nem lett kiadva, próbálkozz újra', 'success' => 'Az alkatrész sikeresen kiadva.', - '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.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/hu/admin/consumables/message.php b/resources/lang/hu/admin/consumables/message.php index 366b413f46..1677ee6f50 100644 --- a/resources/lang/hu/admin/consumables/message.php +++ b/resources/lang/hu/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'A kellék nem lett kiadva, próbálkozz újra', 'success' => 'A kellék sikeresen kiadva.', - '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.', + 'unavailable' => 'Nincs elegendő fogyóeszköz amit ki lehetne adni. Ellenőrizd a kiadható mennyiséget. ', ), 'checkin' => array( diff --git a/resources/lang/hu/admin/custom_fields/general.php b/resources/lang/hu/admin/custom_fields/general.php index cd42fb7573..7718185bfb 100644 --- a/resources/lang/hu/admin/custom_fields/general.php +++ b/resources/lang/hu/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Modellek szerint ', 'order' => 'Rendelés', 'create_fieldset' => 'Új mezőcsoportok', + 'update_fieldset' => 'Mezőkészlet frissítése', + 'fieldset_does_not_exist' => 'A(z) :id nevű egyéni mező nem létezik', + 'fieldset_updated' => 'Mezőkészlet frissítve', 'create_fieldset_title' => 'Új mezőkészlet létrehozása', 'create_field' => 'Új egyéni mező', 'create_field_title' => 'Új egyéni mező létrehozása', @@ -44,6 +47,8 @@ return [ 'db_convert_warning' => 'FIGYELMEZTETÉS. Ez a mező az egyéni mezők táblában :db_column néven szerepel, de :expected-nek kellene lennie.', 'is_unique' => 'Ennek az értéknek minden eszköz esetében egyedinek kell lennie', 'unique' => 'Egyedi', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'A hozzárendelt felhasználó megtekintheti ezeket az értékeket a "Hozzárendelt Eszközök Megtekintése" oldalon', + 'display_in_user_view_table' => 'Látható a felhasználó számára', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/hu/admin/departments/message.php b/resources/lang/hu/admin/departments/message.php index 9c5bbf6aa3..7ed55dd934 100644 --- a/resources/lang/hu/admin/departments/message.php +++ b/resources/lang/hu/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'A tanszék nem létezik.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Már létezik egy részleg ezzel a névvel ezen a helyen. Válasszon egy másik nevet ehhez a részleghez. ', 'assoc_users' => 'Ez a részleg jelenleg társított legalább egy felhasználót, és nem lehet törölni. Kérjük, frissítse a felhasználókat, hogy ne hivatkozzanak az osztályon, és próbálja újra.', 'create' => array( 'error' => 'Osztály nem jött létre, próbálkozzon újra.', diff --git a/resources/lang/hu/admin/groups/message.php b/resources/lang/hu/admin/groups/message.php index b5feb9a9fa..25a3591999 100644 --- a/resources/lang/hu/admin/groups/message.php +++ b/resources/lang/hu/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'A csoport már létezik!', - 'group_not_found' => '[:id] csoport nem létezik.', + 'group_not_found' => 'A :id csoportazonosító nem létezik.', 'group_name_required' => 'A név mező kötelező', 'success' => array( diff --git a/resources/lang/hu/admin/hardware/form.php b/resources/lang/hu/admin/hardware/form.php index 2885296d15..711655ba88 100644 --- a/resources/lang/hu/admin/hardware/form.php +++ b/resources/lang/hu/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'A tömeges törlési eszközök megerősítése', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Tömeges törléshez tekintse át az eszközöket. Ha törli az eszközöket, azok visszaállíthatók, de többé nem lesznek hozzárendelve a korábban hozzárendelt felhasználókhoz.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'Le akarod törölni a :asset_count eszközt.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Tömeges eszköz frissítés', 'bulk_update_help' => 'Ez az űrlap segít frissíteni több eszközt egyszerre. Csak töltsd ki a változtatni kívánt mezőket. Mindent amit üresen hagysz az változatlan marad. ', 'bulk_update_warn' => 'Egyetlen eszköz tulajdonságait kívánja szerkeszteni.|:asset_count eszköz tulajdonságait kívánja szerkeszteni.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Csak az alapértelmezett helyszín frissítése', 'asset_not_deployable' => 'Az eszköz még nem kiadásra kész, még nem kiadható.', 'asset_deployable' => 'Az eszköz kiadásra kész, kiadható.', - 'processing_spinner' => 'Feldolgozás...', + 'processing_spinner' => 'Feldolgozás folyamatban... (Nagyméretű fájlok esetében ez eltarthat egy darabig)', 'optional_infos' => 'Nem kötelező információk', 'order_details' => 'Megrendeléssel kapcsolatos információk' ]; diff --git a/resources/lang/hu/admin/hardware/general.php b/resources/lang/hu/admin/hardware/general.php index 474a8d72cb..f03ba0520a 100644 --- a/resources/lang/hu/admin/hardware/general.php +++ b/resources/lang/hu/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Az eszköz törölve lett.', 'edit' => 'Eszköz módosítása', 'model_deleted' => 'Ennek az eszköznek a modellje törölve lett. Elösszőr a modellt vissza kell állítani, utánna lehet csak az eszközt visszaállítani.', + 'model_invalid' => 'Ennek az eszköznek a modellje érvénytelen.', + 'model_invalid_fix' => 'Az eszközt módosítani kell a javításához, mielőtt megkísérli a kiadását vagy visszavételét.', 'requestable' => 'lehívási', 'requested' => 'Kérve', 'not_requestable' => 'Nem kérhető', @@ -21,6 +23,7 @@ return [ 'restore' => 'Visszaállítás eszköz', 'pending' => 'Függőben', 'undeployable' => 'Nem telepíthető', + 'undeployable_tooltip' => 'Az eszköz jelenleg az állapotcímkéje szerint nem helyezhezhető üzembe és nem adható ki.', 'view' => 'Eszköz megtekintése', 'csv_error' => 'Hiba van a CSV fájlban:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Hibaüzenetek:', 'success_messages' => 'Sikeres üzenetek:', 'alert_details' => 'A részleteket lásd alább.', - 'custom_export' => 'Egyéni export' + 'custom_export' => 'Egyéni export', + 'mfg_warranty_lookup' => ':manufacturer jótállási információk ellenőrzése', ]; diff --git a/resources/lang/hu/admin/hardware/message.php b/resources/lang/hu/admin/hardware/message.php index 549d3ef5df..76f6f34fe3 100644 --- a/resources/lang/hu/admin/hardware/message.php +++ b/resources/lang/hu/admin/hardware/message.php @@ -22,6 +22,8 @@ return [ 'restore' => [ 'error' => 'Az eszköz nem állt helyre, kérjük, próbálkozzon újra', 'success' => 'Az eszköz sikeresen visszaállítva.', + 'bulk_success' => 'Az eszköz sikeresen visszaállítva.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -48,6 +50,8 @@ return [ 'success' => 'A fájlt importálta', 'file_delete_success' => 'A fájlt sikeresen törölték', 'file_delete_error' => 'A fájlt nem sikerült törölni', + 'header_row_has_malformed_characters' => 'A fejlécsorban egy vagy több attribútum hibás formájú UTF-8 karaktereket tartalmaz', + 'content_row_has_malformed_characters' => 'A tartalom első sorában egy vagy több attribútum hibás formájú UTF-8 karaktereket tartalmaz', ], diff --git a/resources/lang/hu/admin/hardware/table.php b/resources/lang/hu/admin/hardware/table.php index 9c4f7f4e7e..87e7be0d5e 100644 --- a/resources/lang/hu/admin/hardware/table.php +++ b/resources/lang/hu/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Be/ki', 'checkout_date' => 'Kiadási dátum', 'checkoutto' => 'Kiadva', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Jelenlegi érték', 'diff' => 'Eltérés', 'dl_csv' => 'Cvs letöltése', diff --git a/resources/lang/hu/admin/licenses/general.php b/resources/lang/hu/admin/licenses/general.php index 8949db33c5..5a59442116 100644 --- a/resources/lang/hu/admin/licenses/general.php +++ b/resources/lang/hu/admin/licenses/general.php @@ -1,8 +1,8 @@ 'A licencekről', - 'about_licenses' => 'Az engedélyeket a szoftverek nyomon követésére használják. Meghatározott számú ülőhellyel rendelkeznek, melyeket az egyéneknek lehet ellenőrizni', + 'about_licenses_title' => 'A licencekről', + 'about_licenses' => 'Az engedélyeket a szoftverek nyomon követésére használják. Meghatározott számú ülőhellyel rendelkeznek, melyeket az egyéneknek lehet ellenőrizni', 'checkin' => 'Bevét engedély Seat', 'checkout_history' => 'Visszavét előzmények', 'checkout' => 'Kiadás Licence ülés/kérelem', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Szoftverlicencek', 'user' => 'használó', 'view' => 'Licenc megtekintése', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/hu/admin/locations/message.php b/resources/lang/hu/admin/locations/message.php index 85afa80ba4..5973b60035 100644 --- a/resources/lang/hu/admin/locations/message.php +++ b/resources/lang/hu/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Ehhez a helyhez jelenleg hozzá van rendelve legalább egy felhasználó és nem törölhető. Kérjük, frissítse a felhasználót aki hozzá volt rendelve ehhez a helyhez, és próbálja meg újra. ', 'assoc_assets' => 'Ez a hely jelenleg legalább egy eszközhöz társítva, és nem törölhető. Frissítse eszközeit, hogy ne hivatkozzon erre a helyre, és próbálja újra.', 'assoc_child_loc' => 'Ez a hely jelenleg legalább egy gyermek helye szülője, és nem törölhető. Frissítse tartózkodási helyeit, hogy ne hivatkozzon erre a helyre, és próbálja újra.', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Hozzárendelt eszközök', + 'current_location' => 'Jelenlegi hely', 'create' => array( diff --git a/resources/lang/hu/admin/manufacturers/message.php b/resources/lang/hu/admin/manufacturers/message.php index 121ccb262b..d3e415bcf7 100644 --- a/resources/lang/hu/admin/manufacturers/message.php +++ b/resources/lang/hu/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Gyártó nem létezik.', 'assoc_users' => 'Ez a gyártó jelenleg legalább egy modellel társítva van, így nem lehet törölni. Kérjük, frissítse a modellt úgy, hogy ne hivatkozzon erre a gyártóra, és próbálkozzon újra. ', diff --git a/resources/lang/hu/admin/manufacturers/table.php b/resources/lang/hu/admin/manufacturers/table.php index bc3fc9f868..02f2ca0870 100644 --- a/resources/lang/hu/admin/manufacturers/table.php +++ b/resources/lang/hu/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Az e-mail támogatása', 'support_phone' => 'Telefon támogatás', 'support_url' => 'Támogatási URL', + 'warranty_lookup_url' => 'Jótállást ellenőrző link', 'update' => 'Gyártó frissítése', 'url' => 'URL', diff --git a/resources/lang/hu/admin/models/general.php b/resources/lang/hu/admin/models/general.php index d9607a70e5..d77212773c 100644 --- a/resources/lang/hu/admin/models/general.php +++ b/resources/lang/hu/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Ez a modell törölve lett.', 'bulk_delete' => 'Eszköz modellek csoportos törlése', 'bulk_delete_help' => 'Az alábbi jelölőnégyzetek segítségével, kérem, erősítse meg, hogy valóban törölni szeretné a kiválasztott eszköz modelleket! Azok az eszköz modellek, melyeknek vannak hozzárendelt eszközei, egészen addig nem törölhetőek, amíg ezeket az eszközöket egy másik modellhez nem rendeli.', - 'bulk_delete_warn' => 'Törlődni fog :model_count eszköz modell.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Modell Visszaállítása', 'requestable' => 'A felhasználók kérhetik ezt a modellt', 'show_mac_address' => 'Mutasd a MAC cím mezőt ennél az eszköznél', diff --git a/resources/lang/hu/admin/models/message.php b/resources/lang/hu/admin/models/message.php index 49d772f620..ed5593df7f 100644 --- a/resources/lang/hu/admin/models/message.php +++ b/resources/lang/hu/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Modell nem létezik.', + 'no_association' => 'Nincs modell hozzárendelve.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'A modell nem frissült, próbálkozzon újra', - 'success' => 'A modell sikeresen frissült.' + 'success' => 'A modell sikeresen frissült.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Nincsenek mezők megváltoztak, így semmi sem frissült.', - 'success' => 'Modellek frissítve.' + 'success' => 'Eszköz modell sikeresen frissítve. Összesen |:model_count eszköz frissítve.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'Nem voltak eszközök kiválasztva, így semmi sem lett törölve.', - 'success' => ':success_count eszköz(ök) törölve!', + 'success' => 'Eszköz modell törölve! Összesen |:success_count eszköz törölve!', 'success_partial' => ': success_count modell(ek) törlésre kerültek, azonban ennyit nem sikerült törölni: a fail_count , mert még hozzárendelt eszközökkel rendelkeznek.' ), diff --git a/resources/lang/hu/admin/settings/general.php b/resources/lang/hu/admin/settings/general.php index 2235039c12..efb738ec05 100644 --- a/resources/lang/hu/admin/settings/general.php +++ b/resources/lang/hu/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Ha azt szeretné, hogy a kiadáskor/visszavételkor a felhasználóknak küldött levél másolata egy másik címre is elmenjen, akkor írja be a címet ide. Ellenkező esetben hagyja szabadon a mezőt.', 'is_ad' => 'Ez egy Active Directory szerver', 'alerts' => 'Riasztások', - 'alert_title' => 'Riasztási beállítások frissítése', + 'alert_title' => 'Értesítési beállítások módosítása', 'alert_email' => 'Riasztás címzettje', 'alert_email_help' => 'E-mail címek vagy terjesztési listák, amelyekre figyelmeztetéseket szeretne küldeni, vesszővel elválasztva', 'alerts_enabled' => 'Riasztás engedélyezve', @@ -21,7 +21,7 @@ return [ 'allow_user_skin_help_text' => 'Pipáld be ezt a dobozt ha szeretnéd, hogy a felhasználok felülírhassák az alap oldal kinézetét egy másikkal.', 'asset_ids' => 'Eszköz ID', 'audit_interval' => 'Audit időtartam', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Ha rendszeresen fizikailag is ellenőrizni kell az eszközeit, adja meg az Ön által használt intervallumot hónapokban kifejezve. Ha frissíti ezt az értéket, a közelgő ellenőrzési dátummal rendelkező eszközök összes "következő ellenőrzési dátuma" megjelenik.', 'audit_warning_days' => 'Ellenőrzési figyelmeztető küszöbérték', 'audit_warning_days_help' => 'Hány nappal előre figyelmeztetni kell Önt arra, hogy az eszközöknek az ellenőrzésre van szükségük?', 'auto_increment_assets' => 'Automatikusan növekvő eszközazonosítók generálása', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Visszaállítás biztonsági másolatból', 'backups_upload' => 'Biztonsági másolat feltöltése', 'backups_path' => 'A tárolt biztonsági másolatok a szerveren elérhetőek a :path', - 'backups_restore_warning' => 'Használja a visszaállítás gombotegy korábbi biztonsági mentésből történő visszaállításhoz. (Ez jelenleg nem működik S3 fájltárolóval vagy Dockerrel.

A teljes :app_name adatbázisod és minden feltöltött fájlod teljesen lecserélődik arra, ami a mentési fájlban van. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'A visszaállítás befejeztével minden meglévő felhasználó, beleértve Önt is, kijelentkezik a rendszerből.', 'backups_large' => 'A nagyon nagyméretű biztonsági mentések a visszaállítási kísérlet során megszakadhatnak, és előfordulhat, hogy továbbra is a parancssoron keresztül kell futtatni őket. ', 'barcode_settings' => 'Vonalkód beállítások', @@ -75,8 +75,9 @@ return [ 'label_logo_size' => 'Négyzet alakú logok jobban néznek ki - ez a logo fog megjelenni minden címke jobb felső sarkában. ', 'laravel' => 'Laravel verzió', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group' => 'Alapértelmezett engedélyek csoport', + 'ldap_default_group_info' => 'Válasszon ki egy csoportot az újonan szinkronizált felhasználókhoz. Ne felejtse el, hogy a felhasználó átveszi a hozzárendelt csoport engedélyeit.', + 'no_default_group' => 'Nincs alapértelmezett csoport', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP ügyfél TLS-kulcsa', 'ldap_client_tls_cert' => 'LDAP ügyféloldali TLS tanúsítvány', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP beállítások', 'ldap_client_tls_cert_help' => 'Az LDAP-kapcsolatok ügyféloldali TLS-tanúsítványa és kulcsa általában csak a "Biztonságos LDAP" Google Workspace-konfigurációkban hasznos. Mindkettőre szükség van.', 'ldap_client_tls_key' => 'LDAP ügyféloldali TLS kulcs', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Adjon meg egy érvényes LDAP felhasználónevet és jelszót a fenti alapszintű DN-ből, hogy ellenőrizze, hogy az LDAP-bejelentkezés megfelelően van-e beállítva. EL KELL MENTENIE A MÓDOSÍTOTT LDAP BEÁLLÍTÁSOKAT ELŐBB.', '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ő', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Képek használata az email-ekben', 'show_images_in_email_help' => 'Vegye ki a jelölést innen, ha az Ön Snipe-IT alkalmazása VPN mögött, vagy zárt hálózaton található, és a felhasználók a hálózaton kívül nem tudják az emailekben megjeleníteni az alkalmazás által szolgáltatott képeket.', 'site_name' => 'Webhely neve', + 'integrations' => 'Integrációk', 'slack' => 'Slack', - 'slack_title' => 'Slack beállítások frissítése', - 'slack_help' => 'Slack beállítások', - 'slack_botname' => 'Laza botneve', - 'slack_channel' => 'Laza csatorna', - 'slack_endpoint' => 'Laza végpont', - 'slack_integration' => 'Laza beállítások', - 'slack_integration_help' => 'A Slack integráció opcionális, azonban a végpont és a csatorna szükséges, ha használni kívánja. A Slack integráció konfigurálásához először a következőket kell tennieegy bejövő webhook létrehozása a Slack-fiókodon. Kattintson a Slack integráció tesztelése gombra, hogy a mentés előtt megerősítse a beállítások helyességét. ', - 'slack_integration_help_button' => 'Miután mentette a Slack információkat, egy teszt gomb jelenik meg.', - 'slack_test_help' => 'Annak tesztelése megfelelő -e a Slack integráció beállítása. ELŐSZÖR EL KELL MENTENI A FRISSÍTETT SLACK BEÁLLÍTÁSOKAT.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integrációs beállítások', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT változat', 'support_footer' => 'Lábjegyzet linkek támogatása ', 'support_footer_help' => 'Adja meg, hogy ki láthassa a Snipe-IT támogatási információ és a felhasználói kézikönyv linkjeit', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'lokalizáció, pénznem, helyi, lokalitás, időzóna, időzóna, nemzetközi, internatinalizáció, nyelv, nyelvek, fordítás', 'localization_help' => 'Nyelv, dátum kijelzés', 'notifications' => 'Értesítések', - 'notifications_help' => 'E-mail riasztások, audit beállítások', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Inkrementálás és előtagok', 'labels' => 'Címkék', 'labels_title' => 'Címke beállítások frissítése', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Következő: Felhasználó létrehozása', 'ldap_settings_link' => 'LDAP beállítások oldal', 'slack_test' => 'Teszt Integráció', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/hu/admin/settings/message.php b/resources/lang/hu/admin/settings/message.php index f3b919c17d..f274e444d1 100644 --- a/resources/lang/hu/admin/settings/message.php +++ b/resources/lang/hu/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'LDAP-hitelesítés tesztelése...', 'authentication_success' => 'A felhasználó sikeresen hitelesített az LDAP-nál!' ], - 'slack' => [ - 'sending' => 'Slack tesztüzenet küldése...', + 'webhook' => [ + 'sending' => ':app tesztüzenet küldése...', 'success_pt1' => 'Siker! Ellenőrizze a ', 'success_pt2' => ' csatornát a tesztüzenethez, és ne felejtsen el a MENTÉS gombra kattintani a beállítások tárolásához.', '500' => '500 Szerverhiba.', - 'error' => 'Valami hiba történt.', + 'error' => 'Valami hiba történt. A Slack a következő üzenettel válaszolt: :error_message', + 'error_misc' => 'Valami hiba történt :( ', ] ]; diff --git a/resources/lang/hu/admin/users/general.php b/resources/lang/hu/admin/users/general.php index 304243dd07..b8ee236fa4 100644 --- a/resources/lang/hu/admin/users/general.php +++ b/resources/lang/hu/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Az összes hozzárendelt nyomtatása', 'email_assigned' => 'A hozzárendeltek e-mail listája', 'user_notified' => 'A felhasználó e-mailben megkapta az aktuálisan hozzárendelt elemek listáját.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Felhasználó kihagyása a licencek automatikus hozzárendelésénél', 'software_user' => 'Szoftver ellenőrzése: név', 'send_email_help' => 'Meg kell adnod egy email címet ehhez a felhasználóhoz, hogy a hitelesítő adatok elküldve legyenek számára. Hitelesítő adatok csak a felhasználó készítésekor kerülnek elküldésre. A jelszavak hashelve kerülnek mentésre így nem lehet őket megszerezni miután elmentödtek.', 'view_user' => 'Felhasználó megtekintése: név', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Csak a szuperadminok adhatnak egy felhasználónak szuperadmin hozzáférést.', 'admin_permission_warning' => 'Csak admin vagy annál nagyobb jogokkal rendelkező felhasználók adhatnak admin hozzáférést egy felhasználónak.', 'remove_group_memberships' => 'Csoporttagságok eltávolítása', - 'warning_deletion' => 'FIGYELMEZTETÉS:', 'warning_deletion_information' => 'Ön az alábbiakban felsorolt :count felhasználó(k) MINDEN tételét be fogja jelenteni. A szuper admin nevek pirossal vannak kiemelve.', 'update_user_assets_status' => 'Frissítse ezen felhasználók összes eszközét erre az állapotra', 'checkin_user_properties' => 'Ellenőrizze a felhasználókhoz kapcsolódó összes tulajdonságot', @@ -41,4 +42,13 @@ return [ 'remote' => 'Távoli', 'remote_help' => 'Ez akkor lehet hasznos, ha olyan távoli felhasználókra kell szűrnie, akik soha vagy ritkán járnak be a fizikai helyszínekre.', 'not_remote_label' => 'Ez nem egy távoli felhasználó', + 'vip_label' => 'VIP felhasználó', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Felhasználó létrehozása', + 'create_user_page_explanation' => 'Ezeket a fiókadatokat fogja tudni használni az oldal első alkalommal történő eléréséhez.', + 'email_credentials' => 'Hitelesítő adatok elküldése', + 'email_credentials_text' => 'Hitelesítő adatok elküldése a fenti címre', + 'next_save_user' => 'Következő: Felhasználó mentése', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/hu/admin/users/message.php b/resources/lang/hu/admin/users/message.php index 450ac6e67d..312757299e 100644 --- a/resources/lang/hu/admin/users/message.php +++ b/resources/lang/hu/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Az eszközt sikeresen csökkentetted.', 'bulk_manager_warn' => 'A felhasználók sikeresen frissültek, azonban a kezelői bejegyzést nem mentette el, mert a kiválasztott kezelő a szerkesztőben is szerepel a felhasználók listájában, és a felhasználók nem lehetnek saját kezelőik. Kérjük, ismét válassza ki a felhasználókat, kivéve a kezelőt.', 'user_exists' => 'Felhasználó már létezik!', - 'user_not_found' => 'A felhasználó [: id] nem létezik.', + 'user_not_found' => 'Felhasználó nem létezik.', 'user_login_required' => 'A bejelentkezési mező kötelező', 'user_password_required' => 'A jelszó szükséges.', 'insufficient_permissions' => 'Nem megfelelő engedélyek.', @@ -15,7 +15,7 @@ return array( 'password_resets_sent' => 'A kiválasztott felhasználók számára, akik aktívak és van nekik érvényes email cím, elküldésre került egy jelszó visszaállítási link.', 'password_reset_sent' => 'A jelszó visszaállítási link elküldésre került a :email címre!', 'user_has_no_email' => 'Ez a felhasználó nem rendelkezik e-mail címmel a profiljában.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_assets_assigned' => 'Ehhez a felhasználóhoz nincsenek eszközök rendelve', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'A felhasználóhoz nincs email cím beállítva.', + 'success' => 'A felhasználót értesítettük a hozzárendelt eszközökről.' ) ); \ No newline at end of file diff --git a/resources/lang/hu/auth/general.php b/resources/lang/hu/auth/general.php index 861bc11478..ed2b431229 100644 --- a/resources/lang/hu/auth/general.php +++ b/resources/lang/hu/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Emlékezzen rám', 'username_help_top' => 'Írd be a te felhasználónevedet, hogy a jelszó visszaállítási link elküldésre kerüljön az email címedre.', 'username_help_bottom' => 'A felhasználóneved és az email címed talán azonos, talán nem, ez függ a beállításoktól. Ha nem emlékszel a felhasználónevedre, vedd fel a kapcsolatot az adminiszrátorral.

Email nélküli felhasználónevek nem fognak jelszó visszaállítási linket kapni. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/hu/general.php b/resources/lang/hu/general.php index b745e19fe9..a589967a1f 100644 --- a/resources/lang/hu/general.php +++ b/resources/lang/hu/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Tartozékok', 'activated' => 'Aktivált', + 'accepted_date' => 'Visszaigazolás dátuma', 'accessory' => 'Tartozék', 'accessory_report' => 'Tartozék riport', 'action' => 'Művelet', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Adminisztrátor', 'add_seats' => 'Hozzáadott ülések', - 'age' => "Age", + 'age' => "Életkor", 'all_assets' => 'Összes eszköz', 'all' => 'Mind', 'archived' => 'Archivált', @@ -27,7 +28,13 @@ return [ 'audit' => 'Könyvvizsgálat', 'audit_report' => 'Audit napló', 'assets' => 'Eszközök', + 'assets_audited' => 'eszközök auditálva', + 'assets_checked_in_count' => 'eszközök visszavéve', + 'assets_checked_out_count' => 'eszközök kiadva', + 'asset_deleted_warning' => 'Ez az eszköz törölve lett. Először vissza kell állítani, mielőtt valakihez hozzárendelhető lesz.', + 'assigned_date' => 'Hozzárendelés dátuma', 'assigned_to' => 'Hozzárendelve a következőhöz: :name', + 'assignee' => 'Hozzárendelve', 'avatar_delete' => 'Avatar törlése', 'avatar_upload' => 'Avatar frissítése', 'back' => 'Vissza', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Tömeges szerkesztés', 'bulk_delete' => 'Tömeges törlés', 'bulk_actions' => 'Tömeges műveletek', - 'bulk_checkin_delete' => 'Tömeges visszavétel felhasználóktól', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'Ez az eszköz a felhasználó tulajdona', 'bystatus' => 'státusz szerint', 'cancel' => 'Mégse', 'categories' => 'Kategóriák', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Ez az alkalmazás gyártási módban fut, a hibakeresés engedélyezve. Ez érzékeny adatokat tárhat fel, ha az alkalmazás elérhető a külvilág számára. A hibakeresési mód letiltása a APP_DEBUG érték .env fájlban történő false fájlban történő beállításával.', 'delete' => 'Törlés', 'delete_confirm' => 'Biztos benne, hogy törölni akarja: :item?', + 'delete_confirm_no_undo' => 'Biztosan törli ezt : :item? Ez a művelet nem vonható vissza.', 'deleted' => 'Törölve', 'delete_seats' => 'Törölt elemek', 'deletion_failed' => 'A törlés nem sikerült', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'Az elfogadott fájltípus :types. A megengedett maximális feltöltési méret :size.|Az elfogadott fájltípusok :types. A megengedett maximális feltöltési méret :size.', 'filetypes_size_help' => 'A feltölthető méret maximum :size.', 'image_filetypes_help' => 'Az elfogadott fájltípusok jpg, webp, png, gif és svg. A maximális feltöltési méret a következő: size.', + 'unaccepted_image_type' => 'Ez a képfájl nem beolvasható. Az elfogadott fájltípusok: jpg, webp, png, gif és svg. A fájl kódolása: :mimetype.', 'import' => 'Importálás', 'importing' => 'Importálás', 'importing_help' => 'Eszközöket, tartozékokat, szoftverlicenceket, alkatrészeket, fogyóeszközöket és felhasználókat importálhat CSV fájl segítségével.

A CSV-ben az értékeket kettőspontal kell elválasztani és minden fejlécnévnek meg kell egyeznie az alap CSV dokumentációban szereplőkkel..', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Eszköz karbantartások', 'item' => 'Tétel', 'item_name' => 'Eszköz neve', + 'import_file' => 'CSV fájl importálása', + 'import_type' => 'CSV importálás típusa', 'insufficient_permissions' => 'Elégtelen engedély!', 'kits' => 'Előre definiált csomagok', 'language' => 'Nyelv', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Kért eszközök', 'request_canceled' => 'A kérelem törölve', 'save' => 'Mentés', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Választ', 'select_all' => 'Összes kijelölése', 'search' => 'Keresés', @@ -240,8 +254,8 @@ return [ 'signature' => 'Aláírás', 'signed_off_by' => 'Aláírta', 'skin' => 'Kinézet', - 'slack_msg_note' => 'A slack üzenet el lesz küldve', - 'slack_test_msg' => 'Oh szia! Úgy látszik a te Slack integrálásod a Snipe-IT el sikeres volt!', + 'webhook_msg_note' => 'A notification will be sent via webhook', + 'webhook_test_msg' => 'Oh szia! Úgy látszik a te :app integrálásod a Snipe-IT-val sikeres volt!', 'some_features_disabled' => 'DEMO MODE: Néhány funkció le van tiltva a telepítéshez.', 'site_name' => 'Hely neve', 'state' => 'Megye', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Biztosan törölni kíván', 'submit' => 'beküldése', 'target' => 'Cél', - 'toggle_navigation' => 'Navigáció összecsukása/kinyitása', 'time_and_date_display' => 'Idő és dátum megjelenítése', 'total_assets' => 'eszköz összesen', 'total_licenses' => 'licensz összesen', @@ -281,9 +294,9 @@ return [ 'yes' => 'Igen', 'zip' => 'Irányítószám', 'noimage' => 'Nincs kép feltöltve vagy a kép nem található.', - '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' => 'A keresett fájl nem található a szerveren.', + 'file_upload_success' => 'A fájl feltöltése sikeres!', + 'no_files_uploaded' => 'A fájl feltöltése sikeres!', 'token_expired' => 'Az ürlap session lejárt. próbálkozz újra.', 'login_enabled' => 'Belépés engedélyezése', 'audit_due' => 'Esedékes ellenőrzés', @@ -375,7 +388,8 @@ return [ 'bulk_soft_delete' =>'Gyengéden törölje ezeket a felhasználókat is. Az eszköztörténetük érintetlen marad, kivéve, ha/amíg nem törli a törölt rekordokat a Rendszergazdai beállításokban.', 'bulk_checkin_delete_success' => 'A kiválasztott felhasználók törlésre, és a náluk levő eszközök visszavételre kerültek.', 'bulk_checkin_success' => 'A kiválasztott felhasználókhoz tartozó eszközök visszavételre kerültek.', - 'set_to_null' => 'Az eszköz értékeinek törlése|Az összes :asset_count eszköz értékeinek törlése ', + 'set_to_null' => 'Az eszköz értékeinek törlése|Az összes :asset_count eszköz értékeinek törlése ', + '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 - Nincs megadva a vásárlás dátuma', 'assets_by_status' => 'Eszközök státusz szerint', 'assets_by_status_type' => 'Eszközök státustípus szerint', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Kezdés dátuma', 'end_date' => 'Befejezés dátuma', 'alt_uploaded_image_thumbnail' => 'Feltöltött indexkép', - 'placeholder_kit' => 'Készlet kiválasztása' + 'placeholder_kit' => 'Készlet kiválasztása', + 'file_not_found' => 'A fájl nem található', + 'preview_not_available' => '(nincs előnézet)', + 'setup' => 'Beállítás', + 'pre_flight' => 'Pre-Flight', + 'skip_to_main_content' => 'Ugrás a fő tartalomra', + 'toggle_navigation' => 'Navigáció váltása', + 'alerts' => 'Riasztások', + 'tasks_view_all' => 'Összes feladat megtekintése', + 'true' => 'Igaz', + 'false' => 'Hamis', + 'integration_option' => 'Integration Option', + 'log_does_not_exist' => 'No matching log record exists.', + 'merge_users' => 'Felhasználó azonosítók egyesítése', + '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, licences, 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' => 'Nincsenek kiválasztva felhasználók', + 'not_enough_users_selected' => 'Legalább :count felhasználót kell kijelölni', + 'merge_success' => ':count felhasználó sikeresen egyesítve a(z) :into_username felhasználóhoz!', + 'merged' => 'egyesítve', + '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' => 'Törlés és mentés', + 'update_existing_values' => 'Frissíti a jelenlegi adatokat?', + '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.', + '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' => ' Email küldése az új felhasználóknak?', + 'back_before_importing' => 'Biztonsági mentés importálás előtt?', + 'csv_header_field' => 'CSV fejléc mező', + 'import_field' => 'Mező importálása', + 'sample_value' => 'Minta érték', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'HIba lépett fel a CSV fájl olvasásakor: :error', + 'percent_complete' => ':percent % elkészült', + 'errors_importing' => 'Hiba lépett fel az importálás közben: ', + 'warning' => 'FIGYELMEZTETÉS: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Következő: Felhasználó mentése', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/hu/help.php b/resources/lang/hu/help.php index e063d31a81..897057c00a 100644 --- a/resources/lang/hu/help.php +++ b/resources/lang/hu/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Több információ', - 'audit_help' => 'Ha bejelöli ezt a négyzetet, az eszközrekordot úgy szerkeszti, hogy az tükrözze az új helyet. A jelölőnégyzet kipipálásának kihagyásával a hely egyszerűen felkerül az ellenőrzési naplóba.

Vegye figyelembe, hogy ha ez az eszköz ki van jelölve, akkor az nem változtatja meg a személy, az eszköz vagy a helyszín helyét, ahová ki van jelölve.', + 'audit_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.', 'assets' => 'Az eszközök sorozatszám vagy eszközcímke alapján nyomon követhető tételek. Ezek általában nagyobb értékű tételek, ahol egy adott tétel azonosítása fontos.', diff --git a/resources/lang/hu/localizations.php b/resources/lang/hu/localizations.php index 136733f921..8dd36f0358 100644 --- a/resources/lang/hu/localizations.php +++ b/resources/lang/hu/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Skócia', 'SB'=>'Salamon-szigetek', 'SC'=>'Seychelle Köztársaság', + 'SS'=>'Dél-Szudán', 'SD'=>'Szudáni Köztársaság', 'SE'=>'Svédország', 'SG'=>'Szingapúr', diff --git a/resources/lang/hu/mail.php b/resources/lang/hu/mail.php index a542127964..82ec8659c8 100644 --- a/resources/lang/hu/mail.php +++ b/resources/lang/hu/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Jelentkezzen be az új Snipe-IT telepítésébe az alábbi hitelesítő adatok alapján:', 'login' => 'Belépés:', 'Low_Inventory_Report' => 'Alacsony készletjelentés', + 'inventory_report' => 'Készlet Jelentés', 'min_QTY' => 'Min QTY', 'name' => 'Név', 'new_item_checked' => 'Egy új elemet az Ön neve alatt ellenőriztek, a részletek lent találhatók.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'A Snipe-IT hitelesítő adatai', 'Accessory_Checkin_Notification' => 'Tartozék kiadva', 'Asset_Checkin_Notification' => 'Eszköz kiadva', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'Licensz kiadva', 'Expected_Checkin_Report' => 'Várható eszköz kiadásának jelentése', 'Expected_Checkin_Notification' => 'Emlékeztető: :name kiadásának idejéhez közelít', 'Expected_Checkin_Date' => 'Az eszközt amelyet kiadtak neked, hamarosan visszavételre kerül a :date napon', 'your_assets' => 'Eszközeidnek megtekíntése', + 'rights_reserved' => 'Minden jog fenntartva.', ]; diff --git a/resources/lang/hu/validation.php b/resources/lang/hu/validation.php index bd28094ea8..bd735a415f 100644 --- a/resources/lang/hu/validation.php +++ b/resources/lang/hu/validation.php @@ -43,14 +43,14 @@ return [ '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.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + '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.', @@ -67,6 +67,8 @@ return [ 'array' => 'A: attribútumnak rendelkeznie kell legalább: min elemekkel.', ], 'starts_with' => 'A(z) :attribute a következővel kell kezdődnie: :values.', + 'ends_with' => 'The :attribute must end with one of the following: :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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'A jelenlegi jelszava helytelen', 'dumbpwd' => 'Ez a jelszó túl gyakori.', 'statuslabel_type' => 'Meg kell határoznia egy érvényes állapotcímke típust', + + // 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 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', + 'termination_date.date_format' => ':attribute mező értékének érvényes dátumnak kell lennie YYYY-MM-DD formátumban', + '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', + ], /* diff --git a/resources/lang/id/admin/accessories/general.php b/resources/lang/id/admin/accessories/general.php index 5e632c899e..15aee538a4 100644 --- a/resources/lang/id/admin/accessories/general.php +++ b/resources/lang/id/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Perbarui Aksesori', 'use_default_eula' => 'Gunakan primary default sebagai gantinya.', 'use_default_eula_disabled' => 'Gunakan primary default EULA sebagai gantinya. Tidak ada primary default yang diatur. Silahkan tambahkan di Pengaturan.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/id/admin/accessories/message.php b/resources/lang/id/admin/accessories/message.php index fd4385d5c4..6c2cd67c1f 100644 --- a/resources/lang/id/admin/accessories/message.php +++ b/resources/lang/id/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/id/admin/asset_maintenances/form.php b/resources/lang/id/admin/asset_maintenances/form.php index 3f02d3db06..d6074dd9fd 100644 --- a/resources/lang/id/admin/asset_maintenances/form.php +++ b/resources/lang/id/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Pemeliharan Jenis Aset', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Judul', - 'start_date' => 'Tanggal Mulai', - 'completion_date' => 'Tanggal Penyelesaian', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Biaya', 'is_warranty' => 'Pengembangan Garansi', - 'asset_maintenance_time' => 'Waktu Pemeliharaan Aset (dalam hari)', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Catatan', - 'update' => 'Pembaharuan Pemeliharan Aset', - 'create' => 'Membuat Pemeliharan Aset' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/id/admin/categories/message.php b/resources/lang/id/admin/categories/message.php index cfb4dc39b1..1e492cec5f 100644 --- a/resources/lang/id/admin/categories/message.php +++ b/resources/lang/id/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Pembaharuan kategori tidak berhasil, silahkan coba kembali', - 'success' => 'Pembaharuan kategori berhasil.' + 'success' => 'Pembaharuan kategori berhasil.', + 'cannot_change_category_type' => 'Anda tidak dapat mengubah jenis kategori setelah dibuat', ), 'delete' => array( diff --git a/resources/lang/id/admin/components/general.php b/resources/lang/id/admin/components/general.php index cc582283b7..5944273436 100644 --- a/resources/lang/id/admin/components/general.php +++ b/resources/lang/id/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Sisa', 'total' => 'Total', 'update' => 'Perbarui Komponen', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/id/admin/components/message.php b/resources/lang/id/admin/components/message.php index 4adaea082d..3f2d52bf21 100644 --- a/resources/lang/id/admin/components/message.php +++ b/resources/lang/id/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Komponen belum tertanda keluar, silahkan mencoba lagi', 'success' => 'Komponen telah sukses tertanda keluar.', - 'user_does_not_exist' => 'Pengguna tidak terdaftar. Silahkan coba kembali.' + 'user_does_not_exist' => 'Pengguna tidak terdaftar. Silahkan coba kembali.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/id/admin/consumables/message.php b/resources/lang/id/admin/consumables/message.php index 8826d6700d..87117018ca 100644 --- a/resources/lang/id/admin/consumables/message.php +++ b/resources/lang/id/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Barang Habis Pakai belum tertanda keluar, silahkan mencoba lagi', 'success' => 'Barang Habis Pakai telah sukses tertanda keluar.', - 'user_does_not_exist' => 'Pengguna tidak terdaftar. Silahkan coba kembali.' + 'user_does_not_exist' => 'Pengguna tidak terdaftar. Silahkan coba kembali.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/id/admin/custom_fields/general.php b/resources/lang/id/admin/custom_fields/general.php index 5c2593d3ac..f272be044b 100644 --- a/resources/lang/id/admin/custom_fields/general.php +++ b/resources/lang/id/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Digunakan oleh Model', 'order' => 'Urutan', 'create_fieldset' => 'Set Kolom Baru', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Buat fieldset baru', 'create_field' => 'Tambah Kolom Ubahan', 'create_field_title' => 'Buat field kustom', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unik', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/id/admin/groups/message.php b/resources/lang/id/admin/groups/message.php index a07902428f..e812bde5eb 100644 --- a/resources/lang/id/admin/groups/message.php +++ b/resources/lang/id/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Kelompok sudah ada!', - 'group_not_found' => 'Kelompok [:id] tidak ada.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'Field nama di perlukan', 'success' => array( diff --git a/resources/lang/id/admin/hardware/form.php b/resources/lang/id/admin/hardware/form.php index 98b74467ab..d4583d0ce9 100644 --- a/resources/lang/id/admin/hardware/form.php +++ b/resources/lang/id/admin/hardware/form.php @@ -2,11 +2,14 @@ return [ 'bulk_delete' => 'Konfirmasi Penghapusan Aset dalam Jumlah Besar', + 'bulk_restore' => 'Konfirmasi Pemulihan Aset Secara Massal', 'bulk_delete_help' => 'Meninjau aset untuk penghapusan massal di bawah ini. Setelah dihapus, aset-aset ini dapat dipulihkan, tetapi mereka tidak lagi akan dikaitkan dengan setiap pengguna yang mereka saat ini digunakan.', + 'bulk_restore_help' => 'Tinjau aset untuk pemulihan massal di bawah. Setelah dipulihkan, aset ini tidak akan dikaitkan dengan pengguna mana pun yang sebelumnya ditetapkan untuknya.', 'bulk_delete_warn' => 'Anda akan menghapus :asset_count aset.', + 'bulk_restore_warn' => 'Anda akan memulihkan :asset_count aset.', 'bulk_update' => 'Perbarui aset jumlah besar', 'bulk_update_help' => 'Formulir ini mengizinkan anda untuk memperbarui kelipatan aset dalam sekali proses. Cukup isi di field yang hendak di rubah. Jika ada yang kosong tidak akan dirubah. ', - 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', + 'bulk_update_warn' => 'Anda akan mengedit properti dari satu aset.|Anda akan mengedit properti dari :asset_count aset.', 'checkedout_to' => 'Diberikan kepada', 'checkout_date' => 'Tanggal Pemberian', 'checkin_date' => 'Tanggal Pengembalian', @@ -40,12 +43,12 @@ return [ 'warranty' => 'Garansi', 'warranty_expires' => 'Garansi Berakhir', 'years' => 'tahun', - 'asset_location' => 'Update Asset Location', - 'asset_location_update_default_current' => 'Update default location AND actual location', - 'asset_location_update_default' => 'Update only default location', - 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', - 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', - 'optional_infos' => 'Optional Information', - 'order_details' => 'Order Related Information' + 'asset_location' => 'Perbarui Lokasi Aset', + 'asset_location_update_default_current' => 'Perbarui lokasi default DAN lokasi sebenarnya', + 'asset_location_update_default' => 'Perbarui hanya lokasi default', + 'asset_not_deployable' => 'Status aset tersebut tidak dapat ditetapkan. Aset ini tidak dapat digunakan.', + 'asset_deployable' => 'Status aset dapat ditetapkan. Aset ini dapat digunakan.', + 'processing_spinner' => 'Memproses... (Mungkin memerlukan sedikit waktu untuk file besar)', + 'optional_infos' => 'Informasi Tambahan', + 'order_details' => 'Informasi Pesanan' ]; diff --git a/resources/lang/id/admin/hardware/general.php b/resources/lang/id/admin/hardware/general.php index 6f0ebf6572..0d14a627ca 100644 --- a/resources/lang/id/admin/hardware/general.php +++ b/resources/lang/id/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Aset ini telah dihapus.', 'edit' => 'Sunting Aset', 'model_deleted' => 'Model Aset ini telah dihapus. Anda harus memulihkan model aset tersebut sebelum Anda dapat memulihkan Aset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Dapat diminta', 'requested' => 'Telah diminta', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Mengembalikan aset', 'pending' => 'Tunda', 'undeployable' => 'Tidak dapat digunakan', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Tampilkan aset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/id/admin/hardware/message.php b/resources/lang/id/admin/hardware/message.php index d8eb81255b..c8adce9a9e 100644 --- a/resources/lang/id/admin/hardware/message.php +++ b/resources/lang/id/admin/hardware/message.php @@ -5,7 +5,7 @@ return [ 'undeployable' => 'Peringatan: Aset ini telah di tandai sebagai aset yang tak dapat digunakan. Jika status ini telah berubah, silahkan perbarui status aset.', 'does_not_exist' => 'Aset tidak ada.', - 'does_not_exist_or_not_requestable' => 'That asset does not exist or is not requestable.', + 'does_not_exist_or_not_requestable' => 'Aset tersebut tidak ada atau tidak dapat di minta.', 'assoc_users' => 'Aset ini sudah diberikan kepada pengguna dan tidak dapat di hapus. Silahkan cek aset terlebih dahulu kemudian coba hapus kembali. ', 'create' => [ @@ -17,12 +17,14 @@ return [ 'error' => 'Gagal perbarui aset, silahkan coba kembali', 'success' => 'Sukses perbarui aset.', 'nothing_updated' => 'Tidak ada kolom yang dipilih, jadi tidak ada yang diperbaharui.', - 'no_assets_selected' => 'No assets were selected, so nothing was updated.', + 'no_assets_selected' => 'Tidak ada aset yang dipilih, jadi tidak ada yang diperbarui.', ], 'restore' => [ 'error' => 'Aset gagal dikembalikan, silahkan coba lagi', 'success' => 'Aset berhasil dikembalikan.', + 'bulk_success' => 'Aset berhasil dikembalikan.', + 'nothing_updated' => 'Tidak ada aset yang dipilih, jadi tidak ada yang dipulihkan.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Berkas Anda berhasil terimpor', 'file_delete_success' => 'File anda telah berhasil dihapus', 'file_delete_error' => 'File tidak bisa dihapus', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/id/admin/hardware/table.php b/resources/lang/id/admin/hardware/table.php index 2e26b4271d..ed8027f76d 100644 --- a/resources/lang/id/admin/hardware/table.php +++ b/resources/lang/id/admin/hardware/table.php @@ -4,11 +4,12 @@ return [ 'asset_tag' => 'Tag Aset', 'asset_model' => 'Model', - 'book_value' => 'Current Value', + 'book_value' => 'Nilai sekarang', 'change' => 'Masuk/Keluar', 'checkout_date' => 'Tanggal Pemberian', 'checkoutto' => 'Diberikan', - 'current_value' => 'Current Value', + 'components_cost' => 'Total Biaya Komponen', + 'current_value' => 'Nilai Sekarang', 'diff' => 'Diff', 'dl_csv' => 'Unduh CSV', 'eol' => 'MHP', @@ -22,9 +23,9 @@ return [ 'image' => 'Gambar Perangkat', 'days_without_acceptance' => 'Tanda Terima', 'monthly_depreciation' => 'Penyusutan Bulanan', - 'assigned_to' => 'Assigned To', - 'requesting_user' => 'Requesting User', - 'requested_date' => 'Requested Date', - 'changed' => 'Changed', - 'icon' => 'Icon', + 'assigned_to' => 'Diberikan kepada', + 'requesting_user' => 'Meminta Pengguna', + 'requested_date' => 'Tanggal yang diminta', + 'changed' => 'Diubah', + 'icon' => 'Ikon', ]; diff --git a/resources/lang/id/admin/licenses/general.php b/resources/lang/id/admin/licenses/general.php index 22290291bc..9dad58dfb2 100644 --- a/resources/lang/id/admin/licenses/general.php +++ b/resources/lang/id/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Tentang Lisensi', - 'about_licenses' => 'Lisensi digunakan untuk melacak perangkat lunak. Mereka memiliki sejumlah kursi yang bisa diperiksa ke individu', + 'about_licenses_title' => 'Tentang Lisensi', + 'about_licenses' => 'Lisensi digunakan untuk melacak perangkat lunak. Mereka memiliki sejumlah kursi yang bisa diperiksa ke individu', 'checkin' => 'Pemberian kapasitas lisensi', 'checkout_history' => 'Riwayat Pemberian', 'checkout' => 'Pemberian kapasitas lisensi', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Lisensi Perangkat Lunak', 'user' => 'Pengguna', 'view' => 'Tampilkan Lisensi', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/id/admin/locations/message.php b/resources/lang/id/admin/locations/message.php index 61dc8dcf69..096352d62a 100644 --- a/resources/lang/id/admin/locations/message.php +++ b/resources/lang/id/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Lokasi saat ini dikaitkan dengan setidaknya oleh satu pengguna dan tidak dapat dihapus. Perbarui pengguna Anda yang tidak ada referensi dari lokasi ini dan coba lagi. ', 'assoc_assets' => 'Lokasi saat ini dikaitkan dengan setidaknya oleh satu aset dan tidak dapat dihapus. Perbarui aset Anda yang tidak ada referensi dari lokasi ini dan coba lagi. ', 'assoc_child_loc' => 'Lokasi saat ini digunakan oleh induk salah satu dari turunan lokasi dan tidak dapat di hapus. Mohon perbarui lokasi Anda ke yang tidak ada referensi dengan lokasi ini dan coba kembali. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Aset yang Ditetapkan', + 'current_location' => 'Lokasi Saat Ini', 'create' => array( diff --git a/resources/lang/id/admin/locations/table.php b/resources/lang/id/admin/locations/table.php index 18c9ef34fb..5c1310a0fc 100644 --- a/resources/lang/id/admin/locations/table.php +++ b/resources/lang/id/admin/locations/table.php @@ -20,21 +20,21 @@ return [ 'parent' => 'Induk', 'currency' => 'Lokasi Mata Uang', 'ldap_ou' => 'LDAP Cari OU', - 'user_name' => 'User Name', - 'department' => 'Department', - 'location' => 'Location', - 'asset_tag' => 'Assets Tag', - 'asset_name' => 'Name', - 'asset_category' => 'Category', - 'asset_manufacturer' => 'Manufacturer', + 'user_name' => 'Nama Pengguna', + 'department' => 'Departemen', + 'location' => 'Lokasi', + 'asset_tag' => 'Kode Aset', + 'asset_name' => 'Nama', + 'asset_category' => 'Kategori', + 'asset_manufacturer' => 'Pabrikan', 'asset_model' => 'Model', 'asset_serial' => 'Serial', - 'asset_location' => 'Location', - 'asset_checked_out' => 'Checked Out', - 'asset_expected_checkin' => 'Expected Checkin', - 'date' => 'Date:', - 'signed_by_asset_auditor' => 'Signed By (Asset Auditor):', - 'signed_by_finance_auditor' => 'Signed By (Finance Auditor):', - 'signed_by_location_manager' => 'Signed By (Location Manager):', - 'signed_by' => 'Signed Off By:', + 'asset_location' => 'Lokasi', + 'asset_checked_out' => 'Dipakai', + 'asset_expected_checkin' => 'Tanggal Pengembalian', + 'date' => 'Tanggal:', + 'signed_by_asset_auditor' => 'Ditandatangani Oleh (Aset Auditor):', + 'signed_by_finance_auditor' => 'Ditandatangani Oleh (Auditor Keuangan):', + 'signed_by_location_manager' => 'Ditandatangani Oleh (Penanggung Jawab):', + 'signed_by' => 'Ditandatangani Oleh:', ]; diff --git a/resources/lang/id/admin/manufacturers/message.php b/resources/lang/id/admin/manufacturers/message.php index 6e58440395..320b52e555 100644 --- a/resources/lang/id/admin/manufacturers/message.php +++ b/resources/lang/id/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Produsen tidak ada.', 'assoc_users' => 'Produsen ini saat ini dikaitkan dengan setidaknya satu model dan tidak dapat dihapus. Perbarui model Anda yang tidak ada referensi dari produsen ini dan coba lagi. ', diff --git a/resources/lang/id/admin/manufacturers/table.php b/resources/lang/id/admin/manufacturers/table.php index 7d79e858c1..d2a7a62bab 100644 --- a/resources/lang/id/admin/manufacturers/table.php +++ b/resources/lang/id/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Dukungan Email', 'support_phone' => 'Dukungan Telp', 'support_url' => 'URL Dukungan', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Perbarui Merek', 'url' => 'URL', diff --git a/resources/lang/id/admin/models/general.php b/resources/lang/id/admin/models/general.php index 9ada8e9043..9f27718302 100644 --- a/resources/lang/id/admin/models/general.php +++ b/resources/lang/id/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Aset ini telah dihapus.', 'bulk_delete' => 'Menghapus massal aset model', 'bulk_delete_help' => 'Centang kotak di bawah untuk mengkonfirmasi penghapusan model aset yang dipilih. Model aset yang memiliki aset yang terkait dengannya tidak dapat dihapus sampai aset dikaitkan dengan model yang berbeda.', - 'bulk_delete_warn' => 'Anda akan menghapus :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Mengembalikan Model', 'requestable' => 'Pengguna dapat meminta model ini', 'show_mac_address' => 'Tampilkan alamat MAC di aset untuk model ini', diff --git a/resources/lang/id/admin/models/message.php b/resources/lang/id/admin/models/message.php index 1e5e0fb672..aae859777c 100644 --- a/resources/lang/id/admin/models/message.php +++ b/resources/lang/id/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model tidak ada.', + 'no_association' => 'TIDAK ADA MODEL TERKAIT.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model gagal diperbarui, silahkan coba kembali', - 'success' => 'Sukses memperbarui Model.' + 'success' => 'Sukses memperbarui Model.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Tidak ada bidang yang berubah, jadi tidak ada yang diperbarui.', - 'success' => 'Model diperbarui' + 'success' => 'Model berhasil diperbarui. |:model_count model berhasil diperbarui.', + 'warn' => 'Anda akan memperbarui properti dari model berikut: |Anda akan mengedit properti dari :model_count model berikut:', + ), 'bulkdelete' => array( 'error' => 'Tidak ada model yang dipilih, jadi tidak ada yang dihapus.', - 'success' => ':success_count model dihapus!', + 'success' => 'Model dihapus!|:success_count model dihapus!', 'success_partial' => ':success_count model telah dihapus, tetapi :fail_count tidak dapat dihapus karena masih memiliki aset yang terkait dengannya.' ), diff --git a/resources/lang/id/admin/settings/general.php b/resources/lang/id/admin/settings/general.php index 578aca206f..c902839d87 100644 --- a/resources/lang/id/admin/settings/general.php +++ b/resources/lang/id/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Jika Anda ingin mengirim salinan email checkin / checkout yang dikirimkan ke pengguna akun email tambahan, masukkan di sini. Jika tidak, biarkan bidang ini kosong.', 'is_ad' => 'Ini adalah server Active Directory', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Kirim pemberitahuan kepada', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Aktifkan pemberitahuan', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Pengaturan barcode', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'Kunci TLS Client-Side LDAP', 'ldap_client_tls_cert' => 'Sertifikat TLS Client-Side LDAP', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Konfigurasi LDAP', 'ldap_client_tls_cert_help' => 'Sertifikat Client-Side TLS dan Kunci untuk koneksi LDAP biasanya hanya berguna di konfigurasi Google Workspace dengan "Secure LDAP". Keduanya diperlukan.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Masukkan nama pengguna dan kata sandi LDAP yang valid dari DN dasar yang Anda tentukan di atas untuk menguji apakah pengaturan login LDAP Anda telah dikonfigurasi dengan benar. PERTAMA-TAMA ANDA HARUS MENYIMPAN PENGATURAN LDAP ANDA.', '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', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Tampilkan gambar dalam email', 'show_images_in_email_help' => 'Hapus centang kotak ini jika instalasi Snipe-IT Anda berada di belakang VPN atau jaringan tertutup dan pengguna di luar jaringan tidak akan dapat memuat gambar yang disajikan dari instalasi ini di email mereka.', 'site_name' => 'Nama Situs', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Pengaturan Slack', - 'slack_integration_help' => 'Integrasi Slack adalah opsional, namun titik akhir dan saluran diperlukan jika Anda ingin menggunakannya. Untuk mengonfigurasi integrasi Slack, Anda harus terlebih dahulu membuat webhook masuk di akun Slack Anda. Klik tombol Uji Integrasi Slack untuk mengonfirmasi bahwa setelan Anda sudah benar sebelum menyimpan. ', - 'slack_integration_help_button' => 'Setelah Anda menyimpan informasi Slack Anda, tombol tes akan muncul.', - 'slack_test_help' => 'Uji apakah integrasi Slack Anda dikonfigurasi dengan benar. ANDA HARUS MENYIMPAN SETELAN PENGATURAN KESELAMATAN ANDA PERTAMA.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Versi Snipe-IT', 'support_footer' => 'Mendukung Footer Links ', 'support_footer_help' => 'Tentukan siapa yang melihat tautan ke info Dukungan Snipe-IT dan Panduan Pengguna', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/id/admin/settings/message.php b/resources/lang/id/admin/settings/message.php index 632694e033..08a79fe26d 100644 --- a/resources/lang/id/admin/settings/message.php +++ b/resources/lang/id/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/id/admin/statuslabels/message.php b/resources/lang/id/admin/statuslabels/message.php index 26c0229a8f..72facaeb85 100644 --- a/resources/lang/id/admin/statuslabels/message.php +++ b/resources/lang/id/admin/statuslabels/message.php @@ -23,7 +23,7 @@ return [ 'help' => [ 'undeployable' => 'Aset ini tidak dapat diberikan kepada siapapun.', - 'deployable' => 'These assets can be checked out. Once they are assigned, they will assume a meta status of Deployed.', + 'deployable' => 'Aset ini dapat dipakai. Setelah ditetapkan, simbol status akan berubah menjadi Dipakai.', 'archived' => 'Aset ini tidak dapat diperiksa, dan hanya akan muncul di tampilan Arsip. Ini berguna untuk menyimpan informasi tentang aset untuk tujuan anggaran / sejarah namun menjauhkan mereka dari daftar aset sehari-hari.', 'pending' => 'Aset ini belum bisa diberikan kepada siapapun, sering digunakan untuk barang yang sedang diperbaiki, namun diperkirakan akan kembali beredar.', ], diff --git a/resources/lang/id/admin/users/general.php b/resources/lang/id/admin/users/general.php index f146ece75e..9ffbe16c6f 100644 --- a/resources/lang/id/admin/users/general.php +++ b/resources/lang/id/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Cetak Semua Ditugaskan', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Perangkat lunak pada :name', 'send_email_help' => 'Anda harus memberikan alamat email pengguna ini untuk mengirimkan kredensial kepada mereka. Pengiriman email kredensial hanya dapat dilakukan pada pembuatan user. Kata sandi disimpan dalam hash satu arah dan tidak dapat diambil setelah disimpan.', 'view_user' => 'Lihat pengguna: name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Dihasilkan pada:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/id/admin/users/message.php b/resources/lang/id/admin/users/message.php index 03423274ec..0bcc7f836a 100644 --- a/resources/lang/id/admin/users/message.php +++ b/resources/lang/id/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Anda sukses menolak aset ini.', 'bulk_manager_warn' => 'Pengguna Anda telah berhasil diperbarui, namun entri pengelola Anda tidak disimpan karena manajer yang Anda pilih juga ada dalam daftar pengguna untuk diedit, dan pengguna mungkin bukan manajer mereka sendiri. Silakan pilih pengguna Anda lagi, tidak termasuk manajernya.', 'user_exists' => 'Pengguna sudah ada!', - 'user_not_found' => 'Pengguna [:id] tidak terdaftar.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'Kolom login wajib di-isi', 'user_password_required' => 'Kata sandi wajib di-isi.', 'insufficient_permissions' => 'Tidak ada hak akses.', diff --git a/resources/lang/id/auth/general.php b/resources/lang/id/auth/general.php index bc11c40d15..49c0e3c8e3 100644 --- a/resources/lang/id/auth/general.php +++ b/resources/lang/id/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Ingat saya', 'username_help_top' => 'Masukkan nama pengguna Anda untuk dikirimi email tautan setel ulang sandi.', 'username_help_bottom' => 'Nama pengguna dan alamat email Anda mungkin sama, tetapi mungkin tidak, tergantung pada konfigurasi Anda. Jika Anda tidak dapat mengingat nama pengguna Anda, hubungi administrator Anda.

Nama pengguna tanpa alamat email terkait tidak akan dikirimi email berupa tautan setel ulang sandi. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/id/general.php b/resources/lang/id/general.php index 3c47ac5a09..82434a46be 100644 --- a/resources/lang/id/general.php +++ b/resources/lang/id/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Aksesoris', 'activated' => 'Diaktifkan', + 'accepted_date' => 'Tanggal Diterima', 'accessory' => 'Aksesori', 'accessory_report' => 'Laporan aksesori', 'action' => 'Tindakan', @@ -11,7 +12,7 @@ return [ 'admin' => 'Admin', 'administrator' => 'Administrator', 'add_seats' => 'Tambahan hak', - 'age' => "Age", + 'age' => "Usia", 'all_assets' => 'Semua aset', 'all' => 'Semua', 'archived' => 'Diarsipkan', @@ -20,14 +21,20 @@ return [ 'asset' => 'Aset', 'asset_report' => 'Laporan aset', 'asset_tag' => 'Tag Aset', - 'asset_tags' => 'Asset Tags', - 'assets_available' => 'Assets available', - 'accept_assets' => 'Accept Assets :name', - 'accept_assets_menu' => 'Accept Assets', + 'asset_tags' => 'Tag Aset', + 'assets_available' => 'Aset yang tersedia', + 'accept_assets' => 'Terima aset :nama', + 'accept_assets_menu' => 'Terima Aset', 'audit' => 'Audit', 'audit_report' => 'Log Audit', 'assets' => 'Aset', - 'assigned_to' => 'Assigned to :name', + 'assets_audited' => 'aset yang diaudit', + 'assets_checked_in_count' => 'aset yang diperiksa masuk', + 'assets_checked_out_count' => 'aset yang diperiksa keluar', + 'asset_deleted_warning' => 'Aset ini telah dihapus. Kamu harus memulihkannya sebelum dapat menugaskannya kepada seseorang.', + 'assigned_date' => 'Tanggal Ditugaskan', + 'assigned_to' => 'Ditugaskan kepada :nama', + 'assignee' => 'Ditugaskan kepada', 'avatar_delete' => 'Hapus avatar', 'avatar_upload' => 'Unggah avatar', 'back' => 'Kembali', @@ -35,10 +42,12 @@ return [ 'bulkaudit' => 'Audit Massal', 'bulkaudit_status' => 'Status Audit', 'bulk_checkout' => 'check-out masal', - 'bulk_edit' => 'Bulk Edit', - 'bulk_delete' => 'Bulk Delete', - 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_edit' => 'Edit Massal', + 'bulk_delete' => 'Hapus Massal', + 'bulk_actions' => 'Aksi Massal', + 'bulk_checkin_delete' => 'Masuk / Hapus Banyak Pengguna', + 'byod' => 'BYOD', + 'byod_help' => 'Device ini dimiliki oleh pengguna', 'bystatus' => 'berdasarkan Status', 'cancel' => 'Batalkan', 'categories' => 'Kategori', @@ -66,14 +75,14 @@ return [ 'create' => 'Buat baru', 'created' => 'Item dibuat', 'created_asset' => 'Buat aset', - 'created_at' => 'Created At', - 'created_by' => 'Created By', + 'created_at' => 'Dibuat pada', + 'created_by' => 'Dibuat oleh', 'record_created' => 'Rekam Dibuat', 'updated_at' => 'Diperbarui pada', 'currency' => '$', // this is deprecated 'current' => 'Saat ini', - 'current_password' => 'Current Password', - 'customize_report' => 'Customize Report', + 'current_password' => 'Kata Sandi Saat Ini', + 'customize_report' => 'Sesuaikan Laporan', 'custom_report' => 'Laporan kustom aset', 'dashboard' => 'Dashboard', 'days' => 'hari', @@ -83,14 +92,15 @@ return [ 'debug_warning_text' => 'Aplikasi ini berjalan dalam mode produksi dengan debugging diaktifkan. Hal ini dapat mengekspos data sensitif jika aplikasi Anda dapat diakses oleh dunia luar. Nonaktifkan mode debug dengan menetapkan nilai APP_DEBUG di file .env Anda ke false.', 'delete' => 'Hapus', 'delete_confirm' => 'Apakah Anda yakin untuk menghapus kategori ini?', + 'delete_confirm_no_undo' => 'Anda yakin ingin menghapus :item ini? Penghapusan tidak bisa dibatalkan.', 'deleted' => 'Dihapus', 'delete_seats' => 'Lisensi di hapus', - 'deletion_failed' => 'Deletion failed', + 'deletion_failed' => 'Penghapusan gagal', 'departments' => 'Departemen', 'department' => 'Departemen', 'deployed' => 'Dijalankan', 'depreciation' => 'Penyusutan', - 'depreciations' => 'Depreciations', + 'depreciations' => 'Penyusutan', 'depreciation_report' => 'Laporan penyusutan', 'details' => 'Rincian', 'download' => 'Download', @@ -99,12 +109,12 @@ return [ 'eol' => 'MHP', 'email_domain' => 'Domain email', 'email_format' => 'Format email', - 'employee_number' => 'Employee Number', + 'employee_number' => 'Nomor Karyawan', 'email_domain_help' => 'Ini digunakan untuk untuk membuat email ketika melakukan proses import', - 'error' => 'Error', - 'exclude_archived' => 'Exclude Archived Assets', - 'exclude_deleted' => 'Exclude Deleted Assets', - 'example' => 'Example: ', + 'error' => 'Kesalahan', + 'exclude_archived' => 'Kecualikan Aset Terarsipkan', + 'exclude_deleted' => 'Kecualikan Aset yang Dihapus', + 'example' => 'Contoh: ', 'filastname_format' => 'Inisial pertama - Nama belakang (jsmith@example.com)', 'firstname_lastname_format' => 'Nama depan - Nama belakang (jane.smith@example.com)', 'firstname_lastname_underscore_format' => 'Nama Depan Nama Belakang (jane_smith@example.com)', @@ -120,25 +130,26 @@ return [ 'files' => 'File', 'file_name' => 'Berkas', 'file_type' => 'Tipe Berkas', - 'filesize' => 'File Size', + 'filesize' => 'Ukuran file', 'file_uploads' => 'Unggah Berkas', - 'file_upload' => 'File Upload', + 'file_upload' => 'Unggah Berkas', 'generate' => 'Generate', - 'generate_labels' => 'Generate Labels', + 'generate_labels' => 'Buat Label', 'github_markdown' => 'Kolom ini mengizinkan markup rasa Github.', 'groups' => 'Kelompok', 'gravatar_email' => 'Alamat Gravatar Email', - 'gravatar_url' => 'Change your avatar at Gravatar.com.', + 'gravatar_url' => 'Ubah avatar Anda di Gravatar.com.', 'history' => 'Riwayat', 'history_for' => 'Riwayat untuk', 'id' => 'ID', 'image' => 'Gambar', 'image_delete' => 'Menghapus gambar', - 'include_deleted' => 'Include Deleted Assets', + 'include_deleted' => 'Sertakan Aset yang Dihapus', '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.', + 'filetypes_accepted_help' => 'Jenis file yang diterima adalah :types. Ukuran unggahan maksimum yang diizinkan adalah :size.', + 'filetypes_size_help' => 'Ukuran unggahan maksimum yang diizinkan adalah :size.', 'image_filetypes_help' => 'Jenis file yang diterima adalah jpg, webp, png, gif, dan svg. Ukuran unggahan maksimum yang diizinkan adalah :size.', + 'unaccepted_image_type' => 'Pilihan file gambar ini tidak dapat dibaca. Jenis file yang diterima adalah jpg, webp, png, gif, dan svg. Tipe file ini adalah :mimetype.', 'import' => 'Impor', 'importing' => 'Pengimporan', 'importing_help' => 'Anda dapat mengimpor aset, aksesori, lisensi, komponen, bahan habis pakai, dan pengguna melalui file CSV.

CSV harus dibatasi koma dan diformat dengan header yang cocok dengan header di contoh CSV dalam dokumentasi.', @@ -147,7 +158,9 @@ return [ 'asset_maintenance_report' => 'Laporan Pemeliharaan Aset', 'asset_maintenances' => 'Pemeliharaan Aset', 'item' => 'Item', - 'item_name' => 'Item Name', + 'item_name' => 'Nama Item', + 'import_file' => 'impor dari file CSV', + 'import_type' => 'Jenis impor file CSV', 'insufficient_permissions' => 'Tidak ada hak akses!', 'kits' => 'Kit yang telah ditentukan sebelumnya', 'language' => 'Bahasa', @@ -159,7 +172,7 @@ return [ 'licenses_available' => 'lisensi yang tersedia', 'licenses' => 'Lisensi', 'list_all' => 'Tampilkan semua', - 'loading' => 'Loading... please wait....', + 'loading' => 'Memuat, harap tunggu....', 'lock_passwords' => 'Nilai bidang ini tidak akan disimpan dalam instalasi demo.', 'feature_disabled' => 'Fitur ini telah dinonaktifkan untuk instalasi demo.', 'location' => 'Lokasi', @@ -168,17 +181,17 @@ return [ 'logout' => 'Keluar', 'lookup_by_tag' => 'Mencari berdasarkan tag aset', 'maintenances' => 'Pemeliharaan', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Mengelola Kunci API', 'manufacturer' => 'Produsen', 'manufacturers' => 'Produsen', 'markdown' => 'Field ini mengizinkan Github flavored markdown.', 'min_amt' => 'Jml Min.', - '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' => 'Jumlah minimum barang yang harus tersedia sebelum peringatan terpicu. Biarkan Min. JUMLAH kosong jika Anda tidak ingin menerima peringatan untuk persediaan yang rendah.', 'model_no' => 'No. Model', 'months' => 'bulan', 'moreinfo' => 'Lebih Lanjut', 'name' => 'Nama', - 'new_password' => 'New Password', + 'new_password' => 'Kata Sandi Baru', 'next' => 'Berikutnya', 'next_audit_date' => 'Tanggal Audit berikutnya', 'last_audit' => 'Audit terakhir', @@ -188,7 +201,7 @@ return [ 'no' => 'Tidak', 'notes' => 'Catatan', 'order_number' => 'Jumlah order', - 'only_deleted' => 'Only Deleted Assets', + 'only_deleted' => 'Hanya Aset yang Dihapus', 'page_menu' => 'Menampilkan item _MENU_', 'pagination_info' => 'Menampilkan hal_START_ to _END_ of _TOTAL_', 'pending' => 'Ditunda', @@ -201,25 +214,26 @@ return [ 'purchase_date' => 'Tanggal Pembelian', 'qty' => 'JML', 'quantity' => 'Jumlah', - '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' => 'Anda memiliki :count item di bawah atau hampir mencapai jumlah minimum yang diizinkan', + 'quickscan_checkin' => 'Pengecekan Masuk Cepat dengan Pemindaian Barcode', + 'quickscan_checkin_status' => 'Status Checkin', 'ready_to_deploy' => 'Siap digunakan', 'recent_activity' => 'Aktivitas Terakhir', - 'remaining' => 'Remaining', + 'remaining' => 'Sisa', 'remove_company' => 'Hapus Asosiasi Perusahaan', 'reports' => 'Laporan', 'restored' => 'kembalikan', 'restore' => 'Pulihkan', - 'requestable_models' => 'Requestable Models', + 'requestable_models' => 'Model yang Dapat Diminta', 'requested' => 'Diminta', - 'requested_date' => 'Requested Date', - 'requested_assets' => 'Requested Assets', - 'requested_assets_menu' => 'Requested Assets', + 'requested_date' => 'Tanggal Permintaan', + 'requested_assets' => 'Aset yang Diminta', + 'requested_assets_menu' => 'Aset yang Diminta', 'request_canceled' => 'Permintaan Dibatalkan', 'save' => 'Simpan', + 'select_var' => 'Pilih :thing... ', // this will eventually replace all of our other selects 'select' => 'Pilih', - 'select_all' => 'Select All', + 'select_all' => 'Pilih Semua', 'search' => 'Cari', 'select_category' => 'Memilih Kategori', 'select_department' => 'Pilih Departemen', @@ -238,22 +252,21 @@ return [ 'show_current' => 'Tampilkan Saat Ini', 'sign_in' => 'Masuk', 'signature' => 'Tanda tangan', - 'signed_off_by' => 'Signed Off By', + 'signed_off_by' => 'Ditandatangani Oleh', 'skin' => 'Tema', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Hai! Sepertinya integrasi Slack Anda dengan Snipe-IT berfungsi!', + 'webhook_msg_note' => 'Pemberitahuan akan dikirim melalui webhook', + 'webhook_test_msg' => 'Oh hai! Sepertinya integrasi :app Anda dengan Snipe-IT berfungsi dengan baik!', 'some_features_disabled' => 'DEMO: Beberapa fitur tidak aktif.', 'site_name' => 'Nama Situs', 'state' => 'Provinsi', 'status_labels' => 'Status label', 'status' => 'Status', - 'accept_eula' => 'Acceptance Agreement', + 'accept_eula' => 'Perjanjian Penerimaan', 'supplier' => 'Pemasok', 'suppliers' => 'Pemasok', 'sure_to_delete' => 'Yakin ingin menghapusnya', 'submit' => 'Menyerahkan', 'target' => 'Target', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Tampilan Waktu dan Tanggal', 'total_assets' => 'total aset', 'total_licenses' => 'total lisensi', @@ -263,7 +276,7 @@ return [ 'undeployable' => 'Belum siap digunakan', 'unknown_admin' => 'Admin tidak diketahui', 'username_format' => 'Format pengguna', - 'username' => 'Username', + 'username' => 'Nama Pengguna', 'update' => 'Memperbarui', 'upload_filetypes_help' => 'Jenis file yang diizinkan adalah png, gif, jpg, jpeg, doc, docx, pdf, xls, xlsx, txt, lic, xml, zip, rtf, dan rar. Ukuran unggahan maksimum yang diizinkan adalah :size.', 'uploaded' => 'Terunggah', @@ -274,16 +287,16 @@ return [ 'users' => 'Pengguna', 'viewall' => 'Lihat Semua', 'viewassets' => 'Tampilkan aset', - 'viewassetsfor' => 'View Assets for :name', + 'viewassetsfor' => 'Lihat Aset untuk :name', 'website' => 'Situs Web', 'welcome' => 'Selamat datang, :name', 'years' => 'tahun', 'yes' => 'Ya', 'zip' => 'Kode Pos', 'noimage' => 'Gambar tidak di temukan atau gambar tidak ter-unggah.', - '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' => 'File yang diminta tidak ada di server.', + 'file_upload_success' => 'Pengunggahan berkas berhasil!', + 'no_files_uploaded' => 'Pengunggahan berkas berhasil!', 'token_expired' => 'Sesi login Anda telah kadaluarsa. Silakan login lagi.', 'login_enabled' => 'Login Diaktifkan', 'audit_due' => 'Jatuh Tempo untuk Audit', @@ -291,60 +304,60 @@ return [ 'accept' => 'Terima :asset', 'i_accept' => 'Saya Setuju', 'i_decline' => 'Saya Tidak Setuju', - 'accept_decline' => 'Accept/Decline', + 'accept_decline' => 'Terima/Tolak', 'sign_tos' => 'Tanda tangani di bawah ini untuk menunjukkan bahwa Anda menyetujui persyaratan layanan:', 'clear_signature' => 'Hapus Tanda Tangan', 'show_help' => 'Tampilkan Bantuan', 'hide_help' => 'Sembunyikan Bantuan', - 'view_all' => 'view all', - 'hide_deleted' => 'Hide Deleted', + 'view_all' => 'lihat semua', + 'hide_deleted' => 'Sembunyikan yang Dihapus', 'email' => 'Email', - '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: ', - 'checked_out' => 'Checked Out', - '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', + 'do_not_change' => 'Jangan Ubah', + 'bug_report' => 'Laporkan Bug', + 'user_manual' => 'Panduan Pengguna', + 'setup_step_1' => 'Langkah 1', + 'setup_step_2' => 'Langkah 2', + 'setup_step_3' => 'Langkah 3', + 'setup_step_4' => 'Langkah 4', + 'setup_config_check' => 'Peninjauan Konfigurasi', + 'setup_create_database' => 'Membuat Tabel Database', + 'setup_create_admin' => 'Buat Pengguna Admin', + 'setup_done' => 'Selesai!', + 'bulk_edit_about_to' => 'Anda akan mengubah hal berikut ini: ', + 'checked_out' => 'Diberikan', + 'checked_out_to' => 'Diberikan kepada', + 'fields' => 'Kolom', + 'last_checkout' => 'Pemberian Terakhir', + 'due_to_checkin' => 'Item berikut :count akan segera diperiksa:', + 'expected_checkin' => 'Tanggal Pengembalian', + 'reminder_checked_out_items' => 'Ini adalah pengingat barang yang saat ini diperiksa untuk Anda. Jika Anda merasa daftar ini tidak akurat (ada yang hilang, atau ada yang muncul di sini yang menurut Anda tidak pernah Anda terima), silakan kirim email :reply_to_name di :reply_to_address.', + 'changed' => 'Diubah', + 'to' => 'Ke', + 'report_fields_info' => '

Pilih bidang yang ingin Anda sertakan dalam laporan khusus Anda, dan klik Buat. File (custom-asset-report-YYYY-mm-dd.csv) akan diunduh secara otomatis, dan Anda dapat membukanya di Excel.

+

Jika Anda hanya ingin mengekspor aset tertentu, gunakan opsi di bawah untuk menyempurnakan hasil Anda.

', + 'range' => 'Rentang', + 'bom_remark' => 'Tambahkan BOM (byte-order mark) ke CSV ini', + 'improvements' => 'Penyempurnaan', + 'information' => 'Informasi', + 'permissions' => 'Hak akses', + 'managed_ldap' => '(Dikelola melalui LDAP)', + 'export' => 'Ekspor', + 'ldap_sync' => 'Sinkronisasi LDAP', + 'ldap_user_sync' => 'Sinkronisasi Pengguna LDAP', + 'synchronize' => 'Sinkronisasi', + 'sync_results' => 'Hasil Sinkronisasi', 'license_serial' => 'Serial/Product Key', - 'invalid_category' => 'Invalid category', - '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', - 'assigned' => 'Assigned', - 'asset_count' => 'Asset Count', + 'invalid_category' => 'Kategori tidak valid', + 'dashboard_info' => 'Ini dasbor Anda. Ada banyak yang seperti itu, tapi yang ini milikmu.', + '60_percent_warning' => '60% Selesai (peringatan)', + 'dashboard_empty' => 'Sepertinya Anda belum menambahkan apa pun, jadi kami tidak memiliki sesuatu yang keren untuk ditampilkan. Mulailah dengan menambahkan beberapa aset, aksesori, bahan habis pakai, atau lisensi sekarang!', + 'new_asset' => 'Aset Baru', + 'new_license' => 'Lisensi Baru', + 'new_accessory' => 'Aksesori Baru', + 'new_consumable' => 'Barang Habis Pakai Baru', + 'collapse' => 'Ciutkan', + 'assigned' => 'Diberikan', + 'asset_count' => 'Total Aset', 'accessories_count' => 'Accessories Count', 'consumables_count' => 'Consumables Count', 'components_count' => 'Components Count', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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' => 'Benar', + 'false' => 'Salah', + 'integration_option' => 'Opsi integrasi', + 'log_does_not_exist' => 'Tidak ada catatan log yang cocok.', + 'merge_users' => 'Gabungkan Pengguna', + 'merge_information' => 'Ini akan menggabungkan :count pengguna menjadi satu pengguna. Pilih pengguna yang ingin Anda gabungkan dengan yang lain di bawah, dan aset terkait, lisensi, dll. akan dipindahkan ke pengguna yang dipilih dan pengguna lain akan ditandai sebagai dihapus.', + 'warning_merge_information' => 'Tindakan ini TIDAK DAPAT dibatalkan dan HANYA boleh digunakan saat Anda perlu menggabungkan pengguna karena impor atau sinkronisasi yang buruk. Pastikan untuk menjalankan pencadangan terlebih dahulu.', + 'no_users_selected' => 'Tidak ada Pengguna yang dipilih', + 'not_enough_users_selected' => 'Setidaknya :count pengguna harus dipilih', + 'merge_success' => ':count pengguna berhasil digabungkan menjadi :into_username!', + 'merged' => 'bergabung', + 'merged_log_this_user_into' => 'Menggabungkan pengguna ini (ID :to_id - :to_username) menjadi ID pengguna :from_id (:from_username) ', + 'merged_log_this_user_from' => 'ID pengguna yang digabungkan :from_id (:from_username) ke pengguna ini (ID :to_id - :to_username)', + 'clear_and_save' => 'Hapus & Simpan', + 'update_existing_values' => 'Perbarui Data yang Ada?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'Pembuatan tag aset penambahan otomatis dinonaktifkan sehingga semua baris harus diisi kolom "Tag Aset".', + '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?', + 'back_before_importing' => 'Cadangkan sebelum mengimpor?', + 'csv_header_field' => 'Kolom Tajuk CSV', + 'import_field' => 'Impor Kolom', + 'sample_value' => 'Data Contoh', + 'no_headers' => 'Tidak ada kolom ditemukan', + 'error_in_import_file' => 'Terjadi kesalahan saat membaca file CSV: :error', + 'percent_complete' => ':percent % Selesai', + 'errors_importing' => 'Beberapa Kesalahan terjadi saat mengimpor: ', + 'warning' => 'PERINGATAN: :warning', + 'success_redirecting' => '"Berhasil... Mengalihkan.', + 'setup_successful_migrations' => 'Tabel database Anda telah dibuat', + 'setup_migration_output' => 'Keluaran migrasi:', + 'setup_migration_create_user' => 'Selanjutnya: Buat Pengguna', + 'importer_generic_error' => 'Impor file Anda selesai, tetapi kami menerima kesalahan. Hal ini biasanya disebabkan oleh pelambatan API pihak ketiga dari webhook notifikasi (seperti Slack) dan tidak akan mengganggu impor itu sendiri, tetapi Anda harus mengonfirmasi hal ini.', + 'confirm' => 'Konfirmasi', + 'autoassign_licenses' => 'Penetapan Lisensi Secara Otomatis', + 'autoassign_licenses_help' => 'Izinkan pengguna ini untuk menetapkan lisensi melalui alat cli atau UI penetapan lisensi massal.', + 'autoassign_licenses_help_long' => 'Hal ini memungkinkan pengguna untuk ditetapkan lisensinya melalui alat cli atau UI lisensi penetapan massal. (Misalnya, Anda mungkin tidak ingin kontraktor diberi lisensi secara otomatis yang akan Anda berikan hanya kepada anggota staf. Anda masih dapat menetapkan lisensi secara individual kepada pengguna tersebut, tetapi mereka tidak akan disertakan dalam fungsi Lisensi Checkout untuk Semua Pengguna.)', + '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', + 'undeployable_tooltip' => 'Item ini tidak dapat diperiksa. Periksa kuantitas yang tersisa.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/id/help.php b/resources/lang/id/help.php index 37a4dc2b49..17317574a9 100644 --- a/resources/lang/id/help.php +++ b/resources/lang/id/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Lebih Lanjut', - 'audit_help' => 'Mencentang kotak ini akan mengedit catatan aset untuk mencerminkan lokasi baru ini. Membiarkannya tidak dicentang hanya akan mencatat lokasi di log audit.

Perhatikan bahwa aset ini diperiksa, itu tidak akan mengubah lokasi orang, aset, atau lokasi yang diperiksa.', + 'audit_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.', 'assets' => 'Aset adalah barang yang dilacak dengan nomor seri atau tanda aset. Cenderung menjadi barang dengan nilai lebih tinggi dimana identifikasi barang secara spesifik berpengaruh.', diff --git a/resources/lang/id/localizations.php b/resources/lang/id/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/id/localizations.php +++ b/resources/lang/id/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/id/mail.php b/resources/lang/id/mail.php index e8351975ab..412af2c3d0 100644 --- a/resources/lang/id/mail.php +++ b/resources/lang/id/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login ke instalasi Snipe-IT baru Anda dengan menggunakan kredensial di bawah ini:', 'login' => 'Login:', 'Low_Inventory_Report' => 'Laporan Inventaris Rendah', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Nama', 'new_item_checked' => 'Item baru telah diperiksa berdasarkan nama Anda, rinciannya ada di bawah.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Kredensial Snipe-IT Anda', 'Accessory_Checkin_Notification' => 'Aksesoris Kembali', 'Asset_Checkin_Notification' => 'Aset Kembali', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'Lisensi Kembali', 'Expected_Checkin_Report' => 'Laporan check-in aset yang diharapkan', 'Expected_Checkin_Notification' => 'Pengingat: :name mendekati batas waktu check-in [Dikembalikan]', 'Expected_Checkin_Date' => 'Aset yang check out untuk Anda akan check in kembali pada :date', 'your_assets' => 'Lihat Aset Anda', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/id/validation.php b/resources/lang/id/validation.php index 4d316e69ec..5521ddee56 100644 --- a/resources/lang/id/validation.php +++ b/resources/lang/id/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'Atribut: setidaknya harus memiliki: item min.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Kata sandi Anda saat ini salah', 'dumbpwd' => 'Password itu terlalu umum', 'statuslabel_type' => 'Anda harus memilih jenis label status yang valid', + + // 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/is/admin/accessories/general.php b/resources/lang/is/admin/accessories/general.php index 779e74ebf8..21f857444c 100644 --- a/resources/lang/is/admin/accessories/general.php +++ b/resources/lang/is/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Uppfæra endabúnað', 'use_default_eula' => 'Notaðu frekar ', 'use_default_eula_disabled' => 'Notaðu frekar sjálfgefna notendaskilmálana.Sjálfgefnu notendaskilmálarnir eru ekki í notkun. Vinsamlegast bættu einhverjum notendaskilmálum við í undir "Stillingar"', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/is/admin/accessories/message.php b/resources/lang/is/admin/accessories/message.php index a1e033f55e..713a0b44b3 100644 --- a/resources/lang/is/admin/accessories/message.php +++ b/resources/lang/is/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/is/admin/asset_maintenances/form.php b/resources/lang/is/admin/asset_maintenances/form.php index 232017aead..b8d7dd7117 100644 --- a/resources/lang/is/admin/asset_maintenances/form.php +++ b/resources/lang/is/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Viðhaldgerð', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Titill', - 'start_date' => 'Hafið', - 'completion_date' => 'Lokið', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Kostnaður', 'is_warranty' => 'Warranty Improvement', - 'asset_maintenance_time' => 'Dagar', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Athugasemdir', - 'update' => 'Uppfæra', - 'create' => 'Búa til' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/is/admin/categories/message.php b/resources/lang/is/admin/categories/message.php index 2a6b45b89f..b773cb6566 100644 --- a/resources/lang/is/admin/categories/message.php +++ b/resources/lang/is/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Vöruflokkur var ekki uppfærður, vinsamlegast reyndu aftur', - 'success' => 'Vöruflokkur var uppfærður.' + 'success' => 'Vöruflokkur var uppfærður.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/is/admin/components/general.php b/resources/lang/is/admin/components/general.php index acfb2b34dc..6c31e3177c 100644 --- a/resources/lang/is/admin/components/general.php +++ b/resources/lang/is/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Uppfæra íhlut', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/is/admin/components/message.php b/resources/lang/is/admin/components/message.php index 1d13970f23..0a7dd8d954 100644 --- a/resources/lang/is/admin/components/message.php +++ b/resources/lang/is/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Component was not checked out, please try again', 'success' => 'Component checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/is/admin/consumables/message.php b/resources/lang/is/admin/consumables/message.php index 48a3cfbd9f..c0d0aa7f68 100644 --- a/resources/lang/is/admin/consumables/message.php +++ b/resources/lang/is/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumable was not checked out, please try again', 'success' => 'Consumable checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/is/admin/custom_fields/general.php b/resources/lang/is/admin/custom_fields/general.php index 4cc79d678b..9413002d0f 100644 --- a/resources/lang/is/admin/custom_fields/general.php +++ b/resources/lang/is/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Notað af Tegundum (Models)', 'order' => 'Röð', 'create_fieldset' => 'Nýtt Reitasett', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Útbúa nýtt Reitasett (Nafn)', 'create_field' => 'Nýr sérsniðinn reitur', 'create_field_title' => 'Útbúa nýtt sérsniðinn reit', @@ -44,6 +47,8 @@ return [ 'db_convert_warning' => 'WARNING. This field is in the custom fields table as :db_column but should be :expected.', 'is_unique' => 'This value must be unique across all assets', 'unique' => 'Einstakt', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Leyfa útskráðum notanda að skoða þessi gildi á síðunni Skoða úthlutaðar eignir', + 'display_in_user_view_table' => 'Sýnileg notenda', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/is/admin/groups/message.php b/resources/lang/is/admin/groups/message.php index f14b6339e8..495acaf36b 100644 --- a/resources/lang/is/admin/groups/message.php +++ b/resources/lang/is/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Group already exists!', - 'group_not_found' => 'Group [:id] does not exist.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'The name field is required', 'success' => array( diff --git a/resources/lang/is/admin/hardware/form.php b/resources/lang/is/admin/hardware/form.php index 15d7f38f82..61e0ca88b6 100644 --- a/resources/lang/is/admin/hardware/form.php +++ b/resources/lang/is/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirm Bulk Delete Assets', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Review the assets for bulk deletion below. Once deleted, these assets can be restored, but they will no longer be associated with any users they are currently assigned to.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'You are about to delete :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Bulk Update Assets', 'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Vinnsla...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Viðbótarupplýsingar', 'order_details' => 'Innkaupaupplýsingar' ]; diff --git a/resources/lang/is/admin/hardware/general.php b/resources/lang/is/admin/hardware/general.php index 1f017d87f8..af6d44a79e 100644 --- a/resources/lang/is/admin/hardware/general.php +++ b/resources/lang/is/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Þessari eign hefur verið eytt', 'edit' => 'Breyta eign', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Lausar', 'requested' => 'óskað eftir', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restore Asset', 'pending' => 'Á bið', 'undeployable' => 'Ónothæfar', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'Skoða eign', 'csv_error' => 'Það er villa í CSV skránni þinni:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/is/admin/hardware/message.php b/resources/lang/is/admin/hardware/message.php index 8850d17553..44809f93d0 100644 --- a/resources/lang/is/admin/hardware/message.php +++ b/resources/lang/is/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Asset was not restored, please try again', 'success' => 'Asset restored successfully.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Your file has been imported', 'file_delete_success' => 'Your file has been been successfully deleted', 'file_delete_error' => 'The file was unable to be deleted', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/is/admin/hardware/table.php b/resources/lang/is/admin/hardware/table.php index aadfee59a7..5e99674d83 100644 --- a/resources/lang/is/admin/hardware/table.php +++ b/resources/lang/is/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Inn/Út', 'checkout_date' => 'Ráðstöfunardagsetning', 'checkoutto' => 'Ráðstafað', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Núvirði', 'diff' => 'Mismunur', 'dl_csv' => 'Hlaða niður CSV', diff --git a/resources/lang/is/admin/licenses/general.php b/resources/lang/is/admin/licenses/general.php index 3b0ad387a3..ba440fff03 100644 --- a/resources/lang/is/admin/licenses/general.php +++ b/resources/lang/is/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Um leyfi', - 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', + 'about_licenses_title' => 'Um leyfi', + 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Checkout History', 'checkout' => 'Checkout License Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Hugbúnaðarleyfi', 'user' => 'Notandi', 'view' => 'Skoða leyfi', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/is/admin/locations/message.php b/resources/lang/is/admin/locations/message.php index d179b25762..bcdf2258ce 100644 --- a/resources/lang/is/admin/locations/message.php +++ b/resources/lang/is/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Skráðar eignir', + 'current_location' => 'Núverandi staðsetning', 'create' => array( diff --git a/resources/lang/is/admin/manufacturers/message.php b/resources/lang/is/admin/manufacturers/message.php index 21a4bc5aaf..d6656683ae 100644 --- a/resources/lang/is/admin/manufacturers/message.php +++ b/resources/lang/is/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Manufacturer does not exist.', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', diff --git a/resources/lang/is/admin/manufacturers/table.php b/resources/lang/is/admin/manufacturers/table.php index b40b6ca4bf..a6341eef46 100644 --- a/resources/lang/is/admin/manufacturers/table.php +++ b/resources/lang/is/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support Email', 'support_phone' => 'Support Phone', 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Update Manufacturer', 'url' => 'URL', diff --git a/resources/lang/is/admin/models/general.php b/resources/lang/is/admin/models/general.php index d2d77e0e8c..7e4a77adbc 100644 --- a/resources/lang/is/admin/models/general.php +++ b/resources/lang/is/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Restore Model', 'requestable' => 'Users may request this model', 'show_mac_address' => 'Show MAC address field in assets in this model', diff --git a/resources/lang/is/admin/models/message.php b/resources/lang/is/admin/models/message.php index e3b29d5b4b..5f47336526 100644 --- a/resources/lang/is/admin/models/message.php +++ b/resources/lang/is/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model does not exist.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model was not updated, please try again', - 'success' => 'Model updated successfully.' + 'success' => 'Model updated successfully.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'No fields were changed, so nothing was updated.', - 'success' => 'Models updated.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/is/admin/settings/general.php b/resources/lang/is/admin/settings/general.php index ca0c77d377..13ba361f7a 100644 --- a/resources/lang/is/admin/settings/general.php +++ b/resources/lang/is/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'Þetta er Active Directory þjónn', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Senda viðvaranir á', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Email Alerts Enabled', @@ -21,7 +21,7 @@ return [ 'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.', 'asset_ids' => 'Asset IDs', 'audit_interval' => 'Tími milli úttekta', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Ef þú þarft reglulega að endurskoða eignir þínar, sláðu inn tímabilið í mánuðum sem þú notar. Ef þú uppfærir þetta gildi, verða allar "næstu endurskoðunardagsetningar" fyrir eignir með komandi endurskoðunardagsetningu uppfærðar.', 'audit_warning_days' => 'Audit Warning Threshold', 'audit_warning_days_help' => 'Með hversu margra daga fyrirvara eigum við að vara þig við því að komið sé að því að framkvæma úttektir á eignum?', 'auto_increment_assets' => 'Generate auto-incrementing asset tags', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Strikamerkja stillingar', @@ -75,8 +75,9 @@ return [ 'label_logo_size' => 'Square logos look best - will be displayed in the top right of each asset label. ', 'laravel' => 'Laravel Version', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group' => 'Sjálfgefinn heimildahópur', + 'ldap_default_group_info' => 'Veldu hóp til að úthluta nýlega samstilltum notendum. Mundu að notandi tekur á sig heimildir hópsins sem honum er úthlutað.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP stillingar', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Site Name', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first
create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/is/admin/settings/message.php b/resources/lang/is/admin/settings/message.php index de74432a5b..230b67815d 100644 --- a/resources/lang/is/admin/settings/message.php +++ b/resources/lang/is/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Prófa LDAP auðkenningu...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Eitthvað fór úrskeiðis.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/is/admin/users/general.php b/resources/lang/is/admin/users/general.php index b2ceadd98e..44ecfe8f02 100644 --- a/resources/lang/is/admin/users/general.php +++ b/resources/lang/is/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Prenta allt skráð', 'email_assigned' => 'Senda t-póst með öllum skráðum búnaði (Email List of All Assigned)', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'Skoða notanda :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'Þú ert að fara skrá ALLA hluti inn frá :count user(s) hér að neðan. Nöfn kerfisstjórar eru uppljómuð með rauðu.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/is/admin/users/message.php b/resources/lang/is/admin/users/message.php index 6234764b85..c771289c55 100644 --- a/resources/lang/is/admin/users/message.php +++ b/resources/lang/is/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'You have successfully declined this asset.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'user_exists' => 'User already exists!', - 'user_not_found' => 'User [:id] does not exist.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'The login field is required', 'user_password_required' => 'The password is required.', 'insufficient_permissions' => 'Insufficient Permissions.', @@ -15,7 +15,7 @@ return array( 'password_resets_sent' => 'The selected users who are activated and have a valid email addresses have been sent a password reset link.', 'password_reset_sent' => 'A password reset link has been sent to :email!', 'user_has_no_email' => 'Þessi notandi er ekki með skráð netfang á prófílnum sínum.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_assets_assigned' => 'Þessi notandi er ekki með búnað skráðan á sig', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Þessi notandi er ekki með netfang skilgreint.', + 'success' => 'Búið að tilkynna notenda um núverandi birgðastöðu.' ) ); \ No newline at end of file diff --git a/resources/lang/is/auth/general.php b/resources/lang/is/auth/general.php index a4df7f1b90..aa00e8eecf 100644 --- a/resources/lang/is/auth/general.php +++ b/resources/lang/is/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Muna eftir mér', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/is/general.php b/resources/lang/is/general.php index 7ea2c68098..b85623db75 100644 --- a/resources/lang/is/general.php +++ b/resources/lang/is/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Aukahlutir', 'activated' => 'Virkjað', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Aukahlutur', 'accessory_report' => 'Aukahlutaskýrsla', 'action' => 'Aðgerð', @@ -11,7 +12,7 @@ return [ 'admin' => 'Kerfisstjóri', 'administrator' => 'Kerfisstjóri', 'add_seats' => 'Viðbætt leyfi', - 'age' => "Age", + 'age' => "Aldur", 'all_assets' => 'Allar eignir', 'all' => 'Allt', 'archived' => 'Geymt', @@ -27,7 +28,13 @@ return [ 'audit' => 'Úttekt', 'audit_report' => 'Úttektarsaga', 'assets' => 'Eignir', + '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' => 'Skráð á', + 'assignee' => 'Assigned to', 'avatar_delete' => 'Delete Avatar', 'avatar_upload' => 'Upload Avatar', 'back' => 'Til baka', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Fjölda innskráing á hlutum frá notendum', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'eftir stöðu', 'cancel' => 'Hætta við', 'categories' => 'Vöruflokkar', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Eyða', 'delete_confirm' => 'Ertu viss um að þú viljir eyða þessum :item?', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', 'deleted' => 'Eytt', 'delete_seats' => 'Eydd leyfi', 'deletion_failed' => 'Eyðing mistókst', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Flytja inn', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Viðhaldssaga eignar', 'item' => 'Item:', 'item_name' => 'Nafn hlutar', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Ónægar aðgangsheimildir!', 'kits' => 'Útbúnaðarlistar', 'language' => 'Tungumál', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Beiðni endurkölluð', 'save' => 'Vista', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Veldu', 'select_all' => 'Veldu alla', 'search' => 'Leita', @@ -240,8 +254,8 @@ return [ 'signature' => 'Undirskrift', 'signed_off_by' => 'Undirritað af', 'skin' => 'Útlit', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Nafn vefsins', 'state' => 'Ríki', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Ertu viss um að þú viljir eyða', 'submit' => 'Staðfesta', 'target' => 'Merking', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Birta tíma og dagsetningu', 'total_assets' => 'skráðar eignir', 'total_licenses' => 'total licenses', @@ -281,9 +294,9 @@ return [ 'yes' => 'Já', 'zip' => 'Póstnúmer', 'noimage' => 'No image uploaded or image not found.', - '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' => 'Umbeðin skrá er ekki til á þjóninum.', + 'file_upload_success' => 'Upphleðsla skráa tókst!', + 'no_files_uploaded' => 'Upphleðsla skráa tókst!', 'token_expired' => 'Your form session has expired. Please try again.', 'login_enabled' => 'Innskráning virkjuð', 'audit_due' => 'Komið að úttekt', @@ -375,7 +388,8 @@ return [ 'bulk_soft_delete' =>'Einnig merkja eydda "soft-delete" þessa notendur. Hreyfingarsaga eigna mun haldast óbreytt eða þangað til að þú velur að eyða varanlega "purge deleted" færslum í stjórnarenda stillingum.', 'bulk_checkin_delete_success' => 'Valdir notendur hefur verið eytt og hlutir þeirra hafa verið skráðir inn.', 'bulk_checkin_success' => 'Hlutir fyrir valin notenda hafa verið skrá inn.', - 'set_to_null' => 'Delete values for this asset|Delete values for all :asset_count assets ', + '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 - Vantar kaupdagssetningu', 'assets_by_status' => 'Eignir(búnaður) eftir stöðu', 'assets_by_status_type' => 'Eignir(búnaður) eftir Tegund', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Upphafsdagsetning', 'end_date' => 'Lokadagsetning', 'alt_uploaded_image_thumbnail' => 'Hlaða upp smámynd', - 'placeholder_kit' => 'Velja sett' + 'placeholder_kit' => 'Velja sett', + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/is/help.php b/resources/lang/is/help.php index 4a7510911f..cfbbaee9b8 100644 --- a/resources/lang/is/help.php +++ b/resources/lang/is/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Eignir eru hlutir sem hægt er að rekja með raðnúmeri eða öðrum merkingum. Þær eru alla jafna verðmætir hlutir sem mikilvægt er að geta aðgreint og borið kennsl á.', diff --git a/resources/lang/is/localizations.php b/resources/lang/is/localizations.php index 83e845c3ac..af772ea828 100644 --- a/resources/lang/is/localizations.php +++ b/resources/lang/is/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'United Kingdom', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/is/mail.php b/resources/lang/is/mail.php index edbc777cdb..16b5ef9259 100644 --- a/resources/lang/is/mail.php +++ b/resources/lang/is/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login to your new Snipe-IT installation using the credentials below:', 'login' => 'Login:', 'Low_Inventory_Report' => 'Skýrsla um lága birgðastöðu', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Nafn búnaðar', 'new_item_checked' => 'A new item has been checked out under your name, details are below.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Your Snipe-IT credentials', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'Skoða þínar eignir', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/is/validation.php b/resources/lang/is/validation.php index cd405f629a..277f0335ea 100644 --- a/resources/lang/is/validation.php +++ b/resources/lang/is/validation.php @@ -43,14 +43,14 @@ return [ 'file' => ':attribute verður að vera skrá.', 'filled' => 'The :attribute field must have a value.', 'image' => ':attribute verður að vera mynd.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + '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' => 'The :attribute must be unique to this Company Location', + '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.', @@ -67,6 +67,8 @@ return [ 'array' => 'The :attribute must have at least :min items.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'Þetta lykilorð er of algengt.', 'statuslabel_type' => 'You must select a valid status label 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/it/admin/accessories/general.php b/resources/lang/it/admin/accessories/general.php index b992c48aa5..9d7cd21dc4 100644 --- a/resources/lang/it/admin/accessories/general.php +++ b/resources/lang/it/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Aggiorna Accessorio', 'use_default_eula' => 'Usa L\'EULA predefinita invece.', 'use_default_eula_disabled' => 'Usa L\'EULA predefinita. Nessuna EULA predefinita è in uso. Per favore aggiungine una nei Settaggi.', + 'clone' => 'Clona Accessorio', + 'delete_disabled' => 'Questo accessorio non può essere cancellato perché alcuni elementi sono ancora assegnati.', ); diff --git a/resources/lang/it/admin/accessories/message.php b/resources/lang/it/admin/accessories/message.php index bc912dca1f..1d8dcd9721 100644 --- a/resources/lang/it/admin/accessories/message.php +++ b/resources/lang/it/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => 'L\'accessorio non è stato estratto, si prega di riprovare', 'success' => 'Accessorio estratto con successo.', + 'unavailable' => 'Accessorio non disponibile per il check-out. Controlla la quantità disponibile', 'user_does_not_exist' => 'Questo utente non è valido. Riprova.' ), diff --git a/resources/lang/it/admin/asset_maintenances/form.php b/resources/lang/it/admin/asset_maintenances/form.php index 42db094a07..c8e2ef9d7e 100644 --- a/resources/lang/it/admin/asset_maintenances/form.php +++ b/resources/lang/it/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Tipo Manutenzione Prodotto', + 'asset_maintenance_type' => 'Tipo Di Manutenzione al Bene', 'title' => 'Titolo', 'start_date' => 'Data Inizio', 'completion_date' => 'Data Completamento', 'cost' => 'Costo', 'is_warranty' => 'Aumento Garanzia', - 'asset_maintenance_time' => 'Tempo Manutenzione Prodotto (in giorni)', + 'asset_maintenance_time' => 'Tempo manutenzione beni (giorni)', 'notes' => 'Note', - 'update' => 'Aggiorna Manutenzione Prodotto', - 'create' => 'Crea Manutenzione Prodotto' + 'update' => 'Aggiorna Manutenzione Bene', + 'create' => 'Crea Manutenzione Bene' ]; diff --git a/resources/lang/it/admin/categories/message.php b/resources/lang/it/admin/categories/message.php index b7328ef6e2..e999e3297a 100644 --- a/resources/lang/it/admin/categories/message.php +++ b/resources/lang/it/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'La categoria non è stata aggiornata, si prega di riprovare', - 'success' => 'Categoria aggiornata con successo.' + 'success' => 'Categoria aggiornata con successo.', + 'cannot_change_category_type' => 'Non puoi cambiare il tipo di categoria una volta creata', ), 'delete' => array( diff --git a/resources/lang/it/admin/components/general.php b/resources/lang/it/admin/components/general.php index 9d6b4ddd89..d484343515 100644 --- a/resources/lang/it/admin/components/general.php +++ b/resources/lang/it/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Rimanenti', 'total' => 'Totale', 'update' => 'Aggiorna Componente', + 'checkin_limit' => 'La quantità in ingresso deve essere uguale o inferiore di :assigned_qty' ); diff --git a/resources/lang/it/admin/components/message.php b/resources/lang/it/admin/components/message.php index c7b42859e5..03b9fabd29 100644 --- a/resources/lang/it/admin/components/message.php +++ b/resources/lang/it/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Il Componente non è stato controllato, si prega di riprovare', 'success' => 'Componente controllato con successo.', - 'user_does_not_exist' => 'Questo utente non è valido. Riprova.' + 'user_does_not_exist' => 'Questo utente non è valido. Riprova.', + 'unavailable' => 'Non ci sono abbastanza componenti: rimangono :remaining , servono :requested ', ), 'checkin' => array( diff --git a/resources/lang/it/admin/consumables/message.php b/resources/lang/it/admin/consumables/message.php index 977dc0d151..4421da54a0 100644 --- a/resources/lang/it/admin/consumables/message.php +++ b/resources/lang/it/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Il consumabile non è stato controllato, prova di nuovo', 'success' => 'Il consumabile è stato controllato con successo.', - 'user_does_not_exist' => 'Questo utente non è valido. Riprova.' + 'user_does_not_exist' => 'Questo utente non è valido. Riprova.', + 'unavailable' => 'Non ci sono abbastanza consumabili per questo check-out. Controlla la quantità rimasta. ', ), 'checkin' => array( diff --git a/resources/lang/it/admin/custom_fields/general.php b/resources/lang/it/admin/custom_fields/general.php index f02dc14e80..2968f1c35f 100644 --- a/resources/lang/it/admin/custom_fields/general.php +++ b/resources/lang/it/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Usato dai Modelli', 'order' => 'Ordine', 'create_fieldset' => 'Nuovo Campo', + 'update_fieldset' => 'Aggiorna Fieldset', + 'fieldset_does_not_exist' => 'Il fieldset :id non esiste', + 'fieldset_updated' => 'Fieldset aggiornato', 'create_fieldset_title' => 'Crea un nuovo campo', 'create_field' => 'Nuovo campo personalizzato', 'create_field_title' => 'Crea un nuovo campo personalizzato', @@ -44,6 +47,8 @@ return [ 'db_convert_warning' => 'AVVERTIMENTO. Questo campo è nella tabella dei campi personalizzati come :db_column ma dovrebbe essere :expected.', 'is_unique' => 'Questo valore deve essere univoco per tutti i beni', 'unique' => 'Univoco', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'Permetti all\'utente di visualizzare questi valori nella pagina Visualizza Beni Assegnati', + 'display_in_user_view_table' => 'Visibile all\'utente', + 'auto_add_to_fieldsets' => 'Aggiungi automaticamente a ogni nuovo campo', + 'add_to_preexisting_fieldsets' => 'Aggiungi a tutti i campi esistenti', ]; diff --git a/resources/lang/it/admin/departments/message.php b/resources/lang/it/admin/departments/message.php index deb1874182..81d1a84b45 100644 --- a/resources/lang/it/admin/departments/message.php +++ b/resources/lang/it/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Il dipartimento non esiste.', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'Esiste già un dipartimento con quel nome in questa sede aziendale. Oppure, scegli un nome più specifico per questo reparto. ', 'assoc_users' => 'Questo reparto è attualmente associato a almeno un utente e non può essere eliminato. Aggiorna i tuoi utenti per non fare più riferimento a questo reparto e riprovare.', 'create' => array( 'error' => 'Il reparto non è stato creato, riprova.', diff --git a/resources/lang/it/admin/groups/message.php b/resources/lang/it/admin/groups/message.php index 290b4bc2db..ac598c1241 100644 --- a/resources/lang/it/admin/groups/message.php +++ b/resources/lang/it/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Il gruppo esiste già!', - 'group_not_found' => 'Il Gruppo [:id] non esiste.', + 'group_not_found' => 'Il Gruppo :id non esiste.', 'group_name_required' => 'E\' richiesto il Nome del campo', 'success' => array( diff --git a/resources/lang/it/admin/hardware/form.php b/resources/lang/it/admin/hardware/form.php index 3ff294699f..c92f4a2f30 100644 --- a/resources/lang/it/admin/hardware/form.php +++ b/resources/lang/it/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confermi elementi di eliminazione di massa', + 'bulk_restore' => 'Conferma ripristino beni massivo', 'bulk_delete_help' => 'Rivedi gli assets sottostanti per la cancellazione massiva. Una volta cancellati, questi assets potranno essere ripristinati, ma non saranno più associati ad alcun utente cui siano attualmente assegnati.', + 'bulk_restore_help' => 'Esamina i beni da ripristinare qui sotto. Una volta recuperati, i beni non verranno riassegnati agli utenti a cui erano precedentemente assegnati.', 'bulk_delete_warn' => 'Stai per cancellare :asset_count assets.', + 'bulk_restore_warn' => 'Stai per ripristinare :asset_count beni.', 'bulk_update' => 'Aggiornamento quantità beni', 'bulk_update_help' => 'Questo modulo consente di aggiornare più risorse in una sola volta. Riempire solo i campi che è necessario cambiare. Tutti i campi lasciati vuoti rimarranno invariati. ', 'bulk_update_warn' => 'Stai per modificare le proprietà di un singolo asset. Stai per modificare le proprietà di :asset_count asset.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Aggiorna solo la posizione predefinita', 'asset_not_deployable' => 'Lo stato del bene è "Non Assegnabile". Non puoi fare il check-out di questo bene.', 'asset_deployable' => 'Lo stato del bene è "Assegnabile". Puoi fare il check-out di questo bene.', - 'processing_spinner' => 'Elaborazione...', + 'processing_spinner' => 'Elaborazione... (Può volerci un po\' su file di grandi dimensioni)', 'optional_infos' => 'Informazioni Opzionali', 'order_details' => 'Informazioni relative all\'ordine' ]; diff --git a/resources/lang/it/admin/hardware/general.php b/resources/lang/it/admin/hardware/general.php index ec517080cb..b1f12c4be7 100644 --- a/resources/lang/it/admin/hardware/general.php +++ b/resources/lang/it/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'Questo bene è stato eliminato.', 'edit' => 'Modifica Asset', 'model_deleted' => 'Questo modello di asset è stato eliminato. Devi ripristinare il modello prima di poter ripristinare il bene.', + 'model_invalid' => 'Il modello di questo bene non è valido.', + 'model_invalid_fix' => 'Il bene deve essere modificato per correggerlo prima di farne il check in o il check out.', 'requestable' => 'Disponibile', 'requested' => 'richiesto', 'not_requestable' => 'Non Richiedibili', @@ -21,6 +23,7 @@ return [ 'restore' => 'Ripristina Asset', 'pending' => 'In attesa', 'undeployable' => 'Non Distribuilbile', + 'undeployable_tooltip' => 'Questo bene ha una etichetta che lo rende non distribuibile, il check-out non può avvenire.', 'view' => 'Vedi Asset', 'csv_error' => 'C\'è un errore nel file CSV:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Messaggi di errore:', 'success_messages' => 'Messaggi di successo:', 'alert_details' => 'Leggere sotto per maggiori dettagli.', - 'custom_export' => 'Esportazione Personalizzata' + 'custom_export' => 'Esportazione Personalizzata', + 'mfg_warranty_lookup' => ':manufacturer Cerca Stato Garanzia', ]; diff --git a/resources/lang/it/admin/hardware/message.php b/resources/lang/it/admin/hardware/message.php index bf85f11e09..5a5ca4259d 100644 --- a/resources/lang/it/admin/hardware/message.php +++ b/resources/lang/it/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Il bene non è stato ripristinato, riprova', 'success' => 'Bene ripristinato con successo.', + 'bulk_success' => 'Bene ripristinato con successo.', + 'nothing_updated' => 'Nessun bene selezionato, non è stato ripristinato nulla.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Il file è stato importato con successo', 'file_delete_success' => 'Il file è stato cancellato con successo', 'file_delete_error' => 'Impossibile eliminare il file', + 'header_row_has_malformed_characters' => 'Uno o più attributi nella riga d\'intestazione contengono caratteri UTF-8 malformati', + 'content_row_has_malformed_characters' => 'Uno o più attributi nella prima riga del contenuto contengono caratteri UTF-8 malformati', ], diff --git a/resources/lang/it/admin/hardware/table.php b/resources/lang/it/admin/hardware/table.php index 67b102ace2..02b3e4fb57 100644 --- a/resources/lang/it/admin/hardware/table.php +++ b/resources/lang/it/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'Dentro/Fuori', 'checkout_date' => 'Data di estrazione', 'checkoutto' => 'Estratto', + 'components_cost' => 'Costo Totale Componenti', 'current_value' => 'Valore Attuale', 'diff' => 'Differenza', 'dl_csv' => 'Scarica CSV', diff --git a/resources/lang/it/admin/licenses/general.php b/resources/lang/it/admin/licenses/general.php index cb1ef8b0e3..581d250639 100644 --- a/resources/lang/it/admin/licenses/general.php +++ b/resources/lang/it/admin/licenses/general.php @@ -1,8 +1,8 @@ 'Informazioni sulle licenze', - 'about_licenses' => 'Le licenze vengono utilizzate per monitorare il software. Hanno un numero specifico di posti che possono essere verificati agli individui', + 'about_licenses_title' => 'Informazioni sulle licenze', + 'about_licenses' => 'Le licenze vengono utilizzate per monitorare il software. Hanno un numero specifico di posti che possono essere verificati agli individui', 'checkin' => 'Registrare Licenza Sede', 'checkout_history' => 'Storico Estrazioni', 'checkout' => 'Estrazione Licenza Sede', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Licenze Software', 'user' => 'Utente', 'view' => 'Mostra Licenza', + 'delete_disabled' => 'Questa licenza non può essere cancellata perché ci sono delle postazioni assegnate.', + 'bulk' => + [ + '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.', + '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', + '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', + ], + + 'checkout_all' => [ + 'button' => 'Check-out di tutte le postazioni', + 'modal' => 'Ciò effettuerà il check-out di una postazione al primo utente disponibile. | Questa azione effettuerà il checkout di :available_seats_count postazioni ai primi utenti disponibili. Un utente viene considerato disponibile se non hanno già questa licenza e la proprietà Auto-Assegna Licenza è attivata nel loro account utente.', + 'enabled_tooltip' => 'Assegna TUTTE le postazioni (o tutte quelle disponibili) a TUTTI gli utenti', + 'disabled_tooltip' => 'Disattivato perché non ci sono postazioni disponibili', + 'success' => 'Check-out della licenza effettuato ! | Check-out di :count licenze effettuato!', + 'error_no_seats' => 'Nessuna postazione rimasta per questa licenza.', + 'warn_not_enough_seats' => ':count utenti assegnati a questa licenza, ma le postazioni sono finite.', + 'warn_no_avail_users' => 'Non ho fatto nulla: Non ci sono utenti che non abbiano già questa licenza.', + 'log_msg' => 'Check-out effettuato tramite GUI di assegnazione massiva di licenze', + + + ], + ], ); diff --git a/resources/lang/it/admin/locations/message.php b/resources/lang/it/admin/locations/message.php index 0d90671b8d..7fa6a234ee 100644 --- a/resources/lang/it/admin/locations/message.php +++ b/resources/lang/it/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'Questa posizione è associata ad almeno un utente e non può essere cancellata. Si prega di aggiornare i vostri utenti di riferimento e riprovare. ', 'assoc_assets' => 'Questa posizione è associata ad almeno un prodotto e non può essere cancellata. Si prega di aggiornare i vostri prodotti di riferimento e riprovare. ', 'assoc_child_loc' => 'Questa posizione è parente di almeno un\'altra posizione e non può essere cancellata. Si prega di aggiornare le vostre posizioni di riferimento e riprovare. ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => 'Beni Assegnati', + 'current_location' => 'Posizione attuale', 'create' => array( diff --git a/resources/lang/it/admin/manufacturers/message.php b/resources/lang/it/admin/manufacturers/message.php index 316e202e87..c75c157aad 100644 --- a/resources/lang/it/admin/manufacturers/message.php +++ b/resources/lang/it/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Usa {LOCALE} e {SERIAL} nell\'URL come variabili per avere i valori riempiti automaticamente durante la visualizzazione dei beni.', 'does_not_exist' => 'Il produttore non esiste.', 'assoc_users' => 'Questo produttore è attualmente associato con almeno un modello e non può essere eliminato. Si prega di aggiornare i modelli di riferimento e riprovare. ', diff --git a/resources/lang/it/admin/manufacturers/table.php b/resources/lang/it/admin/manufacturers/table.php index 484469cdcd..3ec4745b8d 100644 --- a/resources/lang/it/admin/manufacturers/table.php +++ b/resources/lang/it/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'E-mail di supporto', 'support_phone' => 'Telefono di sostegno', 'support_url' => 'URL di supporto', + 'warranty_lookup_url' => 'URL Stato Garanzia', 'update' => 'Aggiorna Produttore', 'url' => 'URL', diff --git a/resources/lang/it/admin/models/general.php b/resources/lang/it/admin/models/general.php index 1a756a96d8..7763bd1863 100644 --- a/resources/lang/it/admin/models/general.php +++ b/resources/lang/it/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'Questo modello è stato eliminato.', 'bulk_delete' => 'Eliminazione di massa di modelli Asset', 'bulk_delete_help' => 'Utilizza le caselle di controllo in basso per confermare la cancellazione dei modelli di asset selezionati. I modelli di asset con asset ad essi associati non possono essere eliminati finché le risorse non sono associate a un modello diverso.', - 'bulk_delete_warn' => 'Stai per cancellare :asset_count assets.', + 'bulk_delete_warn' => 'Stai per cancellare un modello di bene.|Stai per cancellare :model_count modelli di bene.', 'restore' => 'Ripristinare il modello', 'requestable' => 'Gli utenti possono richiedere questo modello', 'show_mac_address' => 'Mostra MAC Address dei beni in questo modello', diff --git a/resources/lang/it/admin/models/message.php b/resources/lang/it/admin/models/message.php index 45fd0b3f42..028660345a 100644 --- a/resources/lang/it/admin/models/message.php +++ b/resources/lang/it/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Il modello non esiste.', + 'no_association' => 'NESSUN MODELLO ASSOCIATO.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Il modello non è stato aggiornato, si prega di riprovare', - 'success' => 'Modello aggiornato con successo.' + 'success' => 'Modello aggiornato con successo.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'Nessun campo è stato modificato, quindi niente è stato aggiornato.', - 'success' => 'Modelli aggiornati.' + 'success' => 'Modello aggiornato. |:model_count modelli aggiornati con successo.', + 'warn' => 'Stai per aggiornare le proprietà di questo modello: |Stai per modificare le proprietà di questi :model_count modelli:', + ), 'bulkdelete' => array( 'error' => 'Non sono stati selezionati modelli, quindi non è stato eliminato nulla.', - 'success' => ':success_count modelli eliminati!', + 'success' => 'Modello cancellato!|:success_count modelli cancellati!', 'success_partial' => ':success_count modelli sono stati eliminati, tuttavia non è stato possibile eliminare :fail_count modelli perché dispongono ancora di risorse associate.' ), diff --git a/resources/lang/it/admin/settings/general.php b/resources/lang/it/admin/settings/general.php index 4d7b6afe57..ebb28a9814 100644 --- a/resources/lang/it/admin/settings/general.php +++ b/resources/lang/it/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'Se desideri inviare una copia delle e-mail di consegna / ritiro che vengono inviate agli utenti a un altro account e-mail, inseriscile qui. Altrimenti, lascia questo campo vuoto.', 'is_ad' => 'Si tratta di un server Active Directory', 'alerts' => 'Avvisi', - 'alert_title' => 'Aggiorna Impostazioni Avviso', + 'alert_title' => 'Aggiorna impostazioni di notifica', 'alert_email' => 'Invia avvisi a', 'alert_email_help' => 'Indirizzi email o liste di distribuzione a cui si desidera inviare gli avvisi, separati da una virgola', 'alerts_enabled' => 'Attiva Avvisi', @@ -21,7 +21,7 @@ return [ 'allow_user_skin_help_text' => 'Selezionando questa casella, l\'utente potrà sovrascrivere il tema dell\'interfaccia utente con uno diverso.', 'asset_ids' => 'ID Bene', 'audit_interval' => 'Intervallo di controllo', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Se controllate fisicamente e periodicamente i vostri beni, inserite l\'intervallo in mesi utilizzato. Se si aggiorna questo valore, tutte le "prossime date di revisione" per i beni con una data di revisione saranno aggiornate.', 'audit_warning_days' => 'Soglia di allarme di controllo', 'audit_warning_days_help' => 'Quanti giorni in anticipo dovremmo avvisare quando i beni sono dovuti per il controllo?', 'auto_increment_assets' => 'Genera tag beni ad incremento automatico', @@ -75,8 +75,9 @@ return [ 'label_logo_size' => 'I loghi quadrati hanno un aspetto migliore - verranno visualizzati in alto a destra di ogni etichetta dell\'asset. ', 'laravel' => 'Laravel Version', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group' => 'Gruppo Di Permessi Predefinito', + 'ldap_default_group_info' => 'Seleziona un gruppo a cui assegnare i nuovi utenti. Ricorda che un utente ottiene le autorizzazioni del gruppo a cui appartiene.', + 'no_default_group' => 'Nessun Gruppo Predefinito', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'Chiave TLS client LDAP', 'ldap_client_tls_cert' => 'Certificato TLS Client LDAP', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'Impostazioni LDAP', 'ldap_client_tls_cert_help' => 'Il Certificato e la Chiave TLS Client per le connessioni LDAP sono di solito richieste solo nelle configurazioni di Google Workspace con "Secure LDAP".', 'ldap_client_tls_key' => 'Chiave TLS client LDAP', + 'ldap_location' => 'Posizione LDAP', +'ldap_location_help' => 'Il campo Posizione LDAP deve essere usato se una OU non viene utilizzata nella Base Bind DN Lascia vuoto se viene usata la ricerca OU.', 'ldap_login_test_help' => 'Immettere un nome utente e una password LDAP validi dal DN di base specificato in precedenza per verificare se il login LDAP è configurato correttamente. DEVI SALVARE LE IMPOSTAZIONI LDAP AGGIORNATE PRIMA.', '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', @@ -197,16 +200,21 @@ return [ 'show_images_in_email' => 'Mostra le immagini nelle e-mail', 'show_images_in_email_help' => 'Deseleziona questa casella se l\'installazione di Snipe-IT si trova dietro una rete VPN o chiusa e gli utenti esterni alla rete non saranno in grado di caricare le immagini fornite da questa installazione nelle loro e-mail.', 'site_name' => 'Nome sito', + 'integrations' => 'Integrazioni', 'slack' => 'Slack', - 'slack_title' => 'Aggiorna Impostazioni Slack', - 'slack_help' => 'Impostazioni Slack', - 'slack_botname' => 'Botname Slack', - 'slack_channel' => 'Canale Slack', - 'slack_endpoint' => 'Finale Slack', - 'slack_integration' => 'Impostazioni Slack', - 'slack_integration_help' => 'L\'integrazione di Slack è facoltativa, tuttavia l\'endpoint e il canale sono necessari se si desidera utilizzarla. Per configurare l\'integrazione di Slack devi prima creare un webhook in arrivo sul tuo account Slack. Clicca sul pulsante Verifica integrazione Slack per effettuare un test e confermare che le impostazioni sono corrette, prima di salvare. ', - 'slack_integration_help_button' => 'Dopo aver salvato le informazioni Slack, apparirà un pulsante di test.', - 'slack_test_help' => 'Verifica se l\'integrazione Slack è configurata correttamente. PRIMA È NECESSARIO SALVARE LE IMPOSTAZIONI SLACK AGGIORNATE.', + 'general_webhook' => 'Webhook Generale', + 'webhook' => ':app', + 'webhook_presave' => 'Test da Salvare', + 'webhook_title' => 'Aggiorna Impostazioni Webhook', + 'webhook_help' => 'Impostazioni integrazione', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Canale', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Impostazioni', + 'webhook_test' =>'Prova integrazione :app', + 'webhook_integration_help' => 'L\'integrazione con :app è facoltativa, ma se si desidera utilizzarla bisogna specificare l\'endpoint e il canale. Per configurare l\'integrazione devi creare un webhook in arrivo sul tuo account :app . Clicca su Prova integrazione :app per confermare che le impostazioni siano corrette prima di salvare. ', + 'webhook_integration_help_button' => 'Una volta salvate le informazioni di :app, apparirà un pulsante di prova.', + 'webhook_test_help' => 'Verifica se l\'integrazione :app è configurata correttamente. DEVI PRIMA SALVARE LE IMPOSTAZIONI :app AGGIORNATE.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Supporto per i collegamenti a piè di pagina ', 'support_footer_help' => 'Specificare chi vede i collegamenti alle informazioni sul supporto IT e su Snipe-IT', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localizzazione, valuta, locale, locali fuso orario, orario, internazionale, internazionalizzazione, lingua, lingue, traduzione', 'localization_help' => 'Lingua, formato data', 'notifications' => 'Notifiche', - 'notifications_help' => 'Avvisi via email, impostazioni sui controlli', + 'notifications_help' => 'Impostazioni Avvisi E Email Controlli', 'asset_tags_help' => 'Incrementi e prefissi', 'labels' => 'Etichette', 'labels_title' => 'Aggiorna Impostazioni Etichette', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Successivo: Crea Utente', 'ldap_settings_link' => 'Impostazioni LDAP', 'slack_test' => 'Test Integrazione', + 'google_callback_help' => 'Inserisci qeusto URL come URL di callback nelle impostazioni della tua app Google OAuth nella Google Cloud Console della tua organizzazione.', + 'google_login' => 'Impostazioni Accesso Google Workspace', + 'enable_google_login' => 'Consenti agli utenti di accedere con Google Workspace', + 'enable_google_login_help' => 'Gli utenti non verranno creati automaticamente. Devono avere SIA un account qui CHE in Google Workspace e il loro nome utente qui deve corrispondere al loro indirizzo email di Google Workspace. ', + ]; diff --git a/resources/lang/it/admin/settings/message.php b/resources/lang/it/admin/settings/message.php index 53907bb5ba..71ecbb9ea2 100644 --- a/resources/lang/it/admin/settings/message.php +++ b/resources/lang/it/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testo l\'Autenticazione LDAP...', 'authentication_success' => 'Utente autenticato correttamente con LDAP!' ], - 'slack' => [ - 'sending' => 'Invio messaggio di test su Slack...', - 'success_pt1' => 'Successo! Controlla il ', - 'success_pt2' => ' canale del messaggio di prova, e assicurati di fare clic su SALVA qui sotto per memorizzare le impostazioni.', + 'webhook' => [ + 'sending' => 'Invio a :app un messaggio di prova...', + 'success_pt1' => 'Successo! Controlla il canale ', + 'success_pt2' => ' con il messaggio di prova, e assicurati di fare clic su SALVA qui sotto per memorizzare le impostazioni.', '500' => 'Errore del server 500.', - 'error' => 'Qualcosa è andato storto.', + 'error' => 'Qualcosa è andato storto. :app ha risposto con: :error_message', + 'error_misc' => 'Qualcosa è andato storto. :( ', ] ]; diff --git a/resources/lang/it/admin/users/general.php b/resources/lang/it/admin/users/general.php index 3a9d59c9db..c97a4eb4e0 100644 --- a/resources/lang/it/admin/users/general.php +++ b/resources/lang/it/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Stampa tutti assegnati', 'email_assigned' => 'Elenco e-mail di tutti assegnati', 'user_notified' => 'All\'utente è stato inviato tramite e-mail un elenco degli elementi attualmente assegnati.', + 'auto_assign_label' => 'Includi l\'utente nella assegnazione automatica delle licenze', + 'auto_assign_help' => 'Salta l\'utente nell\'assegnazione automatica delle licenze', 'software_user' => 'Software estratto a :name', 'send_email_help' => 'Devi fornire un indirizzo email all\'utente per inviare loro le credenziali. L\'inoltro delle credenziali via email avviene solo durante la creazione dell\'utente. La password è memorizzata in un hash unidirezionale e non può essere recuperata, una volta salvata.', 'view_user' => 'Visualizza Utente :name', @@ -33,12 +35,20 @@ return [ 'superadmin_permission_warning' => 'Solo i superamministratori possono concedere il permesso di superamministratore a un altro utente.', 'admin_permission_warning' => 'Solo gli utenti con diritti di amministratore o superiore possono nominare altri utenti come amministratore.', 'remove_group_memberships' => 'Rimuove Membri del Gruppo', - 'warning_deletion' => 'ATTENZIONE:', - 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', + 'warning_deletion_information' => 'Stai per effettuare il Checkin di TUTTI gli elementi degli utenti :count elencati di seguito. I nomi dei super amministratori sono evidenziati in rosso.', 'update_user_assets_status' => 'Aggiorna tutti i beni per questi utenti a questo stato', 'checkin_user_properties' => 'Esegui il check-in di tutte le proprietà associate a questi utenti', 'remote_label' => 'Questo è un utente remoto', 'remote' => 'Remoto', 'remote_help' => 'Questo può esserti utile se devi filtrare gli utenti remoti che non entrano mai o solo raramente nelle tue posizioni fisiche.', 'not_remote_label' => 'Questo non è un utente remoto', + 'vip_label' => 'Utente VIP', + 'vip_help' => 'Puoi contrassegnare le persone importanti nella tua organizzazione, se vuoi trattarle in maniera speciale.', + 'create_user' => 'Crea utente', + 'create_user_page_explanation' => 'Queste sono le informazioni dell\'account che utilizzerai per accedere al sito per la prima volta.', + 'email_credentials' => 'Credenziali email', + 'email_credentials_text' => 'Invia le mie credenziali all\'indirizzo email qui sopra', + 'next_save_user' => 'Successivo: Salva Utente', + 'all_assigned_list_generation' => 'Generato il:', + 'email_user_creds_on_create' => 'Mandare le credenziali all\'utente?', ]; diff --git a/resources/lang/it/admin/users/message.php b/resources/lang/it/admin/users/message.php index 6859ed25f3..5883571e9f 100644 --- a/resources/lang/it/admin/users/message.php +++ b/resources/lang/it/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'Hai rifiutato con successo questo prodotto.', 'bulk_manager_warn' => 'I tuoi utenti sono stati aggiornati con successo, tuttavia la voce del gestore non è stata salvata perché il gestore selezionato è stato anche nell\'elenco utenti da modificare e gli utenti potrebbero non essere il proprio gestore. Seleziona nuovamente i tuoi utenti, esclusi il gestore.', 'user_exists' => 'Utente già esistente!', - 'user_not_found' => 'L\'utente [:id] non esite.', + 'user_not_found' => 'L\'utente non esiste.', 'user_login_required' => 'È necessario il campo login', 'user_password_required' => 'È richiesta la password.', 'insufficient_permissions' => 'Permessi Insufficienti.', @@ -15,7 +15,7 @@ return array( 'password_resets_sent' => 'È stato inviato un link agli utenti selezionati che sono attivati e hanno un indirizzo email valido, per reimpostare la password.', 'password_reset_sent' => 'Un link per reimpostare la password è stato inviato a :email!', 'user_has_no_email' => 'Questo utente non ha un indirizzo email nel suo profilo.', - 'user_has_no_assets_assigned' => 'This user does not have any assets assigned', + 'user_has_no_assets_assigned' => 'Questo utente non ha nessun bene assegnato', 'success' => array( @@ -61,7 +61,7 @@ return array( ), 'inventorynotification' => array( - 'error' => 'This user has no email set.', - 'success' => 'The user has been notified about their current inventory.' + 'error' => 'Questo utente non ha una email.', + 'success' => 'L\'utente è stato informato del suo inventario corrente.' ) ); \ No newline at end of file diff --git a/resources/lang/it/auth/general.php b/resources/lang/it/auth/general.php index d4d75d8750..41d8dc220f 100644 --- a/resources/lang/it/auth/general.php +++ b/resources/lang/it/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Ricordami', 'username_help_top' => 'Inserisci il tuo nome utente per ricevere via email il link per reimpostare la password.', 'username_help_bottom' => 'Il tuo nome utente e indirizzo email possono essere gli stessi, ma potrebbe non essere così a seconda della tua configurazione. Se non riesci a ricordare il tuo nome utente, contatta l\'amministratore.

I nomi utente senza un indirizzo email associato non potranno ricevere via email il link di reimpostazione della password. ', - ]; + 'google_login' => 'O accedi con Google Workspace', + 'google_login_failed' => 'Accesso con Google non riuscito, riprova.', + +]; diff --git a/resources/lang/it/button.php b/resources/lang/it/button.php index b741e87562..59c755e916 100644 --- a/resources/lang/it/button.php +++ b/resources/lang/it/button.php @@ -4,7 +4,7 @@ return [ 'actions' => 'Azioni', 'add' => 'Aggiungi Nuovo', 'cancel' => 'Annulla', - 'checkin_and_delete' => 'Checkin All / Delete User', + 'checkin_and_delete' => 'Checkin di tutto / Elimina utente', 'delete' => 'Cancella', 'edit' => 'Modifica', 'restore' => 'Ripristina', diff --git a/resources/lang/it/general.php b/resources/lang/it/general.php index a0cb3ac4ca..d5fc154ca6 100644 --- a/resources/lang/it/general.php +++ b/resources/lang/it/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accessori', 'activated' => 'Attivato', + 'accepted_date' => 'Accettato Il', 'accessory' => 'Accessorio', 'accessory_report' => 'Rapporto sugli Accessori', 'action' => 'Azione', @@ -11,7 +12,7 @@ return [ 'admin' => 'Amministratore', 'administrator' => 'Amministratore', 'add_seats' => 'Aggiunti posti', - 'age' => "Age", + 'age' => "Età", 'all_assets' => 'tutti i beni', 'all' => 'Tutti i', 'archived' => 'Archiviato', @@ -27,7 +28,13 @@ return [ 'audit' => 'revisione', 'audit_report' => 'Registro di controllo', 'assets' => 'Beni', + 'assets_audited' => 'beni controllati', + 'assets_checked_in_count' => 'beni con check in', + 'assets_checked_out_count' => 'beni con check out', + 'asset_deleted_warning' => 'Questo bene è stato eliminato. Devi ripristinarlo prima di poterlo assegnare a qualcuno.', + 'assigned_date' => 'Assegnato Il', 'assigned_to' => 'Assegnato a :name', + 'assignee' => 'Assegnato a', 'avatar_delete' => 'Cancella Avatar', 'avatar_upload' => 'Carica Avatar', 'back' => 'Indietro', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Modifica in blocco', 'bulk_delete' => 'Elimina quantità', 'bulk_actions' => 'Gruppo di azioni', - 'bulk_checkin_delete' => 'Check-in massivo di oggetti dagli Utenti', + 'bulk_checkin_delete' => 'Registra / Cancella Utenti', + 'byod' => 'BYOD', + 'byod_help' => 'Questo dispositivo è di proprietà dell\'utente', 'bystatus' => 'in base allo stato', 'cancel' => 'annulla', 'categories' => 'Categorie', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'Questa applicazione è in esecuzione in modalità di produzione con il debug abilitato. Questo può esporre dati sensibili se l\'applicazione è accessibile al mondo esterno. Disabilitare la modalità di debug impostando il valore APP_DEBUG nel file .env a false.', 'delete' => 'elimina', 'delete_confirm' => 'Sei sicuro di voler eliminare :item?', + 'delete_confirm_no_undo' => 'Sei sicuro di voler cancellare :item? Questa azione non può essere annullata.', 'deleted' => 'Eliminata', 'delete_seats' => 'Posti Cancellati', 'deletion_failed' => 'Eliminazione fallita', @@ -139,6 +149,7 @@ return [ 'filetypes_accepted_help' => 'Tipo di file accettato: :types. Dimensione massima di caricamento per un file: :size.|Tipi di file accettati: :types. Dimensione massima di caricamento per un file: :size.', 'filetypes_size_help' => 'Dimensione massima di caricamento per un file: :size.', 'image_filetypes_help' => 'I tipi di file accettati sono jpg, webp, png, gif e svg. La dimensione massima consentita per il caricamento è :size.', + 'unaccepted_image_type' => 'Questo file non è leggibile. I tipi di file accettati sono jpg, webp, png, gif e svg. Il tipo di questo file è :mimetype.', 'import' => 'Importa', 'importing' => 'Importare', 'importing_help' => 'È possibile importare risorse, accessori, licenze, componenti, materiali di consumo e utenti utilizzando file CSV.

Il CSV dovrebbe essere delimitato e formattato con elementi che corrispondano a quelle della seguente documentazione esempio CSV .', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Manutenzione Prodotto', 'item' => 'Articolo', 'item_name' => 'Nome elemento', + 'import_file' => 'importa file CSV', + 'import_type' => 'tipo importazione CSV', 'insufficient_permissions' => 'Permessi Insufficienti!', 'kits' => 'Kit Predefiniti', 'language' => 'Lingua', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Risorse richieste', 'request_canceled' => 'Richiesta annullata', 'save' => 'Salva', + 'select_var' => 'Seleziona :thing... ', // this will eventually replace all of our other selects 'select' => 'Seleziona', 'select_all' => 'Seleziona tutto', 'search' => 'Cerca', @@ -240,8 +254,8 @@ return [ 'signature' => 'Firma', 'signed_off_by' => 'Firmato Da', 'skin' => 'Tema', - 'slack_msg_note' => 'Verrà inviato un messaggio slack', - 'slack_test_msg' => 'Oh hai! Sembra che la tua integrazione Slack con Snipe-IT funziona!', + 'webhook_msg_note' => 'Una notifica verrà inviata tramite webhook', + 'webhook_test_msg' => 'Ciao! Sembra che l\'integrazione di :app su Snipe-IT funzioni!', 'some_features_disabled' => 'DEMO: Alcune caratteristiche sono disabilitate in questa modalità.', 'site_name' => 'Nome sito', 'state' => 'Stato', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Sei sicuro di voler eliminare', 'submit' => 'Invia', 'target' => 'Assegnatario', - 'toggle_navigation' => 'Attiva/disattiva barra di navigazione', 'time_and_date_display' => 'Visualizzazione del tempo e del tempo', 'total_assets' => 'Assets totali', 'total_licenses' => 'Totale licenze', @@ -281,9 +294,9 @@ return [ 'yes' => 'SÌ', 'zip' => 'Zip', 'noimage' => 'Nessuna immagine caricata o immagine non trovata.', - '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' => 'Il file richiesto non esiste sul server.', + 'file_upload_success' => 'Caricamento file riuscito!', + 'no_files_uploaded' => 'Caricamento file riuscito!', 'token_expired' => 'La sessione di modulo è scaduta. Riprova.', 'login_enabled' => 'Login Abilitato', 'audit_due' => 'In scadenza per l\'audit', @@ -375,7 +388,8 @@ return [ 'bulk_soft_delete' =>'Includi soft-delete di questi utenti. La cronologia dei loro Beni rimarrà intatta finché non elimini i record nelle Impostazioni di Amministrazione.', 'bulk_checkin_delete_success' => 'Gli utenti che hai selezionato sono stati eliminati ed è stato effettuato il check-in degli oggetti loro assegnati.', 'bulk_checkin_success' => 'Il check-in degli oggetti per gli utenti selezionati è stato completato.', - 'set_to_null' => 'Elimina i valori per questo asset|Elimina i valori per :asset_count asset ', + 'set_to_null' => 'Elimina i valori per questo asset|Elimina i valori per :asset_count asset ', + 'set_users_field_to_null' => 'Cancella i valori :field per questo utente|Cancella i valori :field per tutti i :user_count utenti ', 'na_no_purchase_date' => 'N/A - Nessuna data di acquisto', 'assets_by_status' => 'Asset per Stato', 'assets_by_status_type' => 'Asset per Tipo di Stato', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Data Inizio', 'end_date' => 'Data Fine', 'alt_uploaded_image_thumbnail' => 'Miniatura caricata', - 'placeholder_kit' => 'Seleziona un kit' + 'placeholder_kit' => 'Seleziona un kit', + 'file_not_found' => 'File non trovato', + 'preview_not_available' => '(nessuna anteprima)', + 'setup' => 'Setup', + 'pre_flight' => 'Prova', + 'skip_to_main_content' => 'Vai al contenuto', + 'toggle_navigation' => 'Modalità di navigazione', + 'alerts' => 'Avvisi', + 'tasks_view_all' => 'Mostra tutti i task', + 'true' => 'Vero', + 'false' => 'Falso', + 'integration_option' => 'Opzioni d\'integrazione', + 'log_does_not_exist' => 'Nessuna corrispondenza nel log.', + 'merge_users' => 'Unisci Utenti', + 'merge_information' => ':count utenti verranno uniti in un singolo utente. Seleziona l\'utente destinazione dell\'unione, e tutti i beni, licenze, etc verranno spostato all\'utente selezionato, mentre gli altri utenti saranno contrassegnati come eliminati.', + 'warning_merge_information' => 'Questa azione NON PUÒ essere annullata e dovrebbe essere usata SOLO quando è necessario unire utenti a causa di una errata importazione o sincronizzazione. Esegui prima un backup.', + 'no_users_selected' => 'Nessun utente selezionato', + 'not_enough_users_selected' => 'Devi selezionare almeno :count utenti', + 'merge_success' => ':count utenti uniti con successo in :into_username!', + 'merged' => 'uniti', + 'merged_log_this_user_into' => 'Utente (ID :to_id - :to_username) unito in :from_id (:from_username) ', + 'merged_log_this_user_from' => 'ID Utente :from_id (:from_username) unito in (ID :to_id - :to_username)', + 'clear_and_save' => 'Pulisci & Salva', + 'update_existing_values' => 'Aggiornare i Valori Esistenti?', + 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generazione incrementale dei tag dei beni è disattivata: Tutte le righe devono avere una voce in "Tag Bene".', + 'auto_incrementing_asset_tags_enabled_so_now_assets_will_be_created' => 'Nota: la generazione automatica dei tag per gli assets è attiva, quindi il tag verrà creato per ogni asset che non avesse il campo tag popolato. Gli elementi già provvisti di Tag saranno aggiornati con le informazioni fornite.', + 'send_welcome_email_to_users' => ' Inviare Mail di Benvenuto ai nuovi utenti?', + 'back_before_importing' => 'Backup prima di importare?', + 'csv_header_field' => 'Campo Intestazione Csv', + 'import_field' => 'Importa Campo', + 'sample_value' => 'Valore di Esempio', + 'no_headers' => 'Nessuna Colonne Trovata', + 'error_in_import_file' => 'Errore durante la lettura del file CSV: :error', + 'percent_complete' => ':percent % Completato', + 'errors_importing' => 'Errori durante l\'importazione: ', + 'warning' => 'ATTENZIONE: :warning', + 'success_redirecting' => '"Successo... Reindirizzamento.', + 'setup_successful_migrations' => 'Le tabelle del database sono state create', + 'setup_migration_output' => 'Output migrazione:', + 'setup_migration_create_user' => 'Successivo: Crea Utente', + 'importer_generic_error' => 'Importazione completata, ma nel mentre è stato ricevuto un errore. Questo di solito è causato da API di terze parti in throttling, come quelle delle notifiche in webhook (come Slack), che non dovrebbero interferire con l\'importazione, ma è meglio controllare.', + 'confirm' => 'Conferma', + 'autoassign_licenses' => 'Auto-Assegna Licenze', + 'autoassign_licenses_help' => 'Permetti a questo utente di avere licenze assegnate tramite la GUI per l\'assegnazione massiva delle licenze o con gli strumenti cli.', + 'autoassign_licenses_help_long' => 'Ciò permette a un utente di farsi assegnare licenze tramite la GUI di assegnazione massiva di licenze o con gli strumenti cli. (Per esempio, potresti non volere che degli appaltatori ricevano automaticamente una licenza che forniresti solo al personale. Puoi ancora assegnare individualmente le licenze a questi utenti, ma non verranno inclusi nella funziona "Assegna a tutti gli utenti".)', + 'no_autoassign_licenses_help' => 'Non includere l\'utente nelle assegnazioni massive tramite la GUI o gli strumenti cli.', + 'modal_confirm_generic' => 'Si è sicuri?', + 'cannot_be_deleted' => 'Questo elemento non può essere eliminato', + 'undeployable_tooltip' => 'Non puoi fare il check out di questo oggetto. Controlla la quantità rimanente.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/it/help.php b/resources/lang/it/help.php index ba8d357293..38f1b9f909 100644 --- a/resources/lang/it/help.php +++ b/resources/lang/it/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Ulteriori Informazioni', - 'audit_help' => 'Selezionando questa casella verrà modificato l\'asset per riflettere la nuova località, altrimenti verrà semplicemente menzionato nel registro di audit.

Se l\'asset è già assegnato, non cambierà la località dell\'utente, dell\'asset o la località a cui è assegnato.', + 'audit_help' => 'Selezionando questa casella verranno modificati le posizioni dei beni. Non selezionandola, il luogo verrà semplicemente annotato nel log di controllo.

Nota che se questo bene è assegnato, non modificherà la posizione della persona, bene o posizione a cui è assegnato.', 'assets' => 'Assets sono elementi tracciati con il numero di serie o il tag. Tendono ad essere elementi di valore più elevato, ove è importante identificare un elemento specifico.', diff --git a/resources/lang/it/localizations.php b/resources/lang/it/localizations.php index bef2c52931..47a2612ca6 100644 --- a/resources/lang/it/localizations.php +++ b/resources/lang/it/localizations.php @@ -92,38 +92,38 @@ return [ 'BI'=>'Burundi', 'BJ'=>'Benin', 'BM'=>'Bermuda', - 'BN'=>'Brunei Darussalam', + 'BN'=>'Sultanato del Brunei', 'BO'=>'Bolivia', 'BR'=>'Brasile', 'BS'=>'Bahamas', 'BT'=>'Bhutan', - 'BV'=>'Bouvet Island', + 'BV'=>'Isola di Bouvet', 'BW'=>'Botswana', - 'BY'=>'Belarus', + 'BY'=>'Bielorussia', 'BZ'=>'Belize', 'CA'=>'Canada', - 'CC'=>'Cocos (Keeling) Islands', - 'CD'=>'Congo (Democratic Republic)', - 'CF'=>'Central African Republic', - 'CG'=>'Congo (Republic)', + 'CC'=>'Isole Cocos (Keeling)', + 'CD'=>'Congo (Repubblica Democratica)', + 'CF'=>'Repubblica Centrafricana', + 'CG'=>'Congo (Repubblica)', 'CH'=>'Svizzera', - 'CI'=>'Côte d\'Ivoire', - 'CK'=>'Cook Islands', - 'CL'=>'Chile', + 'CI'=>'Costa d’Avorio', + 'CK'=>'Isole Cook', + 'CL'=>'Cile', 'CM'=>'Camerun', 'CN'=>'Repubblica popolare cinese', 'CO'=>'Colombia', 'CR'=>'Costa Rica', 'CU'=>'Cuba', - 'CV'=>'Cape Verde', - 'CX'=>'Christmas Island', - 'CY'=>'Cyprus', - 'CZ'=>'Czech Republic', + 'CV'=>'Capo Verde', + 'CX'=>'Isola Di Natale', + 'CY'=>'Cipro', + 'CZ'=>'Repubblica Ceca', 'DE'=>'Germania', - 'DJ'=>'Djibouti', + 'DJ'=>'Gibuti', 'DK'=>'Danimarca', 'DM'=>'Dominica', - 'DO'=>'Dominican Republic', + 'DO'=>'Repubblica Dominicana', 'DZ'=>'Algeria', 'EC'=>'Ecuador', 'EE'=>'Estonia', @@ -134,177 +134,178 @@ return [ 'EU'=>'Unione Europea', 'FI'=>'Finlandia', 'FJ'=>'Fiji', - 'FK'=>'Falkland Islands (Malvinas)', - 'FM'=>'Micronesia, Federated States Of', - 'FO'=>'Faroe Islands', + 'FK'=>'Isole Falkland (Malvina)', + 'FM'=>'Stati Federati della Micronesia', + 'FO'=>'Isole Færøer', 'FR'=>'Francia', 'GA'=>'Gabon', 'GD'=>'Grenada', 'GE'=>'Georgia', - 'GF'=>'French Guiana', + 'GF'=>'Guyana Francese', 'GG'=>'Guernsey', 'GH'=>'Ghana', - 'GI'=>'Gibraltar', - 'GL'=>'Greenland', + 'GI'=>'Gibilterra', + 'GL'=>'Groenlandia', 'GM'=>'Gambia', 'GN'=>'Guinea', - 'GP'=>'Guadeloupe', - 'GQ'=>'Equatorial Guinea', - 'GR'=>'Greece', - 'GS'=>'South Georgia And The South Sandwich Islands', + 'GP'=>'Guadaupe', + 'GQ'=>'Guinea Equatoriale', + 'GR'=>'Grecia', + 'GS'=>'Georgia Del Sud E Isole Sandwich Del Sud', 'GT'=>'Guatemala', 'GU'=>'Guam', 'GW'=>'Guinea-Bissau', 'GY'=>'Guyana', 'HK'=>'Hong Kong', - 'HM'=>'Heard And Mc Donald Islands', + 'HM'=>'Isole Heard E Mc Donald', 'HN'=>'Honduras', - 'HR'=>'Croatia (local name: Hrvatska)', + 'HR'=>'Croazia (nome locale: Hrvatska)', 'HT'=>'Haiti', - 'HU'=>'Hungary', + 'HU'=>'Ungheria', 'ID'=>'Indonesia', - 'IE'=>'Ireland', + 'IE'=>'Irlanda', 'IL'=>'Israel', - 'IM'=>'Isle of Man', + 'IM'=>'Isola di Man', 'IN'=>'India', - 'IO'=>'British Indian Ocean Territory', + 'IO'=>'Territorio Britannico Dell\'Oceano Indiano', 'IQ'=>'Iraq', - 'IR'=>'Iran, Islamic Republic Of', - 'IS'=>'Iceland', + 'IR'=>'Iran', + 'IS'=>'Islanda', 'IT'=>'Italia', 'JE'=>'Jersey', 'JM'=>'Jamaica', - 'JO'=>'Jordan', - 'JP'=>'Japan', - 'KE'=>'Kenya', + 'JO'=>'Giordania', + 'JP'=>'Giappone', + 'KE'=>'Kenia', 'KG'=>'Kyrgyzstan', - 'KH'=>'Cambodia', + 'KH'=>'Cambogia', 'KI'=>'Kiribati', - 'KM'=>'Comoros', - 'KN'=>'Saint Kitts And Nevis', - 'KR'=>'Korea, Republic Of', + 'KM'=>'Comore', + 'KN'=>'Saint Kitts E Nevis', + 'KR'=>'Corea, Repubblica Di', 'KW'=>'Kuwait', - 'KY'=>'Cayman Islands', - 'KZ'=>'Kazakhstan', - 'LA'=>'Lao People\'s Democratic Republic', - 'LB'=>'Lebanon', - 'LC'=>'Saint Lucia', + 'KY'=>'Isole Cayman', + 'KZ'=>'Kazakistan', + 'LA'=>'Repubblica Democratica Popolare Del Laos', + 'LB'=>'Libano', + 'LC'=>'Santa Lucia', 'LI'=>'Liechtenstein', 'LK'=>'Sri Lanka', 'LR'=>'Liberia', - 'LS'=>'Lesotho', - 'LT'=>'Lithuania', - 'LU'=>'Luxembourg', - 'LV'=>'Latvia', + 'LS'=>'Lesoto', + 'LT'=>'Lituania', + 'LU'=>'Lussemburgo', + 'LV'=>'Lettonia', 'LY'=>'Libyan Arab Jamahiriya', - 'MA'=>'Morocco', + 'MA'=>'Marocco', 'MC'=>'Monaco', - 'MD'=>'Moldova, Republic Of', + 'MD'=>'Moldavia, Repubblica di', 'ME'=>'Montenegro', 'MG'=>'Madagascar', - 'MH'=>'Marshall Islands', - 'MK'=>'Macedonia, The Former Yugoslav Republic Of', + 'MH'=>'Isole Marshall', + 'MK'=>'Macedonia, Repubblica Ex Jugoslava di', 'ML'=>'Mali', - 'MM'=>'Myanmar', + 'MM'=>'Myanmar/Birmania', 'MN'=>'Mongolia', - 'MO'=>'Macau', - 'MP'=>'Northern Mariana Islands', - 'MQ'=>'Martinique', + 'MO'=>'Macao', + 'MP'=>'Isole Marianne Settentrionali', + 'MQ'=>'Martinica', 'MR'=>'Mauritania', 'MS'=>'Montserrat', 'MT'=>'Malta', 'MU'=>'Mauritius', - 'MV'=>'Maldives', + 'MV'=>'Maldive', 'MW'=>'Malawi', - 'MX'=>'Mexico', + 'MX'=>'Messico', 'MY'=>'Malaysia', - 'MZ'=>'Mozambique', + 'MZ'=>'Mozambico', 'NA'=>'Namibia', - 'NC'=>'New Caledonia', + 'NC'=>'Nuova Caledonia', 'NE'=>'Niger', - 'NF'=>'Norfolk Island', + 'NF'=>'Isola Norfolk', 'NG'=>'Nigeria', 'NI'=>'Nicaragua', - 'NL'=>'Netherlands', - 'NO'=>'Norway', + 'NL'=>'Paesi Bassi', + 'NO'=>'Norvegia', 'NP'=>'Nepal', 'NR'=>'Nauru', 'NU'=>'Niue', - 'NZ'=>'New Zealand', + 'NZ'=>'Nuova Zelanda', 'OM'=>'Oman', 'PA'=>'Panama', 'PE'=>'Peru', - 'PF'=>'French Polynesia', + 'PF'=>'Polinesia Francese', 'PG'=>'Papua New Guinea', - 'PH'=>'Philippines, Republic of the', + 'PH'=>'Filippine, Repubblica del', 'PK'=>'Pakistan', - 'PL'=>'Poland', - 'PM'=>'St. Pierre And Miquelon', + 'PL'=>'Polonia', + 'PM'=>'St. Pierre E Miquelon', 'PN'=>'Pitcairn', 'PR'=>'Puerto Rico', - 'PS'=>'Palestine', - 'PT'=>'Portugal', + 'PS'=>'Palestina', + 'PT'=>'Portogallo', 'PW'=>'Palau', 'PY'=>'Paraguay', 'QA'=>'Qatar', - 'RE'=>'Reunion', + 'RE'=>'Riunione', 'RO'=>'Romania', 'RS'=>'Serbia', - 'RU'=>'Russian Federation', + 'RU'=>'Federazione Russa', 'RW'=>'Rwanda', - 'SA'=>'Saudi Arabia', - 'UK'=>'Scotland', - 'SB'=>'Solomon Islands', + 'SA'=>'Arabia Saudita', + 'UK'=>'Scozia', + 'SB'=>'Isole Salomone', 'SC'=>'Seychelles', + 'SS'=>'Sudan Sud', 'SD'=>'Sudan', - 'SE'=>'Sweden', + 'SE'=>'Regno di Svezia', 'SG'=>'Singapore', 'SH'=>'St. Helena', 'SI'=>'Slovenia', - 'SJ'=>'Svalbard And Jan Mayen Islands', - 'SK'=>'Slovakia (Slovak Republic)', + 'SJ'=>'Isole Svalbard e Jan Mayen', + 'SK'=>'Slovacchia (Repubblica Slovacca)', 'SL'=>'Sierra Leone', 'SM'=>'San Marino', 'SN'=>'Senegal', 'SO'=>'Somalia', 'SR'=>'Suriname', - 'ST'=>'Sao Tome And Principe', - 'SU'=>'Soviet Union', + 'ST'=>'São Tomé e Príncipe', + 'SU'=>'Unione Sovietica', 'SV'=>'El Salvador', - 'SY'=>'Syrian Arab Republic', + 'SY'=>'Repubblica Araba Siriana', 'SZ'=>'Swaziland', - 'TC'=>'Turks And Caicos Islands', + 'TC'=>'Isole Turks e Caicos', 'TD'=>'Chad', - 'TF'=>'French Southern Territories', + 'TF'=>'Territori australi francesi', 'TG'=>'Togo', 'TH'=>'Thailand', 'TJ'=>'Tajikistan', 'TK'=>'Tokelau', - 'TI'=>'East Timor', + 'TI'=>'Timor Est', 'TM'=>'Turkmenistan', 'TN'=>'Tunisia', 'TO'=>'Tonga', - 'TP'=>'East Timor (old code)', + 'TP'=>'Timor orientale (vecchio codice)', 'TR'=>'Turchia', - 'TT'=>'Trinidad And Tobago', + 'TT'=>'Trinidad E Tobago', 'TV'=>'Tuvalu', 'TW'=>'Taiwan', - 'TZ'=>'Tanzania, United Republic Of', + 'TZ'=>'Tanzania, Repubblica Unita di', 'UA'=>'Ucraina', 'UG'=>'Uganda', 'UK'=>'Regno Unito', 'US'=>'Stati Uniti', - 'UM'=>'United States Minor Outlying Islands', + 'UM'=>'Isole Minori Esterne Degli Stati Uniti', 'UY'=>'Uruguay', 'UZ'=>'Uzbekistan', 'VA'=>'Città Del Vaticano (Santa Sede)', - 'VC'=>'Saint Vincent And The Grenadines', + 'VC'=>'Saint Vincent e Grenadines', 'VE'=>'Venezuela', - 'VG'=>'Virgin Islands (British)', - 'VI'=>'Virgin Islands (U.S.)', - 'VN'=>'Viet Nam', + 'VG'=>'Isole Vergini (British)', + 'VI'=>'Isole Vergini (British.)', + 'VN'=>'Vietnam', 'VU'=>'Vanuatu', - 'WF'=>'Wallis And Futuna Islands', + 'WF'=>'Isole di Wallis e Futuna', 'WS'=>'Samoa', 'YE'=>'Yemen', 'YT'=>'Mayotte', diff --git a/resources/lang/it/mail.php b/resources/lang/it/mail.php index ff96097e0d..ad883e281c 100644 --- a/resources/lang/it/mail.php +++ b/resources/lang/it/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Accedi alla nuova installazione di Snipe-IT utilizzando le seguenti credenziali:', 'login' => 'Accesso:', 'Low_Inventory_Report' => 'Rapporto di inventario basso', + 'inventory_report' => 'Rapporto Inventario', 'min_QTY' => 'Min QTY', 'name' => 'Nome', 'new_item_checked' => 'Un nuovo elemento è stato controllato sotto il tuo nome, i dettagli sono sotto.', @@ -73,9 +74,11 @@ return [ 'your_credentials' => 'Le tue credenziali Snipe-IT', 'Accessory_Checkin_Notification' => 'Checkin accessorio avvenuto', 'Asset_Checkin_Notification' => 'Checkin asset avvenuto', + 'Asset_Checkout_Notification' => 'Check-out del bene avvenuto', 'License_Checkin_Notification' => 'Checkin licenza avvenuto', 'Expected_Checkin_Report' => 'Rapporto restituzione attesa del bene', 'Expected_Checkin_Notification' => 'Promemoria: scadenza riconsegna :name in avvicinamento', 'Expected_Checkin_Date' => 'Un asset assegnato a te deve essere ricontrollato il :date', 'your_assets' => 'Visualizza i tuoi assets', + 'rights_reserved' => 'Tutti i diritti riservati.', ]; diff --git a/resources/lang/it/validation.php b/resources/lang/it/validation.php index 36086a1766..96140887da 100644 --- a/resources/lang/it/validation.php +++ b/resources/lang/it/validation.php @@ -43,14 +43,14 @@ return [ 'file' => 'L\'attributo: deve essere un file.', 'filled' => 'Il campo: attributo deve avere un valore.', 'image' => 'il :attribute deve essere un immagine.', - 'import_field_empty' => 'The value for :fieldname cannot be null.', + 'import_field_empty' => 'Il valore per :fieldname non può essere vuoto.', 'in' => 'Il selezionato :attribute è invalido.', 'in_array' => 'Il campo attributo non esiste in: altro.', 'integer' => 'L\' :attribute deve essere un numero intero.', 'ip' => 'L\' :attribute deve essere un indirizzo IP valido.', 'ipv4' => 'L\'attributo: deve essere un indirizzo IPv4 valido.', 'ipv6' => 'L\'attributo: deve essere un indirizzo IPv6 valido.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', + 'is_unique_department' => 'Questo :attribute deve essere univoco per questa posizione', 'json' => 'L\'attributo: deve essere una stringa JSON valida.', 'max' => [ 'numeric' => 'L\' :attribute non può essere superiore di :max.', @@ -67,6 +67,8 @@ return [ 'array' => 'L\'attributo deve avere almeno: elementi min.', ], 'starts_with' => 'Attributo :attribute deve iniziare con uno dei seguenti: :values.', + 'ends_with' => 'Attributo :attribute deve finire con uno dei seguenti: :values.', + 'not_in' => 'L\' :attribute selezionato è invalido.', 'numeric' => 'L\' :attribute deve essere un numero.', 'present' => 'Il campo attributo deve essere presente.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'La tua password corrente non è corretta', 'dumbpwd' => 'Quella password è troppo comune.', 'statuslabel_type' => 'È necessario selezionare un tipo di etichetta di stato valido', + + // 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' => 'La :attribute deve essere in formato AAAA-MM-GG', + 'last_audit_date.date_format' => 'La :attribute deve essere in formato AAAA-MM-GG hh:mm:ss', + 'expiration_date.date_format' => 'La :attribute deve essere in formato AAAA-MM-GG', + 'termination_date.date_format' => 'La :attribute deve essere in formato AAAA-MM-GG', + 'expected_checkin.date_format' => 'La :attribute deve essere in formato AAAA-MM-GG', + 'start_date.date_format' => 'La :attribute deve essere in formato AAAA-MM-GG', + 'end_date.date_format' => 'La :attribute deve essere in formato AAAA-MM-GG', + ], /* diff --git a/resources/lang/iu/admin/accessories/general.php b/resources/lang/iu/admin/accessories/general.php index e9a2e69ff6..bed7f38fab 100644 --- a/resources/lang/iu/admin/accessories/general.php +++ b/resources/lang/iu/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => 'Update Accessory', 'use_default_eula' => 'Use the primary default EULA instead.', 'use_default_eula_disabled' => 'Use the primary default EULA instead. No primary default EULA is set. Please add one in Settings.', + 'clone' => 'Clone Accessory', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/iu/admin/accessories/message.php b/resources/lang/iu/admin/accessories/message.php index a356463064..542f71f03c 100644 --- a/resources/lang/iu/admin/accessories/message.php +++ b/resources/lang/iu/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => 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.' ), diff --git a/resources/lang/iu/admin/asset_maintenances/form.php b/resources/lang/iu/admin/asset_maintenances/form.php index 2aa005c45f..785d06b08f 100644 --- a/resources/lang/iu/admin/asset_maintenances/form.php +++ b/resources/lang/iu/admin/asset_maintenances/form.php @@ -1,14 +1,14 @@ 'Maintenance Type', + 'asset_maintenance_type' => 'Asset Maintenance Type', 'title' => 'Title', - 'start_date' => 'Started', - 'completion_date' => 'Completed', + 'start_date' => 'Start Date', + 'completion_date' => 'Completion Date', 'cost' => 'Cost', 'is_warranty' => 'Warranty Improvement', - 'asset_maintenance_time' => 'Days', + 'asset_maintenance_time' => 'Asset Maintenance Time (in days)', 'notes' => 'Notes', - 'update' => 'Update', - 'create' => 'Create' + 'update' => 'Update Asset Maintenance', + 'create' => 'Create Asset Maintenance' ]; diff --git a/resources/lang/iu/admin/categories/message.php b/resources/lang/iu/admin/categories/message.php index 48cf5478e1..4e493f68b6 100644 --- a/resources/lang/iu/admin/categories/message.php +++ b/resources/lang/iu/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'Category was not updated, please try again', - 'success' => 'Category updated successfully.' + 'success' => 'Category updated successfully.', + 'cannot_change_category_type' => 'You cannot change the category type once it has been created', ), 'delete' => array( diff --git a/resources/lang/iu/admin/components/general.php b/resources/lang/iu/admin/components/general.php index f7689a7ad1..5b788a51ec 100644 --- a/resources/lang/iu/admin/components/general.php +++ b/resources/lang/iu/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => 'Remaining', 'total' => 'Total', 'update' => 'Update Component', + 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' ); diff --git a/resources/lang/iu/admin/components/message.php b/resources/lang/iu/admin/components/message.php index 1d13970f23..0a7dd8d954 100644 --- a/resources/lang/iu/admin/components/message.php +++ b/resources/lang/iu/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Component was not checked out, please try again', 'success' => 'Component checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/iu/admin/consumables/message.php b/resources/lang/iu/admin/consumables/message.php index 48a3cfbd9f..c0d0aa7f68 100644 --- a/resources/lang/iu/admin/consumables/message.php +++ b/resources/lang/iu/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => 'Consumable was not checked out, please try again', 'success' => 'Consumable checked out successfully.', - 'user_does_not_exist' => 'That user is invalid. Please try again.' + 'user_does_not_exist' => 'That user is invalid. Please try again.', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/iu/admin/custom_fields/general.php b/resources/lang/iu/admin/custom_fields/general.php index 92bf240a76..1923aa7f4a 100644 --- a/resources/lang/iu/admin/custom_fields/general.php +++ b/resources/lang/iu/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => 'Used By Models', 'order' => 'Order', 'create_fieldset' => 'New Fieldset', + 'update_fieldset' => 'Update Fieldset', + 'fieldset_does_not_exist' => 'Fieldset :id does not exist', + 'fieldset_updated' => 'Fieldset updated', 'create_fieldset_title' => 'Create a new fieldset', 'create_field' => 'New Custom Field', 'create_field_title' => 'Create a new custom field', @@ -46,4 +49,6 @@ return [ 'unique' => 'Unique', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view_table' => 'Visible to User', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/iu/admin/groups/message.php b/resources/lang/iu/admin/groups/message.php index f14b6339e8..495acaf36b 100644 --- a/resources/lang/iu/admin/groups/message.php +++ b/resources/lang/iu/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Group already exists!', - 'group_not_found' => 'Group [:id] does not exist.', + 'group_not_found' => 'Group ID :id does not exist.', 'group_name_required' => 'The name field is required', 'success' => array( diff --git a/resources/lang/iu/admin/hardware/form.php b/resources/lang/iu/admin/hardware/form.php index 22aac61d07..6bcb884bab 100644 --- a/resources/lang/iu/admin/hardware/form.php +++ b/resources/lang/iu/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => 'Confirm Bulk Delete Assets', + 'bulk_restore' => 'Confirm Bulk Restore Assets', 'bulk_delete_help' => 'Review the assets for bulk deletion below. Once deleted, these assets can be restored, but they will no longer be associated with any users they are currently assigned to.', + 'bulk_restore_help' => 'Review the assets for bulk restoration below. Once restored, these assets will not be associated with any users they were previously assigned to.', 'bulk_delete_warn' => 'You are about to delete :asset_count assets.', + 'bulk_restore_warn' => 'You are about to restore :asset_count assets.', 'bulk_update' => 'Bulk Update Assets', 'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'Update only default location', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.', - 'processing_spinner' => 'Processing...', + 'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'optional_infos' => 'Optional Information', 'order_details' => 'Order Related Information' ]; diff --git a/resources/lang/iu/admin/hardware/general.php b/resources/lang/iu/admin/hardware/general.php index 67226061b1..b0a48f2ce4 100644 --- a/resources/lang/iu/admin/hardware/general.php +++ b/resources/lang/iu/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'This asset has been deleted.', 'edit' => 'Edit Asset', 'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.', + 'model_invalid' => 'The Model of this Asset is invalid.', + 'model_invalid_fix' => 'The Asset should be edited to correct this before attempting to check it in or out.', 'requestable' => 'Requestable', 'requested' => 'Requested', 'not_requestable' => 'Not Requestable', @@ -21,6 +23,7 @@ return [ 'restore' => 'Restore Asset', 'pending' => 'Pending', 'undeployable' => 'Undeployable', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => 'View Asset', 'csv_error' => 'You have an error in your CSV file:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'Error messages:', 'success_messages' => 'Success messages:', 'alert_details' => 'Please see below for details.', - 'custom_export' => 'Custom Export' + 'custom_export' => 'Custom Export', + 'mfg_warranty_lookup' => ':manufacturer Warranty Status Lookup', ]; diff --git a/resources/lang/iu/admin/hardware/message.php b/resources/lang/iu/admin/hardware/message.php index d2214ce00c..18f3b3fa24 100644 --- a/resources/lang/iu/admin/hardware/message.php +++ b/resources/lang/iu/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => 'Asset was not restored, please try again', 'success' => 'Asset restored successfully.', + 'bulk_success' => 'Asset restored successfully.', + 'nothing_updated' => 'No assets were selected, so nothing was restored.', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'Your file has been imported', 'file_delete_success' => 'Your file has been been successfully deleted', 'file_delete_error' => 'The file was unable to be deleted', + 'header_row_has_malformed_characters' => 'One or more attributes in the header row contain malformed UTF-8 characters', + 'content_row_has_malformed_characters' => 'One or more attributes in the first row of content contain malformed UTF-8 characters', ], diff --git a/resources/lang/iu/admin/hardware/table.php b/resources/lang/iu/admin/hardware/table.php index 6166ba8045..10629fd22c 100644 --- a/resources/lang/iu/admin/hardware/table.php +++ b/resources/lang/iu/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In/Out', 'checkout_date' => 'Checkout Date', 'checkoutto' => 'Checked Out', + 'components_cost' => 'Total Components Cost', 'current_value' => 'Current Value', 'diff' => 'Diff', 'dl_csv' => 'Download CSV', diff --git a/resources/lang/iu/admin/licenses/general.php b/resources/lang/iu/admin/licenses/general.php index 25a536ec56..0187d076a3 100644 --- a/resources/lang/iu/admin/licenses/general.php +++ b/resources/lang/iu/admin/licenses/general.php @@ -1,8 +1,8 @@ 'About Licenses', - 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', + 'about_licenses_title' => 'About Licenses', + 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'checkin' => 'Checkin License Seat', 'checkout_history' => 'Checkout History', 'checkout' => 'Checkout License Seat', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'Software Licenses', 'user' => 'User', 'view' => 'View License', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/iu/admin/manufacturers/message.php b/resources/lang/iu/admin/manufacturers/message.php index 21a4bc5aaf..d6656683ae 100644 --- a/resources/lang/iu/admin/manufacturers/message.php +++ b/resources/lang/iu/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => 'Manufacturer does not exist.', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', diff --git a/resources/lang/iu/admin/manufacturers/table.php b/resources/lang/iu/admin/manufacturers/table.php index 4e3ea9904d..38cab6fd91 100644 --- a/resources/lang/iu/admin/manufacturers/table.php +++ b/resources/lang/iu/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'Support Email', 'support_phone' => 'Support Phone', 'support_url' => 'Support URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => 'Update Manufacturer', 'url' => 'URL', diff --git a/resources/lang/iu/admin/models/general.php b/resources/lang/iu/admin/models/general.php index d2d77e0e8c..7e4a77adbc 100644 --- a/resources/lang/iu/admin/models/general.php +++ b/resources/lang/iu/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'This model has been deleted.', 'bulk_delete' => 'Bulk Delete Asset Models', 'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.', - 'bulk_delete_warn' => 'You are about to delete :model_count asset models.', + 'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'restore' => 'Restore Model', 'requestable' => 'Users may request this model', 'show_mac_address' => 'Show MAC address field in assets in this model', diff --git a/resources/lang/iu/admin/models/message.php b/resources/lang/iu/admin/models/message.php index e3b29d5b4b..5f47336526 100644 --- a/resources/lang/iu/admin/models/message.php +++ b/resources/lang/iu/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => 'Model does not exist.', + 'no_association' => 'NO MODEL ASSOCIATED.', + '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. ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => 'Model was not updated, please try again', - 'success' => 'Model updated successfully.' + 'success' => 'Model updated successfully.', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'No fields were changed, so nothing was updated.', - 'success' => 'Models updated.' + 'success' => 'Model successfully updated. |:model_count models successfully updated.', + 'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', + ), 'bulkdelete' => array( 'error' => 'No models were selected, so nothing was deleted.', - 'success' => ':success_count model(s) deleted!', + 'success' => 'Model deleted!|:success_count models deleted!', 'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.' ), diff --git a/resources/lang/iu/admin/settings/general.php b/resources/lang/iu/admin/settings/general.php index d41deaf935..92faf85c5f 100644 --- a/resources/lang/iu/admin/settings/general.php +++ b/resources/lang/iu/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.', 'is_ad' => 'This is an Active Directory server', 'alerts' => 'Alerts', - 'alert_title' => 'Update Alert Settings', + 'alert_title' => 'Update Notification Settings', 'alert_email' => 'Send alerts to', 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', 'alerts_enabled' => 'Email Alerts Enabled', @@ -32,7 +32,7 @@ return [ 'backups_restoring' => 'Restoring from Backup', 'backups_upload' => 'Upload Backup', 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'barcode_settings' => 'Barcode Settings', @@ -77,6 +77,7 @@ return [ 'ldap' => 'LDAP', 'ldap_default_group' => 'Default Permissions Group', 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Active Directory', 'ldap_client_tls_key' => 'LDAP Client TLS Key', 'ldap_client_tls_cert' => 'LDAP Client-Side TLS Certificate', @@ -85,6 +86,8 @@ return [ 'ldap_settings' => 'LDAP Settings', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key', + 'ldap_location' => 'LDAP Location', +'ldap_location_help' => 'The Ldap Location field should be used if an OU is not being used in the Base Bind DN. Leave this blank if an OU search is being used.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_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', @@ -197,16 +200,21 @@ return [ '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.', 'site_name' => 'Site Name', + 'integrations' => 'Integrations', 'slack' => 'Slack', - 'slack_title' => 'Update Slack Settings', - 'slack_help' => 'Slack settings', - 'slack_botname' => 'Slack Botname', - 'slack_channel' => 'Slack Channel', - 'slack_endpoint' => 'Slack Endpoint', - 'slack_integration' => 'Slack Settings', - 'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first create an incoming webhook on your Slack account. Click on the Test Slack Integration button to confirm your settings are correct before saving. ', - 'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.', - 'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.', + 'general_webhook' => 'General Webhook', + 'webhook' => ':app', + 'webhook_presave' => 'Test to Save', + 'webhook_title' => 'Update Webhook Settings', + 'webhook_help' => 'Integration settings', + 'webhook_botname' => ':app Botname', + 'webhook_channel' => ':app Channel', + 'webhook_endpoint' => ':app Endpoint', + 'webhook_integration' => ':app Settings', + 'webhook_test' =>'Test :app integration', + 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', + 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', + 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', @@ -301,7 +309,7 @@ return [ 'localization_keywords' => 'localization, currency, local, locale, time zone, timezone, international, internatinalization, language, languages, translation', 'localization_help' => 'Language, date display', 'notifications' => 'Notifications', - 'notifications_help' => 'Email alerts, audit settings', + 'notifications_help' => 'Email Alerts & Audit Settings', 'asset_tags_help' => 'Incrementing and prefixes', 'labels' => 'Labels', 'labels_title' => 'Update Label Settings', @@ -322,4 +330,9 @@ return [ 'setup_migration_create_user' => 'Next: Create User', 'ldap_settings_link' => 'LDAP Settings Page', 'slack_test' => 'Test Integration', + 'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization's Google developer console .', + 'google_login' => 'Google Workspace Login Settings', + 'enable_google_login' => 'Enable users to login with Google Workspace', + 'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ', + ]; diff --git a/resources/lang/iu/admin/settings/message.php b/resources/lang/iu/admin/settings/message.php index 174a15fbd9..48b42d1202 100644 --- a/resources/lang/iu/admin/settings/message.php +++ b/resources/lang/iu/admin/settings/message.php @@ -33,11 +33,12 @@ return [ 'testing_authentication' => 'Testing LDAP Authentication...', 'authentication_success' => 'User authenticated against LDAP successfully!' ], - 'slack' => [ - 'sending' => 'Sending Slack test message...', + 'webhook' => [ + 'sending' => 'Sending :app test message...', 'success_pt1' => 'Success! Check the ', 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', '500' => '500 Server Error.', - 'error' => 'Something went wrong.', + 'error' => 'Something went wrong. :app responded with: :error_message', + 'error_misc' => 'Something went wrong. :( ', ] ]; diff --git a/resources/lang/iu/admin/users/general.php b/resources/lang/iu/admin/users/general.php index daa568e8bf..b097ccec69 100644 --- a/resources/lang/iu/admin/users/general.php +++ b/resources/lang/iu/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'View User :name', @@ -33,7 +35,6 @@ return [ 'superadmin_permission_warning' => 'Only superadmins may grant a user superadmin access.', 'admin_permission_warning' => 'Only users with admins rights or greater may grant a user admin access.', 'remove_group_memberships' => 'Remove Group Memberships', - 'warning_deletion' => 'WARNING:', 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_assets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', @@ -41,4 +42,13 @@ return [ 'remote' => 'Remote', 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.', 'not_remote_label' => 'This is not a remote user', + 'vip_label' => 'VIP user', + 'vip_help' => 'This can be helpful to mark important people in your org if you would like to handle them in special ways.', + 'create_user' => 'Create a user', + 'create_user_page_explanation' => 'This is the account information you will use to access the site for the first time.', + 'email_credentials' => 'Email credentials', + 'email_credentials_text' => 'Email my credentials to the email address above', + 'next_save_user' => 'Next: Save User', + 'all_assigned_list_generation' => 'Generated on:', + 'email_user_creds_on_create' => 'Email this user their credentials?', ]; diff --git a/resources/lang/iu/admin/users/message.php b/resources/lang/iu/admin/users/message.php index 247a1b321e..adf26b3229 100644 --- a/resources/lang/iu/admin/users/message.php +++ b/resources/lang/iu/admin/users/message.php @@ -6,7 +6,7 @@ return array( 'declined' => 'You have successfully declined this asset.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'user_exists' => 'User already exists!', - 'user_not_found' => 'User [:id] does not exist.', + 'user_not_found' => 'User does not exist.', 'user_login_required' => 'The login field is required', 'user_password_required' => 'The password is required.', 'insufficient_permissions' => 'Insufficient Permissions.', diff --git a/resources/lang/iu/auth/general.php b/resources/lang/iu/auth/general.php index 78b6780927..4486f090b2 100644 --- a/resources/lang/iu/auth/general.php +++ b/resources/lang/iu/auth/general.php @@ -12,5 +12,8 @@ return [ 'remember_me' => 'Remember Me', 'username_help_top' => 'Enter your username to be emailed a password reset link.', 'username_help_bottom' => 'Your username and email address may be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator.

Usernames without an associated email address will not be emailed a password reset link. ', - ]; + 'google_login' => 'Or login with Google Workspace', + 'google_login_failed' => 'Google Login failed, please try again.', + +]; diff --git a/resources/lang/iu/general.php b/resources/lang/iu/general.php index f0b6a3f2cf..01779a8854 100644 --- a/resources/lang/iu/general.php +++ b/resources/lang/iu/general.php @@ -3,6 +3,7 @@ return [ 'accessories' => 'Accessories', 'activated' => 'Activated', + 'accepted_date' => 'Date Accepted', 'accessory' => 'Accessory', 'accessory_report' => 'Accessory Report', 'action' => 'Action', @@ -27,7 +28,13 @@ return [ 'audit' => 'Audit', 'audit_report' => 'Audit Log', 'assets' => 'Assets', + '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', 'avatar_delete' => 'Delete Avatar', 'avatar_upload' => 'Upload Avatar', 'back' => 'Back', @@ -38,7 +45,9 @@ return [ 'bulk_edit' => 'Bulk Edit', 'bulk_delete' => 'Bulk Delete', 'bulk_actions' => 'Bulk Actions', - 'bulk_checkin_delete' => 'Bulk Checkin Items from Users', + 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', + 'byod' => 'BYOD', + 'byod_help' => 'This device is owned by the user', 'bystatus' => 'by Status', 'cancel' => 'Cancel', 'categories' => 'Categories', @@ -83,6 +92,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the 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.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -139,6 +149,7 @@ return [ '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, and svg. 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.', 'import' => 'Import', '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.', @@ -148,6 +159,8 @@ return [ 'asset_maintenances' => 'Asset Maintenances', 'item' => 'Item', 'item_name' => 'Item Name', + 'import_file' => 'import CSV file', + 'import_type' => 'CSV import type', 'insufficient_permissions' => 'Insufficient permissions!', 'kits' => 'Predefined Kits', 'language' => 'Language', @@ -218,6 +231,7 @@ return [ 'requested_assets_menu' => 'Requested Assets', 'request_canceled' => 'Request Canceled', 'save' => 'Save', + 'select_var' => 'Select :thing... ', // this will eventually replace all of our other selects 'select' => 'Select', 'select_all' => 'Select All', 'search' => 'Search', @@ -240,8 +254,8 @@ return [ 'signature' => 'Signature', 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', - 'slack_msg_note' => 'A slack message will be sent', - 'slack_test_msg' => 'Oh hai! Looks like your Slack integration with Snipe-IT is working!', + '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!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', @@ -253,7 +267,6 @@ return [ 'sure_to_delete' => 'Are you sure you wish to delete', 'submit' => 'Submit', 'target' => 'Target', - 'toggle_navigation' => 'Toogle Navigation', 'time_and_date_display' => 'Time and Date Display', 'total_assets' => 'total assets', 'total_licenses' => 'total licenses', @@ -375,7 +388,8 @@ return [ '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_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', @@ -385,8 +399,54 @@ return [ 'start_date' => 'Start Date', 'end_date' => 'End Date', 'alt_uploaded_image_thumbnail' => 'Uploaded thumbnail', - 'placeholder_kit' => 'Select a kit' + '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, licences, 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.', + '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?', + 'back_before_importing' => 'Backup before importing?', + 'csv_header_field' => 'CSV Header Field', + 'import_field' => 'Import Field', + 'sample_value' => 'Sample Value', + 'no_headers' => 'No Columns Found', + 'error_in_import_file' => 'There was an error reading the CSV file: :error', + 'percent_complete' => ':percent % Complete', + 'errors_importing' => 'Some Errors occurred while importing: ', + 'warning' => 'WARNING: :warning', + 'success_redirecting' => '"Success... Redirecting.', + 'setup_successful_migrations' => 'Your database tables have been created', + 'setup_migration_output' => 'Migration output:', + 'setup_migration_create_user' => 'Next: Create User', + 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', + 'confirm' => 'Confirm', + 'autoassign_licenses' => 'Auto-Assign Licenses', + 'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.', + 'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)', + 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', + 'modal_confirm_generic' => 'Are you sure?', + 'cannot_be_deleted' => 'This item cannot be deleted', + 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', - - -]; \ No newline at end of file +]; diff --git a/resources/lang/iu/help.php b/resources/lang/iu/help.php index ac0df59422..a3a2ddd762 100644 --- a/resources/lang/iu/help.php +++ b/resources/lang/iu/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'More Info', - 'audit_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 is this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', + 'audit_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.', 'assets' => 'Assets are items tracked by serial number or asset tag. They tend to be higher value items where identifying a specific item matters.', diff --git a/resources/lang/iu/localizations.php b/resources/lang/iu/localizations.php index be2c321861..b04d4cb903 100644 --- a/resources/lang/iu/localizations.php +++ b/resources/lang/iu/localizations.php @@ -256,6 +256,7 @@ return [ 'UK'=>'Scotland', 'SB'=>'Solomon Islands', 'SC'=>'Seychelles', + 'SS'=>'South Sudan', 'SD'=>'Sudan', 'SE'=>'Sweden', 'SG'=>'Singapore', diff --git a/resources/lang/iu/mail.php b/resources/lang/iu/mail.php index b0ae7de76b..7dd8d6181c 100644 --- a/resources/lang/iu/mail.php +++ b/resources/lang/iu/mail.php @@ -43,6 +43,7 @@ return [ 'login_first_admin' => 'Login to your new Snipe-IT installation using the credentials below:', 'login' => 'Login:', 'Low_Inventory_Report' => 'Low Inventory Report', + 'inventory_report' => 'Inventory Report', 'min_QTY' => 'Min QTY', 'name' => 'Name', 'new_item_checked' => 'A new item has been checked out under your name, details are below.', @@ -74,9 +75,11 @@ return [ 'your_credentials' => 'Your Snipe-IT credentials', 'Accessory_Checkin_Notification' => 'Accessory checked in', 'Asset_Checkin_Notification' => 'Asset checked in', + 'Asset_Checkout_Notification' => 'Asset checked out', 'License_Checkin_Notification' => 'License checked in', 'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Date' => 'An asset checked out to you is due to be checked back in on :date', 'your_assets' => 'View Your Assets', + 'rights_reserved' => 'All rights reserved.', ]; diff --git a/resources/lang/iu/validation.php b/resources/lang/iu/validation.php index 04f8d65303..df514da6f9 100644 --- a/resources/lang/iu/validation.php +++ b/resources/lang/iu/validation.php @@ -67,6 +67,8 @@ return [ 'array' => 'The :attribute must have at least :min items.', ], '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.', @@ -103,17 +105,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | 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 Validation Language Lines @@ -131,6 +122,18 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label 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' => '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', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + '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', + ], /* diff --git a/resources/lang/ja/admin/accessories/general.php b/resources/lang/ja/admin/accessories/general.php index cea8180d26..2efcf70890 100644 --- a/resources/lang/ja/admin/accessories/general.php +++ b/resources/lang/ja/admin/accessories/general.php @@ -16,5 +16,7 @@ return array( 'update' => '付属品を更新', 'use_default_eula' => '初期設定EULA を代わりに利用する。', 'use_default_eula_disabled' => '初期設定EULAを代わりに利用する。 初期設定EULAが設定されていません。一つは追加してください。', + 'clone' => '付属品を複製', + 'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.', ); diff --git a/resources/lang/ja/admin/accessories/message.php b/resources/lang/ja/admin/accessories/message.php index c9c5702e30..1b645b0694 100644 --- a/resources/lang/ja/admin/accessories/message.php +++ b/resources/lang/ja/admin/accessories/message.php @@ -24,6 +24,7 @@ return array( 'checkout' => array( 'error' => '付属品がチェックされませんでした。もう一度、やり直して下さい。', 'success' => '付属品のチェックが終了しました。', + 'unavailable' => '付属品はチェックアウト中のため利用できません。', 'user_does_not_exist' => 'その利用者は不正です。もう一度、やり直して下さい。' ), diff --git a/resources/lang/ja/admin/categories/message.php b/resources/lang/ja/admin/categories/message.php index 758e9afb36..e20d105b9d 100644 --- a/resources/lang/ja/admin/categories/message.php +++ b/resources/lang/ja/admin/categories/message.php @@ -13,7 +13,8 @@ return array( 'update' => array( 'error' => 'カテゴリーは更新されませんでした。再度実行してください。', - 'success' => 'カテゴリーの更新に成功しました。' + 'success' => 'カテゴリーの更新に成功しました。', + 'cannot_change_category_type' => '一度作成されたカテゴリタイプを変更することはできません', ), 'delete' => array( diff --git a/resources/lang/ja/admin/components/general.php b/resources/lang/ja/admin/components/general.php index d8955450de..12cd617f2a 100644 --- a/resources/lang/ja/admin/components/general.php +++ b/resources/lang/ja/admin/components/general.php @@ -12,4 +12,5 @@ return array( 'remaining' => '残数', 'total' => '合計', 'update' => '構成部品の更新', + 'checkin_limit' => 'チェックイン金額は :assigned_qty 以下にして下さい' ); diff --git a/resources/lang/ja/admin/components/message.php b/resources/lang/ja/admin/components/message.php index 06beea39e3..29fd4d21ed 100644 --- a/resources/lang/ja/admin/components/message.php +++ b/resources/lang/ja/admin/components/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => '構成部品はチェックアウトされませんでした。もう一度、やり直して下さい。', 'success' => '構成部品は正常にチェックアウトされました。', - 'user_does_not_exist' => '利用者が正しくありません。もう一度試して下さい。' + 'user_does_not_exist' => '利用者が正しくありません。もう一度試して下さい。', + 'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ', ), 'checkin' => array( diff --git a/resources/lang/ja/admin/consumables/message.php b/resources/lang/ja/admin/consumables/message.php index 3fe47177b9..7f27ded3e5 100644 --- a/resources/lang/ja/admin/consumables/message.php +++ b/resources/lang/ja/admin/consumables/message.php @@ -23,7 +23,8 @@ return array( 'checkout' => array( 'error' => '消耗品はチェックアウトできませんでした。もう一度試して下さい。', 'success' => '消耗品はチェックアウトに成功しました。', - 'user_does_not_exist' => '利用者が正しくありません。もう一度試して下さい。' + 'user_does_not_exist' => '利用者が正しくありません。もう一度試して下さい。', + 'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ', ), 'checkin' => array( diff --git a/resources/lang/ja/admin/custom_fields/general.php b/resources/lang/ja/admin/custom_fields/general.php index 17cb9a8706..857268086a 100644 --- a/resources/lang/ja/admin/custom_fields/general.php +++ b/resources/lang/ja/admin/custom_fields/general.php @@ -27,6 +27,9 @@ return [ 'used_by_models' => '型番で使用', 'order' => '順番', 'create_fieldset' => '新しいフィールドセット', + 'update_fieldset' => 'フィールドセットを更新', + 'fieldset_does_not_exist' => 'フィールドセット:idが存在しません', + 'fieldset_updated' => 'フィールドセットが更新されました', 'create_fieldset_title' => '新しいフィールドセットを作成', 'create_field' => '新しいユーザー設定フィールド', 'create_field_title' => '新しいカスタムフィールドを作成', @@ -44,6 +47,8 @@ return [ 'db_convert_warning' => '警告。このフィールドは :db_column としてカスタムフィールドテーブルにありますが、 :expected でなければなりません。', 'is_unique' => 'この値はすべての資産で一意である必要があります', 'unique' => '一意', - 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', - 'display_in_user_view_table' => 'Visible to User', + 'display_in_user_view' => 'チェックアウトされたユーザーが割り当てられたアセットを表示ページでこれらの値を表示できるようにします', + 'display_in_user_view_table' => 'ユーザーに表示', + 'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset', + 'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets', ]; diff --git a/resources/lang/ja/admin/departments/message.php b/resources/lang/ja/admin/departments/message.php index fd22cd1e84..1a455aef16 100644 --- a/resources/lang/ja/admin/departments/message.php +++ b/resources/lang/ja/admin/departments/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => '部署が見つかりません', - 'department_already_exists' => 'A department already exists with that name at this company location. Or choose a more specific name for this department. ', + 'department_already_exists' => 'この会社には、その名前の部門が既に存在します。この部門のより具体的な名前を選択してください。 ', 'assoc_users' => 'この部署は1人以上の利用者に関連付けされているため、削除できません。部署の関連付けを削除してから、もう一度試して下さい。 ', 'create' => array( 'error' => '部署が作成できませんでした。もう一度やり直して下さい。', diff --git a/resources/lang/ja/admin/groups/message.php b/resources/lang/ja/admin/groups/message.php index a8e8dd6a98..60f667f259 100644 --- a/resources/lang/ja/admin/groups/message.php +++ b/resources/lang/ja/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'グループは既に存在しています!', - 'group_not_found' => 'グループ [:id] は、存在していません。', + 'group_not_found' => 'グループID :id は、存在していません。', 'group_name_required' => '名前フィールドは必須です。', 'success' => array( diff --git a/resources/lang/ja/admin/hardware/form.php b/resources/lang/ja/admin/hardware/form.php index ad03c1321e..129be86d22 100644 --- a/resources/lang/ja/admin/hardware/form.php +++ b/resources/lang/ja/admin/hardware/form.php @@ -2,8 +2,11 @@ return [ 'bulk_delete' => '資産の一括削除', + 'bulk_restore' => '資産一括リストアの確認', 'bulk_delete_help' => '以下の資産が一括削除されます。削除後のデータは戻すことができませ', + 'bulk_restore_help' => '以下の一括リストアのために資産を確認してください。復元されると、これらの資産は以前に割り当てられたユーザーに関連付けられることはありません。', 'bulk_delete_warn' => ':asset_cont 件の資産を削除しました', + 'bulk_restore_warn' => ':asset_count資産を復元しようとしています。', 'bulk_update' => '資産を一括更新', 'bulk_update_help' => 'このフォームは一度に複数の資産を更新することが可能です。変更が必要なフィールドにのみ入力をして下さい。ブランクのフィールドは変更されません。 ', 'bulk_update_warn' => '単一資産のプロパティを編集しようとしています。|:asset_count 件のプロパティを編集しようとしています。', @@ -45,7 +48,7 @@ return [ 'asset_location_update_default' => 'デフォルトの場所のみ更新', 'asset_not_deployable' => 'その資産ステータスは配備可能ではありません。この資産はチェックアウトできません。', 'asset_deployable' => 'その資産ステータスは配備可能です。この資産はチェックアウトできます。', - 'processing_spinner' => '処理中…', + 'processing_spinner' => '処理中です... (これは大きなファイルで少し時間がかかる可能性があります)', 'optional_infos' => 'オプション情報', 'order_details' => 'オーダー関連情報' ]; diff --git a/resources/lang/ja/admin/hardware/general.php b/resources/lang/ja/admin/hardware/general.php index 92334c2fd6..ca02dd461c 100644 --- a/resources/lang/ja/admin/hardware/general.php +++ b/resources/lang/ja/admin/hardware/general.php @@ -14,6 +14,8 @@ return [ 'deleted' => 'この資産は削除されました。', 'edit' => '資産を編集', 'model_deleted' => 'この資産モデルは削除されました。資産を復元する前に、モデルを復元する必要があります。', + 'model_invalid' => 'この資産のモデルは無効です。', + 'model_invalid_fix' => 'チェックインまたはチェックアウトを試みる前に、資産を編集して修正する必要があります。', 'requestable' => '要求可能', 'requested' => '要求済', 'not_requestable' => '要求可能ではありません', @@ -21,6 +23,7 @@ return [ 'restore' => '資産を復元', 'pending' => 'ペンディング', 'undeployable' => '配備不可', + 'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.', 'view' => '資産を表示', 'csv_error' => 'CSVファイルにエラーがあります:', 'import_text' => ' @@ -40,5 +43,6 @@ return [ 'error_messages' => 'エラーメッセージ:', 'success_messages' => '成功メッセージ:', 'alert_details' => '詳細は以下を確認してください。', - 'custom_export' => 'カスタムエクスポート' + 'custom_export' => 'カスタムエクスポート', + 'mfg_warranty_lookup' => ':manufacturer 保証書の発行状況を検索', ]; diff --git a/resources/lang/ja/admin/hardware/message.php b/resources/lang/ja/admin/hardware/message.php index 01ce687d3d..f09b722e77 100644 --- a/resources/lang/ja/admin/hardware/message.php +++ b/resources/lang/ja/admin/hardware/message.php @@ -23,6 +23,8 @@ return [ 'restore' => [ 'error' => '資産は復元されませんでした。もう一度、やり直して下さい。', 'success' => '資産は正常に復元されました。', + 'bulk_success' => '資産は正常に復元されました。', + 'nothing_updated' => '資産が選択されていないため、何も復元されませんでした。', ], 'audit' => [ @@ -49,6 +51,8 @@ return [ 'success' => 'ファイルはインポートされました。', 'file_delete_success' => 'ファイルを削除しました。', 'file_delete_error' => 'ファイルが削除出来ませんでした。', + 'header_row_has_malformed_characters' => 'ヘッダー行の1つ以上の属性に不正な形式のUTF-8文字が含まれています', + 'content_row_has_malformed_characters' => 'コンテンツの最初の行の1つまたは複数の属性に不正な形式のUTF-8文字が含まれています', ], diff --git a/resources/lang/ja/admin/hardware/table.php b/resources/lang/ja/admin/hardware/table.php index 43e8636fdf..feb87f06ce 100644 --- a/resources/lang/ja/admin/hardware/table.php +++ b/resources/lang/ja/admin/hardware/table.php @@ -8,6 +8,7 @@ return [ 'change' => 'In/Out', 'checkout_date' => '検査日', 'checkoutto' => '検査済', + 'components_cost' => 'Total Components Cost', 'current_value' => '現在の値', 'diff' => '差分', 'dl_csv' => 'CSVダウンロード', diff --git a/resources/lang/ja/admin/licenses/general.php b/resources/lang/ja/admin/licenses/general.php index bfe6aa199f..0cb05c1251 100644 --- a/resources/lang/ja/admin/licenses/general.php +++ b/resources/lang/ja/admin/licenses/general.php @@ -1,8 +1,8 @@ 'ライセンスについて', - 'about_licenses' => 'ライセンスはソフトウェアの追跡に使用されます。指定した数を個人にチェックアウトすることができます。', + 'about_licenses_title' => 'ライセンスについて', + 'about_licenses' => 'ライセンスはソフトウェアの追跡に使用されます。指定した数を個人にチェックアウトすることができます。', 'checkin' => 'ライセンスシートをチェックイン', 'checkout_history' => '履歴をチェックアウト', 'checkout' => 'ライセンスシートをチェックアウト', @@ -18,4 +18,30 @@ return array( 'software_licenses' => 'ソフトウェア・ライセンス', 'user' => '利用者', 'view' => 'ライセンスを表示', + 'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.', + 'bulk' => + [ + 'checkin_all' => [ + 'button' => 'Checkin All Seats', + 'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets', + 'disabled_tooltip' => 'This is disabled because there are no seats currently checked out', + 'success' => 'License successfully checked in! | All licenses were successfully checked in!', + 'log_msg' => 'Checked in via bulk license checkout in license GUI', + ], + + 'checkout_all' => [ + 'button' => 'Checkout All Seats', + 'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.', + 'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users', + 'disabled_tooltip' => 'This is disabled because there are no seats currently available', + 'success' => 'License successfully checked out! | :count licenses were successfully checked out!', + 'error_no_seats' => 'There are no remaining seats left for this license.', + 'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.', + 'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.', + 'log_msg' => 'Checked out via bulk license checkout in license GUI', + + + ], + ], ); diff --git a/resources/lang/ja/admin/locations/message.php b/resources/lang/ja/admin/locations/message.php index e521e4d76e..d7d0501ea2 100644 --- a/resources/lang/ja/admin/locations/message.php +++ b/resources/lang/ja/admin/locations/message.php @@ -6,8 +6,8 @@ return array( 'assoc_users' => 'ロケーションは少なくとも一つの利用者に関連付けされているため、削除できません。ローケーションの関連付けを削除し、もう一度試して下さい。 ', 'assoc_assets' => 'この設置場所は1人以上の利用者に関連付けされているため、削除できません。設置場所の関連付けを削除し、もう一度試して下さい。 ', 'assoc_child_loc' => 'この設置場所は、少なくとも一つの配下の設置場所があります。この設置場所を参照しないよう更新して下さい。 ', - 'assigned_assets' => 'Assigned Assets', - 'current_location' => 'Current Location', + 'assigned_assets' => '割り当て済みアセット', + 'current_location' => '現在の場所', 'create' => array( diff --git a/resources/lang/ja/admin/manufacturers/message.php b/resources/lang/ja/admin/manufacturers/message.php index 52a07d4236..cc801de1b7 100644 --- a/resources/lang/ja/admin/manufacturers/message.php +++ b/resources/lang/ja/admin/manufacturers/message.php @@ -2,6 +2,7 @@ return array( + 'support_url_help' => 'Use {LOCALE} and {SERIAL} in your URL as variables to have those values auto-populate when viewing assets.', 'does_not_exist' => '製造元が存在しません。', 'assoc_users' => 'この製造元は一つ以上の型番に関連付けられているため、削除できません。この製造元の関連付けを削除後、もう一度試して下さい。 ', diff --git a/resources/lang/ja/admin/manufacturers/table.php b/resources/lang/ja/admin/manufacturers/table.php index d2fdf133c7..299c8bcbe0 100644 --- a/resources/lang/ja/admin/manufacturers/table.php +++ b/resources/lang/ja/admin/manufacturers/table.php @@ -10,6 +10,7 @@ return array( 'support_email' => 'サポート Eメール', 'support_phone' => 'サポート 電話番号', 'support_url' => 'サポート URL', + 'warranty_lookup_url' => 'Warranty Lookup URL', 'update' => '製造業者を更新', 'url' => 'URL', diff --git a/resources/lang/ja/admin/models/general.php b/resources/lang/ja/admin/models/general.php index f4f173e277..14b9facd26 100644 --- a/resources/lang/ja/admin/models/general.php +++ b/resources/lang/ja/admin/models/general.php @@ -6,7 +6,7 @@ return array( 'deleted' => 'モデルは削除されました。', 'bulk_delete' => '資産モデルの一括削除', 'bulk_delete_help' => '下のチェックボックスを使用して、選択した資産モデルの削除を確認します。資産が関連付けられている資産モデルは、資産が別のモデルに関連付けられるまで削除できません。', - 'bulk_delete_warn' => ':model_count 件の資産モデルを削除しようとしています。', + 'bulk_delete_warn' => '1つの資産モデルを削除しようとしています。|:model_count 資産モデルを削除しようとしています。', 'restore' => '型番を復元', 'requestable' => 'ユーザーはこのモデルをリクエスト出来ます', 'show_mac_address' => 'このモデルの資産にMACアドレスフィールドを表示する', diff --git a/resources/lang/ja/admin/models/message.php b/resources/lang/ja/admin/models/message.php index 472f6b19ae..26aa1731e0 100644 --- a/resources/lang/ja/admin/models/message.php +++ b/resources/lang/ja/admin/models/message.php @@ -3,6 +3,8 @@ return array( 'does_not_exist' => '型番が存在しません。', + 'no_association' => '関連するモデルはありません。', + 'no_association_fix' => 'モデルを割り当てるために今すぐこの資産を編集してください。', 'assoc_users' => 'この減価償却は複数のモデルに関係付けられているため削除することができません。モデルを削除してから再度実行してください。 ', @@ -14,7 +16,7 @@ return array( 'update' => array( 'error' => '型番が更新できませんでした。もう一度やり直して下さい。', - 'success' => '型番が更新されました。' + 'success' => '型番が更新されました。', ), 'delete' => array( @@ -30,12 +32,14 @@ return array( 'bulkedit' => array( 'error' => 'フィールドが選択されていないため、更新されませんでした。', - 'success' => '型番を更新しました。' + 'success' => 'モデルが正常に更新されました。|:model_count モデルが正常に更新されました。', + 'warn' => '次のモデルのプロパティを更新しようとしています: |次のモデルのプロパティを編集しようとしています :model_count モデル:', + ), 'bulkdelete' => array( 'error' => 'モデルが選択されていないため、何も削除されませんでした。', - 'success' => ':success_count モデルが削除されました!', + 'success' => ':success_count モデルを削除しました!', 'success_partial' => ':success_count モデルが削除されましたが、:fail_count 個はアセットが関連付けられているため、削除できませんでした。' ), diff --git a/resources/lang/ja/admin/settings/general.php b/resources/lang/ja/admin/settings/general.php index a21ce8bac0..9197c642f1 100644 --- a/resources/lang/ja/admin/settings/general.php +++ b/resources/lang/ja/admin/settings/general.php @@ -11,7 +11,7 @@ return [ 'admin_cc_email_help' => 'ユーザーに送信されたチェックイン/チェックアウト メールのコピーを追加の電子メールアカウントに送信する場合は、ここにメールアドレスを入力します。必要が無ければ、このフィールドを空白にします', 'is_ad' => 'Active Directory サーバー', 'alerts' => 'アラート', - 'alert_title' => 'アラート設定を更新', + 'alert_title' => '通知設定を更新', 'alert_email' => 'アラートの送信先', 'alert_email_help' => 'アラートの送信先となるメールアドレス(カンマ区切り)。', 'alerts_enabled' => 'アラートを有効化', @@ -21,7 +21,7 @@ return [ 'allow_user_skin_help_text' => 'このチェックボックスをオンにすると、ユーザーはUIスキンを別のものに上書きすることができます。', 'asset_ids' => '資産ID', 'audit_interval' => '監査の間隔', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => '定期的に資産を監査する必要がある場合は、使用する間隔を数ヶ月で入力します。 この値を更新すると、今後の監査日付を持つアセットの「次の監査日」のすべてが更新されます。', 'audit_warning_days' => '監査警告しきい値', 'audit_warning_days_help' => '資産の監査期限は何日前に警告する必要がありますか?', 'auto_increment_assets' => '資産タグを自動採番で生成', @@ -32,9 +32,7 @@ return [ 'backups_restoring' => 'バックアップから復元中', 'backups_upload' => 'バックアップをアップロード', 'backups_path' => 'サーバー上のバックアップは :path に保存されています', - 'backups_restore_warning' => '以前のバックアップから復元する場合は、復元ボタン