diff --git a/.drone.yml b/.drone.yml index d45d222e5..f4f6f1995 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,151 +1,74 @@ -clone: - git: - image: plugins/git - depth: 1 - -pipeline: - check-app-compatbility: +kind: pipeline +name: checkers +steps: +- name: compatibility + image: nextcloudci/php7.1:php7.1-16 + environment: + APP_NAME: deck + CORE_BRANCH: master + DB: sqlite + commands: + # Pre-setup steps + - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh + - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB + - cd ../server + # Code checker + - ./occ app:check-code $APP_NAME -c strong-comparison + - ./occ app:check-code $APP_NAME -c deprecation + - cd apps/$APP_NAME/ +- name: syntax-php7.0 + image: nextcloudci/php7.0:php7.0-17 + environment: + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ --exclude ./lib/Collaboration/ . +- name: syntax-php7.1 + image: nextcloudci/php7.1:php7.1-15 + environment: + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ . +- name: syntax-php7.2 + image: nextcloudci/php7.2:php7.2-9 + environment: + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ . +- name: syntax-php7.3 + image: nextcloudci/php7.3:php7.3-2 + environment: + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite + commands: + - composer install + - ./vendor/bin/parallel-lint --exclude ./vendor/ . +trigger: + branch: + - master + - stable* + event: + - pull_request + - push +--- +kind: pipeline +name: unit-php7.0 +steps: + - name: php7.0 image: nextcloudci/php7.0:php7.0-17 environment: - - APP_NAME=deck - - CORE_BRANCH=stable15 - - DB=sqlite - commands: - # Pre-setup steps - - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh - - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server - # Code checker - - ./occ app:check-code $APP_NAME -c strong-comparison - - ./occ app:check-code $APP_NAME -c deprecation - - cd apps/$APP_NAME/ - when: - matrix: - TESTS: check-app-compatbility - check-app-compatbility-14: - image: nextcloudci/php7.0:php7.0-17 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite - commands: - # Pre-setup steps - - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh - - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server - # Code checker - - ./occ app:check-code $APP_NAME -c strong-comparison - - ./occ app:check-code $APP_NAME -c deprecation - - cd apps/$APP_NAME/ - when: - matrix: - TESTS: check-app-compatbility-14 - check-app-compatbility-13: - image: nextcloudci/php7.0:php7.0-17 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable13 - - DB=sqlite - commands: - # Pre-setup steps - - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh - - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server - # Code checker - - ./occ app:check-code $APP_NAME -c strong-comparison - - ./occ app:check-code $APP_NAME -c deprecation - - cd apps/$APP_NAME/ - when: - matrix: - TESTS: check-app-compatbility-13 - signed-off-check: - image: nextcloudci/php7.0:php7.0-17 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite - commands: - - wget https://raw.githubusercontent.com/nextcloud/server/master/build/signed-off-checker.php - - php ./signed-off-checker.php - secrets: [ github_token ] - when: - matrix: - TESTS: signed-off-check - syntax-php5.6: - image: nextcloudci/php5.6:php5.6-8 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable13 - - DB=sqlite - commands: - - composer install - - ./vendor/bin/parallel-lint --exclude ./vendor/ . - when: - matrix: - TESTS: syntax-php5.6 - syntax-php7.0: - image: nextcloudci/php7.0:php7.0-17 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite - commands: - - composer install - - ./vendor/bin/parallel-lint --exclude ./vendor/ . - when: - matrix: - TESTS: syntax-php7.0 - syntax-php7.1: - image: nextcloudci/php7.1:php7.1-15 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite - commands: - - composer install - - ./vendor/bin/parallel-lint --exclude ./vendor/ . - when: - matrix: - TESTS: syntax-php7.1 - syntax-php7.2: - image: nextcloudci/php7.2:php7.2-9 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite - commands: - - composer install - - ./vendor/bin/parallel-lint --exclude ./vendor/ . - when: - matrix: - TESTS: syntax-php7.2 - php5.6: - image: nextcloudci/php5.6:php5.6-8 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable13 - - DB=sqlite - commands: - - apt update && apt-get -y install php5-xdebug - - # Pre-setup steps - - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh - - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB - - cd ../server/ - - ./occ app:enable $APP_NAME - - cd apps/$APP_NAME - - composer install - - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - - phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml - when: - matrix: - TESTS: php5.6 - php7.0: - image: nextcloudci/php7.0:php7.0-17 - environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite commands: # Pre-setup steps - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh @@ -157,15 +80,23 @@ pipeline: - composer install - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml - when: - matrix: - TESTS: php7.0 - php7.1: +trigger: + branch: + - master + - stable* + event: + - pull_request + - push +--- +kind: pipeline +name: unit-php7.1 +steps: + - name: php7.1 image: nextcloudci/php7.1:php7.1-15 environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite commands: # Pre-setup steps - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh @@ -176,15 +107,23 @@ pipeline: - composer install - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml - when: - matrix: - TESTS: php7.1 - php7.2: +trigger: + branch: + - master + - stable* + event: + - pull_request + - push +--- +kind: pipeline +name: unit-php7.2 +steps: + - name: php7.2 image: nextcloudci/php7.2:php7.2-9 environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite commands: # Pre-setup steps - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh @@ -195,15 +134,50 @@ pipeline: - composer install - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml - phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml - when: - matrix: - TESTS: php7.2 - integration: - image: nextcloudci/integration-php7.0:integration-php7.0-6 +trigger: + branch: + - master + - stable* + event: + - pull_request + - push +--- +kind: pipeline +name: unit-php7.3 +steps: + - name: php7.3 + image: nextcloudci/php7.3:php7.3-2 environment: - - APP_NAME=deck - - CORE_BRANCH=stable14 - - DB=sqlite + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite + commands: + # Pre-setup steps + - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh + - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB + - cd ../server/ + - php occ app:enable deck + - cd apps/$APP_NAME + - composer install + - phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml + - phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml +trigger: + branch: + - master + - stable* + event: + - pull_request + - push +--- +kind: pipeline +name: integration-stable16 +steps: + - name: integration + image: nextcloudci/php7.1:php7.1-16 + environment: + APP_NAME: deck + CORE_BRANCH: stable16 + DB: sqlite commands: # Pre-setup steps - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh @@ -212,43 +186,58 @@ pipeline: - php occ app:enable deck - cd apps/$APP_NAME - cd tests/integration - - ./run.sh - when: - matrix: - TESTS: integration - eslint: + - ./run.sh || true +trigger: + branch: + - master + - stable* + event: + - pull_request + - push +--- +kind: pipeline +name: integration-stable15 +steps: + - name: integration + image: nextcloudci/php7.1:php7.1-16 + environment: + APP_NAME: deck + CORE_BRANCH: stable15 + DB: sqlite + commands: + # Pre-setup steps + - wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh + - bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB + - cd ../server/ + - php occ app:enable deck + - cd apps/$APP_NAME + - cd tests/integration + - ./run.sh || true +trigger: + branch: + - master + - stable* + event: + - pull_request + - push + +--- +kind: pipeline +name: frontend +steps: + - name: eslint image: node:11-alpine commands: - - npm install - npm run lint - when: - matrix: - TESTS: eslint - jsbuild: + - name: jsbuild image: node:11-alpine commands: - npm install - npm run build - when: - matrix: - TESTS: jsbuild -matrix: - include: - - TESTS: check-app-compatbility-13 - - TESTS: check-app-compatbility-14 - - TESTS: signed-off-check - - TESTS: syntax-php5.6 - - TESTS: syntax-php7.0 - - TESTS: syntax-php7.1 - - TESTS: syntax-php7.2 - - TESTS: php5.6 - - TESTS: php7.0 - - TESTS: php7.1 - - TESTS: php7.2 - - TESTS: eslint - - TESTS: jsbuild - #- TESTS: integration - -branches: [ master, stable*, vue ] - - +trigger: + branch: + - master + - stable* + event: + - pull_request + - push diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000..c38968be5 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,25 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - "1. to develop" + - "2. developing" + - "3. to review" + - "discussion" + - "bounty" + - "bug" + - "enhancement" + +# Limit the number of actions per hour, from 1-30. Default is 30 +limitPerRun: 30 + +# Label to use when marking an issue as stale +staleLabel: stale + +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. diff --git a/.gitignore b/.gitignore index 023392376..bd381bba8 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ tests/integration/composer.lock vendor/ *.lock package-lock.json + +\.idea/ diff --git a/.travis.yml b/.travis.yml index 43e944c7c..03b4f0cb5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,9 @@ php: - 7.0 - 7.1 - 7.2 + - 7.3 env: - - CORE_BRANCH=stable14 DB=mysql + - CORE_BRANCH=stable15 DB=mysql before_install: - wget https://phar.phpunit.de/phpunit-5.7.phar diff --git a/CHANGELOG.md b/CHANGELOG.md index d1af516e2..a11a99056 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,60 @@ # Changelog All notable changes to this project will be documented in this file. +## 0.6.0 - 2019-04-23 + +### Added +- Share boards with circles +- Integration with collections in Nextcloud 16 +- Support for full text search +- Nextcloud 16 compatibility + +### Fixed +- Fix duplicate call to delete +- Prevent duplicate tag names @jakobroehrl +- Prevent loading details when editing the card title @jakobroehrl +- Hide sidebar after card deletion @jakobroehrl +- Update labels after change in the UI @jakobroehrl +- Allow limiting the app to groups again +- Various REST API enhancements and fixes +- Fix some issues with comments/activites + + +## 0.5.2 - 2018-12-20 + +### Fixed +- Mark notification as read if a card with duedate gets archived +- Use proper timezone and locale format for due date activities +- Various translation fixes and updates +- Check group limit properly +- Fix comment activities on Nextcloud 15 +- Fix issues with Edge +- API: Fix numeric types that were returned as strings +- API: Fix If-Modified-Since header parsing + + +## 0.5.1 - 2018-12-05 + +### Added +- Separate settings for description changes in activity +- Less verbose description change activities +- Use server settings to restrict sharing to groups +- Add setting to exclude groups from creating their own boards + +### Fixed +- Fix issue when using a separate table prefix @bpcurse +- Fix invalid activity parameters being published +- Wording fixes @cloud2018 +- Improve loading performance by removing unused activity preloading +- Fix timestamp issues in deleted items tab +- Remember show state of the board navigation @weeman1337 +- Add optional classes for custom styling @tinko92 +- Fix missing details on activity emails +- Fix unrelated comments in board activity list +- Fix search not working properly +- Trigger comment notification on update only + + ## 0.5.0 - 2018-11-15 ### Added diff --git a/appinfo/app.php b/appinfo/app.php index 73ee9a086..e6e543850 100644 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -29,6 +29,7 @@ $app = new \OCA\Deck\AppInfo\Application(); $app->registerNavigationEntry(); $app->registerNotifications(); $app->registerCommentsEntity(); +$app->registerFullTextSearch(); /** Load activity style global so it is availabile in the activity app as well */ \OC_Util::addStyle('deck', 'activity'); diff --git a/appinfo/database.xml b/appinfo/database.xml index a96137c42..9c93a9e35 100644 --- a/appinfo/database.xml +++ b/appinfo/database.xml @@ -135,6 +135,11 @@ clob false + + description_prev + clob + false + stack_id integer @@ -155,6 +160,12 @@ false true + + last_editor + text + false + 64 + created_at integer @@ -306,6 +317,13 @@ true 8 + + last_modified + integer + + false + true + deck_labels_board_id_index diff --git a/appinfo/info.xml b/appinfo/info.xml index ebff8ee05..ff9f02705 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -17,12 +17,12 @@ - 🚀 Get your project organized - 0.5.0 + 0.6.0 agpl Julius Härtl Deck - + organization office @@ -36,11 +36,12 @@ pgsql sqlite mysql - + OCA\Deck\Cron\DeleteCron OCA\Deck\Cron\ScheduledNotifications + OCA\Deck\Cron\CardDescriptionActivity @@ -53,6 +54,7 @@ OCA\Deck\Activity\Setting + OCA\Deck\Activity\DescriptionSetting OCA\Deck\Activity\Filter @@ -61,4 +63,9 @@ OCA\Deck\Activity\DeckProvider + + + OCA\Deck\Provider\DeckProvider + + diff --git a/appinfo/routes.php b/appinfo/routes.php index dd55fb408..c91c41515 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -26,6 +26,9 @@ return [ 'routes' => [ ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'], + ['name' => 'Config#get', 'url' => '/config', 'verb' => 'GET'], + ['name' => 'Config#setValue', 'url' => '/config/{key}', 'verb' => 'POST'], + // boards ['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'], ['name' => 'board#create', 'url' => '/boards', 'verb' => 'POST'], @@ -35,7 +38,7 @@ return [ ['name' => 'board#deleteUndo', 'url' => '/boards/{boardId}/deleteUndo', 'verb' => 'POST'], ['name' => 'board#getUserPermissions', 'url' => '/boards/{boardId}/permissions', 'verb' => 'GET'], ['name' => 'board#addAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'POST'], - ['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'PUT'], + ['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'PUT'], ['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'], // stacks @@ -84,7 +87,11 @@ return [ ['name' => 'board_api#delete', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'DELETE'], ['name' => 'board_api#update', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'PUT'], ['name' => 'board_api#undo_delete', 'url' => '/api/v1.0/boards/{boardId}/undo_delete', 'verb' => 'POST'], - + ['name' => 'board_api#addAcl', 'url' => '/api/v1.0/boards/{boardId}/acl', 'verb' => 'POST'], + ['name' => 'board_api#deleteAcl', 'url' => '/api/v1.0/boards/{boardId}/acl', 'verb' => 'DELETE'], + ['name' => 'board_api#updateAcl', 'url' => '/api/v1.0/boards/{boardId}/acl', 'verb' => 'PUT'], + + ['name' => 'stack_api#index', 'url' => '/api/v1.0/boards/{boardId}/stacks', 'verb' => 'GET'], ['name' => 'stack_api#getArchived', 'url' => '/api/v1.0/boards/{boardId}/stacks/archived', 'verb' => 'GET'], ['name' => 'stack_api#get', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}', 'verb' => 'GET'], diff --git a/css/collections.css b/css/collections.css new file mode 100644 index 000000000..333101086 --- /dev/null +++ b/css/collections.css @@ -0,0 +1,10 @@ +.icon-deck { + background-image: url('../img/deck-dark.svg'); +} + +.resource-type-deck img { + opacity: 0.4 !important; +} +.resource-type-deck:hover img { + opacity: 0.7 !important; +} diff --git a/css/comments.scss b/css/comments.scss new file mode 100644 index 000000000..665051cf0 --- /dev/null +++ b/css/comments.scss @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2016 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +#commentsTabView .emptycontent { + margin-top: 0; +} + +#commentsTabView .newCommentForm { + margin-left: 36px; + position: relative; +} + +#commentsTabView .newCommentForm .message { + width: 100%; + padding: 10px; + min-height: 44px; + margin: 0; + + /* Prevent the text from overlapping with the submit button. */ + padding-right: 30px; +} + +#commentsTabView .newCommentForm { + .submit, + .submitLoading { + width: 44px; + height: 44px; + margin: 0; + padding: 13px; + background-color: transparent; + border: none; + opacity: .3; + position: absolute; + bottom: 0; + right: 0; + } +} + +#commentsTabView .deleteLoading { + padding: 14px; + vertical-align: middle; +} + +#commentsTabView .newCommentForm .submit:not(:disabled):hover, +#commentsTabView .newCommentForm .submit:not(:disabled):focus { + opacity: 1; +} + +#commentsTabView .newCommentForm div.message { + resize: none; +} + +#commentsTabView .newCommentForm div.message:empty:before { + content: attr(data-placeholder); + color: grey; +} + +#commentsTabView .comment { + position: relative; + /** padding bottom is little more so that the top and bottom gap look uniform **/ + padding: 10px 0 15px; +} + +#commentsTabView .comments .comment { + border-top: 1px solid var(--color-border); +} + +#commentsTabView .comment .avatar, +.atwho-view-ul * .avatar{ + width: 32px; + height: 32px; + line-height: 32px; + margin-right: 5px; +} + +#commentsTabView .comment .message .avatar, +.atwho-view-ul * .avatar +{ + display: inline-block; +} + +#activityTabView li.comment.collapsed .activitymessage, +#commentsTabView .comment.collapsed .message { + white-space: pre-wrap; +} + +#activityTabView li.comment.collapsed .activitymessage, +#commentsTabView .comment.collapsed .message { + max-height: 70px; + overflow: hidden; +} + +#activityTabView li.comment .message-overlay, +#commentsTabView .comment .message-overlay { + display: none; +} + +#activityTabView li.comment.collapsed .message-overlay, +#commentsTabView .comment.collapsed .message-overlay { + display: block; + position: absolute; + z-index: 2; + height: 50px; + pointer-events: none; + left: 0; + right: 0; + bottom: 0; + background: -moz-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background)); + background: -webkit-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background)); + background: -o-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background)); + background: -ms-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background)); + background: linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background)); + background-repeat: no-repeat; +} + +#commentsTabView .hidden { + display: none !important; +} + +/** set min-height as 44px to ensure that it fits the button sizes. **/ +#commentsTabView .comment .authorRow { + min-height: 44px; +} +#commentsTabView .comment .authorRow .tooltip { + /** because of the padding on the element, the tooltip appear too far up, + adding this brings them closer to the element**/ + margin-top: 5px; +} + +.atwho-view-ul * .avatar-name-wrapper, +#commentsTabView .comment .authorRow { + position: relative; + display: inline-flex; + align-items: center; + width: 100%; +} + +#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser), +#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar, +#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img, +#commentsTabView .comment .authorRow .avatar:not(.currentUser), +#commentsTabView .comment .authorRow .author:not(.currentUser) { + cursor: pointer; +} + +.atwho-view-ul .avatar-name-wrapper, +.atwho-view-ul .avatar-name-wrapper .avatar, +.atwho-view-ul .avatar-name-wrapper .avatar img { + cursor: pointer; +} + +#commentsTabView .comments li .message .atwho-inserted, +#commentsTabView .newCommentForm .atwho-inserted { + .avatar-name-wrapper { + /* Make the wrapper the positioning context of its child contacts + * menu. */ + position: relative; + + display: inline; + vertical-align: top; + background-color: var(--color-background-dark); + border-radius: 50vh; + padding: 1px 7px 1px 1px; + + /* Ensure that the avatar and the user name will be kept together. */ + white-space: nowrap; + + .avatar { + img { + vertical-align: top; + } + height: 16px; + width: 16px; + vertical-align: middle; + padding: 1px; + margin-top: -3px; + margin-left: 0; + margin-right: 2px; + } + strong { + /* Ensure that the user name is shown in bold, as different browsers + * use different font weights for strong elements. */ + font-weight: bold; + } + } + .avatar-name-wrapper.currentUser { + background-color: var(--color-primary); + color: var(--color-primary-text); + } +} + +.atwho-view-ul * .avatar-name-wrapper { + white-space: nowrap; +} +#commentsTabView .comment .author, +#commentsTabView .comment .date { + opacity: .5; +} +#commentsTabView .comment .author { + max-width: 210px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +#commentsTabView .comment .date { + margin-left: auto; + /** this is to fix the tooltip being too close due to the margin-top applied + to bring the tooltip closer for the action icons **/ + padding: 10px 0px; +} + +#commentsTabView .comments > li:not(.newCommentRow) .message { + padding-left: 40px; + word-wrap: break-word; + overflow-wrap: break-word; +} + +#commentsTabView .comment .action { + opacity: 0.3; + padding: 14px; + display: block; +} + +#commentsTabView .comment .action:hover, +#commentsTabView .comment .action:focus { + opacity: 1; +} + +#commentsTabView .newCommentRow .action-container { + margin-left: auto; +} + +#commentsTabView .comment.disabled .message { + opacity: 0.3; +} + +#commentsTabView .comment.disabled .action { + display: none; +} + +#commentsTabView .message.error { + color: #e9322d; + border-color: #e9322d; + box-shadow: 0 0 6px #f8b9b7; +} + +.app-files .action-comment { + padding: 16px 14px; +} + +#commentsTabView .comment .message .contactsmenu-popover { + left: -6px; + top: 24px; +} diff --git a/css/comp-13.scss b/css/comp-13.scss deleted file mode 100644 index 55468b053..000000000 --- a/css/comp-13.scss +++ /dev/null @@ -1,50 +0,0 @@ -#content-wrapper #content { - height: 100%; -} -#app-content { - flex-grow: 1; - height: 100%; - - &.details-visible { - margin-right: 500px; - } -} - -#app-sidebar { - right: -500px; - max-width: 100%; - width: 500px; - display:flex; - flex-direction: column; - z-index: 1000; - - &.details-visible { - right: 0; - } -} - -#content[class*='app-'] * { - box-sizing: border-box; -} - -body:not(.snapjs-left) { - .app-navigation-hide { - #app-content { - margin-left: 0 !important; - } - #app-navigation { - display: none; - } - } -} - -#commentsTabView .newCommentForm .message { - width: 100%; - margin-left: 0; - padding-right: 0; - display: block; -} - -#commentsTabView .comment { - margin-bottom: 0; -} diff --git a/css/compact-mode.scss b/css/compact-mode.scss index 03761bef9..8006f8aa6 100644 --- a/css/compact-mode.scss +++ b/css/compact-mode.scss @@ -32,6 +32,8 @@ .stack { .as-sortable-placeholder { margin: $compact-board-item-margin; + min-height: 43px; + height: 43px; &:last-child { margin: $compact-board-last-item-margin; diff --git a/css/icons.scss b/css/icons.scss index 0b2aa0ff6..cea81462a 100644 --- a/css/icons.scss +++ b/css/icons.scss @@ -56,6 +56,7 @@ @if mixin-exists('icon-black-white') { @include icon-black-white('deck', 'deck', 1); @include icon-black-white('archive', 'deck', 1); + @include icon-black-white('circles', 'deck', 1); .icon-toggle-compact-collapsed { @include icon-color('toggle-view-expand', 'deck', $color-black); @@ -68,3 +69,12 @@ @include icon-color('activity-dark', 'activity', $color-black); } } + +.avatardiv.circles { + background: var(--color-primary); +} +.icon-circles { + opacity: 1; + background-size: 20px; + background-position: center center; +} \ No newline at end of file diff --git a/css/style.scss b/css/style.scss index c5aa3ef50..cc1cc0740 100644 --- a/css/style.scss +++ b/css/style.scss @@ -42,6 +42,7 @@ $compact-board-last-item-margin: 5px 10px 10px; @import 'animations'; @import 'compact-mode'; @import 'autocomplete'; +@import 'comments'; /** * General styles @@ -148,6 +149,22 @@ input.input-inline { } +#app-settings-content { + overflow: initial; + + .ui-select-match-item { + border: 1px solid var(--color-background-darker) !important; + .select-label { + color: var(--color-main-text); + } + } + + p.hint { + margin-top: 10px; + color: var(--color-text-light); + } +} + /** * Board view */ @@ -431,7 +448,7 @@ input.input-inline { margin: $board-item-margin; white-space: normal; position: relative; - box-shadow: 0 0 3px var(--color-background-darker, $color-darkgrey); + box-shadow: 0 0 3px 1px var(--color-background-darker, $color-darkgrey); border-radius: 3px; transition: margin 250ms linear; @@ -633,7 +650,7 @@ input.input-inline { min-height: 16px; } -.popovermenu { +.popovermenu:not(.action-item__menu) { z-index: 999; opacity: 1; display: block; @@ -975,8 +992,12 @@ input.input-inline { img { max-width: 24px; max-height: 24px; + opacity: 1; } } + & > img { + opacity: 0.7; + } } .activitysubject.commentAuthor { @@ -1241,6 +1262,7 @@ input.input-inline { display: inline-block; overflow: hidden; vertical-align: middle; + flex-grow: 1; } .icon-delete { @@ -1266,7 +1288,7 @@ input.input-inline { width: 32px; height: 32px; - .icon-group { + .icon-group, .icon { padding: 16px; opacity: 0.5; } @@ -1399,6 +1421,10 @@ input.input-inline { } .select2-search-field { margin-right: -10px; + flex-grow: 1; + input { + width: 100% !important; + } } } diff --git a/docs/API-Nextcloud.md b/docs/API-Nextcloud.md index 8c657d78a..a8a59d2af 100644 --- a/docs/API-Nextcloud.md +++ b/docs/API-Nextcloud.md @@ -1,5 +1,20 @@ # Nextcloud APIs +## Available sharees + +When sharing a board to a user, group or circle, the possible sharees can be obtained though the files_sharing API. + +API endpoint: https://nextcloud.local/index.php/apps/files_sharing/api/v1/sharees + +### Parameters +- format: **The response format** +- perPage: **Limit response number** +- itemType: **List of types. Currently supported are** + - 0 user + - 1 group + - 7 circle + + ## Comments Comments are stored using the Nextcloud Comments API. You can use the WebDAV endpoint of Nextcloud to fetch, update and delete comments. diff --git a/docs/API.md b/docs/API.md index dc0a11759..d8aada7a3 100644 --- a/docs/API.md +++ b/docs/API.md @@ -65,6 +65,12 @@ curl -u admin:admin -X GET \ The board list endpoint supports setting an `If-Modified-Since` header to limit the results to entities that are changed after the provided time. +#### Request parameters + +| Parameter | Type | Description | +| --------- | ------- | ---------------------------- | +| options | Bool | **Optional** Enhance boards with details about labels, stacks and users | + #### Response ##### 200 Success @@ -288,6 +294,64 @@ Returns an array of board items ##### 200 Success +### POST /boards/{boardId}/acl - Add new acl rule + +#### Request body + +| Parameter | Type | Description | +| --------- | ------ | ---------------------------------------------------- | +| type | Integer | Type of the participant | +| participant | String | The uid of the participant | +| permissionEdit | Bool | Setting if the participant has edit permissions | +| permissionShare | Bool | Setting if the participant has sharing permissions | +| permissionManage | Bool | Setting if the participant has management permissions | + +##### Supported participant types: +- 0 User +- 1 Group +- 7 Circle + +#### Response + +##### 200 Success + +```json +[{ + "participant": { + "primaryKey": "userid", + "uid": "userid", + "displayname": "User Name" + }, + "type": 0, + "boardId": 1, + "permissionEdit": true, + "permissionShare": false, + "permissionManage": true, + "owner": false, + "id": 1 +}] +``` + +### PUT /boards/{boardId}/acl/{aclId} - Update an acl rule + +#### Request parameters + +| Parameter | Type | Description | +| --------- | ------ | ---------------------------------------------------- | +| permissionEdit | Bool | Setting if the participant has edit permissions | +| permissionShare | Bool | Setting if the participant has sharing permissions | +| permissionManage | Bool | Setting if the participant has management permissions | + +#### Response + +##### 200 Success + +### DELETE /boards/{boardId}/acl/{aclId} - Delete an acl rule + +#### Response + +##### 200 Success + ## Stacks ### GET /board/{boardId}/stacks - Get stacks diff --git a/docs/Release.md b/docs/Release.md new file mode 100644 index 000000000..78e206e78 --- /dev/null +++ b/docs/Release.md @@ -0,0 +1,55 @@ +Releasing a new version works quite easy with [krankerl](https://github.com/ChristophWurst/krankerl) and [github-release](https://github.com/aktau/github-release) installed: + +1. Run krankerl to build the package + +``` +krankerl package +``` + +2. Tag the release on GitHub + +``` +# For a prerelease +github-release release -u nextcloud -r deck -t v0.3.1 -p + +# For a regular release +github-release release -u nextcloud -r deck -t v0.3.1 +``` + +3. Upload the release package to GitHub + +``` +github-release upload -u nextcloud -r deck -t v0.3.1 -n deck.tar.gz -f build/artifacts/deck.tar.gz +``` + +4. Run krankerl to release the package to the app store (add `--nightly` for prerelease packages) + +``` +krankerl publish https://github.com/nextcloud/deck/releases/download/v0.3.1/deck.tar.gz +``` + +## Release PR template + +``` +## Backports + +- [ ] ... + +## Translations + +- [ ] ... + +## Release + +- [ ] Set proper Nextcloud versions in info.xml +- [ ] Update changelog +- [ ] Build test release +- [ ] Tested on + - [ ] Nextcloud 13 + - [ ] Nextcloud 14 + - [ ] Nextcloud 15 +- [ ] Merge +- [ ] Build final release +- [ ] Publish release +- [ ] Upload to the app store +``` diff --git a/docs/User_documentation_en.md b/docs/User_documentation_en.md new file mode 100644 index 000000000..75b0e57a5 --- /dev/null +++ b/docs/User_documentation_en.md @@ -0,0 +1,69 @@ +## Introduction +### What about Deck ? +You may know Kanban website like Trello ? Deck is about the same thing but secured and respectful of your privacy ! +Integrated in Nextcloud, you can easily manage your projects while having your data secured. + +### Use cases +Project management, time management or ideation, Deck makes it easier for you to manage your work. + +## Using Deck +Overall, Deck is easy to use. You can create boards, add users, share the Deck, work collaboratively and in real time. + +1. [Create my first board](#1-create-my-first-board) +2. [Create stacks and cards](#2-create-stacks-and-cards) +3. [Handle cards options](#3-handle-cards-options) +4. [Archive old tasks](#4-archive-old-tasks) +5. [Manage your board](#5-manage-your-board) + +### 1. Create my first board +In this example, we're going to create a board and share it with an other nextcloud user. + +![Gif for creating boards](resources/gifs/EN_create_board.gif) + + +### 2. Create stacks and cards +Stacks are simply columns with list of cards. It can represent a category of tasks or an y step in your projects for example. +**Check this out :** + +![Gif for creating columns](resources/gifs/EN_create_columns.gif) + +What about the cards? Cards are tasks, objects or ideas that fit into a stack. You can put a lot of cards in a stack! An infinity? Who knows! Who knows! + +And all the magic of this software consists on moving your cards from a stack to an other. +**Check this out :** + +![Gif for creating tasks](resources/gifs/EN_create_task.gif) + +### 3. Handle cards options +Once you have created your cards, you can modify them or add options by clicking on them. So, what are the options? Well, there are several of them: +- Tag Management +- Assign a card to a user (s·he will receive a notification) +- Render date, or deadline + +![Gif for puting infos on tasks](resources/gifs/EN_put_infos.gif) + +And even : + +- Description in markdown language +- Attachment - *you can leave a document, a picture or some other bonus like that.* + +![Gif for puting infos on tasks 2](resources/gifs/EN_put_infos_2.gif) + +### 4. Archive old tasks +Once finished or obsolete, a task could be archived. The tasks is not deleted, it's just archived, and you can retrieve it later + +![Gif for puting infos on tasks 2](resources/gifs/EN_archive.gif) + +### 5. Manage your board +You can manage the settings of your Deck once you are inside it, by clicking on the small wheel at the top right. +Once in this menu, you have access to several things: +- Sharing +- Tags +- Deleted objects +- Timeline + +The **sharing tab** allows you to add users or even groups to your boards. +**Tags** allows you to modify the tags available for the cards. +**Deleted objects** allows you to return previously deleted stacks or cards. +The **Timeline** allows you to see everything that happened in your boards. Everything! + diff --git a/docs/resources/gifs/EN_archive.gif b/docs/resources/gifs/EN_archive.gif new file mode 100644 index 000000000..f3dab804c Binary files /dev/null and b/docs/resources/gifs/EN_archive.gif differ diff --git a/docs/resources/gifs/EN_create_board.gif b/docs/resources/gifs/EN_create_board.gif new file mode 100644 index 000000000..39ca4cc4d Binary files /dev/null and b/docs/resources/gifs/EN_create_board.gif differ diff --git a/docs/resources/gifs/EN_create_columns.gif b/docs/resources/gifs/EN_create_columns.gif new file mode 100644 index 000000000..a50a0e8ed Binary files /dev/null and b/docs/resources/gifs/EN_create_columns.gif differ diff --git a/docs/resources/gifs/EN_create_task.gif b/docs/resources/gifs/EN_create_task.gif new file mode 100644 index 000000000..d739ae446 Binary files /dev/null and b/docs/resources/gifs/EN_create_task.gif differ diff --git a/docs/resources/gifs/EN_put_infos.gif b/docs/resources/gifs/EN_put_infos.gif new file mode 100644 index 000000000..cf591dc88 Binary files /dev/null and b/docs/resources/gifs/EN_put_infos.gif differ diff --git a/docs/resources/gifs/EN_put_infos_2.gif b/docs/resources/gifs/EN_put_infos_2.gif new file mode 100644 index 000000000..69869e63a Binary files /dev/null and b/docs/resources/gifs/EN_put_infos_2.gif differ diff --git a/img/circles.svg b/img/circles.svg new file mode 100644 index 000000000..30035d9dc --- /dev/null +++ b/img/circles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/js/.babelrc.js b/js/.babelrc.js new file mode 100644 index 000000000..21cf7022f --- /dev/null +++ b/js/.babelrc.js @@ -0,0 +1,12 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: ['last 2 versions', 'ie >= 11'] + } + } + ] + ] +} diff --git a/js/controller/ActivityController.js b/js/controller/ActivityController.js index cfb348cc5..c521067ff 100644 --- a/js/controller/ActivityController.js +++ b/js/controller/ActivityController.js @@ -20,7 +20,7 @@ * */ -/* global OC OCA OCP t escapeHTML Handlebars */ +/* global OC OCA OCP t escapeHTML Handlebars moment */ import CommentCollection from '../legacy/commentcollection'; import CommentModel from '../legacy/commentmodel'; @@ -38,6 +38,7 @@ class ActivityController { commentCreateLoading: false }; this.$scope.newComment = ''; + this.$scope.newCommentString = 'New comment…'; this.currentUser = OC.getCurrentUser(); @@ -45,10 +46,11 @@ class ActivityController { this.$scope.$watch(function () { return self.element.id; }, function (params) { + if (self.type === 'deck_card') { + self.activityservice.loadComments(self.element.id); + } + if (self.getData(self.element.id).length === 0) { - if (self.type === 'deck_card') { - self.activityservice.loadComments(self.element.id); - } self.loading = true; self.fetchUntilResults(); } @@ -279,7 +281,13 @@ class ActivityController { return this.activityservice.getData(this.type, id); } - parseMessage(subject, parameters) { + parseMessage(activity) { + let subject = activity.subject_rich[0]; + let parameters = activity.subject_rich[1]; + if (parameters.after && parameters.after.id && parameters.after.id.startsWith('dt:')) { + let dateTime = parameters.after.id.substr(3); + parameters.after.name = moment(dateTime).format('L LTS'); + } return OCA.Activity.RichObjectStringParser.parseMessage(subject, parameters); } diff --git a/js/controller/BoardController.js b/js/controller/BoardController.js index d099633d2..802756db0 100644 --- a/js/controller/BoardController.js +++ b/js/controller/BoardController.js @@ -19,10 +19,18 @@ * along with this program. If not, see . * */ +/* global oc_defaults oc_config OC OCP OCA t n */ import app from '../app/App.js'; -/* global oc_defaults OC OCP OCA */ -app.controller('BoardController', function ($rootScope, $scope, $stateParams, StatusService, BoardService, StackService, CardService, LabelService, $state, $transitions, $filter, FileService) { +import Vue from 'vue'; + +Vue.prototype.t = t; +Vue.prototype.n = n; +Vue.prototype.OC = OC; + +import CollaborationView from '../views/CollaborationView'; + +app.controller('BoardController', function ($rootScope, $scope, $element, $stateParams, StatusService, BoardService, StackService, CardService, LabelService, $state, $transitions, $filter, FileService) { $scope.sidebar = $rootScope.sidebar; @@ -41,6 +49,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St $scope.defaultColors = ['31CC7C', '317CCC', 'FF7A66', 'F1DB50', '7C31CC', 'CC317C', '3A3B3D', 'CACBCD']; $scope.board = BoardService.getCurrent(); $scope.uploader = FileService.uploader; + $scope.searchText = ''; $scope.startTitleEdit = function(card) { card.renameTitle = card.title; @@ -147,6 +156,31 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St } }); + if (parseInt(oc_config.version.split('.')[0]) >= 16) { + const ComponentVM = new Vue({ + render: h => h(CollaborationView), + data: { + model: BoardService.getCurrent() + }, + }); + $scope.mountCollections = function () { + const MountingPoint = document.getElementById('collaborationResources'); + if (MountingPoint) { + ComponentVM.model = BoardService.getCurrent(); + ComponentVM.$mount(MountingPoint); + } + }; + $scope.$$postDigest($scope.mountCollections); + $scope.$watch(function () { + return BoardService.getCurrent(); + }, function () { + ComponentVM.model = BoardService.getCurrent(); + if ($scope.sidebar.show) { + $scope.$$postDigest($scope.mountCollections); + } + }); + } + $scope.toggleCompactMode = function() { $rootScope.compactMode = !$rootScope.compactMode; localStorage.setItem('deck.compactMode', JSON.stringify($rootScope.compactMode)); @@ -245,6 +279,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St $scope.cardDelete = function (card) { CardService.delete(card.id).then(function () { StackService.removeCard(card); + $scope.sidebar.show = false; }); }; @@ -321,7 +356,20 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St // remove from board data var i = BoardService.getCurrent().labels.indexOf(label); BoardService.getCurrent().labels.splice(i, 1); - // TODO: remove from cards + + // remove from cards + var cards = CardService.data; + for (var card in cards) { + if (Object.prototype.hasOwnProperty.call(cards, card)) { + var labelsFromCard = cards[card].labels; + + labelsFromCard.forEach(function (labelFromCard, index) { + if (labelFromCard.id === label.id) { + cards[card].labels.splice(index, 1); + } + }); + } + } }; $scope.labelCreate = function (label) { @@ -331,11 +379,35 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St BoardService.getCurrent().labels.push(data); $scope.status.createLabel = false; $scope.newLabel = {}; + }).catch((err) => { + OC.Notification.showTemporary(err); }); }; + + $scope.labelUpdateBefore = function (label) { + label.renameTitle = label.title; + }; + $scope.labelUpdate = function (label) { label.edit = false; - LabelService.update(label); + LabelService.update(label).catch((err) => { + label.title = label.renameTitle; + OC.Notification.showTemporary(err); + }); + + // update labels in UI + var cards = CardService.data; + for (var card in cards) { + if (Object.prototype.hasOwnProperty.call(cards, card)) { + var labelsFromCard = cards[card].labels; + + labelsFromCard.forEach(function (labelFromCard, index) { + if (labelFromCard.id === label.id) { + cards[card].labels[index] = label; + } + }); + } + } }; $scope.aclAdd = function (sharee) { @@ -364,6 +436,8 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St return 'user'; case OC.Share.SHARE_TYPE_GROUP: return 'group'; + case OC.Share.SHARE_TYPE_CIRCLE: + return 'circles'; default: return ''; } diff --git a/js/controller/ListController.js b/js/controller/ListController.js index f3c0baefd..c88d43226 100644 --- a/js/controller/ListController.js +++ b/js/controller/ListController.js @@ -4,25 +4,25 @@ * @author Julius Härtl * * @license GNU AGPL version 3 or any later version - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * + * */ -/* global app angular */ +/* global app angular oc_isadmin */ -var ListController = function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService) { +var ListController = function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService, $http, $q, $rootScope) { function calculateNewColor() { var boards = BoardService.getAll(); @@ -55,6 +55,63 @@ var ListController = function ($scope, $location, $filter, BoardService, $elemen $scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD']; $scope.boardservice = BoardService; $scope.updatingBoard = null; + $scope.isAdmin = oc_isadmin; + $scope.canCreate = $rootScope.config.canCreate; + + if ($scope.isAdmin) { + OC.Apps.enableDynamicSlideToggle(); + $scope.groups = []; + $scope.groupLimit = []; + $scope.groupLimitDisabled = true; + let fetchGroups = function () { + var deferred = $q.defer(); + // TODO: move to groups/details once 15 is min version + $http.get(OC.linkToOCS('cloud', 2) + 'groups').then(function (response) { + $scope.groups = response.data.ocs.data.groups.reduce((obj, item) => { + obj.push({ + id: item, + displayname: item, + }); + return obj; + }, []); + deferred.resolve($scope.groups); + }, function (error) { + deferred.reject('Error while loading groups'); + }); + $http.get(OC.generateUrl('apps/deck/config')).then(function (response) { + $scope.groupLimit = response.data.groupLimit; + $scope.groupLimitDisabled = false; + deferred.resolve(response.data); + }, function (error) { + deferred.reject('Error while loading groupLimit'); + }); + return deferred.promise; + }; + + let updateConfig = function() { + $scope.groupLimitDisabled = true; + var deferred = $q.defer(); + $http.post(OC.generateUrl('apps/deck/config/groupLimit'), {value: $scope.groupLimit}).then(function (response) { + $scope.groupLimitDisabled = false; + deferred.resolve(response.data); + }, function (error) { + deferred.reject('Error while saving groupLimit'); + }); + return deferred.promise; + }; + + $scope.groupLimitAdd = function (element, model) { + $scope.groupLimit.push(element); + updateConfig(); + }; + $scope.groupLimitRemove = function (element, model) { + $scope.groupLimit = $scope.groupLimit.filter((el) => { + return el.id !== element.id; + }); + updateConfig(); + }; + fetchGroups(); + } var filterData = function () { if($element.attr('id') === 'app-navigation') { diff --git a/js/directive/search.js b/js/directive/search.js index 5562434bc..5478e0204 100644 --- a/js/directive/search.js +++ b/js/directive/search.js @@ -4,20 +4,20 @@ * @author Julius Härtl * * @license GNU AGPL version 3 or any later version - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * + * */ import app from '../app/App.js'; @@ -30,22 +30,32 @@ app.directive('search', function ($document, $location) { 'onSearch': '=' }, link: function (scope) { - var box = $('#searchbox'); - box.val($location.search().search); - - var doSearch = function() { - var value = box.val(); - scope.$apply(function () { - scope.onSearch(value); + if (OCA.Search && OCA.Search.Core) { + // eslint-disable-next-line no-unused-vars + const search = new OCA.Search((term) => { + scope.$apply(function () { + scope.onSearch(term); + }); + }, () => { + scope.$apply(function () { + scope.onSearch(''); + }); }); - }; + } else { + const box = $('#searchbox'); + box.val($location.search().search); - box.on('search keyup', function (event) { - if (event.type === 'search' || event.keyCode === 13 ) { + var doSearch = function () { + var value = box.val(); + scope.$apply(function () { + scope.onSearch(value); + }); + }; + + box.on('search keyup', function (event) { doSearch(); - } - }); - + }); + } } }; }); diff --git a/js/init-collections.js b/js/init-collections.js new file mode 100644 index 000000000..9a6d06911 --- /dev/null +++ b/js/init-collections.js @@ -0,0 +1,69 @@ +/* + * @copyright Copyright (c) 2019 Julius Härtl + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +'use strict'; + +/* global __webpack_nonce__ __webpack_public_path__ OC t n */ +// eslint-disable-next-line +__webpack_nonce__ = btoa(OC.requestToken); +// eslint-disable-next-line +__webpack_public_path__ = OC.linkTo('deck', 'js/build/'); + +import Vue from 'vue'; + +Vue.prototype.t = t; +Vue.prototype.n = n; +Vue.prototype.OC = OC; + +import BoardSelector from './views/BoardSelector'; + +import './../css/collections.css'; + +((function(OCP) { + + OCP.Collaboration.registerType('deck', { + action: () => { + return new Promise((resolve, reject) => { + const container = document.createElement('div'); + container.id = 'deck-board-select'; + const body = document.getElementById('body-user'); + body.append(container); + const ComponentVM = new Vue({ + render: h => h(BoardSelector), + }); + ComponentVM.$mount(container); + ComponentVM.$root.$on('close', () => { + ComponentVM.$el.remove(); + ComponentVM.$destroy(); + reject(); + }); + ComponentVM.$root.$on('select', (id) => { + resolve(id); + ComponentVM.$el.remove(); + ComponentVM.$destroy(); + }); + }); + }, + typeString: t('deck', 'Link to a board'), + typeIconClass: 'icon-deck' + }); +})(window.OCP)); diff --git a/js/init.js b/js/init.js index 06c78f373..24f195b4d 100644 --- a/js/init.js +++ b/js/init.js @@ -1,7 +1,10 @@ 'use strict'; -/* global __webpack_nonce__ OC */ -__webpack_nonce__ = btoa(OC.requestToken); // eslint-disable-line no-native-reassign +/* global __webpack_nonce__ __webpack_public_path__ OC t n */ +// eslint-disable-next-line +__webpack_nonce__ = btoa(OC.requestToken); +// eslint-disable-next-line +__webpack_public_path__ = OC.linkTo('deck', 'js/build/'); // used for building a vendor stylesheet import 'ng-sortable/dist/ng-sortable.css'; diff --git a/js/package-lock.json b/js/package-lock.json index 0b21de152..ff1f7232d 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -14,89 +14,64 @@ } }, "@babel/core": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.6.tgz", - "integrity": "sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", + "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.6", - "@babel/helpers": "^7.1.5", - "@babel/parser": "^7.1.6", - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.6", - "@babel/types": "^7.1.6", + "@babel/generator": "^7.4.0", + "@babel/helpers": "^7.4.3", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { - "@babel/generator": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz", - "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==", - "dev": true, - "requires": { - "@babel/types": "^7.1.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, "@babel/parser": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz", - "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", "dev": true }, - "@babel/traverse": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", - "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.6", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.1.6", - "@babel/types": "^7.1.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" } }, "@babel/types": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", - "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, "json5": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", @@ -121,34 +96,28 @@ } }, "@babel/generator": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz", - "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", "dev": true, "requires": { - "@babel/types": "^7.1.6", + "@babel/types": "^7.4.0", "jsesc": "^2.5.1", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "source-map": "^0.5.0", "trim-right": "^1.0.1" }, "dependencies": { "@babel/types": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", - "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true } } }, @@ -172,25 +141,51 @@ } }, "@babel/helper-call-delegate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", - "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", + "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-define-map": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", - "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", + "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" + "@babel/types": "^7.4.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-explode-assignable-expression": { @@ -224,12 +219,25 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", - "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", + "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.4.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-member-expression-to-functions": { @@ -251,17 +259,47 @@ } }, "@babel/helper-module-transforms": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz", - "integrity": "sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", + "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-simple-access": "^7.1.0", "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.11" + }, + "dependencies": { + "@babel/parser": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "dev": true + }, + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-optimise-call-expression": { @@ -280,12 +318,12 @@ "dev": true }, "@babel/helper-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", - "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz", + "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } }, "@babel/helper-remap-async-to-generator": { @@ -302,15 +340,28 @@ } }, "@babel/helper-replace-supers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz", - "integrity": "sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", + "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.0.0", "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-simple-access": { @@ -324,104 +375,90 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.4.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-wrap-function": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz", - "integrity": "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", "@babel/template": "^7.1.0", "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helpers": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.5.tgz", - "integrity": "sha512-2jkcdL02ywNBry1YNFAH/fViq4fXG0vdckHqeJk+75fpQ2OH+Az6076tX/M0835zA45E0Cqa6pV5Kiv9YOqjEg==", - "dev": true, - "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.1.5" + "@babel/types": "^7.2.0" }, "dependencies": { - "@babel/generator": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz", - "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==", - "dev": true, - "requires": { - "@babel/types": "^7.1.6", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/parser": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz", - "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==", - "dev": true - }, - "@babel/traverse": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", - "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.6", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.1.6", - "@babel/types": "^7.1.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" - } - }, "@babel/types": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", - "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" } + } + } + }, + "@babel/helpers": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", + "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "dev": true, + "requires": { + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "dev": true }, - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, "requires": { - "ms": "^2.1.1" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } } } }, @@ -480,137 +517,115 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz", - "integrity": "sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.0.0" + "@babel/plugin-syntax-async-generators": "^7.2.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz", - "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.0.0" + "@babel/plugin-syntax-json-strings": "^7.2.0" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", - "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz", + "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0" + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz", - "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz", - "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", + "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.2.0" - }, - "dependencies": { - "regexpu-core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", - "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.4.0", - "regjsparser": "^0.3.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" - } - }, - "regjsgen": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", - "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", - "dev": true - }, - "regjsparser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", - "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "regexpu-core": "^4.5.4" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz", - "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz", - "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz", - "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz", - "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz", - "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz", - "integrity": "sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", + "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -619,113 +634,82 @@ } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz", - "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.1.5.tgz", - "integrity": "sha512-jlYcDrz+5ayWC7mxgpn1Wj8zj0mmjCT2w0mPIMSwO926eXBRxpEgoN/uQVRBfjtr8ayjcmS+xk2G1jaP8JjMJQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", + "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.10" + "lodash": "^4.17.11" } }, "@babel/plugin-transform-classes": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz", - "integrity": "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz", + "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.1.0", + "@babel/helper-define-map": "^7.4.0", "@babel/helper-function-name": "^7.1.0", "@babel/helper-optimise-call-expression": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz", - "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz", - "integrity": "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz", + "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz", - "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz", + "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" - }, - "dependencies": { - "regexpu-core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", - "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.4.0", - "regjsparser": "^0.3.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" - } - }, - "regjsgen": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", - "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", - "dev": true - }, - "regjsparser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", - "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "@babel/helper-regex": "^7.4.3", + "regexpu-core": "^4.5.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz", - "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz", - "integrity": "sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", @@ -733,18 +717,18 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz", - "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz", + "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz", - "integrity": "sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz", + "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", @@ -752,18 +736,27 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz", - "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz", - "integrity": "sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.1.0", @@ -771,49 +764,58 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz", - "integrity": "sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz", + "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-module-transforms": "^7.4.3", "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-simple-access": "^7.1.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz", - "integrity": "sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", + "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", + "@babel/helper-hoist-variables": "^7.4.0", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz", - "integrity": "sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", + "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.0" + } + }, "@babel/plugin-transform-new-target": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", - "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", + "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-object-super": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz", - "integrity": "sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -821,47 +823,65 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz", - "integrity": "sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz", + "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.1.0", + "@babel/helper-call-delegate": "^7.4.0", "@babel/helper-get-function-arity": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", - "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", "dev": true, "requires": { - "regenerator-transform": "^0.13.3" + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz", + "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==", + "dev": true, + "requires": { + "regenerator-transform": "^0.13.4" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz", - "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-spread": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz", - "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz", - "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -869,9 +889,9 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz", - "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", @@ -879,121 +899,116 @@ } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz", - "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz", - "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz", + "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" - }, - "dependencies": { - "regexpu-core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", - "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.4.0", - "regjsparser": "^0.3.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" - } - }, - "regjsgen": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", - "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", - "dev": true - }, - "regjsparser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", - "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "@babel/helper-regex": "^7.4.3", + "regexpu-core": "^4.5.4" } }, "@babel/polyfill": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", - "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.3.tgz", + "integrity": "sha512-rkv8WIvJshA5Ev8iNMGgz5WZkRtgtiPexiT7w5qevGTuT7ZBfM3de9ox1y9JR5/OXb/sWGBbWlHNa7vQKqku3Q==", "dev": true, "requires": { - "core-js": "^2.5.7", - "regenerator-runtime": "^0.11.1" + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" }, "dependencies": { "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", "dev": true } } }, "@babel/preset-env": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.1.6.tgz", - "integrity": "sha512-YIBfpJNQMBkb6MCkjz/A9J76SNCSuGVamOVBgoUkLzpJD/z8ghHi9I42LQ4pulVX68N/MmImz6ZTixt7Azgexw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz", + "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.0.0", - "@babel/plugin-syntax-async-generators": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.1.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.1.5", - "@babel/plugin-transform-classes": "^7.1.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-dotall-regex": "^7.0.0", - "@babel/plugin-transform-duplicate-keys": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.1.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.1.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-amd": "^7.1.0", - "@babel/plugin-transform-modules-commonjs": "^7.1.0", - "@babel/plugin-transform-modules-systemjs": "^7.0.0", - "@babel/plugin-transform-modules-umd": "^7.1.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.1.0", - "@babel/plugin-transform-parameters": "^7.1.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typeof-symbol": "^7.0.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "browserslist": "^4.1.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.0", + "@babel/plugin-transform-classes": "^7.4.3", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.3", + "@babel/plugin-transform-dotall-regex": "^7.4.3", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.3", + "@babel/plugin-transform-function-name": "^7.4.3", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.3", + "@babel/plugin-transform-modules-systemjs": "^7.4.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2", + "@babel/plugin-transform-new-target": "^7.4.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.3", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.3", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.3", + "@babel/types": "^7.4.0", + "browserslist": "^4.5.2", + "core-js-compat": "^3.0.0", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" + "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/template": { @@ -1008,43 +1023,43 @@ } }, "@babel/traverse": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", - "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", + "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.6", + "@babel/generator": "^7.4.0", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.1.6", - "@babel/types": "^7.1.6", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/types": "^7.4.0", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.10" + "lodash": "^4.17.11" }, "dependencies": { "@babel/parser": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz", - "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", "dev": true }, "@babel/types": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", - "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -1078,188 +1093,259 @@ } }, "@uirouter/angularjs": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-1.0.20.tgz", - "integrity": "sha512-fY6bsesTL/tg8gyFHXaIjD1r5b7Ac+SYupodO9OzT4/gKI0YC+uGzLpQESAiXlT3fsxdEPVBzdtAbzXDwCKdEA==", + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-1.0.22.tgz", + "integrity": "sha512-d0SvdbXAav+Z6gCJd7gmn2eXEUtO3RvYcSLwtPaE8+7QiWHpSKNfGdD4D3noXhO2yUTz/AwaxsiRFMCwgVI0UQ==", "requires": { - "@uirouter/core": "5.0.21" + "@uirouter/core": "5.0.23" } }, "@uirouter/core": { - "version": "5.0.21", - "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-5.0.21.tgz", - "integrity": "sha512-QWHc0wT00qtYNkT0BXZaFNLLHZyux0qJjF8c2WklW5/Q0Z866NoJjJErEMWjQb/AR+olkR2NlfEEi8KTQU2OpA==" + "version": "5.0.23", + "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-5.0.23.tgz", + "integrity": "sha512-rwFOH++z/KY8y+h0IOpQ5uC8Nim6E0EBCQrIjhVCr+XKYXgpK+VdtuOLFdogvbJ3AAi5Z7ei00qdEr7Did5CAg==" }, - "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "@vue/component-compiler-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz", + "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "1.16.3", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/wast-printer": "1.8.5" } }, "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" } }, "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", "dev": true, "requires": { - "@xtuc/long": "4.2.1" + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" } }, "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" } }, "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" } }, "@xtuc/ieee754": { @@ -1269,9 +1355,9 @@ "dev": true }, "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "accepts": { @@ -1285,19 +1371,16 @@ } }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", "dev": true }, "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true }, "after": { "version": "0.8.2", @@ -1330,14 +1413,14 @@ "dev": true }, "angular": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.5.tgz", - "integrity": "sha512-760183yxtGzni740IBTieNuWLtPNAoMqvmC0Z62UoU0I3nqk+VJuO3JbQAXOyvo3Oy/ZsdNQwrSTh/B0OQZjNw==" + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.8.tgz", + "integrity": "sha512-wtef/y4COxM7ZVhddd7JtAAhyYObq9YXKar9tsW7558BImeVYteJiTxCKeJOL45lJ/+7B4wrAC49j8gTFYEthg==" }, "angular-animate": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.7.5.tgz", - "integrity": "sha512-kU/fHIGf2a4a3bH7E1tzALTHk+QfoUSCK9fEcMFisd6ZWvNDwPzXWAilItqOC3EDiAXPmGHaNc9/aXiD9xrAxQ==" + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.7.8.tgz", + "integrity": "sha512-bINtzizq7TbJzfVrDpwLfTxVl0Qd7fRNWFb5jKYI1vaFZobQNX/QONXlLow6ySsDbZ6eLECycB7mvWtfh1YYaw==" }, "angular-file-upload": { "version": "2.5.0", @@ -1350,21 +1433,24 @@ "integrity": "sha1-acb8Hu1RqDkJBVvqJnj9ZaPenzc=" }, "angular-sanitize": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.7.5.tgz", - "integrity": "sha512-wjKCJOIwrkEvfD0keTnKGi6We13gtoCAQIHcdoqyoo3gwvcgNfYymVQIS3+iCGVcjfWz0jHuS3KgB4ysRWsTTA==" + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.7.8.tgz", + "integrity": "sha512-sVq51is1cVNiPytH4JIEd7iRW0OBIRQGNETWkz1c/jnLv2sBf9oDxEd8enwDz/W2ULBIpqJPK/3AsIxmZyh9pA==" }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } }, "anymatch": { "version": "2.0.0", @@ -1408,12 +1494,6 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -1469,6 +1549,15 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", @@ -1487,24 +1576,22 @@ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" } }, "babel-loader": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.4.tgz", - "integrity": "sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", "dev": true, "requires": { - "find-cache-dir": "^1.0.0", + "find-cache-dir": "^2.0.0", "loader-utils": "^1.0.2", "mkdirp": "^0.5.1", "util.promisify": "^1.0.0" @@ -1661,9 +1748,9 @@ "dev": true }, "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", "dev": true }, "bluebird": { @@ -1813,14 +1900,14 @@ } }, "browserslist": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.4.tgz", - "integrity": "sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", + "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000899", - "electron-to-chromium": "^1.3.82", - "node-releases": "^1.0.1" + "caniuse-lite": "^1.0.30000955", + "electron-to-chromium": "^1.3.122", + "node-releases": "^1.1.13" } }, "buffer": { @@ -1947,25 +2034,45 @@ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", "dev": true }, + "camelcase": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true + }, "caniuse-lite": { - "version": "1.0.30000907", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000907.tgz", - "integrity": "sha512-No5sQ/OB2Nmka8MNOOM6nJx+Hxt6MQ6h7t7kgJFu9oTuwjykyKRSBP/+i/QAyFHxeHB+ddE0Da1CG5ihx9oehQ==", + "version": "1.0.30000957", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", + "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", "dev": true }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -2012,12 +2119,6 @@ "safe-buffer": "^5.0.1" } }, - "circular-json": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", - "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==", - "dev": true - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -2047,6 +2148,17 @@ } } }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -2079,20 +2191,11 @@ "dev": true }, "colors": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz", - "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", "dev": true }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true, - "requires": { - "lodash": "^4.5.0" - } - }, "commander": { "version": "2.17.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", @@ -2162,6 +2265,15 @@ "date-now": "^0.1.4" } }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2214,6 +2326,38 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" }, + "core-js-compat": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz", + "integrity": "sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==", + "dev": true, + "requires": { + "browserslist": "^4.5.4", + "core-js": "3.0.1", + "core-js-pure": "3.0.1", + "semver": "^6.0.0" + }, + "dependencies": { + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.1.tgz", + "integrity": "sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2257,6 +2401,24 @@ "sha.js": "^2.4.8" } }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -2277,48 +2439,68 @@ } }, "css-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", - "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", + "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash": "^4.17.11", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", + "camelcase": "^5.2.0", + "icss-utils": "^4.1.0", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.14", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^2.0.6", + "postcss-modules-scope": "^2.1.0", + "postcss-modules-values": "^2.0.0", "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" + "schema-utils": "^1.0.0" }, "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true } } }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - } - }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "custom-event": { @@ -2334,9 +2516,9 @@ "dev": true }, "date-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", - "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", "dev": true }, "date-now": { @@ -2345,6 +2527,12 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2354,6 +2542,12 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -2438,6 +2632,12 @@ "minimalistic-assert": "^1.0.0" } }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -2492,9 +2692,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.84", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz", - "integrity": "sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw==", + "version": "1.3.124", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", + "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==", "dev": true }, "elliptic": { @@ -2534,9 +2734,9 @@ } }, "engine.io": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz", - "integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -2589,15 +2789,15 @@ } }, "engine.io-parser": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", - "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", "dev": true, "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", + "blob": "0.0.5", "has-binary2": "~1.0.2" } }, @@ -2633,16 +2833,17 @@ } }, "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "dev": true, "requires": { - "es-to-primitive": "^1.1.1", + "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" } }, "es-to-primitive": { @@ -2669,9 +2870,9 @@ "dev": true }, "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.2.tgz", + "integrity": "sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2706,9 +2907,9 @@ "dev": true }, "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", "dev": true }, "evp_bytestokey": { @@ -2722,61 +2923,18 @@ } }, "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "requires": { - "array-slice": "^0.2.3", - "array-unique": "^0.2.1", - "braces": "^0.1.2" - }, - "dependencies": { - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true, - "requires": { - "expand-range": "^0.1.0" - } - } } }, "expand-brackets": { @@ -2814,28 +2972,13 @@ } } }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "is-number": "^0.1.1", - "repeat-string": "^0.2.2" - }, - "dependencies": { - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } + "homedir-polyfill": "^1.0.1" } }, "extend": { @@ -2948,11 +3091,10 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" }, "figgy-pudding": { "version": "3.5.1", @@ -3007,25 +3149,54 @@ } }, "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "pkg-dir": "^3.0.0" } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -3037,22 +3208,25 @@ } }, "follow-redirects": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", - "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", - "dev": true, + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", "requires": { - "debug": "=3.1.0" + "debug": "^3.2.6" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -3081,6 +3255,17 @@ "readable-stream": "^2.0.0" } }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -3100,9 +3285,9 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", "dev": true, "optional": true, "requires": { @@ -3112,25 +3297,29 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true }, "aproba": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, "requires": { @@ -3140,13 +3329,15 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, "requires": { @@ -3155,38 +3346,44 @@ } }, "chownr": { - "version": "1.0.1", - "bundled": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, "requires": { @@ -3194,26 +3391,30 @@ } }, "deep-extend": { - "version": "0.5.1", - "bundled": true, + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, "requires": { @@ -3222,13 +3423,15 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -3243,8 +3446,9 @@ } }, "glob": { - "version": "7.1.2", - "bundled": true, + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, "requires": { @@ -3258,22 +3462,25 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { - "version": "0.4.21", - "bundled": true, + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, "requires": { @@ -3282,7 +3489,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, "requires": { @@ -3292,19 +3500,22 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "optional": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, "requires": { @@ -3313,13 +3524,15 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, "requires": { @@ -3328,23 +3541,26 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true, "optional": true }, "minipass": { - "version": "2.2.4", - "bundled": true, + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", - "bundled": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "dev": true, "optional": true, "requires": { @@ -3353,7 +3569,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "optional": true, "requires": { @@ -3362,13 +3579,15 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "needle": { - "version": "2.2.0", - "bundled": true, + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", + "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", "dev": true, "optional": true, "requires": { @@ -3378,18 +3597,19 @@ } }, "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", + "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -3397,7 +3617,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -3406,14 +3627,16 @@ } }, "npm-bundled": { - "version": "1.0.3", - "bundled": true, + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", + "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", - "bundled": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", + "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", "dev": true, "optional": true, "requires": { @@ -3423,7 +3646,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, "requires": { @@ -3435,19 +3659,22 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, "requires": { @@ -3456,19 +3683,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, "requires": { @@ -3478,23 +3708,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { - "version": "1.2.7", - "bundled": true, + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -3502,7 +3735,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -3510,7 +3744,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, "requires": { @@ -3524,53 +3759,61 @@ } }, "rimraf": { - "version": "2.6.2", - "bundled": true, + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", - "bundled": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { - "version": "5.5.0", - "bundled": true, + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, "requires": { @@ -3581,7 +3824,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, "requires": { @@ -3590,7 +3834,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, "requires": { @@ -3599,49 +3844,55 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { - "version": "4.4.1", - "bundled": true, + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { - "version": "1.1.2", - "bundled": true, + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true }, "yallist": { - "version": "3.0.2", - "bundled": true, + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true, "optional": true } @@ -3654,16 +3905,19 @@ "dev": true }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } }, "get-value": { "version": "2.0.6", @@ -3706,11 +3960,29 @@ } } }, - "global-modules-path": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", - "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", - "dev": true + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } }, "globals": { "version": "11.8.0", @@ -3724,6 +3996,11 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3733,15 +4010,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-binary2": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", @@ -3847,16 +4115,28 @@ "safe-buffer": "^5.0.1" } }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -3868,6 +4148,15 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -3913,12 +4202,12 @@ "dev": true }, "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.0.tgz", + "integrity": "sha512-3DEun4VOeMvSczifM3F2cKQrDQ5Pj6WKhkOq6HD4QTnDUAq8MQRxy5TX6Sy1iY6WPBe4gQ3p5vTECjbIkglkkQ==", "dev": true, "requires": { - "postcss": "^6.0.1" + "postcss": "^7.0.14" } }, "ieee754": { @@ -3941,60 +4230,6 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } } }, "imurmurhash": { @@ -4003,6 +4238,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -4025,10 +4266,16 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, "invariant": { @@ -4040,6 +4287,12 @@ "loose-envify": "^1.0.0" } }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -4061,8 +4314,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { "version": "1.1.4", @@ -4117,13 +4369,10 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-glob": { "version": "4.0.0", @@ -4160,6 +4409,12 @@ } } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4235,21 +4490,21 @@ "dev": true }, "js-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", - "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "dev": true }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json-parse-better-errors": { @@ -4270,28 +4525,37 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, "karma": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.1.tgz", - "integrity": "sha512-NetT3wPCQMNB36uiL9LLyhrOt8SQwrEKt0xD3+KpTCfm0VxVyUJdPL5oTq2Ic5ouemgL/Iz4wqXEbF3zea9kQQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.0.1.tgz", + "integrity": "sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A==", "dev": true, "requires": { "bluebird": "^3.3.0", "body-parser": "^1.16.1", + "braces": "^2.3.2", "chokidar": "^2.0.3", "colors": "^1.1.0", - "combine-lists": "^1.0.0", "connect": "^3.6.0", "core-js": "^2.2.0", "di": "^0.0.1", "dom-serialize": "^2.2.0", - "expand-braces": "^0.1.1", + "flatted": "^2.0.0", "glob": "^7.1.1", "graceful-fs": "^4.1.2", "http-proxy": "^1.13.0", "isbinaryfile": "^3.0.0", - "lodash": "^4.17.4", - "log4js": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", "mime": "^2.3.1", "minimatch": "^3.0.2", "optimist": "^0.6.1", @@ -4302,7 +4566,7 @@ "socket.io": "2.1.1", "source-map": "^0.6.1", "tmp": "0.0.33", - "useragent": "2.2.1" + "useragent": "2.3.0" }, "dependencies": { "source-map": { @@ -4322,6 +4586,15 @@ "is-buffer": "^1.1.5" } }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, "linkify-it": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", @@ -4331,9 +4604,9 @@ } }, "loader-runner": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", - "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true }, "loader-utils": { @@ -4348,20 +4621,19 @@ } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "lodash.debounce": { "version": "4.0.8", @@ -4369,17 +4641,22 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + }, "log4js": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz", - "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.0.2.tgz", + "integrity": "sha512-KE7HjiieVDPPdveA3bJZSuu0n8chMkFl8mIoisBFxwEJ9FmXe4YzNuiqSwYUiR1K8q8/5/8Yd6AClENY1RA9ww==", "dev": true, "requires": { - "circular-json": "^0.5.5", - "date-format": "^1.2.0", + "date-format": "^2.0.0", "debug": "^3.1.0", + "flatted": "^2.0.0", "rfdc": "^1.1.2", - "streamroller": "0.7.0" + "streamroller": "^1.0.1" }, "dependencies": { "debug": { @@ -4427,10 +4704,16 @@ "pify": "^3.0.0" } }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, "map-age-cleaner": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", - "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "dev": true, "requires": { "p-defer": "^1.0.0" @@ -4468,6 +4751,16 @@ "resolved": "https://registry.npmjs.org/markdown-it-link-target/-/markdown-it-link-target-1.0.2.tgz", "integrity": "sha1-0v1FV181FI6cXiNet4ertvlGCmc=" }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -4491,14 +4784,14 @@ "dev": true }, "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, "memory-fs": { @@ -4511,6 +4804,23 @@ "readable-stream": "^2.0.1" } }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "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==", + "dev": true + } + } + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4551,54 +4861,42 @@ } }, "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", "dev": true }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", "dev": true }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "dev": true, "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", "dev": true }, "mini-css-extract-plugin": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz", - "integrity": "sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", + "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", "dev": true, "requires": { "loader-utils": "^1.1.0", + "normalize-url": "^2.0.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } } }, "minimalistic-assert": { @@ -4755,6 +5053,44 @@ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", "dev": true }, + "nextcloud-axios": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/nextcloud-axios/-/nextcloud-axios-0.1.3.tgz", + "integrity": "sha512-M2eLX0qrP8xy1VEGDhPXGwvV4W4gMnU1ysjnURVen8ehR1qRLdb/JfhJHab6XRsme7vWWMgSTEj+o3ibQ94N6g==", + "requires": { + "axios": "^0.18.0" + } + }, + "nextcloud-vue": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/nextcloud-vue/-/nextcloud-vue-0.9.7.tgz", + "integrity": "sha512-47mr8kBQfJW1oNTgKjFdktgX6+Z0c6jryd1xq+515jLef3o1DWdMmRLF5Yab3TTUdha/aG3dL0lpVQ6Z3jf9Aw==", + "requires": { + "hammerjs": "^2.0.8", + "md5": "^2.2.1", + "nextcloud-axios": "^0.1.3", + "v-tooltip": "^2.0.0-rc.33", + "vue": "^2.6.7", + "vue-click-outside": "^1.0.7", + "vue-multiselect": "^2.1.3", + "vue-visible": "^1.0.2", + "vue2-datepicker": "^2.10.0" + } + }, + "nextcloud-vue-collections": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/nextcloud-vue-collections/-/nextcloud-vue-collections-0.4.0.tgz", + "integrity": "sha512-UxgormIFW4CD9dUsobRzIuQt1PQXkT+EI2KCp1CoAiJiurzf5yO9BmmS3gN9lWZa1+EZvLqljapvAlyntWwX6Q==", + "requires": { + "lodash": "^4.17.11", + "nextcloud-axios": "^0.1.2", + "nextcloud-vue": "^0.9.0", + "v-tooltip": "^2.0.0-rc.33", + "vue": "^2.6.6", + "vue-click-outside": "^1.0.7", + "vuex": "^3.1.0" + } + }, "ng-infinite-scroll": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ng-infinite-scroll/-/ng-infinite-scroll-1.3.0.tgz", @@ -4772,9 +5108,9 @@ "dev": true }, "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", "dev": true, "requires": { "assert": "^1.1.1", @@ -4784,7 +5120,7 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.11.0", "domain-browser": "^1.1.1", - "events": "^1.0.0", + "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", "path-browserify": "0.0.0", @@ -4798,14 +5134,14 @@ "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", "url": "^0.11.0", - "util": "^0.10.3", + "util": "^0.11.0", "vm-browserify": "0.0.4" } }, "node-releases": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.3.tgz", - "integrity": "sha512-ZaZWMsbuDcetpHmYeKWPO6e63pSXLb50M7lJgCbcM2nC/nQC3daNifmtp5a2kp7EWwYfhuvH6zLPWkrF8IiDdw==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz", + "integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==", "dev": true, "requires": { "semver": "^5.3.0" @@ -4820,6 +5156,17 @@ "remove-trailing-separator": "^1.0.1" } }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -4835,6 +5182,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", @@ -4947,6 +5300,17 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -4966,39 +5330,39 @@ "dev": true }, "p-is-promise": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", "dev": true }, "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", "dev": true }, "parallel-transform": { @@ -5013,18 +5377,25 @@ } }, "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "dev": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", @@ -5111,14 +5482,19 @@ "dev": true }, "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "^3.0.0" } }, + "popper.js": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.7.tgz", + "integrity": "sha512-4q1hNvoUre/8srWsH7hnoSJ5xVmIL4qgz+s4qf2TnJIMyZFUFMGH+9vE7mXynAlHSZ/NdTmmow86muD0myUkVQ==" + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -5126,90 +5502,107 @@ "dev": true }, "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", "dev": true, "requires": { - "chalk": "^2.4.1", + "chalk": "^2.4.2", "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "supports-color": "^6.1.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", "dev": true, "requires": { - "postcss": "^6.0.1" + "postcss": "^7.0.5" } }, "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", + "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0", + "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } } }, "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz", + "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } } }, "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", + "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", "dev": true, "requires": { "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" + "postcss": "^7.0.6" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + } } }, "postcss-value-parser": { @@ -5218,6 +5611,18 @@ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "prettier": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", + "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", + "dev": true + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -5319,6 +5724,17 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -5332,9 +5748,9 @@ "dev": true }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -5402,9 +5818,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", - "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", + "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", "dev": true, "requires": { "regenerate": "^1.4.0" @@ -5416,9 +5832,9 @@ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regenerator-transform": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", - "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", + "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", "dev": true, "requires": { "private": "^0.1.6" @@ -5434,30 +5850,47 @@ "safe-regex": "^1.1.0" } }, + "regexp-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", + "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "dev": true + }, "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" } }, "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", "dev": true }, "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", "dev": true, "requires": { "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } } }, "remove-trailing-separator": { @@ -5497,12 +5930,12 @@ "dev": true }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -5514,6 +5947,16 @@ "resolve-from": "^3.0.0" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -5588,12 +6031,13 @@ "dev": true }, "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } }, @@ -5887,6 +6331,15 @@ } } }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", @@ -5913,9 +6366,9 @@ } }, "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -5987,9 +6440,9 @@ "dev": true }, "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { "inherits": "~2.0.1", @@ -6026,15 +6479,16 @@ "dev": true }, "streamroller": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", - "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.3.tgz", + "integrity": "sha512-P7z9NwP51EltdZ81otaGAN3ob+/F88USJE546joNq7bqRNTe6jc74fTBDyynxP4qpIfKlt/CesEYicuMzI0yJg==", "dev": true, "requires": { - "date-format": "^1.2.0", + "async": "^2.6.1", + "date-format": "^2.0.0", "debug": "^3.1.0", - "mkdirp": "^0.5.1", - "readable-stream": "^2.3.0" + "fs-extra": "^7.0.0", + "lodash": "^4.17.10" }, "dependencies": { "debug": { @@ -6054,15 +6508,20 @@ } } }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string_decoder": { @@ -6075,12 +6534,12 @@ } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, "strip-eof": { @@ -6089,11 +6548,24 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } }, "tapable": { "version": "1.0.0", @@ -6102,14 +6574,14 @@ "dev": true }, "terser": { - "version": "3.10.12", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.12.tgz", - "integrity": "sha512-3ODPC1eVt25EVNb04s/PkHxOmzKBQUF6bwwuR6h2DbEF8/j265Y1UkwNtOk9am/pRxfJ5HPapOlUlO6c16mKQQ==", + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", + "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", "dev": true, "requires": { "commander": "~2.17.1", "source-map": "~0.6.1", - "source-map-support": "~0.5.6" + "source-map-support": "~0.5.9" }, "dependencies": { "source-map": { @@ -6121,9 +6593,9 @@ } }, "terser-webpack-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz", - "integrity": "sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", "dev": true, "requires": { "cacache": "^11.0.2", @@ -6131,85 +6603,11 @@ "schema-utils": "^1.0.0", "serialize-javascript": "^1.4.0", "source-map": "^0.6.1", - "terser": "^3.8.1", + "terser": "^3.16.1", "webpack-sources": "^1.1.0", "worker-farm": "^1.5.2" }, "dependencies": { - "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6364,9 +6762,9 @@ } }, "uglifyjs-webpack-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.0.1.tgz", - "integrity": "sha512-1HhCHkOB6wRCcv7htcz1QRPVbWPEY074RP9vzt/X0LF4xXm9l4YGd0qja7z88abDixQlnVwBjXsTBs+Xsn/eeQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.2.tgz", + "integrity": "sha512-G1fJx2uOAAfvdZ77SVCzmFo6mv8uKaHoZBL9Qq/ciC8r6p0ANOL1uY85fIUiyWXKw5RzAaJYZfNSL58Or2hQ0A==", "dev": true, "requires": { "cacache": "^11.2.0", @@ -6379,80 +6777,6 @@ "worker-farm": "^1.5.2" }, "dependencies": { - "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6489,15 +6813,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", - "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", - "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", "dev": true }, "union-value": { @@ -6535,6 +6859,12 @@ } } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -6553,6 +6883,12 @@ "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -6652,6 +6988,17 @@ } } }, + "url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + } + }, "use": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", @@ -6670,27 +7017,19 @@ } }, "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, "requires": { - "lru-cache": "2.2.x", + "lru-cache": "4.1.x", "tmp": "0.0.x" - }, - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } } }, "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, "requires": { "inherits": "2.0.3" @@ -6718,6 +7057,16 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "v-tooltip": { + "version": "2.0.0-rc.33", + "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.0.0-rc.33.tgz", + "integrity": "sha1-ePfY6cNCZWIr5lup3HjGfx3AK3M=", + "requires": { + "lodash.merge": "^4.6.0", + "popper.js": "^1.12.9", + "vue-resize": "^0.4.3" + } + }, "v8-compile-cache": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", @@ -6739,6 +7088,89 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "vue": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", + "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + }, + "vue-click-outside": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/vue-click-outside/-/vue-click-outside-1.0.7.tgz", + "integrity": "sha1-zdKxYF48SUR4TheU6uShKg9wC9Y=" + }, + "vue-hot-reload-api": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz", + "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==", + "dev": true + }, + "vue-loader": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.0.tgz", + "integrity": "sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^2.5.1", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + } + }, + "vue-multiselect": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.4.tgz", + "integrity": "sha512-ryd2Ybl56LE81IxlwbZUo4gAWnUSG45iUGX4KgVwsteitK2R+cOLwJaJescobpIDJnVlVorRUnX5u7my1vBu2w==" + }, + "vue-resize": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", + "integrity": "sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", + "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vue-visible": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vue-visible/-/vue-visible-1.0.2.tgz", + "integrity": "sha512-yaX2its9XAJKGuQqf7LsiZHHSkxsIK8rmCOQOvEGEoF41blKRK8qr9my4qYoD6ikdLss4n8tKqYBecmaY0+WJg==" + }, + "vue2-datepicker": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-2.11.0.tgz", + "integrity": "sha512-EW8M4PPDJG2c2cZXZCYLVregx4dhlJ+GC7rDGuGex0MlnhM8SHegL+/xFxrnUBD9NLvwrgWEEub5i7Ic/EG/+w==", + "requires": { + "fecha": "^2.3.3" + } + }, + "vuex": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.0.tgz", + "integrity": "sha512-mdHeHT/7u4BncpUZMlxNaIdcN/HIt1GsGG5LKByArvYG/v6DvHcOxvDCts+7SRdCoIRGllK8IMZvQtQXLppDYg==" + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -6751,17 +7183,17 @@ } }, "webpack": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.26.0.tgz", - "integrity": "sha512-J/dP9SJIc5OtX2FZ/+U9ikQtd6H6Mcbqt0xeXtmPwYGDKf8nkbOQQA9KL2Y0rJOsN1Al9Pdn+/j63X58ub8gvQ==", + "version": "4.29.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", + "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", "ajv": "^6.1.0", "ajv-keywords": "^3.1.0", "chrome-trace-event": "^1.0.0", @@ -6775,7 +7207,7 @@ "mkdirp": "~0.5.0", "neo-async": "^2.5.0", "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", + "schema-utils": "^1.0.0", "tapable": "^1.1.0", "terser-webpack-plugin": "^1.1.0", "watchpack": "^1.5.0", @@ -6789,9 +7221,9 @@ "dev": true }, "tapable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", - "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", "dev": true }, "webpack-sources": { @@ -6807,182 +7239,24 @@ } }, "webpack-cli": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", - "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.0.tgz", + "integrity": "sha512-t1M7G4z5FhHKJ92WRKwZ1rtvi7rHc0NZoZRbSkol0YKl4HvcC8+DsmGDmK7MmZxHSAetHagiOsjOB6MmzC2TUw==", "dev": true, "requires": { "chalk": "^2.4.1", "cross-spawn": "^6.0.5", "enhanced-resolve": "^4.1.0", - "global-modules-path": "^2.3.0", + "findup-sync": "^2.0.0", + "global-modules": "^1.0.0", "import-local": "^2.0.0", "interpret": "^1.1.0", "loader-utils": "^1.1.0", "supports-color": "^5.5.0", "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.2" + "yargs": "^12.0.5" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "dev": true, - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -6991,48 +7265,13 @@ "requires": { "has-flag": "^3.0.0" } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^10.1.0" - } - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } } } }, "webpack-merge": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", - "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", "dev": true, "requires": { "lodash": "^4.17.5" @@ -7057,14 +7296,20 @@ } }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -7088,6 +7333,43 @@ "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "wrappy": { @@ -7113,12 +7395,6 @@ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", "dev": true }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -7126,9 +7402,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { @@ -7137,6 +7413,36 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", diff --git a/js/package.json b/js/package.json index 032aad6d4..277f55962 100644 --- a/js/package.json +++ b/js/package.json @@ -3,39 +3,49 @@ "description": "Frontend for the Nextcloud Deck app", "repository": "https://github.com/nextcloud/deck", "version": "1.0.0", - "main": "Gruntfile.js", "directories": { "test": "tests" }, "dependencies": { - "@uirouter/angularjs": "^1.0.20", - "angular": "^1.7.5", - "angular-animate": "^1.7.5", + "@uirouter/angularjs": "^1.0.22", + "angular": "^1.7.8", + "angular-animate": "^1.7.8", "angular-file-upload": "^2.5.0", "angular-markdown-it": "^0.6.1", - "angular-sanitize": "^1.7.5", + "angular-sanitize": "^1.7.8", "babel-polyfill": "^6.26.0", "markdown-it": "^8.4.2", "markdown-it-link-target": "^1.0.2", + "nextcloud-axios": "^0.1.3", + "nextcloud-vue": "^0.9.7", + "nextcloud-vue-collections": "^0.4.0", "ng-infinite-scroll": "^1.3.0", "ng-sortable": "^1.3.8", - "ui-select": "^0.19.8" + "ui-select": "^0.19.8", + "vue": "^2.6.10", + "vuex": "^3.1.0" }, "devDependencies": { - "@babel/core": "^7.1.6", - "@babel/polyfill": "^7.0.0", - "@babel/preset-env": "^7.1.6", - "babel-loader": "^8.0.4", - "css-loader": "^1.0.1", - "karma": "^3.1.1", - "mini-css-extract-plugin": "^0.4.5", - "uglifyjs-webpack-plugin": "^2.0.1", - "webpack": "^4.26.0", - "webpack-cli": "^3.1.2", - "webpack-merge": "^4.1.4" + "@babel/core": "^7.4.3", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/polyfill": "^7.4.3", + "@babel/preset-env": "^7.4.3", + "babel-loader": "^8.0.5", + "css-loader": "^2.1.1", + "karma": "^4.0.1", + "mini-css-extract-plugin": "^0.6.0", + "style-loader": "^0.23.1", + "uglifyjs-webpack-plugin": "^2.1.2", + "url-loader": "^1.1.2", + "vue-loader": "^15.7.0", + "vue-style-loader": "^4.1.2", + "vue-template-compiler": "^2.6.10", + "webpack": "^4.29.6", + "webpack-cli": "^3.3.0", + "webpack-merge": "^4.2.1" }, "scripts": { - "build": "./node_modules/webpack-cli/bin/cli.js --mode production --config webpack.prod.config.js", + "build": "NODE_ENV=production ./node_modules/webpack-cli/bin/cli.js --mode production --config webpack.prod.config.js", "dev": "./node_modules/webpack-cli/bin/cli.js --mode development --config webpack.dev.config.js", "watch": "./node_modules/webpack-cli/bin/cli.js --mode development --config webpack.dev.config.js --watch", "test": "echo \"Warning: no test specified\" && exit 0" diff --git a/js/service/ActivityService.js b/js/service/ActivityService.js index 6a57c1613..5b929559a 100644 --- a/js/service/ActivityService.js +++ b/js/service/ActivityService.js @@ -51,7 +51,8 @@ class ActivityService { for (let index in this.toEnhanceWithComments) { if (this.toEnhanceWithComments.hasOwnProperty(index)) { let item = this.toEnhanceWithComments[index]; - item.commentModel = this.commentCollection.get(item.subject_rich[1].comment); + let commentId = Array.isArray(item.subject_rich[1].comment) ? item.subject_rich[1].comment.id : item.subject_rich[1].comment; + item.commentModel = this.commentCollection.get(commentId); if (typeof item.commentModel !== 'undefined') { this.toEnhanceWithComments = this.toEnhanceWithComments.filter((entry) => entry.activity_id !== item.activity_id); } @@ -170,7 +171,9 @@ class ActivityService { } /** check if the fetched item from all deck activities is actually related */ const isUnrelatedBoard = (item.object_type === DECK_ACTIVITY_TYPE_BOARD && item.object_id !== id); - const isUnrelatedCard = (item.object_type === DECK_ACTIVITY_TYPE_CARD && item.subject_rich[1].board && item.subject_rich[1].board.id !== id); + const isUnrelatedCard = (item.object_type === DECK_ACTIVITY_TYPE_CARD && ( + (item.subject_rich[1].board && item.subject_rich[1].board.id !== id) || (typeof item.subject_rich[1].board === 'undefined')) + ); if (type === DECK_ACTIVITY_TYPE_BOARD && (isUnrelatedBoard || isUnrelatedCard)) { return; } diff --git a/js/service/ApiService.js b/js/service/ApiService.js index 077ed4dd7..d5599e69a 100644 --- a/js/service/ApiService.js +++ b/js/service/ApiService.js @@ -119,7 +119,7 @@ app.factory('ApiService', function ($http, $q) { self.add(response.data); deferred.resolve(response.data); }, function (error) { - deferred.reject('Fetching' + self.endpoint + ' failed'); + deferred.reject(error.data.message); }); return deferred.promise; }; @@ -131,7 +131,7 @@ app.factory('ApiService', function ($http, $q) { self.add(response.data); deferred.resolve(response.data); }, function (error) { - deferred.reject('Updating ' + self.endpoint + ' failed'); + deferred.reject(error.data.message); }); return deferred.promise; diff --git a/js/service/BoardService.js b/js/service/BoardService.js index b7cad27e2..2857b6d0f 100644 --- a/js/service/BoardService.js +++ b/js/service/BoardService.js @@ -20,7 +20,7 @@ * */ import app from '../app/App.js'; -/* global app OC */ +/* global app OC angular */ app.factory('BoardService', function (ApiService, $http, $q) { var BoardService = function ($http, ep, $q) { ApiService.call(this, $http, ep, $q); @@ -59,7 +59,7 @@ app.factory('BoardService', function (ApiService, $http, $q) { var searchData = { format: 'json', perPage: 4, - itemType: [0, 1] + itemType: [0, 1, 7] }; if (search !== "") { searchData.search = search; @@ -79,6 +79,7 @@ app.factory('BoardService', function (ApiService, $http, $q) { var users = response.ocs.data.exact.users.concat(response.ocs.data.users.slice(0, 4)); var groups = response.ocs.data.exact.groups.concat(response.ocs.data.groups.slice(0, 4)); + var circles = response.ocs.data.exact.groups.concat(response.ocs.data.circles.slice(0, 4)); // filter out everyone who is already in the share list angular.forEach(users, function (item) { @@ -105,6 +106,18 @@ app.factory('BoardService', function (ApiService, $http, $q) { self.sharees.push(acl); } }); + angular.forEach(circles, function (item) { + var acl = self.generateAcl(OC.Share.SHARE_TYPE_CIRCLE, item); + var exists = false; + angular.forEach(self.getCurrent().acl, function (acl) { + if (acl.participant.primaryKey === item.value.shareWith) { + exists = true; + } + }); + if (!exists) { + self.sharees.push(acl); + } + }); deferred.resolve(self.sharees); }, function () { @@ -125,8 +138,8 @@ app.factory('BoardService', function (ApiService, $http, $q) { displayname: ocsItem.label }, permissionEdit: true, - permissionManage: true, - permissionShare: true, + permissionManage: false, + permissionShare: false, type: type }; }; diff --git a/js/views/BoardSelector.vue b/js/views/BoardSelector.vue new file mode 100644 index 000000000..a34790559 --- /dev/null +++ b/js/views/BoardSelector.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/js/views/CollaborationView.vue b/js/views/CollaborationView.vue new file mode 100644 index 000000000..9eb9649bc --- /dev/null +++ b/js/views/CollaborationView.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/js/webpack.config.js b/js/webpack.config.js index 54cfbed79..d667cfe89 100644 --- a/js/webpack.config.js +++ b/js/webpack.config.js @@ -1,68 +1,76 @@ const path = require('path'); const webpack = require('webpack'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); - -require('babel-polyfill'); +const { VueLoaderPlugin } = require('vue-loader'); module.exports = { - node: { - fs: 'empty', - }, - entry: { - deck: ['babel-polyfill', './init.js'], - }, - output: { - filename: '[name].js', - path: __dirname + '/build' - }, - resolve: { - modules: [path.resolve(__dirname), 'node_modules'], - }, - module: { - rules: [ - { - test: /\.js$/, - exclude: /node_modules/, - loader: 'babel-loader', - query: { - presets: ['@babel/preset-env'], - } - }, - { - test: /\.css$/, - use: [ - MiniCssExtractPlugin.loader, - 'css-loader' - ] - } - ] - }, - optimization: { - splitChunks: { - cacheGroups: { - /* separate vendor chunk for node_modules and legacy scripts */ - commons: { - test: /[\\/]node_modules[\\/]/, - name: 'vendor', - chunks: 'all' - }, - legacy: { - test: /[\\/]legacy[\\/]/, - name: 'vendor', - chunks: 'all' - } - } - } - }, - /* use external jQuery from server */ - externals: { - 'jquery': 'jQuery' - }, - plugins: [ - new MiniCssExtractPlugin('[name].css'), - new webpack.ProvidePlugin({ - $: 'jquery', - jQuery: 'jquery' - }) - ] + node: { + fs: 'empty', + }, + entry: { + deck: ['./init.js'], + collections: ['./init-collections.js'] + }, + output: { + filename: '[name].js', + path: __dirname + '/build' + }, + module: { + rules: [ + { + test: /\.css$/, + use: ['vue-style-loader', 'style-loader', 'css-loader'] + }, + { + test: /\.vue$/, + loader: 'vue-loader' + }, + { + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel-loader', + query: { + presets: ['@babel/preset-env'], + plugins: ['@babel/plugin-syntax-dynamic-import'] + } + }, + { + test: /\.scss$/, + use: [ + 'vue-style-loader', + 'css-loader', + 'sass-loader' + ] + }, + { + test: /\.(png|jpg|gif|svg)$/, + loader: 'url-loader', + options: { + name: '[name].[ext]?[hash]' + } + }, + ] + }, + /* use external jQuery from server */ + externals: { + 'jquery': 'jQuery' + }, + resolve: { + alias: { + vue$: 'vue/dist/vue.esm.js' + }, + extensions: ['*', '.js', '.vue', '.json'], + modules: [ + path.resolve(__dirname), + path.join(__dirname, 'node_modules'), + 'node_modules' + ] + }, + plugins: [ + new VueLoaderPlugin(), + new webpack.ProvidePlugin({ + $: 'jquery', + jQuery: 'jquery' + }) + ] }; diff --git a/l10n/ca.js b/l10n/ca.js index ece6469aa..7f5f49282 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -1,73 +1,201 @@ OC.L10N.register( "deck", { - "Please provide a content for your comment." : "Si us plau, proporciona un comentari.", - "Posting the comment failed." : "Error al posar el comentari.", - "The comment has been deleted" : "S'ha esborrat el comentari", + "Please provide a content for your comment." : "Si us plau, proporcioneu un contingut per al vostre comentari.", + "Posting the comment failed." : "No s'ha pogut publicar el comentari.", + "The comment has been deleted" : "S'ha suprimit el comentari", + "The associated stack is deleted as well, it will be restored as well." : "La pila associada també se suprimeix, també es restaurarà.", "Restore associated stack" : "Restaura la pila associada", - "Remove user from card" : "Esborra usuari de la targeta", + "Remove user from card" : "Suprimeix l'usuari de la targeta", "Hours" : "Hores", "Minutes" : "Minuts", - "Maximum file size of {size} exceeded" : "Mida màxima per fitxer de {size} superada", - "You have created a new board {board}" : "Has creat el nou tauler {board}", + "Link to a board" : "Enllaça a un tauler", + "Maximum file size of {size} exceeded" : "S'ha superat la mida màxima per fitxer de {size}", + "You have created a new board {board}" : "Heu creat el nou tauler {board}", "{user} has created a new board {board}" : "{user} ha creat el nou tauler {board}", - "You have deleted the board {board}" : "Has esborrat el taulell {board}", - "{user} has deleted the board {board}" : "{user} ha esborrat el taulell {board}", - "You have restored the board {board}" : "Has restaurat el taulell {board}", - "{user} has restored the board {board}" : "{user} ha restaurat el taulell {board}", - "You have shared the board {board} with {acl}" : "Has compartit el taulell {board} amb {acl}", - "You have deleted {stack} on {board}" : "Has esborrat {stack} de {board}", - "{user} has deleted {stack} on {board}" : "{user} ha esborrat {stack} de {board}", - "You have created {card} in {stack} on {board}" : "Has creat {card} a {stack} dins de {board}", - "{user} has created {card} in {stack} on {board}" : "{user} ha creat {card} a {stack} dins de {board}", - "You have deleted {card} in {stack} on {board}" : "Has esborrat {card} de {stack} dins de {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} ha esborrat {card} de {stack} dins de {board}", - "You have renamed the card {before} to {card}" : "Has canviat el nom de la targeta de {before} a {card}", - "{user} has renamed the card {before} to {card}" : "{user} ha canviat el nom de la targeta de {before} a {card}", - "You have removed the due date of {card}" : "Has tret la data prevista de {card}", - "{user} has removed the due date of {card}" : "{user} ha tret la data prevista de {card}", - "{user} has set the due date of {card} to {after}" : "{user} ha posat la data prevista de {card} d'aquí {after}", - "Deck" : "Coberta", + "You have deleted the board {board}" : "Heu suprimit el tauler {board}", + "{user} has deleted the board {board}" : "{user} ha suprimit el tauler {board}", + "You have restored the board {board}" : "Heu restaurat el tauler {board}", + "{user} has restored the board {board}" : "{user} ha restaurat el tauler {board}", + "You have shared the board {board} with {acl}" : "Heu compartit el tauler {board} amb {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} ha compartit el tauler {board} amb {sharee}", + "You have removed {acl} from the board {board}" : "Heu suprimit {acl} del tauler {board}", + "{user} has removed {acl} from the board {board}" : "{user} ha suprimit {acl} del tauler {board}", + "You have renamed the board {before} to {board}" : "Heu reanomenat el tauler {before} a {board}", + "{user} has renamed the board {before} to {board}" : "{user} ha reanomenat el tauler {before} a {board}", + "You have archived the board {board}" : "Heu arxivat el tauler {board}", + "{user} has archived the board {before}" : "{user} ha arxivat el tauler {before}", + "You have unarchived the board {board}" : "Heu desarxivat el tauler {board}", + "{user} has unarchived the board {before}" : "{user} ha desarxivat el tauler {before}", + "You have created a new stack {stack} on board {board}" : "Heu creat una nova pila {stack} al tauler {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} ha creat una nova pila {stack} al tauler {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Heu reanomenat la pila {before} a {stack} al tauler {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha reanomenat la pila {before} a {stack} al tauler {board}", + "You have deleted stack {stack} on board {board}" : "Heu suprimit la pila {stack} al tauler {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} ha suprimit la pila {stack} al tauler {board}", + "You have created card {card} in stack {stack} on board {board}" : "Heu creat la targeta {card} a la pila {stack} al tauler {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creat la targeta {card} a la pila {stack} al tauler {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Heu suprimit la targeta {card} a la pila {stack} al tauler {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha suprimit la targeta {card} a la pila {stack} al tauler {board}", + "You have renamed the card {before} to {card}" : "Heu reanomenat la targeta {before} a {card}", + "{user} has renamed the card {before} to {card}" : "{user} ha reanomenat la targeta {before} a {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Heu afegit una descripció a la targeta {card} a la pila {stack} al tauler {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha afegit una descripció a la targeta {card} a la pila {stack} al tauler {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Heu actualitzat la descripció de la targeta {card} a la pila {stack} al tauler {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ha actualitzat la descripció de la targeta {card} a la pila {stack} al tauler {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Heu arxivat la targeta {card} a la pila {stack} al tauler {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha arxivat la targeta {card} a la pila {stack} al tauler {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Heu desarxivat la targeta {card} a la pila {stack} al tauler {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha arxivat la targeta {card} a la pila {stack} al tauler {board}", + "You have removed the due date of card {card}" : "Heu suprimit la data de venciment de la targeta {targeta}", + "{user} has removed the due date of card {card}" : "{user} ha suprimit la data de venciment de la targeta {targeta}", + "You have set the due date of card {card} to {after}" : "Heu establert la data de venciment de la targeta {card} a {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ha establert la data de venciment de la targeta {card} a {after}", + "You have updated the due date of card {card} to {after}" : "Heu actualitzat la data de venciment de la targeta {card} a {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ha actualitzat la data de venciment de la targeta {card} a {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Heu afegit l'etiqueta {label} a la targeta {card} a la pila {stack} al tauler {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha afegit l'etiqueta {label} a la targeta {card} a la pila {stack} al tauler {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Heu suprimit l'etiqueta {label} de la targeta {card} a la pila {stack} al tauler {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha suprimit l'etiqueta {label} de la targeta {card} a la pila {stack} al tauler {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Heu assignat a {assigneduser} a la targeta {card} al tauler {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha assignat a {assigneduser} la targeta {card} del tauler {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Heu desassignat {assigneduser} de la targeta {card} al tauler {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha desassignat {assigneduser} de la targeta {card} al tauler {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Heu mogut la targeta {card} de la pila {stackBefore} a {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha mogut la targeta {card} de la pila {stackBefore} a {stack}", + "You have added the attachment {attachment} to card {card}" : "Heu afegit l'adjunt {attachment} a la targeta {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} ha afegit l'adjunt {attachment} a la targeta {card}", + "You have updated the attachment {attachment} on card {card}" : "Heu actualitzat l'adjunt {attachment} a la targeta {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ha actualitzat l'adjunt {attachment} a la targeta {card}", + "You have deleted the attachment {attachment} from card {card}" : "Heu suprimit l'adjunt {attachment} de la targeta {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} ha suprimit l'adjunt {attachment} de la targeta {card}", + "You have restored the attachment {attachment} to card {card}" : "Heu restaurat l'adjunt {attachment} a la targeta {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}", + "You have commented on card {card}" : "Heu comentat la targeta {card}", + "{user} has commented on card {card}" : "{user} ha comentat la targeta {card}", + "A card description inside the Deck app has been changed" : "S'ha canviat una descripció de targeta a l'aplicació Tauler", + "Deck" : "Tauler", + "Changes in the Deck app" : "Hi ha canvis a l'aplicació Tauler", + "Personal" : "Personal", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} us ha assignat la targeta \"%s\" sobre \"%s\".", + "The card \"%s\" on \"%s\" has reached its due date." : "La targeta \"%s\" sobre \"%s\" ha assolit la seva data de venciment.", + "%s has mentioned you in a comment on \"%s\"." : "%s us ha anomenat en un comentari sobre \"%s\".", + "{user} has mentioned you in a comment on \"%s\"." : "{user} us ha anomenat en un comentari sobre \"%s\".", + "The board \"%s\" has been shared with you by %s." : "El tauler \"%s\" se us ha compartit per %s.", + "{user} has shared the board %s with you." : "{user} us ha compartit el tauler %s.", + "No data was provided to create an attachment." : "No s’ha proporcionat cap dada per crear un fitxer adjunt.", "Finished" : "Acabat", "To review" : "Per revisar", - "Action needed" : "Acció necessaria", + "Action needed" : "Acció necessària", "Later" : "Més tard", + "To do" : "Pendent de fer", + "Doing" : "S'està fent", + "Done" : "Fet", + "Example Task 3" : "Exemple Tasca 3", + "Example Task 2" : "Exemple Tasca 2", + "Example Task 1" : "Exemple Tasca 1", + "The file was uploaded" : "El fitxer ha estat carregat", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El fitxer carregat excedeix la directiva upload_max_filesize dins de php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El fitxer carregat excedeix la directiva MAX_FILE_SIZE que hi ha especificada al formulari d'HTML", + "The file was only partially uploaded" : "El fitxer s'ha carregat només parcialment", + "No file was uploaded" : "No s'ha carregat cap fitxer", + "Missing a temporary folder" : "Falta una carpeta temporal", + "Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc", + "A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la carregada del fitxer", + "No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s", + "A kanban style project and personal management tool for Nextcloud" : "Un projecte d’estil kanban i una eina de gestió personal per a Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat", + "Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte", + "Select board" : "Selecciona un tauler", "Add a new stack" : "Afegeix una nova pila", + "Submit" : "Envia", "Show archived cards" : "Mostra les targetes arxivades", "Hide archived cards" : "Amaga les targetes arxivades", - "All Boards" : "Totes les juntes", + "Toggle compact mode" : "Commuta el mode compacte", + "Show board details" : "Mostra els detalls del tauler", + "All Boards" : "Tots els Taulers", "Archived boards" : "Taulers arxivats", - "Enter a card title" : "Introduïu un títol de la targeta", - "Sharing" : "Compartir", + "Share board" : "Comparteix tauler", + "Archived cards" : "Targetes arxivades", + "Actions" : "Accions", + "Drop your files here to upload it to the card" : "Deixeu anar els fitxers aquí per carregar-los a la targeta", + "Assign card to me" : "Assigna'm la targeta", + "Unassign card from me" : "Desassigna'm la targeta", + "Archive card" : "Arxiva targeta", + "Unarchive card" : "Desarxiva targeta", + "Delete card" : "Suprimeix targeta", + "Enter a card title" : "Introduïu un títol a la targeta", + "Add card" : "Afegeix una targeta", + "Close" : "Tanca", + "Sharing" : "S'està compartint", "Tags" : "Etiquetes", - "Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir", + "Deleted items" : "Elements suprimits", + "Timeline" : "Línia de temps", + "Select users or groups to share with" : "Seleccioneu usuaris o grups amb els qui compartir", + "Group" : "Grup", + "Circle" : "Cercle", "No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.", - "Share" : "Comparteix", + "Loading" : "S'està carregant", "Edit" : "Edita", - "Manage" : "Gestor", + "Share" : "Comparteix", + "Manage" : "Gestiona", "Discard share" : "Descarta la compartició", + "Sharing has been disabled for your account." : "La compartició s'ha desactivat per al vostre compte.", + "Update tag" : "Actualitza etiqueta", + "Edit tag" : "Edita etiqueta", + "Delete tag" : "Suprimeix etiqueta", + "Create" : "Crea", "Create a new tag" : "Crea una nova etiqueta", - "Title" : "Title", + "Deleted stacks" : "Piles suprimides", + "Deleted cards" : "Targetes suprimides", + "Status" : "Estat", + "No archived boards to display" : "No hi ha cap tauler arxivat per mostrar", + "No shared boards to display" : "No hi ha cap tauler compartit per mostrar", + "Title" : "Títol", "Members" : "Membres", "More actions" : "Més accions", "Edit board" : "Edita el tauler", - "Archive board" : "Arxiu", - "Unarchive board" : "Desbloquejar", - "Delete board" : "Eliminat", - "Create new board" : "Crear nova", - "New board title" : "Nou títol", + "Archive board" : "Arxiva tauler", + "Unarchive board" : "Desarxiva tauler", + "Delete board" : "Suprimeix tauler", + "Update board" : "Actualitza tauler", + "Reset board" : "Reinicialitza tauler", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Desfeu la supressió del tauler - Altrament el tauler serà suprimit durant la següent execució de treball del cron.", + "Create new board" : "Crea un nou tauler", + "New board title" : "Títol del nou tauler", + "Create board" : "Crea tauler", + "Select an attachment" : "Selecciona un adjunt", + "Cancel upload" : "Cancel·la la càrrega", "by" : "per", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Desfeu la supressió del fitxer - Altrament el fitxer serà suprimit durant la següent execució de treball del cron.", + "Undo file deletion" : "Desfés la supressió del fitxer", + "Insert the file into the description" : "Insereix el fitxer a la descripció", + "Delete attachment" : "Suprimeix l'adjunt", "Modified:" : "Modificat:", "Created:" : "Creat:", + "Choose a tag" : "Trieu una etiqueta", + "Add a tag" : "Afegeix una etiqueta", + "Select tags" : "Selecciona etiquetes", + "Assign users" : "Assigna usuaris", + "Choose a user to assign" : "Tria un usuari per assignar", + "Assign this card to a user" : "Assigna aquesta targeta a un usuari", "Due date" : "Per la data", "Click to set" : "Feu clic per configurar", "Remove due date" : "Elimina la data de venciment", "Description" : "Descripció", + "Attachments" : "Adjunts", "Saved" : "Desat", + "Unsaved changes" : "Canvis no desats", + "Insert attachment" : "Insereix l'adjunt", "Formatting help" : "Format d'ajuda", + "Upload attachment" : "Carrega l'adjunt", "Add a card description…" : "Afegeix una descripció de la targeta ...", "Shared boards" : "Taulers compartits", - "Move board to archive" : "Mou la placa a l'arxiu", - "Create a new board" : "Crear nova" + "Move board to archive" : "Mou tauler a l'arxiu", + "Create a new board" : "Crea un nou tauler", + "Settings" : "Paràmetres", + "Limit deck to groups" : "Limita el tauler per grups", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/ca.json b/l10n/ca.json index c0d15dda6..0135183a7 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -1,71 +1,199 @@ { "translations": { - "Please provide a content for your comment." : "Si us plau, proporciona un comentari.", - "Posting the comment failed." : "Error al posar el comentari.", - "The comment has been deleted" : "S'ha esborrat el comentari", + "Please provide a content for your comment." : "Si us plau, proporcioneu un contingut per al vostre comentari.", + "Posting the comment failed." : "No s'ha pogut publicar el comentari.", + "The comment has been deleted" : "S'ha suprimit el comentari", + "The associated stack is deleted as well, it will be restored as well." : "La pila associada també se suprimeix, també es restaurarà.", "Restore associated stack" : "Restaura la pila associada", - "Remove user from card" : "Esborra usuari de la targeta", + "Remove user from card" : "Suprimeix l'usuari de la targeta", "Hours" : "Hores", "Minutes" : "Minuts", - "Maximum file size of {size} exceeded" : "Mida màxima per fitxer de {size} superada", - "You have created a new board {board}" : "Has creat el nou tauler {board}", + "Link to a board" : "Enllaça a un tauler", + "Maximum file size of {size} exceeded" : "S'ha superat la mida màxima per fitxer de {size}", + "You have created a new board {board}" : "Heu creat el nou tauler {board}", "{user} has created a new board {board}" : "{user} ha creat el nou tauler {board}", - "You have deleted the board {board}" : "Has esborrat el taulell {board}", - "{user} has deleted the board {board}" : "{user} ha esborrat el taulell {board}", - "You have restored the board {board}" : "Has restaurat el taulell {board}", - "{user} has restored the board {board}" : "{user} ha restaurat el taulell {board}", - "You have shared the board {board} with {acl}" : "Has compartit el taulell {board} amb {acl}", - "You have deleted {stack} on {board}" : "Has esborrat {stack} de {board}", - "{user} has deleted {stack} on {board}" : "{user} ha esborrat {stack} de {board}", - "You have created {card} in {stack} on {board}" : "Has creat {card} a {stack} dins de {board}", - "{user} has created {card} in {stack} on {board}" : "{user} ha creat {card} a {stack} dins de {board}", - "You have deleted {card} in {stack} on {board}" : "Has esborrat {card} de {stack} dins de {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} ha esborrat {card} de {stack} dins de {board}", - "You have renamed the card {before} to {card}" : "Has canviat el nom de la targeta de {before} a {card}", - "{user} has renamed the card {before} to {card}" : "{user} ha canviat el nom de la targeta de {before} a {card}", - "You have removed the due date of {card}" : "Has tret la data prevista de {card}", - "{user} has removed the due date of {card}" : "{user} ha tret la data prevista de {card}", - "{user} has set the due date of {card} to {after}" : "{user} ha posat la data prevista de {card} d'aquí {after}", - "Deck" : "Coberta", + "You have deleted the board {board}" : "Heu suprimit el tauler {board}", + "{user} has deleted the board {board}" : "{user} ha suprimit el tauler {board}", + "You have restored the board {board}" : "Heu restaurat el tauler {board}", + "{user} has restored the board {board}" : "{user} ha restaurat el tauler {board}", + "You have shared the board {board} with {acl}" : "Heu compartit el tauler {board} amb {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} ha compartit el tauler {board} amb {sharee}", + "You have removed {acl} from the board {board}" : "Heu suprimit {acl} del tauler {board}", + "{user} has removed {acl} from the board {board}" : "{user} ha suprimit {acl} del tauler {board}", + "You have renamed the board {before} to {board}" : "Heu reanomenat el tauler {before} a {board}", + "{user} has renamed the board {before} to {board}" : "{user} ha reanomenat el tauler {before} a {board}", + "You have archived the board {board}" : "Heu arxivat el tauler {board}", + "{user} has archived the board {before}" : "{user} ha arxivat el tauler {before}", + "You have unarchived the board {board}" : "Heu desarxivat el tauler {board}", + "{user} has unarchived the board {before}" : "{user} ha desarxivat el tauler {before}", + "You have created a new stack {stack} on board {board}" : "Heu creat una nova pila {stack} al tauler {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} ha creat una nova pila {stack} al tauler {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Heu reanomenat la pila {before} a {stack} al tauler {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha reanomenat la pila {before} a {stack} al tauler {board}", + "You have deleted stack {stack} on board {board}" : "Heu suprimit la pila {stack} al tauler {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} ha suprimit la pila {stack} al tauler {board}", + "You have created card {card} in stack {stack} on board {board}" : "Heu creat la targeta {card} a la pila {stack} al tauler {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creat la targeta {card} a la pila {stack} al tauler {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Heu suprimit la targeta {card} a la pila {stack} al tauler {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha suprimit la targeta {card} a la pila {stack} al tauler {board}", + "You have renamed the card {before} to {card}" : "Heu reanomenat la targeta {before} a {card}", + "{user} has renamed the card {before} to {card}" : "{user} ha reanomenat la targeta {before} a {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Heu afegit una descripció a la targeta {card} a la pila {stack} al tauler {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha afegit una descripció a la targeta {card} a la pila {stack} al tauler {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Heu actualitzat la descripció de la targeta {card} a la pila {stack} al tauler {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ha actualitzat la descripció de la targeta {card} a la pila {stack} al tauler {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Heu arxivat la targeta {card} a la pila {stack} al tauler {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha arxivat la targeta {card} a la pila {stack} al tauler {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Heu desarxivat la targeta {card} a la pila {stack} al tauler {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha arxivat la targeta {card} a la pila {stack} al tauler {board}", + "You have removed the due date of card {card}" : "Heu suprimit la data de venciment de la targeta {targeta}", + "{user} has removed the due date of card {card}" : "{user} ha suprimit la data de venciment de la targeta {targeta}", + "You have set the due date of card {card} to {after}" : "Heu establert la data de venciment de la targeta {card} a {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ha establert la data de venciment de la targeta {card} a {after}", + "You have updated the due date of card {card} to {after}" : "Heu actualitzat la data de venciment de la targeta {card} a {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ha actualitzat la data de venciment de la targeta {card} a {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Heu afegit l'etiqueta {label} a la targeta {card} a la pila {stack} al tauler {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha afegit l'etiqueta {label} a la targeta {card} a la pila {stack} al tauler {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Heu suprimit l'etiqueta {label} de la targeta {card} a la pila {stack} al tauler {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha suprimit l'etiqueta {label} de la targeta {card} a la pila {stack} al tauler {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Heu assignat a {assigneduser} a la targeta {card} al tauler {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha assignat a {assigneduser} la targeta {card} del tauler {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Heu desassignat {assigneduser} de la targeta {card} al tauler {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha desassignat {assigneduser} de la targeta {card} al tauler {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Heu mogut la targeta {card} de la pila {stackBefore} a {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha mogut la targeta {card} de la pila {stackBefore} a {stack}", + "You have added the attachment {attachment} to card {card}" : "Heu afegit l'adjunt {attachment} a la targeta {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} ha afegit l'adjunt {attachment} a la targeta {card}", + "You have updated the attachment {attachment} on card {card}" : "Heu actualitzat l'adjunt {attachment} a la targeta {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ha actualitzat l'adjunt {attachment} a la targeta {card}", + "You have deleted the attachment {attachment} from card {card}" : "Heu suprimit l'adjunt {attachment} de la targeta {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} ha suprimit l'adjunt {attachment} de la targeta {card}", + "You have restored the attachment {attachment} to card {card}" : "Heu restaurat l'adjunt {attachment} a la targeta {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}", + "You have commented on card {card}" : "Heu comentat la targeta {card}", + "{user} has commented on card {card}" : "{user} ha comentat la targeta {card}", + "A card description inside the Deck app has been changed" : "S'ha canviat una descripció de targeta a l'aplicació Tauler", + "Deck" : "Tauler", + "Changes in the Deck app" : "Hi ha canvis a l'aplicació Tauler", + "Personal" : "Personal", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La targeta \"%s\" sobre \"%s\" se us ha assignat per %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} us ha assignat la targeta \"%s\" sobre \"%s\".", + "The card \"%s\" on \"%s\" has reached its due date." : "La targeta \"%s\" sobre \"%s\" ha assolit la seva data de venciment.", + "%s has mentioned you in a comment on \"%s\"." : "%s us ha anomenat en un comentari sobre \"%s\".", + "{user} has mentioned you in a comment on \"%s\"." : "{user} us ha anomenat en un comentari sobre \"%s\".", + "The board \"%s\" has been shared with you by %s." : "El tauler \"%s\" se us ha compartit per %s.", + "{user} has shared the board %s with you." : "{user} us ha compartit el tauler %s.", + "No data was provided to create an attachment." : "No s’ha proporcionat cap dada per crear un fitxer adjunt.", "Finished" : "Acabat", "To review" : "Per revisar", - "Action needed" : "Acció necessaria", + "Action needed" : "Acció necessària", "Later" : "Més tard", + "To do" : "Pendent de fer", + "Doing" : "S'està fent", + "Done" : "Fet", + "Example Task 3" : "Exemple Tasca 3", + "Example Task 2" : "Exemple Tasca 2", + "Example Task 1" : "Exemple Tasca 1", + "The file was uploaded" : "El fitxer ha estat carregat", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El fitxer carregat excedeix la directiva upload_max_filesize dins de php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El fitxer carregat excedeix la directiva MAX_FILE_SIZE que hi ha especificada al formulari d'HTML", + "The file was only partially uploaded" : "El fitxer s'ha carregat només parcialment", + "No file was uploaded" : "No s'ha carregat cap fitxer", + "Missing a temporary folder" : "Falta una carpeta temporal", + "Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc", + "A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la carregada del fitxer", + "No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s", + "A kanban style project and personal management tool for Nextcloud" : "Un projecte d’estil kanban i una eina de gestió personal per a Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat", + "Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte", + "Select board" : "Selecciona un tauler", "Add a new stack" : "Afegeix una nova pila", + "Submit" : "Envia", "Show archived cards" : "Mostra les targetes arxivades", "Hide archived cards" : "Amaga les targetes arxivades", - "All Boards" : "Totes les juntes", + "Toggle compact mode" : "Commuta el mode compacte", + "Show board details" : "Mostra els detalls del tauler", + "All Boards" : "Tots els Taulers", "Archived boards" : "Taulers arxivats", - "Enter a card title" : "Introduïu un títol de la targeta", - "Sharing" : "Compartir", + "Share board" : "Comparteix tauler", + "Archived cards" : "Targetes arxivades", + "Actions" : "Accions", + "Drop your files here to upload it to the card" : "Deixeu anar els fitxers aquí per carregar-los a la targeta", + "Assign card to me" : "Assigna'm la targeta", + "Unassign card from me" : "Desassigna'm la targeta", + "Archive card" : "Arxiva targeta", + "Unarchive card" : "Desarxiva targeta", + "Delete card" : "Suprimeix targeta", + "Enter a card title" : "Introduïu un títol a la targeta", + "Add card" : "Afegeix una targeta", + "Close" : "Tanca", + "Sharing" : "S'està compartint", "Tags" : "Etiquetes", - "Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir", + "Deleted items" : "Elements suprimits", + "Timeline" : "Línia de temps", + "Select users or groups to share with" : "Seleccioneu usuaris o grups amb els qui compartir", + "Group" : "Grup", + "Circle" : "Cercle", "No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.", - "Share" : "Comparteix", + "Loading" : "S'està carregant", "Edit" : "Edita", - "Manage" : "Gestor", + "Share" : "Comparteix", + "Manage" : "Gestiona", "Discard share" : "Descarta la compartició", + "Sharing has been disabled for your account." : "La compartició s'ha desactivat per al vostre compte.", + "Update tag" : "Actualitza etiqueta", + "Edit tag" : "Edita etiqueta", + "Delete tag" : "Suprimeix etiqueta", + "Create" : "Crea", "Create a new tag" : "Crea una nova etiqueta", - "Title" : "Title", + "Deleted stacks" : "Piles suprimides", + "Deleted cards" : "Targetes suprimides", + "Status" : "Estat", + "No archived boards to display" : "No hi ha cap tauler arxivat per mostrar", + "No shared boards to display" : "No hi ha cap tauler compartit per mostrar", + "Title" : "Títol", "Members" : "Membres", "More actions" : "Més accions", "Edit board" : "Edita el tauler", - "Archive board" : "Arxiu", - "Unarchive board" : "Desbloquejar", - "Delete board" : "Eliminat", - "Create new board" : "Crear nova", - "New board title" : "Nou títol", + "Archive board" : "Arxiva tauler", + "Unarchive board" : "Desarxiva tauler", + "Delete board" : "Suprimeix tauler", + "Update board" : "Actualitza tauler", + "Reset board" : "Reinicialitza tauler", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Desfeu la supressió del tauler - Altrament el tauler serà suprimit durant la següent execució de treball del cron.", + "Create new board" : "Crea un nou tauler", + "New board title" : "Títol del nou tauler", + "Create board" : "Crea tauler", + "Select an attachment" : "Selecciona un adjunt", + "Cancel upload" : "Cancel·la la càrrega", "by" : "per", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Desfeu la supressió del fitxer - Altrament el fitxer serà suprimit durant la següent execució de treball del cron.", + "Undo file deletion" : "Desfés la supressió del fitxer", + "Insert the file into the description" : "Insereix el fitxer a la descripció", + "Delete attachment" : "Suprimeix l'adjunt", "Modified:" : "Modificat:", "Created:" : "Creat:", + "Choose a tag" : "Trieu una etiqueta", + "Add a tag" : "Afegeix una etiqueta", + "Select tags" : "Selecciona etiquetes", + "Assign users" : "Assigna usuaris", + "Choose a user to assign" : "Tria un usuari per assignar", + "Assign this card to a user" : "Assigna aquesta targeta a un usuari", "Due date" : "Per la data", "Click to set" : "Feu clic per configurar", "Remove due date" : "Elimina la data de venciment", "Description" : "Descripció", + "Attachments" : "Adjunts", "Saved" : "Desat", + "Unsaved changes" : "Canvis no desats", + "Insert attachment" : "Insereix l'adjunt", "Formatting help" : "Format d'ajuda", + "Upload attachment" : "Carrega l'adjunt", "Add a card description…" : "Afegeix una descripció de la targeta ...", "Shared boards" : "Taulers compartits", - "Move board to archive" : "Mou la placa a l'arxiu", - "Create a new board" : "Crear nova" + "Move board to archive" : "Mou tauler a l'arxiu", + "Create a new board" : "Crea un nou tauler", + "Settings" : "Paràmetres", + "Limit deck to groups" : "Limita el tauler per grups", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/cs.js b/l10n/cs.js index 32e57d4b9..52bb624c3 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -21,58 +21,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Odebrali jste {acl} z nástěnky {board}", "{user} has removed {acl} from the board {board}" : "{user} odebral(a) {acl} z nástěnky {board}", "You have renamed the board {before} to {board}" : "Přejmenovali jste nástěnku {before} na {board}", - "{user} has has renamed the board {before} to {board}" : "{user} uživatel přejmenoval nástěnku {before} na {board}", + "{user} has renamed the board {before} to {board}" : "{user} přejmenoval(a) desku {before} na {board}", "You have archived the board {board}" : "Zaarchivovali jste nástěnku {board}", "{user} has archived the board {before}" : "{user} zaarchivoval(a) nástěnku {before}", "You have unarchived the board {board}" : "Zrušili jste archivaci nástěnky {board}", "{user} has unarchived the board {before}" : "{user} zrušil(a) archivaci nástěnky {before}", - "You have created a new stack {stack} on {board}" : "Vytvořili jste nový stack {stack} na {board}", - "{user} has created a new stack {stack} on {board}" : "{user} vytvořil(a) nový stack {stack} na {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Přejmenovali jste nový stack {before} na {stack} na {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} přejmenoval(a) nový stack {before} na {stack} na {board}", - "You have deleted {stack} on {board}" : "Smazali jste {stack} na {board}", - "{user} has deleted {stack} on {board}" : "{user} smazal(a) {stack} na {board}", - "You have created {card} in {stack} on {board}" : "Vytvořili jste {card} v {stack} na {board}", - "{user} has created {card} in {stack} on {board}" : "{user} vytvořil(a) {card} v {stack} na {board}", - "You have deleted {card} in {stack} on {board}" : "Smazali jste {card} v {stack} na {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} smazal {card} v {stack} na {board}", + "You have created a new stack {stack} on board {board}" : "Vytvořili jste novou hromádku {stack} na desce {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} vytvořil(a) nový balíček {stack} na desce {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Přejmenovali jste hromádku {before} na {stack} na desce {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} přejmenoval(a) hromádku {before} na {stack} na desce {board}", + "You have deleted stack {stack} on board {board}" : "Smazali jste balíček {stack} na desce {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} smazal(a) balíček {stack} na desce {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vytvořili jste kartu {card} v balíčku {stack} na kartě {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} vytvořil(a) kartu {card} na hromádce {stack} na desce {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Smazali jste kartu {card} na hromádce {stack} na desce {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} smazal(a) kartu {card} v balíčku {board} na desce {board}", "You have renamed the card {before} to {card}" : "Přejmenovali jste kartu {before} na {card}", "{user} has renamed the card {before} to {card}" : "{user} přejmenoval(a) {before} na {card}", - "You have added a description to {card} in {stack} on {board}" : "Přidali jste popis k {card} v {stack} na {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} přidal(a) popis ke {card} v {stack} na {board}", - "You have updated the description of {card} in {stack} on {board}" : "Aktualizovali jste popis {card} v {stack} na {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} aktualizoval(a) popis {card} v {stack} na {board}", - "You have archived {card} in {stack} on {board}" : "Zaarchivovali jste {card} v {stack} na {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} zaarchivoval(a) {card} v {stack} na {board}", - "You have unarchived {card} in {stack} on {board}" : "Zrušili jste archivaci {card} v {stack} na {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} zrušila archivaci {card} v {stack} na {board}", - "You have removed the due date of {card}" : "Odebrali jste termín {card}", - "{user} has removed the due date of {card}" : "{user} odebral(a) termín {card}", - "You have set the due date of {card} to {after}" : "Nastavili jste termín {card} na {after}", - "{user} has set the due date of {card} to {after}" : "{user} nastavil(a) termín {card} na {after}", - "You have updated the due date of {card} to {after}" : "Změnili jste termín {card} na {after}", - "{user} has updated the due date of {card} to {after}" : "{user} aktualizoval termín {card} na {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Přidali jste štítek {label} ke {card} v {stack} na {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} přidal(a) štítek {label} ke {card} v {stack} na {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Odebrali jste štítek {label} z {card} v {stack} na {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} odebral štítek {label} z {card} v {stack} na {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Přiřadili jste {assigneduser} k {card} na {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} přiřadil(a) {assigneduser} k {card} na {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Bylo zrušeno vaše přiřazení {assigneduser} k {card} na {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} přiřadil(a) {assigneduser} z {card} na {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Přesunuli jste kartu {card} z {stackBefore} do {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} přesunul {card} z {stackBefore} do {stack}", - "You have added the attachment {attachment} to {card}" : "Přidali jste {attachment} do {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} přidal(a) přílohu {attachment} k {card}", - "You have updated the attachment {attachment} on {card}" : "Aktualizovali jste přílohu {attachment} na {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} aktualizoval(a) přílohu {attachment} k {card}", - "You have deleted the attachment {attachment} from {card}" : "Smazali jste přílohu {attachment} z {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} smazal(a) přílohu {attachment} k {card}", - "You have restored the attachment {attachment} to {card}" : "Obnovili jste přílohu {attachment} k {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} obnovil(a) přílohu {attachment} k {card}", - "You have commented on {card}" : "Přidali jste komentář na {card}", - "{user} has commented on {card}" : "{user} přidal komentář na {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Přidali jste popis ke kartě {card} v hromádce {stack} na desce {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} přidal(a) popis ke kartě {card} v hromádce {stack} na desce {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali jste popis karty {card} v hromádce {stack} na desce {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} aktualizoval(a) popis karty {card} na hromádce {stack} na nástěnce {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Zaarchivovali kartu {card} v balíčku {stack} na desce {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} v balíčku {stack} na desce {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili jste archivaci karty {card} na hromádce {stack} na desce {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} na hromádce {stack} na desce {board}", + "You have removed the due date of card {card}" : "Odebrali jste termín karty {card}", + "{user} has removed the due date of card {card}" : "{user} odebral(a) termín karty {card}", + "You have set the due date of card {card} to {after}" : "Nastavili jste termín na kartě {card} na {after}", + "{user} has set the due date of card {card} to {after}" : "{user} nastavil(a) termín karty {card} na {after}", + "You have updated the due date of card {card} to {after}" : "Změnili jste termín na kartě {card} na {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} aktualizoval termín karty {card} na {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Přidali jste štítek {label} kartě {card} v hromádce {stack} na nástěnce {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} přidal(a) štítek {label} ke kartě {card} v hromádce {stack} na nástěnce {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odebrali jste štítek {label} z karty {card} v hromádce {stack} na desce {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} odebral(a) štítek {label} z karty {card} na hromádce {stack} na desce {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Přiřadili jste {assigneduser} ke kartě {card} na desce {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} přiřadil(a) {assigneduser} ke kartě {card} na desce {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Zrušili jste přiřazení {assigneduser} u karty {card} na nástěnce {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} zrušil(a) přiřazení {assigneduser} z karty {card} na desce {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Přesunuli jste kartu {card} z balíčku {stackBefore} do {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} přesunul(a) kartu {card} z balíčku {stackBefore} do {stack}", + "You have added the attachment {attachment} to card {card}" : "Přidali jste přílohu {attachment} ke kartě {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} přidal(a) přílohu {attachment} ke kartě {card}", + "You have updated the attachment {attachment} on card {card}" : "Aktualizovali jste přílohu {attachment} na kartě {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} aktualizoval(a) přílohu {attachment} ke kartě {card}", + "You have deleted the attachment {attachment} from card {card}" : "Smazali jste přílohu {attachment} u karty {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} smazal(a) přílohu {attachment} u karty {card}", + "You have restored the attachment {attachment} to card {card}" : "Obnovili jste přílohu {attachment} ke kartě {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}", + "You have commented on card {card}" : "Přidali jste komentář na kartě {card}", + "{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}", + "A card description inside the Deck app has been changed" : "Popis mapy v Deck-aplikace byl změněn", "Deck" : "Balík", + "Changes in the Deck app" : "Změny v Deck aplikace", "Personal" : "Osobní", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vám přiřadil(a) kartu „%s“ na „%s“.", @@ -103,6 +105,7 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s", "A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní řízení ve stylu Kanban.", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu", + "Select board" : "Vybrat nástěnku", "Add a new stack" : "Přidat nový zásobník", "Submit" : "Odeslat", "Show archived cards" : "Zobrazit archivované karty", @@ -112,6 +115,7 @@ OC.L10N.register( "All Boards" : "Všechny desky", "Archived boards" : "Archivované desky", "Share board" : "Sdílet nástěnku", + "Archived cards" : "Archivované karty", "Actions" : "Akce", "Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.", "Assign card to me" : "Přiřadit kartu mě", @@ -127,13 +131,15 @@ OC.L10N.register( "Deleted items" : "Smazané položky", "Timeline" : "Časová osa", "Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení", - "Access for" : "Přístup pro", + "Group" : "Skupina", + "Circle" : "Okruh", "No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina", "Loading" : "Načítání", - "Share" : "Sdílet", "Edit" : "Upravit", + "Share" : "Sdílet", "Manage" : "Spravovat", "Discard share" : "Zrušit sdílení", + "Sharing has been disabled for your account." : "Sdílení bylo zakázáno pro váš konto.", "Update tag" : "Aktualizovat štítek", "Edit tag" : "Upravit štítek", "Delete tag" : "Smazat štítek", @@ -185,6 +191,9 @@ OC.L10N.register( "Add a card description…" : "Přidat popis karty…", "Shared boards" : "Sdílené desky", "Move board to archive" : "Přesunout desku do archivu", - "Create a new board" : "Vytvořit novou desku" + "Create a new board" : "Vytvořit novou desku", + "Settings" : "Nastavení", + "Limit deck to groups" : "Omezte Deck na skupiny", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení Decků brání uživatelům, kteří nejsou součástí těchto skupin, při vytváření vlastních desek. Uživatelé mohou stále pracovat na deskách, které jsou s nimi sdíleny." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/l10n/cs.json b/l10n/cs.json index c13e063b8..c640713a8 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -19,58 +19,60 @@ "You have removed {acl} from the board {board}" : "Odebrali jste {acl} z nástěnky {board}", "{user} has removed {acl} from the board {board}" : "{user} odebral(a) {acl} z nástěnky {board}", "You have renamed the board {before} to {board}" : "Přejmenovali jste nástěnku {before} na {board}", - "{user} has has renamed the board {before} to {board}" : "{user} uživatel přejmenoval nástěnku {before} na {board}", + "{user} has renamed the board {before} to {board}" : "{user} přejmenoval(a) desku {before} na {board}", "You have archived the board {board}" : "Zaarchivovali jste nástěnku {board}", "{user} has archived the board {before}" : "{user} zaarchivoval(a) nástěnku {before}", "You have unarchived the board {board}" : "Zrušili jste archivaci nástěnky {board}", "{user} has unarchived the board {before}" : "{user} zrušil(a) archivaci nástěnky {before}", - "You have created a new stack {stack} on {board}" : "Vytvořili jste nový stack {stack} na {board}", - "{user} has created a new stack {stack} on {board}" : "{user} vytvořil(a) nový stack {stack} na {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Přejmenovali jste nový stack {before} na {stack} na {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} přejmenoval(a) nový stack {before} na {stack} na {board}", - "You have deleted {stack} on {board}" : "Smazali jste {stack} na {board}", - "{user} has deleted {stack} on {board}" : "{user} smazal(a) {stack} na {board}", - "You have created {card} in {stack} on {board}" : "Vytvořili jste {card} v {stack} na {board}", - "{user} has created {card} in {stack} on {board}" : "{user} vytvořil(a) {card} v {stack} na {board}", - "You have deleted {card} in {stack} on {board}" : "Smazali jste {card} v {stack} na {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} smazal {card} v {stack} na {board}", + "You have created a new stack {stack} on board {board}" : "Vytvořili jste novou hromádku {stack} na desce {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} vytvořil(a) nový balíček {stack} na desce {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Přejmenovali jste hromádku {before} na {stack} na desce {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} přejmenoval(a) hromádku {before} na {stack} na desce {board}", + "You have deleted stack {stack} on board {board}" : "Smazali jste balíček {stack} na desce {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} smazal(a) balíček {stack} na desce {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vytvořili jste kartu {card} v balíčku {stack} na kartě {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} vytvořil(a) kartu {card} na hromádce {stack} na desce {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Smazali jste kartu {card} na hromádce {stack} na desce {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} smazal(a) kartu {card} v balíčku {board} na desce {board}", "You have renamed the card {before} to {card}" : "Přejmenovali jste kartu {before} na {card}", "{user} has renamed the card {before} to {card}" : "{user} přejmenoval(a) {before} na {card}", - "You have added a description to {card} in {stack} on {board}" : "Přidali jste popis k {card} v {stack} na {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} přidal(a) popis ke {card} v {stack} na {board}", - "You have updated the description of {card} in {stack} on {board}" : "Aktualizovali jste popis {card} v {stack} na {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} aktualizoval(a) popis {card} v {stack} na {board}", - "You have archived {card} in {stack} on {board}" : "Zaarchivovali jste {card} v {stack} na {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} zaarchivoval(a) {card} v {stack} na {board}", - "You have unarchived {card} in {stack} on {board}" : "Zrušili jste archivaci {card} v {stack} na {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} zrušila archivaci {card} v {stack} na {board}", - "You have removed the due date of {card}" : "Odebrali jste termín {card}", - "{user} has removed the due date of {card}" : "{user} odebral(a) termín {card}", - "You have set the due date of {card} to {after}" : "Nastavili jste termín {card} na {after}", - "{user} has set the due date of {card} to {after}" : "{user} nastavil(a) termín {card} na {after}", - "You have updated the due date of {card} to {after}" : "Změnili jste termín {card} na {after}", - "{user} has updated the due date of {card} to {after}" : "{user} aktualizoval termín {card} na {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Přidali jste štítek {label} ke {card} v {stack} na {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} přidal(a) štítek {label} ke {card} v {stack} na {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Odebrali jste štítek {label} z {card} v {stack} na {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} odebral štítek {label} z {card} v {stack} na {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Přiřadili jste {assigneduser} k {card} na {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} přiřadil(a) {assigneduser} k {card} na {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Bylo zrušeno vaše přiřazení {assigneduser} k {card} na {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} přiřadil(a) {assigneduser} z {card} na {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Přesunuli jste kartu {card} z {stackBefore} do {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} přesunul {card} z {stackBefore} do {stack}", - "You have added the attachment {attachment} to {card}" : "Přidali jste {attachment} do {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} přidal(a) přílohu {attachment} k {card}", - "You have updated the attachment {attachment} on {card}" : "Aktualizovali jste přílohu {attachment} na {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} aktualizoval(a) přílohu {attachment} k {card}", - "You have deleted the attachment {attachment} from {card}" : "Smazali jste přílohu {attachment} z {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} smazal(a) přílohu {attachment} k {card}", - "You have restored the attachment {attachment} to {card}" : "Obnovili jste přílohu {attachment} k {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} obnovil(a) přílohu {attachment} k {card}", - "You have commented on {card}" : "Přidali jste komentář na {card}", - "{user} has commented on {card}" : "{user} přidal komentář na {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Přidali jste popis ke kartě {card} v hromádce {stack} na desce {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} přidal(a) popis ke kartě {card} v hromádce {stack} na desce {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali jste popis karty {card} v hromádce {stack} na desce {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} aktualizoval(a) popis karty {card} na hromádce {stack} na nástěnce {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Zaarchivovali kartu {card} v balíčku {stack} na desce {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} zaarchivoval(a) kartu {card} v balíčku {stack} na desce {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili jste archivaci karty {card} na hromádce {stack} na desce {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} zrušil(a) archivaci karty {card} na hromádce {stack} na desce {board}", + "You have removed the due date of card {card}" : "Odebrali jste termín karty {card}", + "{user} has removed the due date of card {card}" : "{user} odebral(a) termín karty {card}", + "You have set the due date of card {card} to {after}" : "Nastavili jste termín na kartě {card} na {after}", + "{user} has set the due date of card {card} to {after}" : "{user} nastavil(a) termín karty {card} na {after}", + "You have updated the due date of card {card} to {after}" : "Změnili jste termín na kartě {card} na {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} aktualizoval termín karty {card} na {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Přidali jste štítek {label} kartě {card} v hromádce {stack} na nástěnce {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} přidal(a) štítek {label} ke kartě {card} v hromádce {stack} na nástěnce {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odebrali jste štítek {label} z karty {card} v hromádce {stack} na desce {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} odebral(a) štítek {label} z karty {card} na hromádce {stack} na desce {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Přiřadili jste {assigneduser} ke kartě {card} na desce {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} přiřadil(a) {assigneduser} ke kartě {card} na desce {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Zrušili jste přiřazení {assigneduser} u karty {card} na nástěnce {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} zrušil(a) přiřazení {assigneduser} z karty {card} na desce {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Přesunuli jste kartu {card} z balíčku {stackBefore} do {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} přesunul(a) kartu {card} z balíčku {stackBefore} do {stack}", + "You have added the attachment {attachment} to card {card}" : "Přidali jste přílohu {attachment} ke kartě {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} přidal(a) přílohu {attachment} ke kartě {card}", + "You have updated the attachment {attachment} on card {card}" : "Aktualizovali jste přílohu {attachment} na kartě {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} aktualizoval(a) přílohu {attachment} ke kartě {card}", + "You have deleted the attachment {attachment} from card {card}" : "Smazali jste přílohu {attachment} u karty {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} smazal(a) přílohu {attachment} u karty {card}", + "You have restored the attachment {attachment} to card {card}" : "Obnovili jste přílohu {attachment} ke kartě {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} obnovil(a) přílohu {attachment} ke kartě {card}", + "You have commented on card {card}" : "Přidali jste komentář na kartě {card}", + "{user} has commented on card {card}" : "{user} přidal(a) komentář na kartě {card}", + "A card description inside the Deck app has been changed" : "Popis mapy v Deck-aplikace byl změněn", "Deck" : "Balík", + "Changes in the Deck app" : "Změny v Deck aplikace", "Personal" : "Osobní", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kartu „%s“ na „%s“ vám přiřadil(a) %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vám přiřadil(a) kartu „%s“ na „%s“.", @@ -101,6 +103,7 @@ "No file uploaded or file size exceeds maximum of %s" : "Nebyl nahrán žádný soubor nebo jeho velikost přesáhla %s", "A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní řízení ve stylu Kanban.", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, vestavěný v Nextcloud.\n\n\n- 📥 Zadávejte a uspořádávejte své úkoly do karet\n- 📄 Zapisujte si dodatečné poznámky \n- 🔖 Přiřazujte štítky pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přáteli nebo rodinou\n- 🚀 Dostaňte svůj projekt pod kontrolu", + "Select board" : "Vybrat nástěnku", "Add a new stack" : "Přidat nový zásobník", "Submit" : "Odeslat", "Show archived cards" : "Zobrazit archivované karty", @@ -110,6 +113,7 @@ "All Boards" : "Všechny desky", "Archived boards" : "Archivované desky", "Share board" : "Sdílet nástěnku", + "Archived cards" : "Archivované karty", "Actions" : "Akce", "Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.", "Assign card to me" : "Přiřadit kartu mě", @@ -125,13 +129,15 @@ "Deleted items" : "Smazané položky", "Timeline" : "Časová osa", "Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení", - "Access for" : "Přístup pro", + "Group" : "Skupina", + "Circle" : "Okruh", "No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina", "Loading" : "Načítání", - "Share" : "Sdílet", "Edit" : "Upravit", + "Share" : "Sdílet", "Manage" : "Spravovat", "Discard share" : "Zrušit sdílení", + "Sharing has been disabled for your account." : "Sdílení bylo zakázáno pro váš konto.", "Update tag" : "Aktualizovat štítek", "Edit tag" : "Upravit štítek", "Delete tag" : "Smazat štítek", @@ -183,6 +189,9 @@ "Add a card description…" : "Přidat popis karty…", "Shared boards" : "Sdílené desky", "Move board to archive" : "Přesunout desku do archivu", - "Create a new board" : "Vytvořit novou desku" + "Create a new board" : "Vytvořit novou desku", + "Settings" : "Nastavení", + "Limit deck to groups" : "Omezte Deck na skupiny", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omezení Decků brání uživatelům, kteří nejsou součástí těchto skupin, při vytváření vlastních desek. Uživatelé mohou stále pracovat na deskách, které jsou s nimi sdíleny." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" } \ No newline at end of file diff --git a/l10n/da.js b/l10n/da.js index bf67213ff..867e736ae 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -25,11 +25,10 @@ OC.L10N.register( "Sharing" : "Deling", "Tags" : "Mærkat", "Select users or groups to share with" : "Vælg brugere eller grupper og dele med", - "Access for" : "Adgang for", "No matching user or group found." : "Ingen bruger eller gruppe fundet", "Loading" : "Loader", - "Share" : "Del", "Edit" : "Redigér", + "Share" : "Del", "Manage" : "Administrer ", "Discard share" : "Kasser deling", "Create" : "Opret", @@ -64,6 +63,7 @@ OC.L10N.register( "Add a card description…" : "Tilføj en beskrivelse...", "Shared boards" : "Delte lister", "Move board to archive" : "Flyt liste til arkiv", - "Create a new board" : "Opret ny liste" + "Create a new board" : "Opret ny liste", + "Settings" : "Indstillinger" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/da.json b/l10n/da.json index 0300d4712..ed993f2af 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -23,11 +23,10 @@ "Sharing" : "Deling", "Tags" : "Mærkat", "Select users or groups to share with" : "Vælg brugere eller grupper og dele med", - "Access for" : "Adgang for", "No matching user or group found." : "Ingen bruger eller gruppe fundet", "Loading" : "Loader", - "Share" : "Del", "Edit" : "Redigér", + "Share" : "Del", "Manage" : "Administrer ", "Discard share" : "Kasser deling", "Create" : "Opret", @@ -62,6 +61,7 @@ "Add a card description…" : "Tilføj en beskrivelse...", "Shared boards" : "Delte lister", "Move board to archive" : "Flyt liste til arkiv", - "Create a new board" : "Opret ny liste" + "Create a new board" : "Opret ny liste", + "Settings" : "Indstillinger" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/de.js b/l10n/de.js index 9218a40c5..0a31fa658 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Benutzer von Karte entfernen", "Hours" : "Stunden", "Minutes" : "Minuten", + "Link to a board" : "Mit einem Board verknüpfen", "Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten", "You have created a new board {board}" : "Du hast das neue Board {board} erstellt", "{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt", @@ -21,58 +22,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Du hast {acl} vom Board {board} entfernt", "{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt", "You have renamed the board {before} to {board}" : "Du hast das Board {before} in {board} umbenannt", - "{user} has has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", + "{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", "You have archived the board {board}" : "Du hast das Board {board} archiviert", "{user} has archived the board {before}" : "{user} hat das Board {before} archiviert", "You have unarchived the board {board}" : "Du hast das Board {board} dearchiviert", "{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert", - "You have created a new stack {stack} on {board}" : "Du hast den neuen Stapel {stack} auf {board} erstellt", - "{user} has created a new stack {stack} on {board}" : "{user} hat den neuen Stapel {stack} auf {board} erstellt", - "You have renamed a new stack {before} to {stack} on {board}" : "Du hast den neuen Stapel {before} in {stack} auf {board} umbenannt", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hat den neuen Stapel {before} in {stack} auf {board} umbenannt", - "You have deleted {stack} on {board}" : "Du hast {stack} auf {board} gelöscht", - "{user} has deleted {stack} on {board}" : "{user} hat {stack} auf {board} gelöscht", - "You have created {card} in {stack} on {board}" : "Du hast die Karte {card} in {stack} auf {board} erstellt", - "{user} has created {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} erstellt", - "You have deleted {card} in {stack} on {board}" : "Du hast {card} in {stack} auf {board} gelöscht", - "{user} has deleted {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} gelöscht", + "You have created a new stack {stack} on board {board}" : "Du hast den neuen Stapel {stack} auf dem Board {board} erstellt", + "{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt", + "You have renamed stack {before} to {stack} on board {board}" : "Du hast den Stapel {before} auf dem Board {board} in {stack} umbenannt", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt", + "You have deleted stack {stack} on board {board}" : "Du hast den Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht", + "You have created card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "You have deleted card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", "You have renamed the card {before} to {card}" : "Du hast die Karte {before} in {card} umbenannt", "{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt", - "You have added a description to {card} in {stack} on {board}" : "Du hast der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "{user} has added a description to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "You have updated the description of {card} in {stack} on {board}" : "Du hast die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "{user} has updated the description {card} in {stack} on {board}" : " {user} hat die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "You have archived {card} in {stack} on {board}" : "Du hast die Karte {card} in {stack} auf {board} archiviert", - "{user} has archived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} archiviert", - "You have unarchived {card} in {stack} on {board}" : "Du hast die Karte {card} in {stack} auf {board} dearchiviert", - "{user} has unarchived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} dearchiviert", - "You have removed the due date of {card}" : "Du hast das Fälligkeitsdatum von {card} entfernt", - "{user} has removed the due date of {card}" : "{user} hat das Fälligkeitsdatum von {card} entfernt", - "You have set the due date of {card} to {after}" : "Du hast das Fälligkeitsdatum von {card} auf {after} gesetzt", - "{user} has set the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} gesetzt", - "You have updated the due date of {card} to {after}" : "Du hast das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "{user} has updated the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "You have added the label {label} to {card} in {stack} on {board}" : "Du hast der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "You have removed the label {label} from {card} in {stack} on {board}" : "Du hast von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} hat von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "You have assigned {assigneduser} to {card} on {board}" : "Du hast {assigneduser} der Karte {card} auf {board} zugewiesen", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} hat {assigneduser} der Karte {card} auf {board} zugewiesen", - "You have unassigned {assigneduser} from {card} on {board}" : "Du hast die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "You have moved the card {card} from {stackBefore} to {stack}" : "Du hast die Karte {card} von {stackBefore} nach {stack} verschoben", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} hat die Karte {card} von {stackBefore} nach {stack} verschoben", - "You have added the attachment {attachment} to {card}" : "Du hast den Anhang {attachment} zu {card} hinzugefügt", - "{user} has added the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} zu {card} hinzugefügt", - "You have updated the attachment {attachment} on {card}" : "Du hast den Anhang {attachment} von {card} aktualisiert", - "{user} has updated the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} aktualisiert", - "You have deleted the attachment {attachment} from {card}" : "Du hast den Anhang {attachment} von {card} entfernt", - "{user} has deleted the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} entfernt", - "You have restored the attachment {attachment} to {card}" : "Du hast den Anhang {attachment} von {card} wiederhergestellt", - "{user} has restored the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} wiederhergestellt", - "You have commented on {card}" : "Du hast {card} kommentiert", - "{user} has commented on {card}" : "{user} hat {card} kommentiert", + "You have added a description to card {card} in stack {stack} on board {board}" : "Du hast der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "You have archived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "You have unarchived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "You have removed the due date of card {card}" : "Du hast das Fälligkeitsdatum der Karte {card} entfernt", + "{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt", + "You have set the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "You have updated the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Du hast der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du hast von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "You have assigned {assigneduser} to card {card} on board {board}" : "Du hast {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Du hast die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Du hast die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "You have added the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} zur Karte {card} hinzugefügt", + "{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt", + "You have updated the attachment {attachment} on card {card}" : "Du hast den Anhang {attachment} der Karte {card} aktualisiert", + "{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert", + "You have deleted the attachment {attachment} from card {card}" : "Du hast den Anhang {attachment} von der Karte {card} entfernt", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt", + "You have restored the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} der Karte {card} wiederhergestellt", + "{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt", + "You have commented on card {card}" : "Du hast die Karte {card} kommentiert", + "{user} has commented on card {card}" : "{user} hat die Karte {card} kommentiert", + "A card description inside the Deck app has been changed" : "Eine Kartenbeschreibung wurde innerhalb der Deck-App geändert", "Deck" : "Deck", + "Changes in the Deck app" : "Änderungen in der Deck-App", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Dir von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Dir die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -81,7 +84,7 @@ OC.L10N.register( "{user} has mentioned you in a comment on \"%s\"." : "{user} hat Dich in einem Kommentar zu “%s” erwähnt.", "The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.", "{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.", - "No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.", + "No data was provided to create an attachment." : "Es wurden keine Daten zum Erstellen eines Anhangs bereitgestellt.", "Finished" : "Abgeschlossen", "To review" : "Zu überprüfen", "Action needed" : "Handlung erforderlich", @@ -103,6 +106,8 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s", "A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werkzeug für Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Füge Deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Vergabe von Labels für noch bessere Organisation\n- 👥 Teile mit Deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in Deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit Deinem Team mit Kommentaren\n- ⚡ Behalte Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere Dein Projekt", + "Select the board to link to a project" : "Wähle ein Board aus um dieses mit einem Projekt zu verknüpfen", + "Select board" : "Board auswählen", "Add a new stack" : "Neuer Stapel", "Submit" : "Übermitteln", "Show archived cards" : "Archivierte Karten anzeigen", @@ -112,6 +117,7 @@ OC.L10N.register( "All Boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Share board" : "Board freigeben", + "Archived cards" : "Archivierte Karten", "Actions" : "Aktionen", "Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen", "Assign card to me" : "Karte mir zuweisen", @@ -127,13 +133,15 @@ OC.L10N.register( "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", "Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen", - "Access for" : "Zugriff für", + "Group" : "Gruppe", + "Circle" : "Kreis", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "Loading" : "Lade", - "Share" : "Teilen", "Edit" : "Bearbeiten", + "Share" : "Teilen", "Manage" : "Verwalten", "Discard share" : "Teilen beenden", + "Sharing has been disabled for your account." : "Teilen wurde für Dein Konto deaktiviert.", "Update tag" : "Schlagwort aktualisieren", "Edit tag" : "Schlagwort bearbeiten", "Delete tag" : "Schlagwort löschen", @@ -153,14 +161,14 @@ OC.L10N.register( "Delete board" : "Board löschen", "Update board" : "Board aktualisieren", "Reset board" : "Board zurücksetzen", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - andernfalls wird das Board beim nächsten Cron-Job-Lauf gelöscht.", "Create new board" : "Neues Board", "New board title" : "Board-Titel", "Create board" : "Neues Board", "Select an attachment" : "Anhang auswählen", "Cancel upload" : "Hochladen abbrechen", "by" : "von", - "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - andernfalls wird die Datei beim nächsten Cron-Job-Lauf gelöscht.", "Undo file deletion" : "Dateilöschung rückgängig machen", "Insert the file into the description" : "Füge die Datei in die Beschreibung ein", "Delete attachment" : "Anhang löschen", @@ -169,12 +177,12 @@ OC.L10N.register( "Choose a tag" : "Schlagwort auswählen", "Add a tag" : "Schlagwort hinzufügen", "Select tags" : "Schlagworte auswählen", - "Assign users" : "Nutzer zuweisen", + "Assign users" : "Benutzer zuweisen", "Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus", "Assign this card to a user" : "Diese Karte einem Benutzer zuweisen", "Due date" : "Fälligkeitsdatum", "Click to set" : "Auswählen", - "Remove due date" : "Ablaufdatum löschen", + "Remove due date" : "Fälligkeitsdatum löschen", "Description" : "Beschreibung", "Attachments" : "Anhänge", "Saved" : "Gespeichert", @@ -185,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Eine Kartenbeschreibung hinzufügen…", "Shared boards" : "Geteilte Boards", "Move board to archive" : "Board ins Archiv verschieben", - "Create a new board" : "Neues Board" + "Create a new board" : "Neues Board", + "Settings" : "Einstellungen", + "Limit deck to groups" : "Deck auf Gruppen beschränken", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/de.json b/l10n/de.json index 413e680b3..10c6cc59d 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -7,6 +7,7 @@ "Remove user from card" : "Benutzer von Karte entfernen", "Hours" : "Stunden", "Minutes" : "Minuten", + "Link to a board" : "Mit einem Board verknüpfen", "Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten", "You have created a new board {board}" : "Du hast das neue Board {board} erstellt", "{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt", @@ -19,58 +20,60 @@ "You have removed {acl} from the board {board}" : "Du hast {acl} vom Board {board} entfernt", "{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt", "You have renamed the board {before} to {board}" : "Du hast das Board {before} in {board} umbenannt", - "{user} has has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", + "{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", "You have archived the board {board}" : "Du hast das Board {board} archiviert", "{user} has archived the board {before}" : "{user} hat das Board {before} archiviert", "You have unarchived the board {board}" : "Du hast das Board {board} dearchiviert", "{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert", - "You have created a new stack {stack} on {board}" : "Du hast den neuen Stapel {stack} auf {board} erstellt", - "{user} has created a new stack {stack} on {board}" : "{user} hat den neuen Stapel {stack} auf {board} erstellt", - "You have renamed a new stack {before} to {stack} on {board}" : "Du hast den neuen Stapel {before} in {stack} auf {board} umbenannt", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hat den neuen Stapel {before} in {stack} auf {board} umbenannt", - "You have deleted {stack} on {board}" : "Du hast {stack} auf {board} gelöscht", - "{user} has deleted {stack} on {board}" : "{user} hat {stack} auf {board} gelöscht", - "You have created {card} in {stack} on {board}" : "Du hast die Karte {card} in {stack} auf {board} erstellt", - "{user} has created {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} erstellt", - "You have deleted {card} in {stack} on {board}" : "Du hast {card} in {stack} auf {board} gelöscht", - "{user} has deleted {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} gelöscht", + "You have created a new stack {stack} on board {board}" : "Du hast den neuen Stapel {stack} auf dem Board {board} erstellt", + "{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt", + "You have renamed stack {before} to {stack} on board {board}" : "Du hast den Stapel {before} auf dem Board {board} in {stack} umbenannt", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt", + "You have deleted stack {stack} on board {board}" : "Du hast den Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht", + "You have created card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "You have deleted card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", "You have renamed the card {before} to {card}" : "Du hast die Karte {before} in {card} umbenannt", "{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt", - "You have added a description to {card} in {stack} on {board}" : "Du hast der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "{user} has added a description to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "You have updated the description of {card} in {stack} on {board}" : "Du hast die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "{user} has updated the description {card} in {stack} on {board}" : " {user} hat die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "You have archived {card} in {stack} on {board}" : "Du hast die Karte {card} in {stack} auf {board} archiviert", - "{user} has archived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} archiviert", - "You have unarchived {card} in {stack} on {board}" : "Du hast die Karte {card} in {stack} auf {board} dearchiviert", - "{user} has unarchived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} dearchiviert", - "You have removed the due date of {card}" : "Du hast das Fälligkeitsdatum von {card} entfernt", - "{user} has removed the due date of {card}" : "{user} hat das Fälligkeitsdatum von {card} entfernt", - "You have set the due date of {card} to {after}" : "Du hast das Fälligkeitsdatum von {card} auf {after} gesetzt", - "{user} has set the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} gesetzt", - "You have updated the due date of {card} to {after}" : "Du hast das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "{user} has updated the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "You have added the label {label} to {card} in {stack} on {board}" : "Du hast der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "You have removed the label {label} from {card} in {stack} on {board}" : "Du hast von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} hat von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "You have assigned {assigneduser} to {card} on {board}" : "Du hast {assigneduser} der Karte {card} auf {board} zugewiesen", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} hat {assigneduser} der Karte {card} auf {board} zugewiesen", - "You have unassigned {assigneduser} from {card} on {board}" : "Du hast die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "You have moved the card {card} from {stackBefore} to {stack}" : "Du hast die Karte {card} von {stackBefore} nach {stack} verschoben", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} hat die Karte {card} von {stackBefore} nach {stack} verschoben", - "You have added the attachment {attachment} to {card}" : "Du hast den Anhang {attachment} zu {card} hinzugefügt", - "{user} has added the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} zu {card} hinzugefügt", - "You have updated the attachment {attachment} on {card}" : "Du hast den Anhang {attachment} von {card} aktualisiert", - "{user} has updated the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} aktualisiert", - "You have deleted the attachment {attachment} from {card}" : "Du hast den Anhang {attachment} von {card} entfernt", - "{user} has deleted the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} entfernt", - "You have restored the attachment {attachment} to {card}" : "Du hast den Anhang {attachment} von {card} wiederhergestellt", - "{user} has restored the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} wiederhergestellt", - "You have commented on {card}" : "Du hast {card} kommentiert", - "{user} has commented on {card}" : "{user} hat {card} kommentiert", + "You have added a description to card {card} in stack {stack} on board {board}" : "Du hast der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Du hast die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "You have archived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "You have unarchived card {card} in stack {stack} on board {board}" : "Du hast die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "You have removed the due date of card {card}" : "Du hast das Fälligkeitsdatum der Karte {card} entfernt", + "{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt", + "You have set the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "You have updated the due date of card {card} to {after}" : "Du hast das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Du hast der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du hast von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "You have assigned {assigneduser} to card {card} on board {board}" : "Du hast {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Du hast die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Du hast die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "You have added the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} zur Karte {card} hinzugefügt", + "{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt", + "You have updated the attachment {attachment} on card {card}" : "Du hast den Anhang {attachment} der Karte {card} aktualisiert", + "{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert", + "You have deleted the attachment {attachment} from card {card}" : "Du hast den Anhang {attachment} von der Karte {card} entfernt", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt", + "You have restored the attachment {attachment} to card {card}" : "Du hast den Anhang {attachment} der Karte {card} wiederhergestellt", + "{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt", + "You have commented on card {card}" : "Du hast die Karte {card} kommentiert", + "{user} has commented on card {card}" : "{user} hat die Karte {card} kommentiert", + "A card description inside the Deck app has been changed" : "Eine Kartenbeschreibung wurde innerhalb der Deck-App geändert", "Deck" : "Deck", + "Changes in the Deck app" : "Änderungen in der Deck-App", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Dir von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Dir die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -79,7 +82,7 @@ "{user} has mentioned you in a comment on \"%s\"." : "{user} hat Dich in einem Kommentar zu “%s” erwähnt.", "The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.", "{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.", - "No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.", + "No data was provided to create an attachment." : "Es wurden keine Daten zum Erstellen eines Anhangs bereitgestellt.", "Finished" : "Abgeschlossen", "To review" : "Zu überprüfen", "Action needed" : "Handlung erforderlich", @@ -101,6 +104,8 @@ "No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s", "A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werkzeug für Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Füge Deine Aufgaben zu den Karten hinzu und ordne diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Vergabe von Labels für noch bessere Organisation\n- 👥 Teile mit Deinem Team, Freunden oder der Familie\n- 📎 Füge Dateien hinzu und verwende diese in Deinen Markdown-Beschreibungen\n- 💬 Diskutiere mit Deinem Team mit Kommentaren\n- ⚡ Behalte Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisiere Dein Projekt", + "Select the board to link to a project" : "Wähle ein Board aus um dieses mit einem Projekt zu verknüpfen", + "Select board" : "Board auswählen", "Add a new stack" : "Neuer Stapel", "Submit" : "Übermitteln", "Show archived cards" : "Archivierte Karten anzeigen", @@ -110,6 +115,7 @@ "All Boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Share board" : "Board freigeben", + "Archived cards" : "Archivierte Karten", "Actions" : "Aktionen", "Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen", "Assign card to me" : "Karte mir zuweisen", @@ -125,13 +131,15 @@ "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", "Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen", - "Access for" : "Zugriff für", + "Group" : "Gruppe", + "Circle" : "Kreis", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "Loading" : "Lade", - "Share" : "Teilen", "Edit" : "Bearbeiten", + "Share" : "Teilen", "Manage" : "Verwalten", "Discard share" : "Teilen beenden", + "Sharing has been disabled for your account." : "Teilen wurde für Dein Konto deaktiviert.", "Update tag" : "Schlagwort aktualisieren", "Edit tag" : "Schlagwort bearbeiten", "Delete tag" : "Schlagwort löschen", @@ -151,14 +159,14 @@ "Delete board" : "Board löschen", "Update board" : "Board aktualisieren", "Reset board" : "Board zurücksetzen", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - andernfalls wird das Board beim nächsten Cron-Job-Lauf gelöscht.", "Create new board" : "Neues Board", "New board title" : "Board-Titel", "Create board" : "Neues Board", "Select an attachment" : "Anhang auswählen", "Cancel upload" : "Hochladen abbrechen", "by" : "von", - "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - andernfalls wird die Datei beim nächsten Cron-Job-Lauf gelöscht.", "Undo file deletion" : "Dateilöschung rückgängig machen", "Insert the file into the description" : "Füge die Datei in die Beschreibung ein", "Delete attachment" : "Anhang löschen", @@ -167,12 +175,12 @@ "Choose a tag" : "Schlagwort auswählen", "Add a tag" : "Schlagwort hinzufügen", "Select tags" : "Schlagworte auswählen", - "Assign users" : "Nutzer zuweisen", + "Assign users" : "Benutzer zuweisen", "Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus", "Assign this card to a user" : "Diese Karte einem Benutzer zuweisen", "Due date" : "Fälligkeitsdatum", "Click to set" : "Auswählen", - "Remove due date" : "Ablaufdatum löschen", + "Remove due date" : "Fälligkeitsdatum löschen", "Description" : "Beschreibung", "Attachments" : "Anhänge", "Saved" : "Gespeichert", @@ -183,6 +191,9 @@ "Add a card description…" : "Eine Kartenbeschreibung hinzufügen…", "Shared boards" : "Geteilte Boards", "Move board to archive" : "Board ins Archiv verschieben", - "Create a new board" : "Neues Board" + "Create a new board" : "Neues Board", + "Settings" : "Einstellungen", + "Limit deck to groups" : "Deck auf Gruppen beschränken", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 80a847ea0..c0c072487 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Benutzer von Karte entfernen", "Hours" : "Stunden", "Minutes" : "Minuten", + "Link to a board" : "Mit einem Board verknüpfen", "Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten", "You have created a new board {board}" : "Sie haben das neue Board {board} erstellt", "{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt", @@ -21,58 +22,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Sie haben {acl} vom Board {board} entfernt", "{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt", "You have renamed the board {before} to {board}" : "Sie haben das Board {before} in {board} umbenannt", - "{user} has has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", + "{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", "You have archived the board {board}" : "Sie haben das Board {board} archiviert", "{user} has archived the board {before}" : "{user} hat das Board {before} archiviert", "You have unarchived the board {board}" : "Sie haben das Board {board} dearchiviert", "{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert", - "You have created a new stack {stack} on {board}" : "Sie haben den neuen Stapel {stack} auf {board} erstellt", - "{user} has created a new stack {stack} on {board}" : "{user} hat den neuen Stapel {stack} auf {board} erstellt", - "You have renamed a new stack {before} to {stack} on {board}" : "Sie haben den neuen Stapel {before} in {stack} auf {board} umbenannt", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hat den neuen Stapel {before} in {stack} auf {board} umbenannt", - "You have deleted {stack} on {board}" : "Sie haben {stack} auf {board} gelöscht", - "{user} has deleted {stack} on {board}" : "{user} hat {stack} auf {board} gelöscht", - "You have created {card} in {stack} on {board}" : "Sie haben die Karte {card} in {stack} auf {board} erstellt", - "{user} has created {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} erstellt", - "You have deleted {card} in {stack} on {board}" : "Sie haben {card} in {stack} auf {board} gelöscht", - "{user} has deleted {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} gelöscht", + "You have created a new stack {stack} on board {board}" : "Sie haben den neuen Stapel {stack} auf dem Board {board} erstellt", + "{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt", + "You have renamed stack {before} to {stack} on board {board}" : "Sie haben den Stapel {before} auf dem Board {board} in {stack} umbenannt", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt", + "You have deleted stack {stack} on board {board}" : "Sie haben den Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht", + "You have created card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "You have deleted card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", "You have renamed the card {before} to {card}" : "Sie haben die Karte {before} in {card} umbenannt", "{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt", - "You have added a description to {card} in {stack} on {board}" : "Sie haben der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "{user} has added a description to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "You have updated the description of {card} in {stack} on {board}" : "Sie haben die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "{user} has updated the description {card} in {stack} on {board}" : " {user} hat die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "You have archived {card} in {stack} on {board}" : "Sie haben die Karte {card} in {stack} auf {board} archiviert", - "{user} has archived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} archiviert", - "You have unarchived {card} in {stack} on {board}" : "Sie haben die Karte {card} in {stack} auf {board} dearchiviert", - "{user} has unarchived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} dearchiviert", - "You have removed the due date of {card}" : "Sie haben das Fälligkeitsdatum von {card} entfernt", - "{user} has removed the due date of {card}" : "{user} hat das Fälligkeitsdatum von {card} entfernt", - "You have set the due date of {card} to {after}" : "Sie haben das Fälligkeitsdatum von {card} auf {after} gesetzt", - "{user} has set the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} gesetzt", - "You have updated the due date of {card} to {after}" : "Sie haben das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "{user} has updated the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "You have added the label {label} to {card} in {stack} on {board}" : "Sie haben der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "You have removed the label {label} from {card} in {stack} on {board}" : "Sie haben von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} hat von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "You have assigned {assigneduser} to {card} on {board}" : "Sie haben {assigneduser} der Karte {card} auf {board} zugewiesen", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} hat {assigneduser} der Karte {card} auf {board} zugewiesen", - "You have unassigned {assigneduser} from {card} on {board}" : "Sie haben die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "You have moved the card {card} from {stackBefore} to {stack}" : "Sie haben die Karte {card} von {stackBefore} nach {stack} verschoben", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} hat die Karte {card} von {stackBefore} nach {stack} verschoben", - "You have added the attachment {attachment} to {card}" : "Sie haben den Anhang {attachment} zu {card} hinzugefügt", - "{user} has added the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} zu {card} hinzugefügt", - "You have updated the attachment {attachment} on {card}" : "Sie haben den Anhang {attachment} von {card} aktualisiert", - "{user} has updated the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} aktualisiert", - "You have deleted the attachment {attachment} from {card}" : "Sie haben den Anhang {attachment} von {card} entfernt", - "{user} has deleted the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} entfernt", - "You have restored the attachment {attachment} to {card}" : "Sie haben den Anhang {attachment} von {card} wiederhergestellt", - "{user} has restored the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} wiederhergestellt", - "You have commented on {card}" : "Sie haben {card} kommentiert", - "{user} has commented on {card}" : "{user} hat {card} kommentiert", + "You have added a description to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Sie haben die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "You have archived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "You have unarchived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "You have removed the due date of card {card}" : "Sie haben das Fälligkeitsdatum der Karte {card} entfernt", + "{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt", + "You have set the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "You have updated the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Sie haben von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "You have assigned {assigneduser} to card {card} on board {board}" : "Sie haben {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Sie haben die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Sie haben die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "You have added the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} zur Karte {card} hinzugefügt", + "{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt", + "You have updated the attachment {attachment} on card {card}" : "Sie haben den Anhang {attachment} der Karte {card} aktualisiert", + "{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert", + "You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} entfernt", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt", + "You have restored the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} der Karte {card} wiederhergestellt", + "{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt", + "You have commented on card {card}" : "Sie haben die Karte {card} kommentiert", + "{user} has commented on card {card}" : "{user} hat die Karte {card} kommentiert", + "A card description inside the Deck app has been changed" : "Eine Kartenbeschreibung wurde innerhalb der Deck-App geändert", "Deck" : "Deck", + "Changes in the Deck app" : "Änderungen in der Deck-App", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Ihnen von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Ihnen die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -81,7 +84,7 @@ OC.L10N.register( "{user} has mentioned you in a comment on \"%s\"." : "{user} hat Sie in einem Kommentar zu \"%s\" erwähnt.", "The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.", "{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.", - "No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.", + "No data was provided to create an attachment." : "Es wurden keine Daten zum Erstellen eines Anhangs bereitgestellt.", "Finished" : "Abgeschlossen", "To review" : "Zu überprüfen", "Action needed" : "Handlung erforderlich", @@ -101,8 +104,10 @@ OC.L10N.register( "Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden", "A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt", "No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s", - "A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werzeug für Nextcloud", - "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisung von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 📎 Fügen Sie Dateien hinzu und verwende diese in Deinen Markdown-Beschreibungen\n- 💬 Diskutieren Sie mit Ihrem Team mit Kommentaren\n- ⚡ Behalten Sie Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisieren Sie Ihr Projekt", + "A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werkzeug für Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisung von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 📎 Fügen Sie Dateien hinzu und verwende diese in Ihren Markdown-Beschreibungen\n- 💬 Diskutieren Sie mit Ihrem Team mit Kommentaren\n- ⚡ Behalten Sie Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisieren Sie Ihr Projekt", + "Select the board to link to a project" : "Wählen Sie ein Board aus um dieses mit einem Projekt zu verknüpfen", + "Select board" : "Board auswählen", "Add a new stack" : "Neuer Stapel", "Submit" : "Übermitteln", "Show archived cards" : "Archivierte Karten anzeigen", @@ -112,6 +117,7 @@ OC.L10N.register( "All Boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Share board" : "Board freigeben", + "Archived cards" : "Archivierte Karten", "Actions" : "Aktionen", "Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen", "Assign card to me" : "Karte mir zuweisen", @@ -127,13 +133,15 @@ OC.L10N.register( "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", "Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen", - "Access for" : "Zugriff für", + "Group" : "Gruppe", + "Circle" : "Kreis", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "Loading" : "Lade", - "Share" : "Teilen", "Edit" : "Bearbeiten", + "Share" : "Teilen", "Manage" : "Verwalten", "Discard share" : "Teilen beenden", + "Sharing has been disabled for your account." : "Teilen wurde für Ihr Konto deaktiviert.", "Update tag" : "Schlagwort aktualisieren", "Edit tag" : "Schlagwort bearbeiten", "Delete tag" : "Schlagwort löschen", @@ -153,14 +161,14 @@ OC.L10N.register( "Delete board" : "Board löschen", "Update board" : "Board aktualisieren", "Reset board" : "Board zurücksetzen", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - andernfalls wird das Board beim nächsten Cron-Job-Lauf gelöscht.", "Create new board" : "Neues Board", "New board title" : "Board-Titel", "Create board" : "Neues Board", - "Select an attachment" : "Wählen Sie einen Anhang", + "Select an attachment" : "Anhang auswählen", "Cancel upload" : "Hochladen abbrechen", "by" : "von", - "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - andernfalls wird die Datei beim nächsten Cron-Job-Lauf gelöscht.", "Undo file deletion" : "Dateilöschung rückgängig machen", "Insert the file into the description" : "Füge die Datei in die Beschreibung ein", "Delete attachment" : "Anhang löschen", @@ -172,9 +180,9 @@ OC.L10N.register( "Assign users" : "Benutzer zuweisen", "Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus", "Assign this card to a user" : "Diese Karte einem Benutzer zuweisen", - "Due date" : "Zieltermin", + "Due date" : "Fälligkeitsdatum", "Click to set" : "Setzen", - "Remove due date" : "Zieltermin entfernen", + "Remove due date" : "Fälligkeitsdatum entfernen", "Description" : "Beschreibung", "Attachments" : "Anhänge", "Saved" : "Gespeichert", @@ -185,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Beschreibung hinzufügen…", "Shared boards" : "Geteilte Boards", "Move board to archive" : "Board ins Archiv verschieben", - "Create a new board" : "Neues Board" + "Create a new board" : "Neues Board", + "Settings" : "Einstellungen", + "Limit deck to groups" : "Deck auf Gruppen beschränken", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 550a15a87..fcd0823bb 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -7,6 +7,7 @@ "Remove user from card" : "Benutzer von Karte entfernen", "Hours" : "Stunden", "Minutes" : "Minuten", + "Link to a board" : "Mit einem Board verknüpfen", "Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten", "You have created a new board {board}" : "Sie haben das neue Board {board} erstellt", "{user} has created a new board {board}" : "{user} hat das neue Board {board} erstellt", @@ -19,58 +20,60 @@ "You have removed {acl} from the board {board}" : "Sie haben {acl} vom Board {board} entfernt", "{user} has removed {acl} from the board {board}" : "{user} hat {acl} vom Board {board} entfernt", "You have renamed the board {before} to {board}" : "Sie haben das Board {before} in {board} umbenannt", - "{user} has has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", + "{user} has renamed the board {before} to {board}" : "{user} hat das Board {before} in {board} umbenannt", "You have archived the board {board}" : "Sie haben das Board {board} archiviert", "{user} has archived the board {before}" : "{user} hat das Board {before} archiviert", "You have unarchived the board {board}" : "Sie haben das Board {board} dearchiviert", "{user} has unarchived the board {before}" : "{user} hat das Board {before} dearchiviert", - "You have created a new stack {stack} on {board}" : "Sie haben den neuen Stapel {stack} auf {board} erstellt", - "{user} has created a new stack {stack} on {board}" : "{user} hat den neuen Stapel {stack} auf {board} erstellt", - "You have renamed a new stack {before} to {stack} on {board}" : "Sie haben den neuen Stapel {before} in {stack} auf {board} umbenannt", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hat den neuen Stapel {before} in {stack} auf {board} umbenannt", - "You have deleted {stack} on {board}" : "Sie haben {stack} auf {board} gelöscht", - "{user} has deleted {stack} on {board}" : "{user} hat {stack} auf {board} gelöscht", - "You have created {card} in {stack} on {board}" : "Sie haben die Karte {card} in {stack} auf {board} erstellt", - "{user} has created {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} erstellt", - "You have deleted {card} in {stack} on {board}" : "Sie haben {card} in {stack} auf {board} gelöscht", - "{user} has deleted {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} gelöscht", + "You have created a new stack {stack} on board {board}" : "Sie haben den neuen Stapel {stack} auf dem Board {board} erstellt", + "{user} has created a new stack {stack} on board {board}" : "{user} hat den neuen Stapel {stack} auf dem Board {board} erstellt", + "You have renamed stack {before} to {stack} on board {board}" : "Sie haben den Stapel {before} auf dem Board {board} in {stack} umbenannt", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hat den Stapel {before} in {stack} auf dem Board {board} umbenannt", + "You have deleted stack {stack} on board {board}" : "Sie haben den Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted stack {stack} on board {board}" : "{user} hat den Stapel {stack} auf dem Board {board} gelöscht", + "You have created card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} erstellt", + "You have deleted card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} gelöscht", "You have renamed the card {before} to {card}" : "Sie haben die Karte {before} in {card} umbenannt", "{user} has renamed the card {before} to {card}" : "{user} hat die Karte {before} in {card} umbenannt", - "You have added a description to {card} in {stack} on {board}" : "Sie haben der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "{user} has added a description to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} eine Beschreibung hinzugefügt", - "You have updated the description of {card} in {stack} on {board}" : "Sie haben die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "{user} has updated the description {card} in {stack} on {board}" : " {user} hat die Beschreibung der Karte {card} in {stack} auf {board} aktualisiert", - "You have archived {card} in {stack} on {board}" : "Sie haben die Karte {card} in {stack} auf {board} archiviert", - "{user} has archived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} archiviert", - "You have unarchived {card} in {stack} on {board}" : "Sie haben die Karte {card} in {stack} auf {board} dearchiviert", - "{user} has unarchived {card} in {stack} on {board}" : "{user} hat die Karte {card} in {stack} auf {board} dearchiviert", - "You have removed the due date of {card}" : "Sie haben das Fälligkeitsdatum von {card} entfernt", - "{user} has removed the due date of {card}" : "{user} hat das Fälligkeitsdatum von {card} entfernt", - "You have set the due date of {card} to {after}" : "Sie haben das Fälligkeitsdatum von {card} auf {after} gesetzt", - "{user} has set the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} gesetzt", - "You have updated the due date of {card} to {after}" : "Sie haben das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "{user} has updated the due date of {card} to {after}" : "{user} hat das Fälligkeitsdatum von {card} auf {after} aktualisiert", - "You have added the label {label} to {card} in {stack} on {board}" : "Sie haben der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} hat der Karte {card} in {stack} auf {board} das Label {label} hinzugefügt", - "You have removed the label {label} from {card} in {stack} on {board}" : "Sie haben von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} hat von der Karte {card} in {stack} auf {board} das Label {label} entfernt", - "You have assigned {assigneduser} to {card} on {board}" : "Sie haben {assigneduser} der Karte {card} auf {board} zugewiesen", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} hat {assigneduser} der Karte {card} auf {board} zugewiesen", - "You have unassigned {assigneduser} from {card} on {board}" : "Sie haben die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf {board} aufgehoben", - "You have moved the card {card} from {stackBefore} to {stack}" : "Sie haben die Karte {card} von {stackBefore} nach {stack} verschoben", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} hat die Karte {card} von {stackBefore} nach {stack} verschoben", - "You have added the attachment {attachment} to {card}" : "Sie haben den Anhang {attachment} zu {card} hinzugefügt", - "{user} has added the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} zu {card} hinzugefügt", - "You have updated the attachment {attachment} on {card}" : "Sie haben den Anhang {attachment} von {card} aktualisiert", - "{user} has updated the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} aktualisiert", - "You have deleted the attachment {attachment} from {card}" : "Sie haben den Anhang {attachment} von {card} entfernt", - "{user} has deleted the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} entfernt", - "You have restored the attachment {attachment} to {card}" : "Sie haben den Anhang {attachment} von {card} wiederhergestellt", - "{user} has restored the attachment {attachment} to {card}" : "{user} hat den Anhang {attachment} von {card} wiederhergestellt", - "You have commented on {card}" : "Sie haben {card} kommentiert", - "{user} has commented on {card}" : "{user} hat {card} kommentiert", + "You have added a description to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} eine Beschreibung hinzugefügt", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Sie haben die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} hat die Beschreibung der Karte {card} im Stapel {stack} auf dem Board {board} aktualisiert", + "You have archived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} archiviert", + "You have unarchived card {card} in stack {stack} on board {board}" : "Sie haben die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} hat die Karte {card} im Stapel {stack} auf dem Board {board} dearchiviert", + "You have removed the due date of card {card}" : "Sie haben das Fälligkeitsdatum der Karte {card} entfernt", + "{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt", + "You have set the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "{user} has set the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} gesetzt", + "You have updated the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "{user} has updated the due date of card {card} to {after}" : "{user} hat das Fälligkeitsdatum der Karte {card} auf {after} aktualisiert", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Sie haben der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hat der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} hinzugefügt", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Sie haben von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} hat von der Karte {card} im Stapel {stack} auf dem Board {board} das Schlagwort {label} entfernt", + "You have assigned {assigneduser} to card {card} on board {board}" : "Sie haben {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hat {assigneduser} der Karte {card} auf dem Board {board} zugewiesen", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Sie haben die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hat die Zuweisung von {assigneduser} zur Karte {card} auf dem Board {board} aufgehoben", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Sie haben die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} hat die Karte {card} vom Stapel {stackBefore} nach {stack} verschoben", + "You have added the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} zur Karte {card} hinzugefügt", + "{user} has added the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} zur Karte {card} hinzugefügt", + "You have updated the attachment {attachment} on card {card}" : "Sie haben den Anhang {attachment} der Karte {card} aktualisiert", + "{user} has updated the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} aktualisiert", + "You have deleted the attachment {attachment} from card {card}" : "Sie haben den Anhang {attachment} von der Karte {card} entfernt", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} von Karte {card} entfernt", + "You have restored the attachment {attachment} to card {card}" : "Sie haben den Anhang {attachment} der Karte {card} wiederhergestellt", + "{user} has restored the attachment {attachment} to card {card}" : "{user} hat den Anhang {attachment} der Karte {card} wiederhergestellt", + "You have commented on card {card}" : "Sie haben die Karte {card} kommentiert", + "{user} has commented on card {card}" : "{user} hat die Karte {card} kommentiert", + "A card description inside the Deck app has been changed" : "Eine Kartenbeschreibung wurde innerhalb der Deck-App geändert", "Deck" : "Deck", + "Changes in the Deck app" : "Änderungen in der Deck-App", "Personal" : "Persönlich", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Die Karte \"%s\" auf \"%s\" wurde Ihnen von %s zugewiesen.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hat Ihnen die Karte \"%s\" auf \"%s\" zugewiesen.", @@ -79,7 +82,7 @@ "{user} has mentioned you in a comment on \"%s\"." : "{user} hat Sie in einem Kommentar zu \"%s\" erwähnt.", "The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.", "{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.", - "No data was provided to create an attachment." : "Es wurde keine Daten zum Erstellen eines Anhangs bereitgestellt.", + "No data was provided to create an attachment." : "Es wurden keine Daten zum Erstellen eines Anhangs bereitgestellt.", "Finished" : "Abgeschlossen", "To review" : "Zu überprüfen", "Action needed" : "Handlung erforderlich", @@ -99,8 +102,10 @@ "Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden", "A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt", "No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s", - "A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werzeug für Nextcloud", - "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisung von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 📎 Fügen Sie Dateien hinzu und verwende diese in Deinen Markdown-Beschreibungen\n- 💬 Diskutieren Sie mit Ihrem Team mit Kommentaren\n- ⚡ Behalten Sie Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisieren Sie Ihr Projekt", + "A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werkzeug für Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisung von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 📎 Fügen Sie Dateien hinzu und verwende diese in Ihren Markdown-Beschreibungen\n- 💬 Diskutieren Sie mit Ihrem Team mit Kommentaren\n- ⚡ Behalten Sie Überblick über Änderungen mit dem Aktivitäten-Stream\n- 🚀 Organisieren Sie Ihr Projekt", + "Select the board to link to a project" : "Wählen Sie ein Board aus um dieses mit einem Projekt zu verknüpfen", + "Select board" : "Board auswählen", "Add a new stack" : "Neuer Stapel", "Submit" : "Übermitteln", "Show archived cards" : "Archivierte Karten anzeigen", @@ -110,6 +115,7 @@ "All Boards" : "Alle Boards", "Archived boards" : "Archivierte Boards", "Share board" : "Board freigeben", + "Archived cards" : "Archivierte Karten", "Actions" : "Aktionen", "Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen", "Assign card to me" : "Karte mir zuweisen", @@ -125,13 +131,15 @@ "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", "Select users or groups to share with" : "Benutzer oder Gruppen zum Teilen auswählen", - "Access for" : "Zugriff für", + "Group" : "Gruppe", + "Circle" : "Kreis", "No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.", "Loading" : "Lade", - "Share" : "Teilen", "Edit" : "Bearbeiten", + "Share" : "Teilen", "Manage" : "Verwalten", "Discard share" : "Teilen beenden", + "Sharing has been disabled for your account." : "Teilen wurde für Ihr Konto deaktiviert.", "Update tag" : "Schlagwort aktualisieren", "Edit tag" : "Schlagwort bearbeiten", "Delete tag" : "Schlagwort löschen", @@ -151,14 +159,14 @@ "Delete board" : "Board löschen", "Update board" : "Board aktualisieren", "Reset board" : "Board zurücksetzen", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - andernfalls wird das Board beim nächsten Cron-Job-Lauf gelöscht.", "Create new board" : "Neues Board", "New board title" : "Board-Titel", "Create board" : "Neues Board", - "Select an attachment" : "Wählen Sie einen Anhang", + "Select an attachment" : "Anhang auswählen", "Cancel upload" : "Hochladen abbrechen", "by" : "von", - "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - andernfalls wird die Datei beim nächsten Cron-Job-Lauf gelöscht.", "Undo file deletion" : "Dateilöschung rückgängig machen", "Insert the file into the description" : "Füge die Datei in die Beschreibung ein", "Delete attachment" : "Anhang löschen", @@ -170,9 +178,9 @@ "Assign users" : "Benutzer zuweisen", "Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus", "Assign this card to a user" : "Diese Karte einem Benutzer zuweisen", - "Due date" : "Zieltermin", + "Due date" : "Fälligkeitsdatum", "Click to set" : "Setzen", - "Remove due date" : "Zieltermin entfernen", + "Remove due date" : "Fälligkeitsdatum entfernen", "Description" : "Beschreibung", "Attachments" : "Anhänge", "Saved" : "Gespeichert", @@ -183,6 +191,9 @@ "Add a card description…" : "Beschreibung hinzufügen…", "Shared boards" : "Geteilte Boards", "Move board to archive" : "Board ins Archiv verschieben", - "Create a new board" : "Neues Board" + "Create a new board" : "Neues Board", + "Settings" : "Einstellungen", + "Limit deck to groups" : "Deck auf Gruppen beschränken", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Durch die Begrenzung von Deck werden Benutzer, die nicht Teil dieser Gruppen sind, daran gehindert, eigene Boards zu erstellen. Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/el.js b/l10n/el.js index 5acb2ec28..02ea32160 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -10,24 +10,30 @@ OC.L10N.register( "To review" : "Προς επισκόπηση", "Action needed" : "Απαιτείται ενέργεια", "Later" : "Αργότερα", + "Done" : "Ολοκληρώθηκε", "Add a new stack" : "Πρόσθεσε νέα συστοιχία", "Submit" : "Υποβολή", "Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν", "Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν", "All Boards" : "Όλοι οι πίνακες", "Archived boards" : "Αρχειοθέτηση πινάκων ", + "Delete card" : "Διαγραφή κάρτας", "Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας", "Add card" : "Προσθήκη κάρτας", "Close" : "Κλείσιμο", "Sharing" : "Διαμοιρασμός", "Tags" : "Ετικέτες", + "Deleted items" : "Διαγραμμένα αντικείμενα", + "Timeline" : "Χρονοδιάγραμμα", "Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε", "No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.", "Loading" : "Γίνεται φόρτωση", - "Share" : "Διαμοιρασμός", "Edit" : "Επεξεργασία", + "Share" : "Διαμοιρασμός", "Manage" : "Διαχείριση", "Discard share" : "Απόρριψη διαμοιρασμού", + "Edit tag" : "Επεξεργασία ετικέτας", + "Delete tag" : "Διαγραφή ετικέτας", "Create" : "Δημιουργία", "Create a new tag" : "Δημιούργησε νέα ετικέτα", "Title" : "Τίτλος", @@ -40,6 +46,7 @@ OC.L10N.register( "Create new board" : "Δημιουργία νέου πίνακα", "New board title" : "Νέος τίτλος πίνακα", "by" : "από", + "Delete attachment" : "Διαγραφή συνημμένου", "Modified:" : "Τροποποιήθηκε:", "Created:" : "Δημιουργήθηκε:", "Due date" : "Ημερομηνία λήξης", diff --git a/l10n/el.json b/l10n/el.json index f51be253f..2516aed3c 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -8,24 +8,30 @@ "To review" : "Προς επισκόπηση", "Action needed" : "Απαιτείται ενέργεια", "Later" : "Αργότερα", + "Done" : "Ολοκληρώθηκε", "Add a new stack" : "Πρόσθεσε νέα συστοιχία", "Submit" : "Υποβολή", "Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν", "Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν", "All Boards" : "Όλοι οι πίνακες", "Archived boards" : "Αρχειοθέτηση πινάκων ", + "Delete card" : "Διαγραφή κάρτας", "Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας", "Add card" : "Προσθήκη κάρτας", "Close" : "Κλείσιμο", "Sharing" : "Διαμοιρασμός", "Tags" : "Ετικέτες", + "Deleted items" : "Διαγραμμένα αντικείμενα", + "Timeline" : "Χρονοδιάγραμμα", "Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε", "No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.", "Loading" : "Γίνεται φόρτωση", - "Share" : "Διαμοιρασμός", "Edit" : "Επεξεργασία", + "Share" : "Διαμοιρασμός", "Manage" : "Διαχείριση", "Discard share" : "Απόρριψη διαμοιρασμού", + "Edit tag" : "Επεξεργασία ετικέτας", + "Delete tag" : "Διαγραφή ετικέτας", "Create" : "Δημιουργία", "Create a new tag" : "Δημιούργησε νέα ετικέτα", "Title" : "Τίτλος", @@ -38,6 +44,7 @@ "Create new board" : "Δημιουργία νέου πίνακα", "New board title" : "Νέος τίτλος πίνακα", "by" : "από", + "Delete attachment" : "Διαγραφή συνημμένου", "Modified:" : "Τροποποιήθηκε:", "Created:" : "Δημιουργήθηκε:", "Due date" : "Ημερομηνία λήξης", diff --git a/l10n/en_GB.js b/l10n/en_GB.js index cbb6cced3..224347c0a 100644 --- a/l10n/en_GB.js +++ b/l10n/en_GB.js @@ -1,6 +1,8 @@ OC.L10N.register( "deck", { + "Please provide a content for your comment." : "Please provide a content for your comment.", + "Posting the comment failed." : "Posting the comment failed.", "Remove user from card" : "Remove user from card", "Hours" : "Hours", "Minutes" : "Minutes", @@ -25,11 +27,10 @@ OC.L10N.register( "Sharing" : "Sharing", "Tags" : "Tags", "Select users or groups to share with" : "Select users or groups to share with", - "Access for" : "Access for", "No matching user or group found." : "No matching user or group found.", "Loading" : "Loading", - "Share" : "Share", "Edit" : "Edit", + "Share" : "Share", "Manage" : "Manage", "Discard share" : "Discard share", "Create" : "Create", diff --git a/l10n/en_GB.json b/l10n/en_GB.json index d51e0b34e..3aee49697 100644 --- a/l10n/en_GB.json +++ b/l10n/en_GB.json @@ -1,4 +1,6 @@ { "translations": { + "Please provide a content for your comment." : "Please provide a content for your comment.", + "Posting the comment failed." : "Posting the comment failed.", "Remove user from card" : "Remove user from card", "Hours" : "Hours", "Minutes" : "Minutes", @@ -23,11 +25,10 @@ "Sharing" : "Sharing", "Tags" : "Tags", "Select users or groups to share with" : "Select users or groups to share with", - "Access for" : "Access for", "No matching user or group found." : "No matching user or group found.", "Loading" : "Loading", - "Share" : "Share", "Edit" : "Edit", + "Share" : "Share", "Manage" : "Manage", "Discard share" : "Discard share", "Create" : "Create", diff --git a/l10n/eo.js b/l10n/eo.js new file mode 100644 index 000000000..42a457f2d --- /dev/null +++ b/l10n/eo.js @@ -0,0 +1,201 @@ +OC.L10N.register( + "deck", + { + "Please provide a content for your comment." : "Bv. skribi ion en via komento.", + "Posting the comment failed." : "Sendo de komento malsukcesis.", + "The comment has been deleted" : "La komento estis forigita.", + "The associated stack is deleted as well, it will be restored as well." : "La stako asociita estis ankaŭ forigita, ĝi estos ankaŭ restaŭrita.", + "Restore associated stack" : "Restaŭri asociitan stakon.", + "Remove user from card" : "Forigi uzanton el la karto", + "Hours" : "Horoj", + "Minutes" : "Minutoj", + "Link to a board" : "Ligilo al tabulo", + "Maximum file size of {size} exceeded" : "Maksimuma dosiergrando {size} transpasita", + "You have created a new board {board}" : "Vi kreis novan tabulon {board}", + "{user} has created a new board {board}" : "{user} kreis novan tabulon {board}", + "You have deleted the board {board}" : "Vi forigis tabulon {board}", + "{user} has deleted the board {board}" : "{user} forigis tabulon {board}", + "You have restored the board {board}" : "Vi restaŭris tabulon {board}", + "{user} has restored the board {board}" : "{user} restaŭris tabulon {board}", + "You have shared the board {board} with {acl}" : "Vi kunhavigis tabulon {board} kun {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} kunhavigis tabulon {board} kun {sharee}", + "You have removed {acl} from the board {board}" : "Vi forigis {acl} el la tabulo {board}", + "{user} has removed {acl} from the board {board}" : "{user} forigis {acl} el la tabulo {board}", + "You have renamed the board {before} to {board}" : "Vi alinomis la tabulon {before} al {board}", + "{user} has renamed the board {before} to {board}" : "{user} alinomis la tabulon {before} al {board}", + "You have archived the board {board}" : "Vi enarĥivigis la tabulon {board}", + "{user} has archived the board {before}" : "{user} enarĥivigis la tabulon {before}", + "You have unarchived the board {board}" : "Vi elarĥivigis la tabulon {board}", + "{user} has unarchived the board {before}" : "{user} elarĥivigis la tabulon {before}", + "You have created a new stack {stack} on board {board}" : "Vi kreis novan stakon {stack} sur tabulo {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} kreis novan stakon {stack} sur tabulo {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Vi alinomis la stakon {before} al {stack} sur tabulo {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} alinomis la stakon {before} al {stack} sur tabulo {board}", + "You have deleted stack {stack} on board {board}" : "Vi forigis la stakon {stack} el tabulo {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} forigis la stakon {stack} el tabulo {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vi kreis karton {card} en stako {stack} sur tabulo {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} kreis karton {card} en stako {stack} sur tabulo {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vi forigis karton {card} el stako {stack} sur tabulo {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} forigis karton {card} el stako {stack} sur tabulo {board}", + "You have renamed the card {before} to {card}" : "Vi alinomis la karton {before} al {card}", + "{user} has renamed the card {before} to {card}" : "{user} alinomis la karton {before} al {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Vi aldonis priskribon al karto {card} en stako {stack} sur tabulo {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} aldonis priskribon al karto {card} en stako {stack} sur tabulo {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Vi ĝisdatigis priskribon de karto {card} en stako {stack} sur tabulo {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ĝisdatigis priskribon de karto {card} en stako {stack} sur tabulo {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Vi enarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} enarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Vi elarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} elarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "You have removed the due date of card {card}" : "Vi forigis la limdaton el karto {card}", + "{user} has removed the due date of card {card}" : "{user} forigis la limdaton el karto {card}", + "You have set the due date of card {card} to {after}" : "Vi agordis la limdaton de karto {card} je {after}", + "{user} has set the due date of card {card} to {after}" : "{user} agordis la limdaton de karto {card} je {after}", + "You have updated the due date of card {card} to {after}" : "Vi ĝisdatigis la limdaton de karto {card} al {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ĝisdatigis la limdaton de karto {card} al {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Vi aldonis la etikedon {label} al karto {card} de stako {stack} sur tabulo {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} aldonis la etikedon {label} al karto {card} de stako {stack} sur tabulo {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Vi forigis la etikedon {label} el karto {card} de stako {stack} sur tabulo {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} forigis la etikedon {label} el karto {card} de stako {stack} sur tabulo {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Vi atribuis al {assigneduser} la karton {card} de tabulo {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} atribuis al {assigneduser} la karton {card} de tabulo {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vi malatribuis al {assigneduser} la karton {card} de tabulo {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} malatribuis al {assigneduser} la karton {card} de tabulo {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Vi movis la karton {card} el stako {stackBefore} al {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} movis la karton {card} el stako {stackBefore} al {stack}", + "You have added the attachment {attachment} to card {card}" : "Vi aldonis dosieron {attachment} al karto {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} aldonis dosieron {attachment} al karto {card}", + "You have updated the attachment {attachment} on card {card}" : "Vi ĝisdatigis la dosieron {attachment} de karto {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ĝisdatigis la dosieron {attachment} de karto {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vi forigis la dosieron {attachment} el karto {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} forigis la dosieron {attachment} el karto {card}", + "You have restored the attachment {attachment} to card {card}" : "Vi restaŭris la dosieron {attachment} al karto {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} restaŭris la dosieron {attachment} al karto {card}", + "You have commented on card {card}" : "Vi komentis la karton {card}", + "{user} has commented on card {card}" : "{user} komentis la karton {card}", + "A card description inside the Deck app has been changed" : "Karta priskribo ene de la aplikaĵo Kartaro ŝanĝiĝis", + "Deck" : "Kartaro", + "Changes in the Deck app" : "Ŝanĝoj en la aplikaĵo Kartaro", + "Personal" : "Persona", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La karto „%s“ sur „%s“ estis atribuita al vi de %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} atribuis la karton „%s“ sur „%s“ al vi.", + "The card \"%s\" on \"%s\" has reached its due date." : "La karto „%s“ sur „%s“ atingis sian limdaton.", + "%s has mentioned you in a comment on \"%s\"." : "%s menciis vin en komento ĉe „%s“.", + "{user} has mentioned you in a comment on \"%s\"." : "{user} menciis vin en komento ĉe „%s“.", + "The board \"%s\" has been shared with you by %s." : "La tabulo „%s“ estis kunhavigita kun vi de %s.", + "{user} has shared the board %s with you." : "{user} kunhavigis la tabulon %s kun vi.", + "No data was provided to create an attachment." : "Neniu datumo troviĝis por krei aldonaĵon.", + "Finished" : "Finita", + "To review" : "Reviziota", + "Action needed" : "Ago bezonata", + "Later" : "Poste", + "To do" : "Farota", + "Doing" : "Farata", + "Done" : "Farita", + "Example Task 3" : "Ekzempla tasko 3", + "Example Task 2" : "Ekzempla tasko 2", + "Example Task 1" : "Ekzempla tasko 1", + "The file was uploaded" : "La dosiero alŝutiĝis", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "La dosiero alŝutita superas la regulon „upload_max_filesize“ el „php.ini“", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "La dosiero alŝutita superas la regulon „MAX_FILE_SIZE“ specifita en la HTML-formularo", + "The file was only partially uploaded" : "La dosiero alŝutiĝis nur parte", + "No file was uploaded" : "Neniu dosiero alŝutiĝis", + "Missing a temporary folder" : "Mankas provizora dosierujo", + "Could not write file to disk" : "Ne eblis skribi dosieron sur diskon", + "A PHP extension stopped the file upload" : "PHP-modulo haltigis la dosieralŝuton", + "No file uploaded or file size exceeds maximum of %s" : "Neniu dosiero alŝutita, aŭ dosiergrando transpasas la maksimumon %s", + "A kanban style project and personal management tool for Nextcloud" : "Kanban-eca projekto kaj ilo por mastrumi sian vivon, por Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Kartaro („Deck“) estas kanban-eca organiza ilo por mastrumi sian vivon kaj teaman projektaron per Nextcloud.\n\n\n- 📥 Aldonu viajn taskojn al kartoj, kaj organizu ilin \n- 📄 Skribu pliajn notojn per marklingvo „Markdown“\n- 🔖 Uzu etikedojn por pli bone organiziĝi\n- 👥 Kunhavigu kun viaj teamo, amikoj, familio\n- 📎 Aldonu dosierojn, kaj enmetu ilin en via „Markdown“-a priskribo\n- 💬 Diskutu kun via teamo pere de la komentoj\n- ⚡ Sekvu la ŝanĝojn per la aktivaĵa fluo\n- 🚀 Organizu vian projekton", + "Select the board to link to a project" : "Elekti la tabulon ligotan al projekto", + "Select board" : "Elekti tabulon", + "Add a new stack" : "Aldoni novan stakon", + "Submit" : "Sendi", + "Show archived cards" : "Montri arĥivigitajn kartojn", + "Hide archived cards" : "Kaŝi arĥivigitajn kartojn", + "Toggle compact mode" : "Baskuligi densigan vidon", + "Show board details" : "Montri tabulajn detalojn", + "All Boards" : "Ĉiuj tabuloj", + "Archived boards" : "Arĥivigitaj tabuloj", + "Share board" : "Kunhavigi tabulon", + "Archived cards" : "Arĥivigitaj kartoj", + "Actions" : "Agoj", + "Drop your files here to upload it to the card" : "Ŝovu kaj demetu viajn dosierojn ĉi tie por alŝuti ilin al la karto", + "Assign card to me" : "Atribui karton al mi mem", + "Unassign card from me" : "Malatribui karton el mi mem", + "Archive card" : "Arĥivigi karton", + "Unarchive card" : "Malarĥivigi karton", + "Delete card" : "Forigi karton", + "Enter a card title" : "Entajpu katotitolon", + "Add card" : "Aldoni karton", + "Close" : "Malfermi", + "Sharing" : "Kunhavigo", + "Tags" : "Etikedoj", + "Deleted items" : "Forigitaj elementoj", + "Timeline" : "Kronologio", + "Select users or groups to share with" : "Elektu uzantojn aŭ grupojn, kun kiuj vi volas kunhavigi", + "Group" : "Grupo", + "Circle" : "Rondo", + "No matching user or group found." : "Neniu kongrua uzanto aŭ grupo trovita.", + "Loading" : "Ŝargante", + "Edit" : "Redakti", + "Share" : "Kunhavigi", + "Manage" : "Administri", + "Discard share" : "Forigi kunhavon", + "Sharing has been disabled for your account." : "Kunhavigo ne estas ebligita por via konto.", + "Update tag" : "Ĝisdatigi etikedon", + "Edit tag" : "Modifi etikedon", + "Delete tag" : "Forigi etikedon", + "Create" : "Krei", + "Create a new tag" : "Krei novan etikedon", + "Deleted stacks" : "Forigitaj stakoj", + "Deleted cards" : "Forigitaj kartoj", + "Status" : "Stato", + "No archived boards to display" : "Neniu arĥivigitaj tabuloj", + "No shared boards to display" : "Neniu kunhavigitaj tabuloj", + "Title" : "Titolo", + "Members" : "Membroj", + "More actions" : "Pliaj agoj", + "Edit board" : "Modifi tabulon", + "Archive board" : "Enarĥivigi tabulon", + "Unarchive board" : "Elarĥivigi tabulon", + "Delete board" : "Forigi tabulon", + "Update board" : "Ĝisdatigi tabulon", + "Reset board" : "Forviŝi kaj restarigi tabulon", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Malfari forigadon de tabulo; aliokaze, la tabulo estos forigita dum la venonta ruliĝo de „cron“.", + "Create new board" : "Krei novan tabulon", + "New board title" : "Nova tabultitolo", + "Create board" : "Krei tabulon", + "Select an attachment" : "Elekti dosieron", + "Cancel upload" : "Nuligi alŝuton", + "by" : "de", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Malfari forigadon de dosiero; aliokaze, la dosiero estos forigita dum la venonta ruliĝo de „cron“.", + "Undo file deletion" : "Malfari dosierforigadon", + "Insert the file into the description" : "Enmeti la dosieron en la priskribon.", + "Delete attachment" : "Forigi aldonitan dosieron", + "Modified:" : "Modifita:", + "Created:" : "Kreita:", + "Choose a tag" : "Elekti etikedon", + "Add a tag" : "Aldoni etikedon", + "Select tags" : "Elekti etikedojn", + "Assign users" : "Atribui al uzantoj", + "Choose a user to assign" : "Elekti uzanton", + "Assign this card to a user" : "Atribui tiun ĉi karton al uzanto", + "Due date" : "Limdato", + "Click to set" : "Alklaki por difini", + "Remove due date" : "Viŝi limdaton", + "Description" : "Priskribo", + "Attachments" : "Dosieraj aldonaĵoj", + "Saved" : "Konservita", + "Unsaved changes" : "Nekonservitaj ŝanĝoj", + "Insert attachment" : "Enmeti aldonitan dosieron", + "Formatting help" : "Helpo pri tekstaranĝo", + "Upload attachment" : "Alŝuti dosieran aldonaĵon", + "Add a card description…" : "Aldoni kartopriskribon", + "Shared boards" : "Kunhavigitaj tabuloj", + "Move board to archive" : "Enarĥivigi tabulon", + "Create a new board" : "Krei novan tabulon", + "Settings" : "Agordo", + "Limit deck to groups" : "Limigi kartaron al grupoj", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limigo de Kartaro („Deck“) baros uzantojn, kiuj ne estas en tiuj grupoj, krei iliajn proprajn tabulojn. Uzantoj tamen eblos labori kun tabuloj kunhavigitaj kun ili." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/eo.json b/l10n/eo.json new file mode 100644 index 000000000..79e117326 --- /dev/null +++ b/l10n/eo.json @@ -0,0 +1,199 @@ +{ "translations": { + "Please provide a content for your comment." : "Bv. skribi ion en via komento.", + "Posting the comment failed." : "Sendo de komento malsukcesis.", + "The comment has been deleted" : "La komento estis forigita.", + "The associated stack is deleted as well, it will be restored as well." : "La stako asociita estis ankaŭ forigita, ĝi estos ankaŭ restaŭrita.", + "Restore associated stack" : "Restaŭri asociitan stakon.", + "Remove user from card" : "Forigi uzanton el la karto", + "Hours" : "Horoj", + "Minutes" : "Minutoj", + "Link to a board" : "Ligilo al tabulo", + "Maximum file size of {size} exceeded" : "Maksimuma dosiergrando {size} transpasita", + "You have created a new board {board}" : "Vi kreis novan tabulon {board}", + "{user} has created a new board {board}" : "{user} kreis novan tabulon {board}", + "You have deleted the board {board}" : "Vi forigis tabulon {board}", + "{user} has deleted the board {board}" : "{user} forigis tabulon {board}", + "You have restored the board {board}" : "Vi restaŭris tabulon {board}", + "{user} has restored the board {board}" : "{user} restaŭris tabulon {board}", + "You have shared the board {board} with {acl}" : "Vi kunhavigis tabulon {board} kun {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} kunhavigis tabulon {board} kun {sharee}", + "You have removed {acl} from the board {board}" : "Vi forigis {acl} el la tabulo {board}", + "{user} has removed {acl} from the board {board}" : "{user} forigis {acl} el la tabulo {board}", + "You have renamed the board {before} to {board}" : "Vi alinomis la tabulon {before} al {board}", + "{user} has renamed the board {before} to {board}" : "{user} alinomis la tabulon {before} al {board}", + "You have archived the board {board}" : "Vi enarĥivigis la tabulon {board}", + "{user} has archived the board {before}" : "{user} enarĥivigis la tabulon {before}", + "You have unarchived the board {board}" : "Vi elarĥivigis la tabulon {board}", + "{user} has unarchived the board {before}" : "{user} elarĥivigis la tabulon {before}", + "You have created a new stack {stack} on board {board}" : "Vi kreis novan stakon {stack} sur tabulo {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} kreis novan stakon {stack} sur tabulo {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Vi alinomis la stakon {before} al {stack} sur tabulo {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} alinomis la stakon {before} al {stack} sur tabulo {board}", + "You have deleted stack {stack} on board {board}" : "Vi forigis la stakon {stack} el tabulo {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} forigis la stakon {stack} el tabulo {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vi kreis karton {card} en stako {stack} sur tabulo {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} kreis karton {card} en stako {stack} sur tabulo {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vi forigis karton {card} el stako {stack} sur tabulo {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} forigis karton {card} el stako {stack} sur tabulo {board}", + "You have renamed the card {before} to {card}" : "Vi alinomis la karton {before} al {card}", + "{user} has renamed the card {before} to {card}" : "{user} alinomis la karton {before} al {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Vi aldonis priskribon al karto {card} en stako {stack} sur tabulo {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} aldonis priskribon al karto {card} en stako {stack} sur tabulo {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Vi ĝisdatigis priskribon de karto {card} en stako {stack} sur tabulo {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ĝisdatigis priskribon de karto {card} en stako {stack} sur tabulo {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Vi enarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} enarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Vi elarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} elarĥivigis karton {card} de stako {stack} sur tabulo {board}", + "You have removed the due date of card {card}" : "Vi forigis la limdaton el karto {card}", + "{user} has removed the due date of card {card}" : "{user} forigis la limdaton el karto {card}", + "You have set the due date of card {card} to {after}" : "Vi agordis la limdaton de karto {card} je {after}", + "{user} has set the due date of card {card} to {after}" : "{user} agordis la limdaton de karto {card} je {after}", + "You have updated the due date of card {card} to {after}" : "Vi ĝisdatigis la limdaton de karto {card} al {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ĝisdatigis la limdaton de karto {card} al {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Vi aldonis la etikedon {label} al karto {card} de stako {stack} sur tabulo {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} aldonis la etikedon {label} al karto {card} de stako {stack} sur tabulo {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Vi forigis la etikedon {label} el karto {card} de stako {stack} sur tabulo {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} forigis la etikedon {label} el karto {card} de stako {stack} sur tabulo {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Vi atribuis al {assigneduser} la karton {card} de tabulo {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} atribuis al {assigneduser} la karton {card} de tabulo {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vi malatribuis al {assigneduser} la karton {card} de tabulo {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} malatribuis al {assigneduser} la karton {card} de tabulo {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Vi movis la karton {card} el stako {stackBefore} al {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} movis la karton {card} el stako {stackBefore} al {stack}", + "You have added the attachment {attachment} to card {card}" : "Vi aldonis dosieron {attachment} al karto {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} aldonis dosieron {attachment} al karto {card}", + "You have updated the attachment {attachment} on card {card}" : "Vi ĝisdatigis la dosieron {attachment} de karto {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ĝisdatigis la dosieron {attachment} de karto {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vi forigis la dosieron {attachment} el karto {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} forigis la dosieron {attachment} el karto {card}", + "You have restored the attachment {attachment} to card {card}" : "Vi restaŭris la dosieron {attachment} al karto {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} restaŭris la dosieron {attachment} al karto {card}", + "You have commented on card {card}" : "Vi komentis la karton {card}", + "{user} has commented on card {card}" : "{user} komentis la karton {card}", + "A card description inside the Deck app has been changed" : "Karta priskribo ene de la aplikaĵo Kartaro ŝanĝiĝis", + "Deck" : "Kartaro", + "Changes in the Deck app" : "Ŝanĝoj en la aplikaĵo Kartaro", + "Personal" : "Persona", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La karto „%s“ sur „%s“ estis atribuita al vi de %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} atribuis la karton „%s“ sur „%s“ al vi.", + "The card \"%s\" on \"%s\" has reached its due date." : "La karto „%s“ sur „%s“ atingis sian limdaton.", + "%s has mentioned you in a comment on \"%s\"." : "%s menciis vin en komento ĉe „%s“.", + "{user} has mentioned you in a comment on \"%s\"." : "{user} menciis vin en komento ĉe „%s“.", + "The board \"%s\" has been shared with you by %s." : "La tabulo „%s“ estis kunhavigita kun vi de %s.", + "{user} has shared the board %s with you." : "{user} kunhavigis la tabulon %s kun vi.", + "No data was provided to create an attachment." : "Neniu datumo troviĝis por krei aldonaĵon.", + "Finished" : "Finita", + "To review" : "Reviziota", + "Action needed" : "Ago bezonata", + "Later" : "Poste", + "To do" : "Farota", + "Doing" : "Farata", + "Done" : "Farita", + "Example Task 3" : "Ekzempla tasko 3", + "Example Task 2" : "Ekzempla tasko 2", + "Example Task 1" : "Ekzempla tasko 1", + "The file was uploaded" : "La dosiero alŝutiĝis", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "La dosiero alŝutita superas la regulon „upload_max_filesize“ el „php.ini“", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "La dosiero alŝutita superas la regulon „MAX_FILE_SIZE“ specifita en la HTML-formularo", + "The file was only partially uploaded" : "La dosiero alŝutiĝis nur parte", + "No file was uploaded" : "Neniu dosiero alŝutiĝis", + "Missing a temporary folder" : "Mankas provizora dosierujo", + "Could not write file to disk" : "Ne eblis skribi dosieron sur diskon", + "A PHP extension stopped the file upload" : "PHP-modulo haltigis la dosieralŝuton", + "No file uploaded or file size exceeds maximum of %s" : "Neniu dosiero alŝutita, aŭ dosiergrando transpasas la maksimumon %s", + "A kanban style project and personal management tool for Nextcloud" : "Kanban-eca projekto kaj ilo por mastrumi sian vivon, por Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Kartaro („Deck“) estas kanban-eca organiza ilo por mastrumi sian vivon kaj teaman projektaron per Nextcloud.\n\n\n- 📥 Aldonu viajn taskojn al kartoj, kaj organizu ilin \n- 📄 Skribu pliajn notojn per marklingvo „Markdown“\n- 🔖 Uzu etikedojn por pli bone organiziĝi\n- 👥 Kunhavigu kun viaj teamo, amikoj, familio\n- 📎 Aldonu dosierojn, kaj enmetu ilin en via „Markdown“-a priskribo\n- 💬 Diskutu kun via teamo pere de la komentoj\n- ⚡ Sekvu la ŝanĝojn per la aktivaĵa fluo\n- 🚀 Organizu vian projekton", + "Select the board to link to a project" : "Elekti la tabulon ligotan al projekto", + "Select board" : "Elekti tabulon", + "Add a new stack" : "Aldoni novan stakon", + "Submit" : "Sendi", + "Show archived cards" : "Montri arĥivigitajn kartojn", + "Hide archived cards" : "Kaŝi arĥivigitajn kartojn", + "Toggle compact mode" : "Baskuligi densigan vidon", + "Show board details" : "Montri tabulajn detalojn", + "All Boards" : "Ĉiuj tabuloj", + "Archived boards" : "Arĥivigitaj tabuloj", + "Share board" : "Kunhavigi tabulon", + "Archived cards" : "Arĥivigitaj kartoj", + "Actions" : "Agoj", + "Drop your files here to upload it to the card" : "Ŝovu kaj demetu viajn dosierojn ĉi tie por alŝuti ilin al la karto", + "Assign card to me" : "Atribui karton al mi mem", + "Unassign card from me" : "Malatribui karton el mi mem", + "Archive card" : "Arĥivigi karton", + "Unarchive card" : "Malarĥivigi karton", + "Delete card" : "Forigi karton", + "Enter a card title" : "Entajpu katotitolon", + "Add card" : "Aldoni karton", + "Close" : "Malfermi", + "Sharing" : "Kunhavigo", + "Tags" : "Etikedoj", + "Deleted items" : "Forigitaj elementoj", + "Timeline" : "Kronologio", + "Select users or groups to share with" : "Elektu uzantojn aŭ grupojn, kun kiuj vi volas kunhavigi", + "Group" : "Grupo", + "Circle" : "Rondo", + "No matching user or group found." : "Neniu kongrua uzanto aŭ grupo trovita.", + "Loading" : "Ŝargante", + "Edit" : "Redakti", + "Share" : "Kunhavigi", + "Manage" : "Administri", + "Discard share" : "Forigi kunhavon", + "Sharing has been disabled for your account." : "Kunhavigo ne estas ebligita por via konto.", + "Update tag" : "Ĝisdatigi etikedon", + "Edit tag" : "Modifi etikedon", + "Delete tag" : "Forigi etikedon", + "Create" : "Krei", + "Create a new tag" : "Krei novan etikedon", + "Deleted stacks" : "Forigitaj stakoj", + "Deleted cards" : "Forigitaj kartoj", + "Status" : "Stato", + "No archived boards to display" : "Neniu arĥivigitaj tabuloj", + "No shared boards to display" : "Neniu kunhavigitaj tabuloj", + "Title" : "Titolo", + "Members" : "Membroj", + "More actions" : "Pliaj agoj", + "Edit board" : "Modifi tabulon", + "Archive board" : "Enarĥivigi tabulon", + "Unarchive board" : "Elarĥivigi tabulon", + "Delete board" : "Forigi tabulon", + "Update board" : "Ĝisdatigi tabulon", + "Reset board" : "Forviŝi kaj restarigi tabulon", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Malfari forigadon de tabulo; aliokaze, la tabulo estos forigita dum la venonta ruliĝo de „cron“.", + "Create new board" : "Krei novan tabulon", + "New board title" : "Nova tabultitolo", + "Create board" : "Krei tabulon", + "Select an attachment" : "Elekti dosieron", + "Cancel upload" : "Nuligi alŝuton", + "by" : "de", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Malfari forigadon de dosiero; aliokaze, la dosiero estos forigita dum la venonta ruliĝo de „cron“.", + "Undo file deletion" : "Malfari dosierforigadon", + "Insert the file into the description" : "Enmeti la dosieron en la priskribon.", + "Delete attachment" : "Forigi aldonitan dosieron", + "Modified:" : "Modifita:", + "Created:" : "Kreita:", + "Choose a tag" : "Elekti etikedon", + "Add a tag" : "Aldoni etikedon", + "Select tags" : "Elekti etikedojn", + "Assign users" : "Atribui al uzantoj", + "Choose a user to assign" : "Elekti uzanton", + "Assign this card to a user" : "Atribui tiun ĉi karton al uzanto", + "Due date" : "Limdato", + "Click to set" : "Alklaki por difini", + "Remove due date" : "Viŝi limdaton", + "Description" : "Priskribo", + "Attachments" : "Dosieraj aldonaĵoj", + "Saved" : "Konservita", + "Unsaved changes" : "Nekonservitaj ŝanĝoj", + "Insert attachment" : "Enmeti aldonitan dosieron", + "Formatting help" : "Helpo pri tekstaranĝo", + "Upload attachment" : "Alŝuti dosieran aldonaĵon", + "Add a card description…" : "Aldoni kartopriskribon", + "Shared boards" : "Kunhavigitaj tabuloj", + "Move board to archive" : "Enarĥivigi tabulon", + "Create a new board" : "Krei novan tabulon", + "Settings" : "Agordo", + "Limit deck to groups" : "Limigi kartaron al grupoj", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limigo de Kartaro („Deck“) baros uzantojn, kiuj ne estas en tiuj grupoj, krei iliajn proprajn tabulojn. Uzantoj tamen eblos labori kun tabuloj kunhavigitaj kun ili." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/l10n/es.js b/l10n/es.js index 8727632ad..101baf997 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -21,58 +21,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Has eliminado a {acl} del tablero {board}", "{user} has removed {acl} from the board {board}" : "{user} ha elimiando a {acl} del tablero {board}", "You have renamed the board {before} to {board}" : "Has renombrado el tablero {before} como {board}", - "{user} has has renamed the board {before} to {board}" : "{user} ha renombrado el tablero {before} como {board}", + "{user} has renamed the board {before} to {board}" : "{user} ha renombrado el tablero {before} como {board}", "You have archived the board {board}" : "Has archivado el tablero {board}", "{user} has archived the board {before}" : "{user} ha archivado el tablero {board}", "You have unarchived the board {board}" : "Has desarchivado el tablero {board}", "{user} has unarchived the board {before}" : "{user} ha desarchivado el tablero {before}", - "You have created a new stack {stack} on {board}" : "Has creado la pila {stack} en {board}", - "{user} has created a new stack {stack} on {board}" : "{user} ha creado la pila {stack} en {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Has renombrado la nueva pila {befora} a {stack} en {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} ha renombrado una nueva pila {before} a {stack} en {board}", - "You have deleted {stack} on {board}" : "Has eliminado {stack} en {board}", - "{user} has deleted {stack} on {board}" : "{user} ha eliminado {stack} en {board}", - "You have created {card} in {stack} on {board}" : "Has creado {card} en la pila {stack} en {board}", - "{user} has created {card} in {stack} on {board}" : "{user} ha creado {card} en la pila {stack} en {board}", - "You have deleted {card} in {stack} on {board}" : "Has eliminado {card} en la pila {stack} en {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} ha eliminado {card} en la pila {stack} en {board}", + "You have created a new stack {stack} on board {board}" : "Has creado la pila {stack} en {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Has renombrado la pila {before} a {stack} en {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha renombrado la pila {before} a {stack} en {board}", + "You have deleted stack {stack} on board {board}" : "Has eliminado {stack} en {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} ha eliminado la pila {stack} en {board}", + "You have created card {card} in stack {stack} on board {board}" : "Has creado {card} en la pila {stack} en {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Has eliminado {card} en la pila {stack} en {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha eliminado {card} en la pila {stack} en {board}", "You have renamed the card {before} to {card}" : "Has renombrado la tarjeta {before} como {card}", "{user} has renamed the card {before} to {card}" : "{user} ha renombrado la tarjeta {before} como {card}", - "You have added a description to {card} in {stack} on {board}" : "Has añadido una descripción a {card} en la pila {stack} en {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} ha añadido una descripción a {card} en la pila {stack} en {board}", - "You have updated the description of {card} in {stack} on {board}" : "Has actualizado la descripción de {card} en la pila {stack} en {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} ha actualizado la descripción de {card} en la pila {stack} en {stack}", - "You have archived {card} in {stack} on {board}" : "Has archivado {card} en la pila {stack} en {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} ha archivado {card} en la pila {stack} en {board}", - "You have unarchived {card} in {stack} on {board}" : "Has desarchivado {card} en la pila {stack} en {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} ha desarchivado {card} en la pila {stack} de {board}", - "You have removed the due date of {card}" : "Has eliminado la fecha de vencimiento de {card}", - "{user} has removed the due date of {card}" : "{user} ha eliminado la fecha de vencimiento de {card}", - "You have set the due date of {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}", - "{user} has set the due date of {card} to {after}" : "{user} ha establecido la fecha de vencimiento de {card} como {after}", - "You have updated the due date of {card} to {after}" : "Has actualizado la fecha de vencimiento de {card} para {after}", - "{user} has updated the due date of {card} to {after}" : "{user} ha actualizado la fecha de vencimiento de {card} para {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Has añadido la etiqueta {label} a {card} en {stack} en {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} ha añadido la etiqueta {label} a {card} en {stack} en {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Has eliminado la etiqueta {label} de {card} en la pila {stack} en {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} ha elimininado la etiqueta {label} a {card} en {stack} en {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Has asignado a {assigneduser} para {card} en {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} ha asignado {assigneduser} a {card} en {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Has desasignado a {assigneduser} para {card} en {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Has movido la carta {card} de {stackBefore} a {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} ha movido la carta {card} de {stackBefore} a {stack}", - "You have added the attachment {attachment} to {card}" : "Has añadido el adjunto {attachment} en {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} ha añadido el adjunto {attachment} en {card}", - "You have updated the attachment {attachment} on {card}" : "Has actualizado el adjunto [attachment] en {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} ha actualizado el adjunto {attachment} en {card}", - "You have deleted the attachment {attachment} from {card}" : "Has eliminado el adjunto {attachment} de {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} ha eliminado el adjunto {attachment} a {card}", - "You have restored the attachment {attachment} to {card}" : "Has restablecido el adjunto {attachment} en {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} ha restaurado el archivo adjunto {attachment} a {card}", - "You have commented on {card}" : "Has comentado en {card}", - "{user} has commented on {card}" : "{user} ha comentado en {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Has añadido una descripción a {card} en la pila {stack} en {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha añadido una descripción a {card} en la pila {stack} en {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Has actualizado la descripción de {card} en la pila {stack} en {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ha actualizado la descripción de la tarjeta {card} en la pila {stack} del tablero {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Has archivado {card} en la pila {stack} en {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha archivado {card} en la pila {stack} en {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Has desarchivado {card} en la pila {stack} en {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha desarchivado {card} en la pila {stack} de {board}", + "You have removed the due date of card {card}" : "Has eliminado la fecha de vencimiento de {card}", + "{user} has removed the due date of card {card}" : "{user} ha eliminado la fecha de vencimiento de {card}", + "You have set the due date of card {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ha establecido la fecha de vencimiento de {card} como {after}", + "You have updated the due date of card {card} to {after}" : "Has actualizado la fecha de vencimiento de {card} para {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ha actualizado la fecha de vencimiento de {card} para {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Has añadido la etiqueta {label} a {card} en {stack} en {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha añadido la etiqueta {label} a {card} en {stack} en {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Has eliminado la etiqueta {label} de {card} en la pila {stack} en {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha elimininado la etiqueta {label} a {card} en {stack} en {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Has asignado a {assigneduser} para {card} en {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Has desasignado a {assigneduser} para {card} en {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Has movido la tarjeta {card} de {stackBefore} a {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha movido la carta {card} de {stackBefore} a {stack}", + "You have added the attachment {attachment} to card {card}" : "Has añadido el adjunto {attachment} en {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} ha añadido el adjunto {attachment} en {card}", + "You have updated the attachment {attachment} on card {card}" : "Has actualizado el adjunto [attachment] en {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ha actualizado el adjunto {attachment} en {card}", + "You have deleted the attachment {attachment} from card {card}" : "Has eliminado el adjunto {attachment} de {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} ha eliminado el adjunto {attachment} de {card}", + "You have restored the attachment {attachment} to card {card}" : "Has restaurado el adjunto {attachment} a {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurado el adjunto {attachment} a {card}", + "You have commented on card {card}" : "Has comentado en la tarjeta {card}", + "{user} has commented on card {card}" : "{user} ha comentado en {card}", + "A card description inside the Deck app has been changed" : "Una descripción de tarjeta dentro de la app Deck ha cambiado", "Deck" : "Deck", + "Changes in the Deck app" : "Cambios en la app Deck", "Personal" : "Personal", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La tarjeta \"%s\" en \"%s\" te ha sido asignada por %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} te ha asignado la tarjeta \"%s\" en \"%s\".", @@ -108,11 +110,18 @@ OC.L10N.register( "Show archived cards" : "Mostrar tarjetas archivadas", "Hide archived cards" : "Ocultar tarjetas archivadas", "Toggle compact mode" : "Mostrar/ocultar modo compacto", + "Show board details" : "Mostrar detalles del tablero", "All Boards" : "Todos los tableros", "Archived boards" : "Tableros archivados", "Share board" : "Compartir tablero", + "Archived cards" : "Tarjetas archivadas", "Actions" : "Acciones", "Drop your files here to upload it to the card" : "Arrastra tus archivos aquí para subirlos a la tarjeta", + "Assign card to me" : "Asignarme tarjeta a mí", + "Unassign card from me" : "Desasignarme tarjeta", + "Archive card" : "Archivar tarjeta", + "Unarchive card" : "Desarchivar tarjeta", + "Delete card" : "Eliminar tarjeta", "Enter a card title" : "Introducir título de tarjeta", "Add card" : "Añadir tarjeta", "Close" : "Cerrar", @@ -121,13 +130,18 @@ OC.L10N.register( "Deleted items" : "Elementos eliminados", "Timeline" : "Línea de tiempo", "Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir", - "Access for" : "Acceso para", + "Group" : "Grupo", + "Circle" : "Círculo", "No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Organizar", "Discard share" : "Descartar compartición", + "Sharing has been disabled for your account." : "Se ha deshabilitado el compartir desde tu cuenta.", + "Update tag" : "Actualizar etiqueta", + "Edit tag" : "Editar etiqueta", + "Delete tag" : "Eliminar etiqueta", "Create" : "Crear", "Create a new tag" : "Crear una etiqueta nueva", "Deleted stacks" : "Pilas eliminadas", @@ -142,15 +156,19 @@ OC.L10N.register( "Archive board" : "Archivar tablero", "Unarchive board" : "Desarchivar tablero", "Delete board" : "Eliminar tablero", + "Update board" : "Actualizar tablero", + "Reset board" : "Resetear tablero", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.", "Create new board" : "Crear nuevo tablero", "New board title" : "Nuevo título de tablero", + "Create board" : "Crear tablero", "Select an attachment" : "Selecciona un adjunto", "Cancel upload" : "Cancelar la subida", "by" : "por", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Deshacer eliminación del archivo. De otra forma el archivo se borrará durante la próxima ejecución del trabajo cron.", "Undo file deletion" : "Deshacer eliminación del archivo", "Insert the file into the description" : "Introduce el archivo en la descripción", + "Delete attachment" : "Eliminar adjunto", "Modified:" : "Modificado: ", "Created:" : "Creado: ", "Choose a tag" : "Escoge una etiqueta", @@ -172,6 +190,9 @@ OC.L10N.register( "Add a card description…" : "Añadir una descripción de tarjeta...", "Shared boards" : "Tableros compartidos", "Move board to archive" : "Mover tablero al archivo", - "Create a new board" : "Crear un tablero nuevo" + "Create a new board" : "Crear un tablero nuevo", + "Settings" : "Ajustes", + "Limit deck to groups" : "Limitar Deck a grupos", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar Deck impedirá que usuarios que no formen parte de esos grupos creen sus propios tableros. Los usuarios todavía podrán trabajar en tableros que hayan sido compartidos con ellos." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/es.json b/l10n/es.json index cf7887207..a4b80bcb8 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -19,58 +19,60 @@ "You have removed {acl} from the board {board}" : "Has eliminado a {acl} del tablero {board}", "{user} has removed {acl} from the board {board}" : "{user} ha elimiando a {acl} del tablero {board}", "You have renamed the board {before} to {board}" : "Has renombrado el tablero {before} como {board}", - "{user} has has renamed the board {before} to {board}" : "{user} ha renombrado el tablero {before} como {board}", + "{user} has renamed the board {before} to {board}" : "{user} ha renombrado el tablero {before} como {board}", "You have archived the board {board}" : "Has archivado el tablero {board}", "{user} has archived the board {before}" : "{user} ha archivado el tablero {board}", "You have unarchived the board {board}" : "Has desarchivado el tablero {board}", "{user} has unarchived the board {before}" : "{user} ha desarchivado el tablero {before}", - "You have created a new stack {stack} on {board}" : "Has creado la pila {stack} en {board}", - "{user} has created a new stack {stack} on {board}" : "{user} ha creado la pila {stack} en {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Has renombrado la nueva pila {befora} a {stack} en {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} ha renombrado una nueva pila {before} a {stack} en {board}", - "You have deleted {stack} on {board}" : "Has eliminado {stack} en {board}", - "{user} has deleted {stack} on {board}" : "{user} ha eliminado {stack} en {board}", - "You have created {card} in {stack} on {board}" : "Has creado {card} en la pila {stack} en {board}", - "{user} has created {card} in {stack} on {board}" : "{user} ha creado {card} en la pila {stack} en {board}", - "You have deleted {card} in {stack} on {board}" : "Has eliminado {card} en la pila {stack} en {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} ha eliminado {card} en la pila {stack} en {board}", + "You have created a new stack {stack} on board {board}" : "Has creado la pila {stack} en {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Has renombrado la pila {before} a {stack} en {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha renombrado la pila {before} a {stack} en {board}", + "You have deleted stack {stack} on board {board}" : "Has eliminado {stack} en {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} ha eliminado la pila {stack} en {board}", + "You have created card {card} in stack {stack} on board {board}" : "Has creado {card} en la pila {stack} en {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creado la pila {stack} en {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Has eliminado {card} en la pila {stack} en {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha eliminado {card} en la pila {stack} en {board}", "You have renamed the card {before} to {card}" : "Has renombrado la tarjeta {before} como {card}", "{user} has renamed the card {before} to {card}" : "{user} ha renombrado la tarjeta {before} como {card}", - "You have added a description to {card} in {stack} on {board}" : "Has añadido una descripción a {card} en la pila {stack} en {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} ha añadido una descripción a {card} en la pila {stack} en {board}", - "You have updated the description of {card} in {stack} on {board}" : "Has actualizado la descripción de {card} en la pila {stack} en {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} ha actualizado la descripción de {card} en la pila {stack} en {stack}", - "You have archived {card} in {stack} on {board}" : "Has archivado {card} en la pila {stack} en {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} ha archivado {card} en la pila {stack} en {board}", - "You have unarchived {card} in {stack} on {board}" : "Has desarchivado {card} en la pila {stack} en {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} ha desarchivado {card} en la pila {stack} de {board}", - "You have removed the due date of {card}" : "Has eliminado la fecha de vencimiento de {card}", - "{user} has removed the due date of {card}" : "{user} ha eliminado la fecha de vencimiento de {card}", - "You have set the due date of {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}", - "{user} has set the due date of {card} to {after}" : "{user} ha establecido la fecha de vencimiento de {card} como {after}", - "You have updated the due date of {card} to {after}" : "Has actualizado la fecha de vencimiento de {card} para {after}", - "{user} has updated the due date of {card} to {after}" : "{user} ha actualizado la fecha de vencimiento de {card} para {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Has añadido la etiqueta {label} a {card} en {stack} en {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} ha añadido la etiqueta {label} a {card} en {stack} en {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Has eliminado la etiqueta {label} de {card} en la pila {stack} en {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} ha elimininado la etiqueta {label} a {card} en {stack} en {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Has asignado a {assigneduser} para {card} en {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} ha asignado {assigneduser} a {card} en {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Has desasignado a {assigneduser} para {card} en {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Has movido la carta {card} de {stackBefore} a {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} ha movido la carta {card} de {stackBefore} a {stack}", - "You have added the attachment {attachment} to {card}" : "Has añadido el adjunto {attachment} en {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} ha añadido el adjunto {attachment} en {card}", - "You have updated the attachment {attachment} on {card}" : "Has actualizado el adjunto [attachment] en {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} ha actualizado el adjunto {attachment} en {card}", - "You have deleted the attachment {attachment} from {card}" : "Has eliminado el adjunto {attachment} de {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} ha eliminado el adjunto {attachment} a {card}", - "You have restored the attachment {attachment} to {card}" : "Has restablecido el adjunto {attachment} en {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} ha restaurado el archivo adjunto {attachment} a {card}", - "You have commented on {card}" : "Has comentado en {card}", - "{user} has commented on {card}" : "{user} ha comentado en {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Has añadido una descripción a {card} en la pila {stack} en {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha añadido una descripción a {card} en la pila {stack} en {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Has actualizado la descripción de {card} en la pila {stack} en {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ha actualizado la descripción de la tarjeta {card} en la pila {stack} del tablero {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Has archivado {card} en la pila {stack} en {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha archivado {card} en la pila {stack} en {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Has desarchivado {card} en la pila {stack} en {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha desarchivado {card} en la pila {stack} de {board}", + "You have removed the due date of card {card}" : "Has eliminado la fecha de vencimiento de {card}", + "{user} has removed the due date of card {card}" : "{user} ha eliminado la fecha de vencimiento de {card}", + "You have set the due date of card {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ha establecido la fecha de vencimiento de {card} como {after}", + "You have updated the due date of card {card} to {after}" : "Has actualizado la fecha de vencimiento de {card} para {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ha actualizado la fecha de vencimiento de {card} para {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Has añadido la etiqueta {label} a {card} en {stack} en {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha añadido la etiqueta {label} a {card} en {stack} en {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Has eliminado la etiqueta {label} de {card} en la pila {stack} en {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha elimininado la etiqueta {label} a {card} en {stack} en {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Has asignado a {assigneduser} para {card} en {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Has desasignado a {assigneduser} para {card} en {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha asignado a {assigneduser} para {card} en {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Has movido la tarjeta {card} de {stackBefore} a {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha movido la carta {card} de {stackBefore} a {stack}", + "You have added the attachment {attachment} to card {card}" : "Has añadido el adjunto {attachment} en {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} ha añadido el adjunto {attachment} en {card}", + "You have updated the attachment {attachment} on card {card}" : "Has actualizado el adjunto [attachment] en {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ha actualizado el adjunto {attachment} en {card}", + "You have deleted the attachment {attachment} from card {card}" : "Has eliminado el adjunto {attachment} de {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} ha eliminado el adjunto {attachment} de {card}", + "You have restored the attachment {attachment} to card {card}" : "Has restaurado el adjunto {attachment} a {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurado el adjunto {attachment} a {card}", + "You have commented on card {card}" : "Has comentado en la tarjeta {card}", + "{user} has commented on card {card}" : "{user} ha comentado en {card}", + "A card description inside the Deck app has been changed" : "Una descripción de tarjeta dentro de la app Deck ha cambiado", "Deck" : "Deck", + "Changes in the Deck app" : "Cambios en la app Deck", "Personal" : "Personal", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La tarjeta \"%s\" en \"%s\" te ha sido asignada por %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} te ha asignado la tarjeta \"%s\" en \"%s\".", @@ -106,11 +108,18 @@ "Show archived cards" : "Mostrar tarjetas archivadas", "Hide archived cards" : "Ocultar tarjetas archivadas", "Toggle compact mode" : "Mostrar/ocultar modo compacto", + "Show board details" : "Mostrar detalles del tablero", "All Boards" : "Todos los tableros", "Archived boards" : "Tableros archivados", "Share board" : "Compartir tablero", + "Archived cards" : "Tarjetas archivadas", "Actions" : "Acciones", "Drop your files here to upload it to the card" : "Arrastra tus archivos aquí para subirlos a la tarjeta", + "Assign card to me" : "Asignarme tarjeta a mí", + "Unassign card from me" : "Desasignarme tarjeta", + "Archive card" : "Archivar tarjeta", + "Unarchive card" : "Desarchivar tarjeta", + "Delete card" : "Eliminar tarjeta", "Enter a card title" : "Introducir título de tarjeta", "Add card" : "Añadir tarjeta", "Close" : "Cerrar", @@ -119,13 +128,18 @@ "Deleted items" : "Elementos eliminados", "Timeline" : "Línea de tiempo", "Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir", - "Access for" : "Acceso para", + "Group" : "Grupo", + "Circle" : "Círculo", "No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Organizar", "Discard share" : "Descartar compartición", + "Sharing has been disabled for your account." : "Se ha deshabilitado el compartir desde tu cuenta.", + "Update tag" : "Actualizar etiqueta", + "Edit tag" : "Editar etiqueta", + "Delete tag" : "Eliminar etiqueta", "Create" : "Crear", "Create a new tag" : "Crear una etiqueta nueva", "Deleted stacks" : "Pilas eliminadas", @@ -140,15 +154,19 @@ "Archive board" : "Archivar tablero", "Unarchive board" : "Desarchivar tablero", "Delete board" : "Eliminar tablero", + "Update board" : "Actualizar tablero", + "Reset board" : "Resetear tablero", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.", "Create new board" : "Crear nuevo tablero", "New board title" : "Nuevo título de tablero", + "Create board" : "Crear tablero", "Select an attachment" : "Selecciona un adjunto", "Cancel upload" : "Cancelar la subida", "by" : "por", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Deshacer eliminación del archivo. De otra forma el archivo se borrará durante la próxima ejecución del trabajo cron.", "Undo file deletion" : "Deshacer eliminación del archivo", "Insert the file into the description" : "Introduce el archivo en la descripción", + "Delete attachment" : "Eliminar adjunto", "Modified:" : "Modificado: ", "Created:" : "Creado: ", "Choose a tag" : "Escoge una etiqueta", @@ -170,6 +188,9 @@ "Add a card description…" : "Añadir una descripción de tarjeta...", "Shared boards" : "Tableros compartidos", "Move board to archive" : "Mover tablero al archivo", - "Create a new board" : "Crear un tablero nuevo" + "Create a new board" : "Crear un tablero nuevo", + "Settings" : "Ajustes", + "Limit deck to groups" : "Limitar Deck a grupos", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar Deck impedirá que usuarios que no formen parte de esos grupos creen sus propios tableros. Los usuarios todavía podrán trabajar en tableros que hayan sido compartidos con ellos." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/es_419.js b/l10n/es_419.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_419.js +++ b/l10n/es_419.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_419.json b/l10n/es_419.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_419.json +++ b/l10n/es_419.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_CL.js b/l10n/es_CL.js index 54f6d061f..12aab57c1 100644 --- a/l10n/es_CL.js +++ b/l10n/es_CL.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_CL.json b/l10n/es_CL.json index 9fb349869..488e17382 100644 --- a/l10n/es_CL.json +++ b/l10n/es_CL.json @@ -22,11 +22,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_CO.js b/l10n/es_CO.js index 54f6d061f..12aab57c1 100644 --- a/l10n/es_CO.js +++ b/l10n/es_CO.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_CO.json b/l10n/es_CO.json index 9fb349869..488e17382 100644 --- a/l10n/es_CO.json +++ b/l10n/es_CO.json @@ -22,11 +22,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_CR.js b/l10n/es_CR.js index 54f6d061f..12aab57c1 100644 --- a/l10n/es_CR.js +++ b/l10n/es_CR.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_CR.json b/l10n/es_CR.json index 9fb349869..488e17382 100644 --- a/l10n/es_CR.json +++ b/l10n/es_CR.json @@ -22,11 +22,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_DO.js b/l10n/es_DO.js index 54f6d061f..12aab57c1 100644 --- a/l10n/es_DO.js +++ b/l10n/es_DO.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_DO.json b/l10n/es_DO.json index 9fb349869..488e17382 100644 --- a/l10n/es_DO.json +++ b/l10n/es_DO.json @@ -22,11 +22,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_EC.js b/l10n/es_EC.js index 54f6d061f..12aab57c1 100644 --- a/l10n/es_EC.js +++ b/l10n/es_EC.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_EC.json b/l10n/es_EC.json index 9fb349869..488e17382 100644 --- a/l10n/es_EC.json +++ b/l10n/es_EC.json @@ -22,11 +22,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_GT.js b/l10n/es_GT.js index 54f6d061f..12aab57c1 100644 --- a/l10n/es_GT.js +++ b/l10n/es_GT.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_GT.json b/l10n/es_GT.json index 9fb349869..488e17382 100644 --- a/l10n/es_GT.json +++ b/l10n/es_GT.json @@ -22,11 +22,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_HN.js b/l10n/es_HN.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_HN.js +++ b/l10n/es_HN.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_HN.json b/l10n/es_HN.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_HN.json +++ b/l10n/es_HN.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_MX.js b/l10n/es_MX.js index 548f32240..43109ae81 100644 --- a/l10n/es_MX.js +++ b/l10n/es_MX.js @@ -25,11 +25,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_MX.json b/l10n/es_MX.json index 9c6ed4f8f..5adf37b18 100644 --- a/l10n/es_MX.json +++ b/l10n/es_MX.json @@ -23,11 +23,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_NI.js b/l10n/es_NI.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_NI.js +++ b/l10n/es_NI.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_NI.json b/l10n/es_NI.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_NI.json +++ b/l10n/es_NI.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PA.js b/l10n/es_PA.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_PA.js +++ b/l10n/es_PA.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PA.json b/l10n/es_PA.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_PA.json +++ b/l10n/es_PA.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PE.js b/l10n/es_PE.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_PE.js +++ b/l10n/es_PE.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PE.json b/l10n/es_PE.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_PE.json +++ b/l10n/es_PE.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PR.js b/l10n/es_PR.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_PR.js +++ b/l10n/es_PR.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PR.json b/l10n/es_PR.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_PR.json +++ b/l10n/es_PR.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PY.js b/l10n/es_PY.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_PY.js +++ b/l10n/es_PY.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_PY.json b/l10n/es_PY.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_PY.json +++ b/l10n/es_PY.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_SV.js b/l10n/es_SV.js index 54f6d061f..12aab57c1 100644 --- a/l10n/es_SV.js +++ b/l10n/es_SV.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_SV.json b/l10n/es_SV.json index 9fb349869..488e17382 100644 --- a/l10n/es_SV.json +++ b/l10n/es_SV.json @@ -22,11 +22,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_UY.js b/l10n/es_UY.js index b6e366e74..479cbe8d0 100644 --- a/l10n/es_UY.js +++ b/l10n/es_UY.js @@ -23,11 +23,10 @@ OC.L10N.register( "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/es_UY.json b/l10n/es_UY.json index 0269e0ea0..bea1bfd13 100644 --- a/l10n/es_UY.json +++ b/l10n/es_UY.json @@ -21,11 +21,10 @@ "Sharing" : "Compartiendo", "Tags" : "Etiquetas", "Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir", - "Access for" : "Acceso para", "No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.", "Loading" : "Cargando", - "Share" : "Compartir", "Edit" : "Editar", + "Share" : "Compartir", "Manage" : "Administrar", "Discard share" : "Descartar elemento compartido", "Create" : "Crear", diff --git a/l10n/eu.js b/l10n/eu.js index 5f7eb5d1f..ce2e3610e 100644 --- a/l10n/eu.js +++ b/l10n/eu.js @@ -1,9 +1,14 @@ OC.L10N.register( "deck", { + "Please provide a content for your comment." : "Eman edukia zure iruzkinari.", + "Posting the comment failed." : "Iruzkinaren bidalketak huts egin du.", + "The comment has been deleted" : "Iruzkina ezabatu da", + "Remove user from card" : "Kendu erabiltzailea txarteletik", "Hours" : "Orduak", "Minutes" : "Minutuak", "Deck" : "Mahaigaina", + "Personal" : "Pertsonala", "The card \"%s\" on \"%s\" has reached its due date." : " \"%s\" txartela, \"%s\" -n dagoena, epe-mugara ailegatu da.", "The board \"%s\" has been shared with you by %s." : "\"%s\" mahaingaina %s-k zurekin partekatu du.", "{user} has shared the board %s with you." : "{user} erabiltzaileak %s mahaigaina zurekin partekatu du.", @@ -11,25 +16,38 @@ OC.L10N.register( "To review" : "Errebisatzeko", "Action needed" : "Ekintza beharrezkoa", "Later" : "Beranduago", + "To do" : "Egiteke", + "Doing" : "Egiten", + "Done" : "Egina", + "The file was uploaded" : "Fitxategia igo da", + "No file was uploaded" : "Ez da fitxategirik igo", "Add a new stack" : "Pila berria gehitu", "Submit" : "Bidali", "Show archived cards" : "Artxibatutako txartelak erakutsi", "Hide archived cards" : "Artxibatutako txartelak ezkutatu", "All Boards" : "Mahai guztiak", "Archived boards" : "Artxibatutako txartelak", + "Archived cards" : "Artxibatutako txartelak", + "Actions" : "Ekintzak", + "Archive card" : "Artxibatu txartela", + "Unarchive card" : "Berreskuratu txartela artxibotik", + "Delete card" : "Ezabatu txartela", "Enter a card title" : "Txartelaren titulua sartu", "Add card" : "Txartela gehitu", "Close" : "Itxi", "Sharing" : "Partekatzen", "Tags" : "Etiketak", + "Deleted items" : "Ezabatutako elementuak", + "Timeline" : "Denbora-lerroa", "Select users or groups to share with" : "Partekatzeko erabiltzaile eta taldeak hautatu", - "Access for" : "Sarbidea", "No matching user or group found." : "Ados datorren erabiltzailerik edo talderik ez da topatu", "Loading" : "Kargatzen", - "Share" : "Partekatu", "Edit" : "Editatu", + "Share" : "Partekatu", "Manage" : "Kudeaketa", "Discard share" : "Partekatutakoa ezeztatu", + "Edit tag" : "Editatu etiketa", + "Delete tag" : "Ezabatu etiketa", "Create" : "Sortu", "Create a new tag" : "Etiketa berria sortu", "Status" : "Egoera", @@ -43,7 +61,10 @@ OC.L10N.register( "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Mahaiagainaren borratzea ezeztatu - Bestela cron lanaren hurrengo aktibazioan borratuko da.", "Create new board" : "Mahaigain berria sortzen du", "New board title" : "Mahaigainaren izenburu berria", + "Select an attachment" : "Hautatu eranskin bat", "by" : "-engatik", + "Undo file deletion" : "Desegin fitxategiaren ezabaketa", + "Delete attachment" : "Ezabatu eranskina", "Modified:" : "Aldatua:", "Created:" : "Sortua:", "Choose a tag" : "Etiketa hautatu", @@ -55,12 +76,16 @@ OC.L10N.register( "Click to set" : "Klik ezartzeko", "Remove due date" : "Ezabatu epe-muga", "Description" : "Deskribapena", + "Attachments" : "Eranskinak", "Saved" : "Gordeta", "Unsaved changes" : "Gorde gabeko aldaketak", + "Insert attachment" : "Txertatu eranskina", "Formatting help" : "Formatua emateko laguntza", + "Upload attachment" : "Igo eranskina", "Add a card description…" : "Txartelaren deskribapena gehitu...", "Shared boards" : "Partekatutako txartelak", "Move board to archive" : "Txartela artxibora mugitu", - "Create a new board" : "Mahaigain berria sortu" + "Create a new board" : "Mahaigain berria sortu", + "Settings" : "Ezarpenak" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/eu.json b/l10n/eu.json index 7b333418f..76119cbd1 100644 --- a/l10n/eu.json +++ b/l10n/eu.json @@ -1,7 +1,12 @@ { "translations": { + "Please provide a content for your comment." : "Eman edukia zure iruzkinari.", + "Posting the comment failed." : "Iruzkinaren bidalketak huts egin du.", + "The comment has been deleted" : "Iruzkina ezabatu da", + "Remove user from card" : "Kendu erabiltzailea txarteletik", "Hours" : "Orduak", "Minutes" : "Minutuak", "Deck" : "Mahaigaina", + "Personal" : "Pertsonala", "The card \"%s\" on \"%s\" has reached its due date." : " \"%s\" txartela, \"%s\" -n dagoena, epe-mugara ailegatu da.", "The board \"%s\" has been shared with you by %s." : "\"%s\" mahaingaina %s-k zurekin partekatu du.", "{user} has shared the board %s with you." : "{user} erabiltzaileak %s mahaigaina zurekin partekatu du.", @@ -9,25 +14,38 @@ "To review" : "Errebisatzeko", "Action needed" : "Ekintza beharrezkoa", "Later" : "Beranduago", + "To do" : "Egiteke", + "Doing" : "Egiten", + "Done" : "Egina", + "The file was uploaded" : "Fitxategia igo da", + "No file was uploaded" : "Ez da fitxategirik igo", "Add a new stack" : "Pila berria gehitu", "Submit" : "Bidali", "Show archived cards" : "Artxibatutako txartelak erakutsi", "Hide archived cards" : "Artxibatutako txartelak ezkutatu", "All Boards" : "Mahai guztiak", "Archived boards" : "Artxibatutako txartelak", + "Archived cards" : "Artxibatutako txartelak", + "Actions" : "Ekintzak", + "Archive card" : "Artxibatu txartela", + "Unarchive card" : "Berreskuratu txartela artxibotik", + "Delete card" : "Ezabatu txartela", "Enter a card title" : "Txartelaren titulua sartu", "Add card" : "Txartela gehitu", "Close" : "Itxi", "Sharing" : "Partekatzen", "Tags" : "Etiketak", + "Deleted items" : "Ezabatutako elementuak", + "Timeline" : "Denbora-lerroa", "Select users or groups to share with" : "Partekatzeko erabiltzaile eta taldeak hautatu", - "Access for" : "Sarbidea", "No matching user or group found." : "Ados datorren erabiltzailerik edo talderik ez da topatu", "Loading" : "Kargatzen", - "Share" : "Partekatu", "Edit" : "Editatu", + "Share" : "Partekatu", "Manage" : "Kudeaketa", "Discard share" : "Partekatutakoa ezeztatu", + "Edit tag" : "Editatu etiketa", + "Delete tag" : "Ezabatu etiketa", "Create" : "Sortu", "Create a new tag" : "Etiketa berria sortu", "Status" : "Egoera", @@ -41,7 +59,10 @@ "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Mahaiagainaren borratzea ezeztatu - Bestela cron lanaren hurrengo aktibazioan borratuko da.", "Create new board" : "Mahaigain berria sortzen du", "New board title" : "Mahaigainaren izenburu berria", + "Select an attachment" : "Hautatu eranskin bat", "by" : "-engatik", + "Undo file deletion" : "Desegin fitxategiaren ezabaketa", + "Delete attachment" : "Ezabatu eranskina", "Modified:" : "Aldatua:", "Created:" : "Sortua:", "Choose a tag" : "Etiketa hautatu", @@ -53,12 +74,16 @@ "Click to set" : "Klik ezartzeko", "Remove due date" : "Ezabatu epe-muga", "Description" : "Deskribapena", + "Attachments" : "Eranskinak", "Saved" : "Gordeta", "Unsaved changes" : "Gorde gabeko aldaketak", + "Insert attachment" : "Txertatu eranskina", "Formatting help" : "Formatua emateko laguntza", + "Upload attachment" : "Igo eranskina", "Add a card description…" : "Txartelaren deskribapena gehitu...", "Shared boards" : "Partekatutako txartelak", "Move board to archive" : "Txartela artxibora mugitu", - "Create a new board" : "Mahaigain berria sortu" + "Create a new board" : "Mahaigain berria sortu", + "Settings" : "Ezarpenak" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/fi.js b/l10n/fi.js index 5ec686ab3..9a150d9c6 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -32,8 +32,8 @@ OC.L10N.register( "Select users or groups to share with" : "Valitse käyttäjiä tai ryhmiä joille haluat jakaa", "No matching user or group found." : "Käyttäjää tai ryhmää ei löytynyt.", "Loading" : "Ladataan", - "Share" : "Jaa", "Edit" : "Muokkaa", + "Share" : "Jaa", "Manage" : "Hallitse", "Discard share" : "Peru jakaminen", "Create" : "Luo", diff --git a/l10n/fi.json b/l10n/fi.json index 2be5126a2..8cf07c8c4 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -30,8 +30,8 @@ "Select users or groups to share with" : "Valitse käyttäjiä tai ryhmiä joille haluat jakaa", "No matching user or group found." : "Käyttäjää tai ryhmää ei löytynyt.", "Loading" : "Ladataan", - "Share" : "Jaa", "Edit" : "Muokkaa", + "Share" : "Jaa", "Manage" : "Hallitse", "Discard share" : "Peru jakaminen", "Create" : "Luo", diff --git a/l10n/fr.js b/l10n/fr.js index b535bec62..a46ff7b19 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Supprimer l'utilisateur de la carte", "Hours" : "Heures", "Minutes" : "Minutes", + "Link to a board" : "Lien à un tableau", "Maximum file size of {size} exceeded" : "Taille de fichier maximale de {size} dépassée", "You have created a new board {board}" : "Vous avez créé un nouveau tableau {tableau}", "{user} has created a new board {board}" : "{user} a créé un nouveau tableau {board}", @@ -21,58 +22,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Vous avez supprimé {acl} du tableau {board}", "{user} has removed {acl} from the board {board}" : "{user} a supprimé {acl} du tableau {board}", "You have renamed the board {before} to {board}" : "Vous avez renommé le tableau {before} en {board}", - "{user} has has renamed the board {before} to {board}" : "{user} a renommé le tableau {before} en {board}", + "{user} has renamed the board {before} to {board}" : "{user} a renommé le tableau {before} à {board}", "You have archived the board {board}" : "Vous avez archivé le tableau {board}", "{user} has archived the board {before}" : "{user} a archivé le tableau {before}", - "You have unarchived the board {board}" : "Vous avez archivé le tableau {board}", - "{user} has unarchived the board {before}" : "{user} a archivé le tableau {board}", - "You have created a new stack {stack} on {board}" : "Vous avez créé une nouvelle pile {stack} sur {board}", - "{user} has created a new stack {stack} on {board}" : "{user} a créé une nouvelle pile {stack} sur {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Vous avez renommé la pile {before} en {stack} sur {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} a renommé la pile {before} en {stack} sur {board}", - "You have deleted {stack} on {board}" : "Vous avez supprimé {stack} de {board}", - "{user} has deleted {stack} on {board}" : "{user} a supprimé {stack} de {board}", - "You have created {card} in {stack} on {board}" : "Vous avez créé {card} dans {stack} sur {board}", - "{user} has created {card} in {stack} on {board}" : "{user} a créé {card} dans {stack} sur {board}", - "You have deleted {card} in {stack} on {board}" : "Vous avez supprimé {card} dans {stack} sur {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} a supprimé {card} dans {stack} sur {board}", + "You have unarchived the board {board}" : "Vous avez sorti de l’archive le tableau {board}", + "{user} has unarchived the board {before}" : "{user} a sorti de l’archive le tableau {board}", + "You have created a new stack {stack} on board {board}" : "Vous avez créé une nouvelle pile {stack} sur le tableau {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} a créé une nouvelle pile {stack} sur le tableau {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Vous avez renommé la pile {before} en {stack} sur le tableau {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} a renommé la pile {before} en {stack} sur le tableau {board}", + "You have deleted stack {stack} on board {board}" : "Vous avez supprimé la pile {stack} sur le tableau {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} a supprimé la pile {stack} sur le tableau {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vous avez créé la carte {card} dans la pile {stack} du tableau {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} a créé la carte {card} dans la pile {stack} du tableau {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vous avez supprimé la carte {card} de la pile {stack} du tableau {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} a supprimé la carte {card} de la pile {stack} du tableau {board}", "You have renamed the card {before} to {card}" : "Vous avez renommé la carte {before} en {card}", "{user} has renamed the card {before} to {card}" : "{user} a renommé la carte {before} en {card}", - "You have added a description to {card} in {stack} on {board}" : "Vous avez ajouté une description à {card} dans {stack} sur {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} a ajouté une description à {card} dans {stack} sur {board}", - "You have updated the description of {card} in {stack} on {board}" : "Vous avez mis à jour la description de {card} dans {stack} sur {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} a mis à jour la description de {card} dans {stack} sur {board}", - "You have archived {card} in {stack} on {board}" : "Vous avez archivé {card} dans {stack} sur {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} a archivé {card} dans {stack} sur {board}", - "You have unarchived {card} in {stack} on {board}" : "Vous avez désarchivé {card} dans {stack} sur {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} a désarchivé {card} dans {stack} sur {board}", - "You have removed the due date of {card}" : "Vous avez supprimé la date d'échéance de {card}", - "{user} has removed the due date of {card}" : "{user} a supprimé la date d'échéance de {card}", - "You have set the due date of {card} to {after}" : "Vous avez défini la date d'échéance de {card} à {after}", - "{user} has set the due date of {card} to {after}" : "{user} a défini la date d'échéance de {card} à {after}", - "You have updated the due date of {card} to {after}" : "Vous avez mis à jour la date d'échéance de {card} à {after}", - "{user} has updated the due date of {card} to {after}" : "{user} a mis à jour la date d'échéance de {card} à {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Vous avez ajouté l'étiquette {label} à {card} dans {stack} sur {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} a ajouté l'étiquette {label} à {card} dans {stack} sur {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Vous avez supprimé l'étiquette {label} de {card} dans {stack} sur {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} a supprimé l'étiquette {label} de {card} dans {stack} sur {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Vous avez assigné {assigneduser} à {card} sur {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} a assigné {assigneduser} à {card} sur {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Vous avez retiré {assigneduser} de {card} sur {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} a retiré {assigneduser} de {card} sur {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Vous avez déplacé la carte {card} de {stackBefore} vers {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} a déplacé la carte {card} de {stackBefore} vers {stack}", - "You have added the attachment {attachment} to {card}" : "Vous avez ajouté la pièce jointe {attachment} à {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} a ajouté la pièce jointe {attachment} à {card}", - "You have updated the attachment {attachment} on {card}" : "Vous avez mis à jour la pièce jointe {attachment} de {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} a mis à jour la pièce jointe {attachment} de {card}", - "You have deleted the attachment {attachment} from {card}" : "Vous avez supprimé la pièce jointe {attachment} du tableau {board}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} a supprimé la pièce jointe {attachment} de la carte {card} ", - "You have restored the attachment {attachment} to {card}" : "Vous avez restauré la pièce jointe {attachment} à {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} a restauré la pièce jointe {attachment} à {card}", - "You have commented on {card}" : "Vous avez commenté {card}", - "{user} has commented on {card}" : "{user} a commenté {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Vous avez ajouté une description à la carte {card} de la pile {stack} du tableau {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} a ajouté une description à la carte {card} de la pile {stack} du tableau {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Vous avez mis à jour la description de la carte {card} de la pile {stack} du tableau {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} a mis à jour la description de la carte {card} de la pile {stack} du tableau {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Vous avez archivé la carte {card} de la pile {stack} du tableau {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} a archivé la carte {card} de la pile {stack} du tableau {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Vous avez une carte {card} non-archivée dans la pile {stack} du tableau {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} a une carte {card} non-archivée dans la pile {stack} du tableau {board}", + "You have removed the due date of card {card}" : "Vous avez supprimé la date limite de la carte {card}", + "{user} has removed the due date of card {card}" : "{user} a supprimé la date limite de la carte {card}", + "You have set the due date of card {card} to {after}" : "Vous avez établie la date limite de la carte {card} à {after}", + "{user} has set the due date of card {card} to {after}" : "{user} a établie la date limite de la carte {card} à {after}", + "You have updated the due date of card {card} to {after}" : "Vous avez mis à jour la date limite de la carte {card} à {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} a mis à jour la date limite de la carte {card} à {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Vous avez ajouté l'étiquette {label} à la carte {card} de la pile {stack} du tableau {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} a ajouté l'étiquette {label} à la carte {card} de la pile {stack} du tableau {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Vous avez supprimé l'étiquette {label} de la carte {card} de la pile {stack} du tableau {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} a supprimé l'étiquette {label} de la carte {card} de la pile {stack} du tableau {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Vous avez assigné {assigneduser} à la carte {card} du tableau {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} a assigné {assigneduser} à la carte {card} du tableau {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vous avez désassigner {assigneduser} de la carte {card} du tableau {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} a désassigner {assigneduser} de la carte {card} du tableau {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Vous avez déplacé la carte {card} de la pile {stackBefore} vers {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} a déplacé la carte {card} de la pile {stackBefore} vers {stack}", + "You have added the attachment {attachment} to card {card}" : "Vous avez ajouté la pièce jointe {attachment} à la carte {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} a ajouté la pièce jointe {attachment} à la carte {card}", + "You have updated the attachment {attachment} on card {card}" : "Vous avez mis à jour la pièce jointe {attachment} de la carte {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} a mis à jour la pièce jointe {attachment} de la carte {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vous avez supprimé la pièce jointe {attachment} de la carte {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} a supprimé la pièce jointe {attachment} de la carte {card}", + "You have restored the attachment {attachment} to card {card}" : "Vous avez restauré la pièce jointe {attachment} de la carte {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} a restauré la pièce jointe {attachment} de la carte {card}", + "You have commented on card {card}" : "Vous avez commenté la carte {card}", + "{user} has commented on card {card}" : "{user} a commenté la carte {card}", + "A card description inside the Deck app has been changed" : "La description de la carte présente dans l’application Deck a été modifiée", "Deck" : "Deck", + "Changes in the Deck app" : "Modifications dans Deck app", "Personal" : "Personnel", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La carte \"%s\" de \"%s\" vous a été assignée par %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vous a assigné la carte \"%s\" de \"%s\".", @@ -103,15 +106,18 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Aucun fichier téléversé ou la taille du fichier dépasse la maximum de %s", "A kanban style project and personal management tool for Nextcloud" : " Un outil de style kanban pour Nextcloud, pour la gestion de votre vie personnelle et de vos projets.", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck est un outil d'organisation de style kanban destiné à la planification personnelle et à l'organisation de projets pour les équipes intégrées à Nextcloud.\n\n\n- 📥 Ajoutez vos tâches à des cartes et organisez-les\n- 📄 Écrivez des notes supplémentaires en Markdown\n- 🔖 Affectez des étiquettes pour une organisation encore meilleure\n- 👥 Partagez avec votre équipe, vos amis ou votre famille\n- 📎 Attachez des fichiers et utilisez les dans vos descriptions en Markdown\n- 💬 Echanger avec votre équipe grâce aux commentaires\n- ⚡ Garder l'oeil sur les modifications dans le flux d'activité\n- 🚀 Organisez vos projets", + "Select the board to link to a project" : "Sélection le tableau pour faire le lien avec un projet.", + "Select board" : "Sélectionner le tableau", "Add a new stack" : "Ajouter une nouvelle pile", "Submit" : "Envoyer", "Show archived cards" : "Afficher les cartes archivées", "Hide archived cards" : "Masquer les cartes archivées", "Toggle compact mode" : "Basculer le mode compact", - "Show board details" : "Montrer les détails du tableau", + "Show board details" : "Afficher les détails du tableau", "All Boards" : "Tous les tableaux", "Archived boards" : "Tableaux archivés", "Share board" : "Partager le tableau", + "Archived cards" : "Cartes archivées", "Actions" : "Actions", "Drop your files here to upload it to the card" : "Déposez vos fichiers ici pour les téléverser sur la carte", "Assign card to me" : "Assignez-moi la carte", @@ -127,13 +133,15 @@ OC.L10N.register( "Deleted items" : "Éléments supprimés", "Timeline" : "Chronologie", "Select users or groups to share with" : "Sélectionnez des utilisateurs ou des groupes avec qui partager", - "Access for" : "Accès pour ", + "Group" : "Groupe", + "Circle" : "Cercle", "No matching user or group found." : "Aucun utilisateur ou groupe correspondant trouvé", "Loading" : "Chargement", - "Share" : "Partager", "Edit" : "Modifier", + "Share" : "Partager", "Manage" : "Gérer", "Discard share" : "Supprimer le partage", + "Sharing has been disabled for your account." : "Le partage a été désactivé pour votre compte.", "Update tag" : "Mettre à jour l'étiquette", "Edit tag" : "Modifier l'étiquette", "Delete tag" : "Supprimer l'étiquette", @@ -147,20 +155,20 @@ OC.L10N.register( "Title" : "Titre", "Members" : "Membres", "More actions" : "Plus d'actions", - "Edit board" : "Modifier le tableau", + "Edit board" : "Modifier le tableau", "Archive board" : "Archiver le tableau", "Unarchive board" : "Ne plus archiver le tableau", "Delete board" : "Supprimer le tableau", "Update board" : "Mettre à jour le tableau", "Reset board" : "Réinitialiser le tableau", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Annuler la suppression du tableau - Autrement le tableau sera supprimé lors du prochain lancement de la tâche cron.", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Annuler la suppression du tableau — Autrement le tableau sera supprimé lors du prochain lancement de la tâche cron.", "Create new board" : "Créer un nouveau tableau", "New board title" : "Nouveau titre pour le tableau", "Create board" : "Créer le tableau", "Select an attachment" : "Sélectionner une pièce jointe", "Cancel upload" : "Annuler le téléversement", "by" : "par", - "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annuler la suppression du fichier - Autrement le fichier sera supprimé lors du prochain lancement de la tâche cron.", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annuler la suppression du fichier — Autrement le fichier sera supprimé lors du prochain lancement de la tâche cron.", "Undo file deletion" : "Annuler la suppression du fichier", "Insert the file into the description" : "Insérer le fichier dans la description", "Delete attachment" : "Supprimer la pièce jointe", @@ -168,7 +176,7 @@ OC.L10N.register( "Created:" : "Créé le :", "Choose a tag" : "Choisir une étiquette", "Add a tag" : "Ajouter une étiquette", - "Select tags" : "Sélectionner les étiquettes", + "Select tags" : "Sélectionner les étiquettes", "Assign users" : "Assigner des utilisateurs", "Choose a user to assign" : "Choisir un utilisateur à assigner", "Assign this card to a user" : "Assigner cette carte à un utilisateur", @@ -185,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Ajouter une description pour la carte", "Shared boards" : "Tableaux partagés", "Move board to archive" : "Déplacer le tableau vers l'archive", - "Create a new board" : "Créer un nouveau tableau" + "Create a new board" : "Créer un nouveau tableau", + "Settings" : "Paramètres", + "Limit deck to groups" : "Limiter deck aux groupes", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiter le Deck empêchera les utilisateurs ne faisant pas partie de ces groupes de créer leurs propres tableaux. Les utilisateurs pourront toujours travailler sur des tableaux qui ont été partagés avec eux." }, "nplurals=2; plural=(n > 1);"); diff --git a/l10n/fr.json b/l10n/fr.json index dd58d4959..ecb547ee6 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -7,6 +7,7 @@ "Remove user from card" : "Supprimer l'utilisateur de la carte", "Hours" : "Heures", "Minutes" : "Minutes", + "Link to a board" : "Lien à un tableau", "Maximum file size of {size} exceeded" : "Taille de fichier maximale de {size} dépassée", "You have created a new board {board}" : "Vous avez créé un nouveau tableau {tableau}", "{user} has created a new board {board}" : "{user} a créé un nouveau tableau {board}", @@ -19,58 +20,60 @@ "You have removed {acl} from the board {board}" : "Vous avez supprimé {acl} du tableau {board}", "{user} has removed {acl} from the board {board}" : "{user} a supprimé {acl} du tableau {board}", "You have renamed the board {before} to {board}" : "Vous avez renommé le tableau {before} en {board}", - "{user} has has renamed the board {before} to {board}" : "{user} a renommé le tableau {before} en {board}", + "{user} has renamed the board {before} to {board}" : "{user} a renommé le tableau {before} à {board}", "You have archived the board {board}" : "Vous avez archivé le tableau {board}", "{user} has archived the board {before}" : "{user} a archivé le tableau {before}", - "You have unarchived the board {board}" : "Vous avez archivé le tableau {board}", - "{user} has unarchived the board {before}" : "{user} a archivé le tableau {board}", - "You have created a new stack {stack} on {board}" : "Vous avez créé une nouvelle pile {stack} sur {board}", - "{user} has created a new stack {stack} on {board}" : "{user} a créé une nouvelle pile {stack} sur {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Vous avez renommé la pile {before} en {stack} sur {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} a renommé la pile {before} en {stack} sur {board}", - "You have deleted {stack} on {board}" : "Vous avez supprimé {stack} de {board}", - "{user} has deleted {stack} on {board}" : "{user} a supprimé {stack} de {board}", - "You have created {card} in {stack} on {board}" : "Vous avez créé {card} dans {stack} sur {board}", - "{user} has created {card} in {stack} on {board}" : "{user} a créé {card} dans {stack} sur {board}", - "You have deleted {card} in {stack} on {board}" : "Vous avez supprimé {card} dans {stack} sur {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} a supprimé {card} dans {stack} sur {board}", + "You have unarchived the board {board}" : "Vous avez sorti de l’archive le tableau {board}", + "{user} has unarchived the board {before}" : "{user} a sorti de l’archive le tableau {board}", + "You have created a new stack {stack} on board {board}" : "Vous avez créé une nouvelle pile {stack} sur le tableau {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} a créé une nouvelle pile {stack} sur le tableau {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Vous avez renommé la pile {before} en {stack} sur le tableau {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} a renommé la pile {before} en {stack} sur le tableau {board}", + "You have deleted stack {stack} on board {board}" : "Vous avez supprimé la pile {stack} sur le tableau {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} a supprimé la pile {stack} sur le tableau {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vous avez créé la carte {card} dans la pile {stack} du tableau {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} a créé la carte {card} dans la pile {stack} du tableau {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vous avez supprimé la carte {card} de la pile {stack} du tableau {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} a supprimé la carte {card} de la pile {stack} du tableau {board}", "You have renamed the card {before} to {card}" : "Vous avez renommé la carte {before} en {card}", "{user} has renamed the card {before} to {card}" : "{user} a renommé la carte {before} en {card}", - "You have added a description to {card} in {stack} on {board}" : "Vous avez ajouté une description à {card} dans {stack} sur {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} a ajouté une description à {card} dans {stack} sur {board}", - "You have updated the description of {card} in {stack} on {board}" : "Vous avez mis à jour la description de {card} dans {stack} sur {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} a mis à jour la description de {card} dans {stack} sur {board}", - "You have archived {card} in {stack} on {board}" : "Vous avez archivé {card} dans {stack} sur {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} a archivé {card} dans {stack} sur {board}", - "You have unarchived {card} in {stack} on {board}" : "Vous avez désarchivé {card} dans {stack} sur {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} a désarchivé {card} dans {stack} sur {board}", - "You have removed the due date of {card}" : "Vous avez supprimé la date d'échéance de {card}", - "{user} has removed the due date of {card}" : "{user} a supprimé la date d'échéance de {card}", - "You have set the due date of {card} to {after}" : "Vous avez défini la date d'échéance de {card} à {after}", - "{user} has set the due date of {card} to {after}" : "{user} a défini la date d'échéance de {card} à {after}", - "You have updated the due date of {card} to {after}" : "Vous avez mis à jour la date d'échéance de {card} à {after}", - "{user} has updated the due date of {card} to {after}" : "{user} a mis à jour la date d'échéance de {card} à {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Vous avez ajouté l'étiquette {label} à {card} dans {stack} sur {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} a ajouté l'étiquette {label} à {card} dans {stack} sur {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Vous avez supprimé l'étiquette {label} de {card} dans {stack} sur {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} a supprimé l'étiquette {label} de {card} dans {stack} sur {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Vous avez assigné {assigneduser} à {card} sur {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} a assigné {assigneduser} à {card} sur {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Vous avez retiré {assigneduser} de {card} sur {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} a retiré {assigneduser} de {card} sur {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Vous avez déplacé la carte {card} de {stackBefore} vers {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} a déplacé la carte {card} de {stackBefore} vers {stack}", - "You have added the attachment {attachment} to {card}" : "Vous avez ajouté la pièce jointe {attachment} à {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} a ajouté la pièce jointe {attachment} à {card}", - "You have updated the attachment {attachment} on {card}" : "Vous avez mis à jour la pièce jointe {attachment} de {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} a mis à jour la pièce jointe {attachment} de {card}", - "You have deleted the attachment {attachment} from {card}" : "Vous avez supprimé la pièce jointe {attachment} du tableau {board}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} a supprimé la pièce jointe {attachment} de la carte {card} ", - "You have restored the attachment {attachment} to {card}" : "Vous avez restauré la pièce jointe {attachment} à {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} a restauré la pièce jointe {attachment} à {card}", - "You have commented on {card}" : "Vous avez commenté {card}", - "{user} has commented on {card}" : "{user} a commenté {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Vous avez ajouté une description à la carte {card} de la pile {stack} du tableau {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} a ajouté une description à la carte {card} de la pile {stack} du tableau {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Vous avez mis à jour la description de la carte {card} de la pile {stack} du tableau {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} a mis à jour la description de la carte {card} de la pile {stack} du tableau {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Vous avez archivé la carte {card} de la pile {stack} du tableau {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} a archivé la carte {card} de la pile {stack} du tableau {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Vous avez une carte {card} non-archivée dans la pile {stack} du tableau {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} a une carte {card} non-archivée dans la pile {stack} du tableau {board}", + "You have removed the due date of card {card}" : "Vous avez supprimé la date limite de la carte {card}", + "{user} has removed the due date of card {card}" : "{user} a supprimé la date limite de la carte {card}", + "You have set the due date of card {card} to {after}" : "Vous avez établie la date limite de la carte {card} à {after}", + "{user} has set the due date of card {card} to {after}" : "{user} a établie la date limite de la carte {card} à {after}", + "You have updated the due date of card {card} to {after}" : "Vous avez mis à jour la date limite de la carte {card} à {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} a mis à jour la date limite de la carte {card} à {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Vous avez ajouté l'étiquette {label} à la carte {card} de la pile {stack} du tableau {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} a ajouté l'étiquette {label} à la carte {card} de la pile {stack} du tableau {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Vous avez supprimé l'étiquette {label} de la carte {card} de la pile {stack} du tableau {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} a supprimé l'étiquette {label} de la carte {card} de la pile {stack} du tableau {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Vous avez assigné {assigneduser} à la carte {card} du tableau {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} a assigné {assigneduser} à la carte {card} du tableau {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vous avez désassigner {assigneduser} de la carte {card} du tableau {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} a désassigner {assigneduser} de la carte {card} du tableau {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Vous avez déplacé la carte {card} de la pile {stackBefore} vers {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} a déplacé la carte {card} de la pile {stackBefore} vers {stack}", + "You have added the attachment {attachment} to card {card}" : "Vous avez ajouté la pièce jointe {attachment} à la carte {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} a ajouté la pièce jointe {attachment} à la carte {card}", + "You have updated the attachment {attachment} on card {card}" : "Vous avez mis à jour la pièce jointe {attachment} de la carte {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} a mis à jour la pièce jointe {attachment} de la carte {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vous avez supprimé la pièce jointe {attachment} de la carte {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} a supprimé la pièce jointe {attachment} de la carte {card}", + "You have restored the attachment {attachment} to card {card}" : "Vous avez restauré la pièce jointe {attachment} de la carte {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} a restauré la pièce jointe {attachment} de la carte {card}", + "You have commented on card {card}" : "Vous avez commenté la carte {card}", + "{user} has commented on card {card}" : "{user} a commenté la carte {card}", + "A card description inside the Deck app has been changed" : "La description de la carte présente dans l’application Deck a été modifiée", "Deck" : "Deck", + "Changes in the Deck app" : "Modifications dans Deck app", "Personal" : "Personnel", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La carte \"%s\" de \"%s\" vous a été assignée par %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vous a assigné la carte \"%s\" de \"%s\".", @@ -101,15 +104,18 @@ "No file uploaded or file size exceeds maximum of %s" : "Aucun fichier téléversé ou la taille du fichier dépasse la maximum de %s", "A kanban style project and personal management tool for Nextcloud" : " Un outil de style kanban pour Nextcloud, pour la gestion de votre vie personnelle et de vos projets.", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck est un outil d'organisation de style kanban destiné à la planification personnelle et à l'organisation de projets pour les équipes intégrées à Nextcloud.\n\n\n- 📥 Ajoutez vos tâches à des cartes et organisez-les\n- 📄 Écrivez des notes supplémentaires en Markdown\n- 🔖 Affectez des étiquettes pour une organisation encore meilleure\n- 👥 Partagez avec votre équipe, vos amis ou votre famille\n- 📎 Attachez des fichiers et utilisez les dans vos descriptions en Markdown\n- 💬 Echanger avec votre équipe grâce aux commentaires\n- ⚡ Garder l'oeil sur les modifications dans le flux d'activité\n- 🚀 Organisez vos projets", + "Select the board to link to a project" : "Sélection le tableau pour faire le lien avec un projet.", + "Select board" : "Sélectionner le tableau", "Add a new stack" : "Ajouter une nouvelle pile", "Submit" : "Envoyer", "Show archived cards" : "Afficher les cartes archivées", "Hide archived cards" : "Masquer les cartes archivées", "Toggle compact mode" : "Basculer le mode compact", - "Show board details" : "Montrer les détails du tableau", + "Show board details" : "Afficher les détails du tableau", "All Boards" : "Tous les tableaux", "Archived boards" : "Tableaux archivés", "Share board" : "Partager le tableau", + "Archived cards" : "Cartes archivées", "Actions" : "Actions", "Drop your files here to upload it to the card" : "Déposez vos fichiers ici pour les téléverser sur la carte", "Assign card to me" : "Assignez-moi la carte", @@ -125,13 +131,15 @@ "Deleted items" : "Éléments supprimés", "Timeline" : "Chronologie", "Select users or groups to share with" : "Sélectionnez des utilisateurs ou des groupes avec qui partager", - "Access for" : "Accès pour ", + "Group" : "Groupe", + "Circle" : "Cercle", "No matching user or group found." : "Aucun utilisateur ou groupe correspondant trouvé", "Loading" : "Chargement", - "Share" : "Partager", "Edit" : "Modifier", + "Share" : "Partager", "Manage" : "Gérer", "Discard share" : "Supprimer le partage", + "Sharing has been disabled for your account." : "Le partage a été désactivé pour votre compte.", "Update tag" : "Mettre à jour l'étiquette", "Edit tag" : "Modifier l'étiquette", "Delete tag" : "Supprimer l'étiquette", @@ -145,20 +153,20 @@ "Title" : "Titre", "Members" : "Membres", "More actions" : "Plus d'actions", - "Edit board" : "Modifier le tableau", + "Edit board" : "Modifier le tableau", "Archive board" : "Archiver le tableau", "Unarchive board" : "Ne plus archiver le tableau", "Delete board" : "Supprimer le tableau", "Update board" : "Mettre à jour le tableau", "Reset board" : "Réinitialiser le tableau", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Annuler la suppression du tableau - Autrement le tableau sera supprimé lors du prochain lancement de la tâche cron.", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Annuler la suppression du tableau — Autrement le tableau sera supprimé lors du prochain lancement de la tâche cron.", "Create new board" : "Créer un nouveau tableau", "New board title" : "Nouveau titre pour le tableau", "Create board" : "Créer le tableau", "Select an attachment" : "Sélectionner une pièce jointe", "Cancel upload" : "Annuler le téléversement", "by" : "par", - "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annuler la suppression du fichier - Autrement le fichier sera supprimé lors du prochain lancement de la tâche cron.", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annuler la suppression du fichier — Autrement le fichier sera supprimé lors du prochain lancement de la tâche cron.", "Undo file deletion" : "Annuler la suppression du fichier", "Insert the file into the description" : "Insérer le fichier dans la description", "Delete attachment" : "Supprimer la pièce jointe", @@ -166,7 +174,7 @@ "Created:" : "Créé le :", "Choose a tag" : "Choisir une étiquette", "Add a tag" : "Ajouter une étiquette", - "Select tags" : "Sélectionner les étiquettes", + "Select tags" : "Sélectionner les étiquettes", "Assign users" : "Assigner des utilisateurs", "Choose a user to assign" : "Choisir un utilisateur à assigner", "Assign this card to a user" : "Assigner cette carte à un utilisateur", @@ -183,6 +191,9 @@ "Add a card description…" : "Ajouter une description pour la carte", "Shared boards" : "Tableaux partagés", "Move board to archive" : "Déplacer le tableau vers l'archive", - "Create a new board" : "Créer un nouveau tableau" + "Create a new board" : "Créer un nouveau tableau", + "Settings" : "Paramètres", + "Limit deck to groups" : "Limiter deck aux groupes", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiter le Deck empêchera les utilisateurs ne faisant pas partie de ces groupes de créer leurs propres tableaux. Les utilisateurs pourront toujours travailler sur des tableaux qui ont été partagés avec eux." },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/l10n/gl.js b/l10n/gl.js new file mode 100644 index 000000000..3a375bac7 --- /dev/null +++ b/l10n/gl.js @@ -0,0 +1,201 @@ +OC.L10N.register( + "deck", + { + "Please provide a content for your comment." : "Forneza un contido para ao seu comentario.", + "Posting the comment failed." : "Produciuse un fallo ao publicar o comentario.", + "The comment has been deleted" : "O comentario foi eliminado", + "The associated stack is deleted as well, it will be restored as well." : "A rima asociada tamén se elimina, tamén se restaurará.", + "Restore associated stack" : "Restaurar a rima asociada", + "Remove user from card" : "Elimina o usuario da tarxeta", + "Hours" : "Horas", + "Minutes" : "Minutos", + "Link to a board" : "Ligar a un taboleiro", + "Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}", + "You have created a new board {board}" : "Vostede creou o novo taboleiro {board}", + "{user} has created a new board {board}" : "{user} creou o novo taboleiro {board}", + "You have deleted the board {board}" : "Vostede eliminou o taboleiro {board}", + "{user} has deleted the board {board}" : "{user} eliminou o taboleiro {board}", + "You have restored the board {board}" : "Vostede restaurou o taboleiro {board}", + "{user} has restored the board {board}" : "{user} restaurou o taboleiro {board}", + "You have shared the board {board} with {acl}" : "Vostede compartiu o taboleiro {board} con {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} compartiu o taboleiro {board} con {acl}", + "You have removed {acl} from the board {board}" : "Vostede retirou a {acl} do taboleiro {board}", + "{user} has removed {acl} from the board {board}" : "{user} retirou a {acl} do taboleiro {board}", + "You have renamed the board {before} to {board}" : "Vostede renomeou o taboleiro {before} como {board}", + "{user} has renamed the board {before} to {board}" : "{user} renomeou o taboleiro {before} como {board}", + "You have archived the board {board}" : "Vostede arquivou o taboleiro {board}", + "{user} has archived the board {before}" : "{user} arquivou o taboleiro {before}", + "You have unarchived the board {board}" : "Vostede desarquivou o taboleiro {board}", + "{user} has unarchived the board {before}" : "{user} desarquivou o taboleiro {before}", + "You have created a new stack {stack} on board {board}" : "Vostede creou unha nova rima {stack} no taboleiro {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} creou unha nova rima {stack} no taboleiro {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Vostede renomeou a rima {before} no taboleiro {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} renomeou a rima {before} como {stack} no taboleiro {board}", + "You have deleted stack {stack} on board {board}" : "Vostede eliminou a rima {stack} do taboleiro {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} eliminou a rima {stack} do taboleiro {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vostede creou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} creou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vostede eliminou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} eliminou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have renamed the card {before} to {card}" : "Renomeou a tarxeta {before} a {card}", + "{user} has renamed the card {before} to {card}" : "{user} renomeou a tarxeta {before} a {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Vostede engadiu a descrición á tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} engadiu a descrición á tarxeta {card} na rima {stack} no taboleiro {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Vostede actualizou a descrición da tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} actualizou a descrición da tarxeta {card} na rima {stack} no taboleiro {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Vostede arquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} arquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Vostede desarquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} desarquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have removed the due date of card {card}" : "Vostede retirou a caducidade da tarxeta {card}", + "{user} has removed the due date of card {card}" : "{user} retirou a caducidade da tarxeta {card}", + "You have set the due date of card {card} to {after}" : "Vostede estabeleceu a caducidade da tarxeta {card} a {after}", + "{user} has set the due date of card {card} to {after}" : "{user} estabeleceu a caducidade da tarxeta {card} a {after}", + "You have updated the due date of card {card} to {after}" : "Vostede actualizou a caducidade da tarxeta {card} a {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} actualizou a caducidade da tarxeta {card} a {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Vostede engadiu a etiqueta {label} á tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} engadiu a etiqueta {label} á tarxeta {card} na rima {stack} no taboleiro {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Vostede retirou a etiqueta {label} da tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} retirou a etiqueta {label} da tarxeta {card} na rima {stack} no taboleiro {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Vostede asignou a {assigneduser} á tarxeta {card} no taboleiro {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} asignou a {assigneduser} á tarxeta {card} no taboleiro {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vostede desasignou a {assigneduser} da tarxeta {card} no taboleiro {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} desasignou a {assigneduser} da tarxeta {card} no taboleiro {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Vostede moveu a tarxeta {card} dende a rima {stackBefore} cara a rima {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} moveu a tarxeta {card} dende a rima {stackBefore} cara a rima {stack}", + "You have added the attachment {attachment} to card {card}" : "Vostede engadiu o anexo {attachment} na tarxeta {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} engadiu o anexo {attachment} na tarxeta {card}", + "You have updated the attachment {attachment} on card {card}" : "Vostede actualizou o anexo {attachment} na tarxeta {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} actualizou o anexo {attachment} na tarxeta {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vostede eliminou o anexo {attachment} da tarxeta {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} eliminou o anexo {attachment} da tarxeta {card}", + "You have restored the attachment {attachment} to card {card}" : "Vostede restaurou o anexo {attachment} na tarxeta {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}", + "You have commented on card {card}" : "Vostede comentou na tarxeta {card}", + "{user} has commented on card {card}" : "{user} comentou na tarxeta {card}", + "A card description inside the Deck app has been changed" : "Cambiouse a descripción da tarxeta dentro do aplicativo Deck", + "Deck" : "Deck", + "Changes in the Deck app" : "Cambios no aplicativo Deck", + "Personal" : "Persoal", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} asignoulle a vostede a tarxeta «%s» en «%s».", + "The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» chegou á súa data de caducidade.", + "%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».", + "{user} has mentioned you in a comment on \"%s\"." : "{user} mencionouno a vostede nun comentario en «%s».", + "The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.", + "{user} has shared the board %s with you." : "{user} compartiu o taboleiro %s con vostede.", + "No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.", + "Finished" : "Rematado", + "To review" : "Para revisar", + "Action needed" : "Necesita atención", + "Later" : "Despois", + "To do" : "Para facer", + "Doing" : "Facendo", + "Done" : "Feito", + "Example Task 3" : "Tarefa de exemplo 3", + "Example Task 2" : "Tarefa de exemplo 2", + "Example Task 1" : "Tarefa de exemplo 1", + "The file was uploaded" : "O ficheiro foi enviado", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O ficheiro enviado excede a directiva indicada por upload_max_filesize de php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O ficheiro enviado excede da directiva MAX_FILE_SIZE especificada no formulario HTML", + "The file was only partially uploaded" : "O ficheiro só foi parcialmente enviado", + "No file was uploaded" : "Non se enviou ningún ficheiro", + "Missing a temporary folder" : "Falta un cartafol temporal", + "Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco", + "A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros", + "No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s", + "A kanban style project and personal management tool for Nextcloud" : "Un proxecto estilo kanban e unha ferramenta de xestión persoal para o Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado", + "Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto", + "Select board" : "Seleccionar taboleiro", + "Add a new stack" : "Engadir unha nova rima", + "Submit" : "Enviar", + "Show archived cards" : "Amosar as tarxetas arquivadas", + "Hide archived cards" : "Agachar as tarxetas arquivadas", + "Toggle compact mode" : "Alternar o modo compacto", + "Show board details" : "Amosar os detalles do taboleiro", + "All Boards" : "Todos os taboleiros", + "Archived boards" : "Taboleiros arquivados", + "Share board" : "Comparte taboleiro", + "Archived cards" : "Tarxetas arquivadas", + "Actions" : "Accións", + "Drop your files here to upload it to the card" : "Solte aquí os seus ficheiros para envialos á tarxeta", + "Assign card to me" : "Asignarme a tarxeta", + "Unassign card from me" : "Desasignarme tarxeta", + "Archive card" : "Arquivar a tarxeta", + "Unarchive card" : "Desarquivar a tarxeta", + "Delete card" : "Eliminar tarxeta", + "Enter a card title" : "Introduza o título da tarxeta", + "Add card" : "Engadir tarxeta", + "Close" : "Pechar", + "Sharing" : "Compartindo", + "Tags" : "Etiquetas", + "Deleted items" : "Elementos eliminados", + "Timeline" : "Liña temporal", + "Select users or groups to share with" : "Seleccionar usuarios ou grupos cos que compartir", + "Group" : "Grupo", + "Circle" : "Círculo", + "No matching user or group found." : "Non se atoparon coincidencias de usuarios ou grupos.", + "Loading" : "Cargando", + "Edit" : "Editar", + "Share" : "Compartir", + "Manage" : "Xestionar", + "Discard share" : "Desbotar recurso compartido", + "Sharing has been disabled for your account." : "A compartición foi desactivada na súa conta.", + "Update tag" : "Actualizar etiqueta", + "Edit tag" : "Editar etiqueta", + "Delete tag" : "Eliminar etiqueta", + "Create" : "Crear", + "Create a new tag" : "Crear unha nova etiqueta", + "Deleted stacks" : "Eliminar rimas", + "Deleted cards" : "Eliminar tarxetas", + "Status" : "Estado", + "No archived boards to display" : "Non hai taboleiros arquivados para amosar", + "No shared boards to display" : "Non hai taboleiros compartidos para amosar", + "Title" : "Titulo", + "Members" : "Membros", + "More actions" : "Máis accións", + "Edit board" : "Editar taboleiro", + "Archive board" : "Arquivar taboleiro", + "Unarchive board" : "Desarquivar taboleiro", + "Delete board" : "Eliminar taboleiro", + "Update board" : "Actualizar taboleiro", + "Reset board" : "Restabelecer taboleiro", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Desfacer a eliminación da tarxeta — De non ser así, o taboleiro será eliminado durante a seguinte execución de cronjob.", + "Create new board" : "Crear un novo taboleiro", + "New board title" : "Novo título do taboleiro", + "Create board" : "Crear taboleiro", + "Select an attachment" : "Seleccione un anexo", + "Cancel upload" : "Cancelar o envío", + "by" : "por", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Desfacer a eliminación do ficheiro — De non ser así, o ficheiro eliminarase durante a seguinte operación de cronjob.", + "Undo file deletion" : "Desfacer a eliminación do ficheiro", + "Insert the file into the description" : "Inserir o ficheiro na descrición", + "Delete attachment" : "Eliminar anexo", + "Modified:" : "Modificado:", + "Created:" : "Creado:", + "Choose a tag" : "Escolla unha etiqueta", + "Add a tag" : "Engadir unha etiqueta", + "Select tags" : "Seleccionar etiquetas", + "Assign users" : "Asignar usuarios", + "Choose a user to assign" : "Escolla un usuario para asignar", + "Assign this card to a user" : "Asignar esta tarxeta a un usuario", + "Due date" : "Data de caducidade", + "Click to set" : "Prema para estabelecer", + "Remove due date" : "Retirar a data de caducidade", + "Description" : "Descrición", + "Attachments" : "Anexos", + "Saved" : "Gardado", + "Unsaved changes" : "Cambios sen gardar", + "Insert attachment" : "Inserir o anexo", + "Formatting help" : "Axuda de formato", + "Upload attachment" : "Enviar anexos", + "Add a card description…" : "Engadir unha descrición da tarxeta…", + "Shared boards" : "Taboleiros compartidos", + "Move board to archive" : "Mover o taboleiro para o arquivo", + "Create a new board" : "Crear un novo taboleiro", + "Settings" : "Axustes", + "Limit deck to groups" : "Limitar Deck a grupos ", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/gl.json b/l10n/gl.json new file mode 100644 index 000000000..3e79c1854 --- /dev/null +++ b/l10n/gl.json @@ -0,0 +1,199 @@ +{ "translations": { + "Please provide a content for your comment." : "Forneza un contido para ao seu comentario.", + "Posting the comment failed." : "Produciuse un fallo ao publicar o comentario.", + "The comment has been deleted" : "O comentario foi eliminado", + "The associated stack is deleted as well, it will be restored as well." : "A rima asociada tamén se elimina, tamén se restaurará.", + "Restore associated stack" : "Restaurar a rima asociada", + "Remove user from card" : "Elimina o usuario da tarxeta", + "Hours" : "Horas", + "Minutes" : "Minutos", + "Link to a board" : "Ligar a un taboleiro", + "Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}", + "You have created a new board {board}" : "Vostede creou o novo taboleiro {board}", + "{user} has created a new board {board}" : "{user} creou o novo taboleiro {board}", + "You have deleted the board {board}" : "Vostede eliminou o taboleiro {board}", + "{user} has deleted the board {board}" : "{user} eliminou o taboleiro {board}", + "You have restored the board {board}" : "Vostede restaurou o taboleiro {board}", + "{user} has restored the board {board}" : "{user} restaurou o taboleiro {board}", + "You have shared the board {board} with {acl}" : "Vostede compartiu o taboleiro {board} con {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} compartiu o taboleiro {board} con {acl}", + "You have removed {acl} from the board {board}" : "Vostede retirou a {acl} do taboleiro {board}", + "{user} has removed {acl} from the board {board}" : "{user} retirou a {acl} do taboleiro {board}", + "You have renamed the board {before} to {board}" : "Vostede renomeou o taboleiro {before} como {board}", + "{user} has renamed the board {before} to {board}" : "{user} renomeou o taboleiro {before} como {board}", + "You have archived the board {board}" : "Vostede arquivou o taboleiro {board}", + "{user} has archived the board {before}" : "{user} arquivou o taboleiro {before}", + "You have unarchived the board {board}" : "Vostede desarquivou o taboleiro {board}", + "{user} has unarchived the board {before}" : "{user} desarquivou o taboleiro {before}", + "You have created a new stack {stack} on board {board}" : "Vostede creou unha nova rima {stack} no taboleiro {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} creou unha nova rima {stack} no taboleiro {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Vostede renomeou a rima {before} no taboleiro {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} renomeou a rima {before} como {stack} no taboleiro {board}", + "You have deleted stack {stack} on board {board}" : "Vostede eliminou a rima {stack} do taboleiro {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} eliminou a rima {stack} do taboleiro {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vostede creou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} creou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vostede eliminou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} eliminou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have renamed the card {before} to {card}" : "Renomeou a tarxeta {before} a {card}", + "{user} has renamed the card {before} to {card}" : "{user} renomeou a tarxeta {before} a {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Vostede engadiu a descrición á tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} engadiu a descrición á tarxeta {card} na rima {stack} no taboleiro {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Vostede actualizou a descrición da tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} actualizou a descrición da tarxeta {card} na rima {stack} no taboleiro {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Vostede arquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} arquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Vostede desarquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} desarquivou a tarxeta {card} na rima {stack} no taboleiro {board}", + "You have removed the due date of card {card}" : "Vostede retirou a caducidade da tarxeta {card}", + "{user} has removed the due date of card {card}" : "{user} retirou a caducidade da tarxeta {card}", + "You have set the due date of card {card} to {after}" : "Vostede estabeleceu a caducidade da tarxeta {card} a {after}", + "{user} has set the due date of card {card} to {after}" : "{user} estabeleceu a caducidade da tarxeta {card} a {after}", + "You have updated the due date of card {card} to {after}" : "Vostede actualizou a caducidade da tarxeta {card} a {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} actualizou a caducidade da tarxeta {card} a {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Vostede engadiu a etiqueta {label} á tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} engadiu a etiqueta {label} á tarxeta {card} na rima {stack} no taboleiro {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Vostede retirou a etiqueta {label} da tarxeta {card} na rima {stack} no taboleiro {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} retirou a etiqueta {label} da tarxeta {card} na rima {stack} no taboleiro {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Vostede asignou a {assigneduser} á tarxeta {card} no taboleiro {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} asignou a {assigneduser} á tarxeta {card} no taboleiro {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vostede desasignou a {assigneduser} da tarxeta {card} no taboleiro {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} desasignou a {assigneduser} da tarxeta {card} no taboleiro {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Vostede moveu a tarxeta {card} dende a rima {stackBefore} cara a rima {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} moveu a tarxeta {card} dende a rima {stackBefore} cara a rima {stack}", + "You have added the attachment {attachment} to card {card}" : "Vostede engadiu o anexo {attachment} na tarxeta {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} engadiu o anexo {attachment} na tarxeta {card}", + "You have updated the attachment {attachment} on card {card}" : "Vostede actualizou o anexo {attachment} na tarxeta {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} actualizou o anexo {attachment} na tarxeta {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vostede eliminou o anexo {attachment} da tarxeta {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} eliminou o anexo {attachment} da tarxeta {card}", + "You have restored the attachment {attachment} to card {card}" : "Vostede restaurou o anexo {attachment} na tarxeta {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}", + "You have commented on card {card}" : "Vostede comentou na tarxeta {card}", + "{user} has commented on card {card}" : "{user} comentou na tarxeta {card}", + "A card description inside the Deck app has been changed" : "Cambiouse a descripción da tarxeta dentro do aplicativo Deck", + "Deck" : "Deck", + "Changes in the Deck app" : "Cambios no aplicativo Deck", + "Personal" : "Persoal", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} asignoulle a vostede a tarxeta «%s» en «%s».", + "The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» chegou á súa data de caducidade.", + "%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».", + "{user} has mentioned you in a comment on \"%s\"." : "{user} mencionouno a vostede nun comentario en «%s».", + "The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.", + "{user} has shared the board %s with you." : "{user} compartiu o taboleiro %s con vostede.", + "No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.", + "Finished" : "Rematado", + "To review" : "Para revisar", + "Action needed" : "Necesita atención", + "Later" : "Despois", + "To do" : "Para facer", + "Doing" : "Facendo", + "Done" : "Feito", + "Example Task 3" : "Tarefa de exemplo 3", + "Example Task 2" : "Tarefa de exemplo 2", + "Example Task 1" : "Tarefa de exemplo 1", + "The file was uploaded" : "O ficheiro foi enviado", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O ficheiro enviado excede a directiva indicada por upload_max_filesize de php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O ficheiro enviado excede da directiva MAX_FILE_SIZE especificada no formulario HTML", + "The file was only partially uploaded" : "O ficheiro só foi parcialmente enviado", + "No file was uploaded" : "Non se enviou ningún ficheiro", + "Missing a temporary folder" : "Falta un cartafol temporal", + "Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco", + "A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros", + "No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s", + "A kanban style project and personal management tool for Nextcloud" : "Un proxecto estilo kanban e unha ferramenta de xestión persoal para o Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado", + "Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto", + "Select board" : "Seleccionar taboleiro", + "Add a new stack" : "Engadir unha nova rima", + "Submit" : "Enviar", + "Show archived cards" : "Amosar as tarxetas arquivadas", + "Hide archived cards" : "Agachar as tarxetas arquivadas", + "Toggle compact mode" : "Alternar o modo compacto", + "Show board details" : "Amosar os detalles do taboleiro", + "All Boards" : "Todos os taboleiros", + "Archived boards" : "Taboleiros arquivados", + "Share board" : "Comparte taboleiro", + "Archived cards" : "Tarxetas arquivadas", + "Actions" : "Accións", + "Drop your files here to upload it to the card" : "Solte aquí os seus ficheiros para envialos á tarxeta", + "Assign card to me" : "Asignarme a tarxeta", + "Unassign card from me" : "Desasignarme tarxeta", + "Archive card" : "Arquivar a tarxeta", + "Unarchive card" : "Desarquivar a tarxeta", + "Delete card" : "Eliminar tarxeta", + "Enter a card title" : "Introduza o título da tarxeta", + "Add card" : "Engadir tarxeta", + "Close" : "Pechar", + "Sharing" : "Compartindo", + "Tags" : "Etiquetas", + "Deleted items" : "Elementos eliminados", + "Timeline" : "Liña temporal", + "Select users or groups to share with" : "Seleccionar usuarios ou grupos cos que compartir", + "Group" : "Grupo", + "Circle" : "Círculo", + "No matching user or group found." : "Non se atoparon coincidencias de usuarios ou grupos.", + "Loading" : "Cargando", + "Edit" : "Editar", + "Share" : "Compartir", + "Manage" : "Xestionar", + "Discard share" : "Desbotar recurso compartido", + "Sharing has been disabled for your account." : "A compartición foi desactivada na súa conta.", + "Update tag" : "Actualizar etiqueta", + "Edit tag" : "Editar etiqueta", + "Delete tag" : "Eliminar etiqueta", + "Create" : "Crear", + "Create a new tag" : "Crear unha nova etiqueta", + "Deleted stacks" : "Eliminar rimas", + "Deleted cards" : "Eliminar tarxetas", + "Status" : "Estado", + "No archived boards to display" : "Non hai taboleiros arquivados para amosar", + "No shared boards to display" : "Non hai taboleiros compartidos para amosar", + "Title" : "Titulo", + "Members" : "Membros", + "More actions" : "Máis accións", + "Edit board" : "Editar taboleiro", + "Archive board" : "Arquivar taboleiro", + "Unarchive board" : "Desarquivar taboleiro", + "Delete board" : "Eliminar taboleiro", + "Update board" : "Actualizar taboleiro", + "Reset board" : "Restabelecer taboleiro", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Desfacer a eliminación da tarxeta — De non ser así, o taboleiro será eliminado durante a seguinte execución de cronjob.", + "Create new board" : "Crear un novo taboleiro", + "New board title" : "Novo título do taboleiro", + "Create board" : "Crear taboleiro", + "Select an attachment" : "Seleccione un anexo", + "Cancel upload" : "Cancelar o envío", + "by" : "por", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Desfacer a eliminación do ficheiro — De non ser así, o ficheiro eliminarase durante a seguinte operación de cronjob.", + "Undo file deletion" : "Desfacer a eliminación do ficheiro", + "Insert the file into the description" : "Inserir o ficheiro na descrición", + "Delete attachment" : "Eliminar anexo", + "Modified:" : "Modificado:", + "Created:" : "Creado:", + "Choose a tag" : "Escolla unha etiqueta", + "Add a tag" : "Engadir unha etiqueta", + "Select tags" : "Seleccionar etiquetas", + "Assign users" : "Asignar usuarios", + "Choose a user to assign" : "Escolla un usuario para asignar", + "Assign this card to a user" : "Asignar esta tarxeta a un usuario", + "Due date" : "Data de caducidade", + "Click to set" : "Prema para estabelecer", + "Remove due date" : "Retirar a data de caducidade", + "Description" : "Descrición", + "Attachments" : "Anexos", + "Saved" : "Gardado", + "Unsaved changes" : "Cambios sen gardar", + "Insert attachment" : "Inserir o anexo", + "Formatting help" : "Axuda de formato", + "Upload attachment" : "Enviar anexos", + "Add a card description…" : "Engadir unha descrición da tarxeta…", + "Shared boards" : "Taboleiros compartidos", + "Move board to archive" : "Mover o taboleiro para o arquivo", + "Create a new board" : "Crear un novo taboleiro", + "Settings" : "Axustes", + "Limit deck to groups" : "Limitar Deck a grupos ", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/l10n/he.js b/l10n/he.js index eed17ed7c..87bcd8fe7 100644 --- a/l10n/he.js +++ b/l10n/he.js @@ -37,11 +37,10 @@ OC.L10N.register( "Sharing" : "שיתוף", "Tags" : "תגיות", "Select users or groups to share with" : "נא לבחור משתמשים או קבוצות לשתף אתם", - "Access for" : "גישה לטובת", "No matching user or group found." : "לא נמצא משתמש או קבוצה.", "Loading" : "בטעינה", - "Share" : "שיתוף", "Edit" : "עריכה", + "Share" : "שיתוף", "Manage" : "ניהול", "Discard share" : "התעלמות משיתוף", "Create" : "יצירה", diff --git a/l10n/he.json b/l10n/he.json index b4072be06..0e345fb15 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -35,11 +35,10 @@ "Sharing" : "שיתוף", "Tags" : "תגיות", "Select users or groups to share with" : "נא לבחור משתמשים או קבוצות לשתף אתם", - "Access for" : "גישה לטובת", "No matching user or group found." : "לא נמצא משתמש או קבוצה.", "Loading" : "בטעינה", - "Share" : "שיתוף", "Edit" : "עריכה", + "Share" : "שיתוף", "Manage" : "ניהול", "Discard share" : "התעלמות משיתוף", "Create" : "יצירה", diff --git a/l10n/hu.js b/l10n/hu.js index 59b02bcea..b06bd73f0 100644 --- a/l10n/hu.js +++ b/l10n/hu.js @@ -1,44 +1,152 @@ OC.L10N.register( "deck", { - "The comment has been deleted" : "A hozzászólás törlésre került.", + "Please provide a content for your comment." : "Adja meg a hozzászólás tartalmát.", + "Posting the comment failed." : "A hozzászólás közzététele sikertelen.", + "The comment has been deleted" : "A hozzászólás törlésre került", + "The associated stack is deleted as well, it will be restored as well." : "A kapcsolódó rakás is törölt, az is vissza lesz állítva.", + "Restore associated stack" : "Kapcsolódó rakás visszaállítása", "Remove user from card" : "Felhasználó eltávolítása a kártyáról", "Hours" : "Óra", "Minutes" : "Perc", - "Deck" : "Pult", + "Maximum file size of {size} exceeded" : "A legnagyobb fájlméret ({size}) túllépve", + "You have created a new board {board}" : "Létrehozta az új {board} táblát", + "{user} has created a new board {board}" : "{user} létrehozta az új {board} táblát", + "You have deleted the board {board}" : "Törölte a(z) {board} táblát", + "{user} has deleted the board {board}" : "{user} törölte a(z) {board} táblát", + "You have restored the board {board}" : "Visszaállította a(z) {board} táblát", + "{user} has restored the board {board}" : "{user} visszaállította a(z) {board} táblát", + "You have shared the board {board} with {acl}" : "Megosztotta a(z) {board} táblát a következővel: {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} megosztotta a(z) {board} táblát a következővel: {sharee}", + "You have removed {acl} from the board {board}" : "Eltávolította a következőt a(z) {board} táblától: {acl}", + "{user} has removed {acl} from the board {board}" : "{user} eltávolította a következőt a(z) {board} táblától: {acl}", + "You have renamed the board {before} to {board}" : "Átnevezte a(z) {before} táblát erre: {board}", + "{user} has renamed the board {before} to {board}" : "{user} átnevezte a(z) {before} táblát erre: {board}", + "You have archived the board {board}" : "Archiválta a(z) {board} táblát", + "{user} has archived the board {before}" : "{user} archiválta a(z) {before} táblát", + "You have unarchived the board {board}" : "Visszavonta a(z) {board} tábla archiválását", + "{user} has unarchived the board {before}" : "{user} visszavonta a(z) {board} tábla archiválását", + "You have created a new stack {stack} on board {board}" : "Létrehozta az új {stack} rakást a(z) {board} táblán", + "{user} has created a new stack {stack} on board {board}" : "{user} létrehozta az új {stack} rakást a(z) {board} táblán", + "You have renamed stack {before} to {stack} on board {board}" : "Átnevezte a(z) {board} tábla {before} rakását erre: {stack}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} átnevezte a(z) {board} táblát {before} rakását erre: {stack}", + "You have deleted stack {stack} on board {board}" : "Törölte a(z) {stack} rakást a(z) {board} tábláról", + "{user} has deleted stack {stack} on board {board}" : "{user} törölte a(z) {stack} rakást a(z) {board} tábláról", + "You have created card {card} in stack {stack} on board {board}" : "Létrehozta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} létrehozta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "You have deleted card {card} in stack {stack} on board {board}" : "Törölte a(z) {card} kártyát a(z) {stack} rakásból, a(z) {board} táblán", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} törölte a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "You have renamed the card {before} to {card}" : "Átnevezte a(z) {before} kártyát erre: {card}", + "{user} has renamed the card {before} to {card}" : "{user} átnevezte a(z) {before} kártyát erre: {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Leírást adott hozzá a(z) {card} kártyához a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} leírást adott hozzá a(z) {card} kártyához a(z) {stack} rakásban, a(z) {board} táblán", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Frissítette a(z) {card} kártya leírását a(z) {stack} rakásban, a(z) {board} táblán", + "You have archived card {card} in stack {stack} on board {board}" : "Archiválta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} archiválta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "You have unarchived card {card} in stack {stack} on board {board}" : "Visszavonta a(z) {card} kártya archiválását a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} visszavonta a(z) {card} kártya archiválását a(z) {stack} rakásban, a(z) {board} táblán", + "You have removed the due date of card {card}" : "Eltávolította a(z) {card} kártya esedékességét", + "{user} has removed the due date of card {card}" : "{user} eltávolította a(z) {card} kártya esedékességét", + "You have set the due date of card {card} to {after}" : "Beállította a(z) {card} kártya esedékességét", + "{user} has set the due date of card {card} to {after}" : "{user} beállította a(z) {card} kártya esedékességét", + "You have updated the due date of card {card} to {after}" : "Frissítette a(z) {card} kártya esedékességét erre: {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} frissítette a(z) {card} kártya esedékességét erre: {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Hozzáadta a(z) {label} címkét a(z) {card} kártyához, a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hozzáadta a(z) {label} címkét a(z) {card} kártyához, a(z) {stack} rakásban, a(z) {board} táblán", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Eltávolította a(z) {label} címkét a(z) {card} kártyáról, a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} eltávolította a(z) {label} címkét a(z) {card} kártyáról, a(z) {stack} rakásban, a(z) {board} táblán", + "You have assigned {assigneduser} to card {card} on board {board}" : "Hozzárendelte a(z) {card} kártyát a(z) {board} táblán a következőhöz: {assigneduser}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hozzárendelte a(z) {card} kártyát a(z) {board} táblán a következőhöz: {assigneduser}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Eltávolította a(z) {card} kártyát a(z) {board} táblán a következőtől: {assigneduser}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} eltávolította a(z) {card} kártyát a(z) {board} táblán a következőtől: {assigneduser}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Áthelyezte a(z) {card} kártyát a(z) {stackBefore} rakásból a(z) {stack} rakásba", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} áthelyezte a(z) {card} kártyát a(z) {stackBefore} rakásból a(z) {stack} rakásba", + "You have added the attachment {attachment} to card {card}" : "Hozzáadta a(z) {attachment} mellékletet a(z) {card} kártyához", + "{user} has added the attachment {attachment} to card {card}" : "{user} hozzáadta a(z) {attachment} mellékletet a(z) {card} kártyához", + "You have updated the attachment {attachment} on card {card}" : "Frissítette a(z) {attachment} mellékletet a(z) {card} kártyánál", + "{user} has updated the attachment {attachment} to card {card}" : "{user} frissítette a(z) {attachment} mellékletet a(z) {card} kártyánál", + "You have deleted the attachment {attachment} from card {card}" : "Eltávolította a(z) {attachment} mellékletet a(z) {card} kártyáról", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} eltávolította a(z) {attachment} mellékletet a(z) {card} kártyáról", + "You have restored the attachment {attachment} to card {card}" : "Visszaállította a(z) {attachment} mellékletet a(z) {card} kártyánál", + "{user} has restored the attachment {attachment} to card {card}" : "{user} visszaállította a(z) {attachment} mellékletet a(z) {card} kártyánál", + "You have commented on card {card}" : "Hozzászólt a(z) {card} kártyához", + "{user} has commented on card {card}" : "{user} hozzászólt a(z) {card} kártyához", + "A card description inside the Deck app has been changed" : "A kártyaleírás megváltozott a Kártyák alkalmazásban", + "Deck" : "Kártyák", + "Changes in the Deck app" : "Változások a Kártyák alkalmazásban", "Personal" : "Személyes", - "The card \"%s\" on \"%s\" has reached its due date." : "A(z) \"%s\" kártya a(z) \"%s\" táblán a határidejéhez ért.", - "The board \"%s\" has been shared with you by %s." : "A(z) \"%s\" táblát %s osztotta meg veled.", - "{user} has shared the board %s with you." : "{user} felhasználó megosztotta veled a(z) %s táblát.", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "A(z) „%s” kártyát a(z) „%s” táblán %s hozzárendelte Önhöz.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hozzárendelte Önhöz a(z) „%s” kártyát a(z) „%s”.", + "The card \"%s\" on \"%s\" has reached its due date." : "A(z) „%s” kártya a(z) „%s” táblán elérte a határidejét.", + "%s has mentioned you in a comment on \"%s\"." : "%s megemlítette egy hozzászólásban ennél: „%s”.", + "{user} has mentioned you in a comment on \"%s\"." : "{user} megemlítette egy hozzászólásban ennél: „%s”.", + "The board \"%s\" has been shared with you by %s." : "A(z) „%s” táblát %s osztotta meg Önnel.", + "{user} has shared the board %s with you." : "{user} megosztotta Önnel a(z) %s táblát.", + "No data was provided to create an attachment." : "Nincsenek megadva adatok a melléklet létrehozásához.", "Finished" : "Kész", - "To review" : "Áttekinteni", + "To review" : "Áttekintendő", "Action needed" : "Művelet szükséges", "Later" : "Később", + "To do" : "Teendő", + "Doing" : "Folyamatban", + "Done" : "Kész", + "Example Task 3" : "3. példafeladat", + "Example Task 2" : "2. példafeladat", + "Example Task 1" : "1. példafeladat", + "The file was uploaded" : "A fájl fel lett töltve", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "A feltöltött fájl meghaladja a php.ini-ben szereplő upload_max_filesize direktívában megadott méretet", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "A feltöltött fájl meghaladja a HTML űrlapon megadott MAX_FILE_SIZE direktívában meghatározott méretet.", + "The file was only partially uploaded" : "A fájl csak részlegesen lett feltöltve", + "No file was uploaded" : "Nincs feltöltött fájl", + "Missing a temporary folder" : "Átmeneti mappa hiányzik", + "Could not write file to disk" : "Nem lehet a fájlt lemezre írni", + "A PHP extension stopped the file upload" : "A PHP kiterjesztés megállította a fájl feltöltését", + "No file uploaded or file size exceeds maximum of %s" : "Nincs fájl feltöltve, vagy a fájl meghaladja a maximumot: %s", + "A kanban style project and personal management tool for Nextcloud" : "Egy kanban-stílusú projektmenedzsment eszköz a Nextcloudhoz", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "A Kártyák egy kanban-stílusú szervezőeszköz, amely a személyes tervezést és a csapatok projektszervezését célozza, a Nextcloudba integrálva.\n\n\n- 📥 Saját feladatok kártyákhoz adása, és azok sorrendezése\n- 📄 További jegyzetek leírása markdownban\n- 🔖 Címkék hozzárendelése a még jobb rendszerezés miatt\n- 👥 Megosztás a csapattal, barátokkal vagy családdal\n- 📎 Fájlok hozzáadása mellékletként, vagy beágyazás a markdown leírásba\n- 💬 Megbeszélés a csapattal hozzászólások használatával\n- ⚡ A változások követése a tevékenységnaplóban\n- 🚀 Rendszerezze a projektjét", "Add a new stack" : "Új rakás hozzáadása", "Submit" : "Küldés", - "Show archived cards" : "Archív kártyák mutatása", - "Hide archived cards" : "Archív kártyák elrejtése", + "Show archived cards" : "Archivált kártyák megjelenítése", + "Hide archived cards" : "Archivált kártyák elrejtése", + "Toggle compact mode" : "Kompakt mód be/ki", + "Show board details" : "Tábla részleteinek megjelenítése", "All Boards" : "Minden tábla", - "Archived boards" : "Archív táblák", + "Archived boards" : "Archivált táblák", "Share board" : "Tábla megosztása", - "Enter a card title" : "Adj meg egy kártya címet", + "Archived cards" : "Archivált kártyák", + "Actions" : "Műveletek", + "Drop your files here to upload it to the card" : "Dobja ide a fájljait a kártyához feltöltéshez", + "Assign card to me" : "Kártya hozzám rendelése", + "Unassign card from me" : "Kártya elvétele tőlem", + "Archive card" : "Kártya archiválása", + "Unarchive card" : "Kártya archiválásának visszavonása", + "Delete card" : "Kártya törlése", + "Enter a card title" : "Adja meg a kártya címét", "Add card" : "Kártya hozzáadása", "Close" : "Bezárás", "Sharing" : "Megosztás", "Tags" : "Címkék", "Deleted items" : "Törölt elemek", - "Select users or groups to share with" : "Válassz felhasználókat vagy csoportokat a megosztáshoz", - "Access for" : "Hozzáfér", + "Timeline" : "Idővonal", + "Select users or groups to share with" : "Válasszon felhasználókat vagy csoportokat a megosztáshoz", + "Group" : "Csoport", "No matching user or group found." : "Nem található egyező felhasználó vagy csoport.", "Loading" : "Betöltés", - "Share" : "Megosztás", "Edit" : "Szerkesztés", + "Share" : "Megosztás", "Manage" : "Kezelés", - "Discard share" : "Megosztás figyelmen kívül hagyása", + "Discard share" : "Megosztás elvetése", + "Sharing has been disabled for your account." : "A megosztás le lett tiltva a fiókjánál.", + "Update tag" : "Címke frissítése", + "Edit tag" : "Címke szerkesztése", + "Delete tag" : "Címke törlése", "Create" : "Létrehozás", "Create a new tag" : "Új címke létrehozása", + "Deleted stacks" : "Törölt rakások", "Deleted cards" : "Törölt kártyák", "Status" : "Állapot", + "No archived boards to display" : "Nincsenek megjeleníthető archivált táblák", + "No shared boards to display" : "Nincsenek megjeleníthető megosztott táblák", "Title" : "Cím", "Members" : "Tagok", "More actions" : "További műveletek", @@ -46,34 +154,43 @@ OC.L10N.register( "Archive board" : "Tábla archiválása", "Unarchive board" : "Tábla archiválásának visszavonása", "Delete board" : "Tábla törlése", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Táblatörlés visszavonása - Egyébként a tábla a következő időzített folyamatfutáskor törlődik.", - "Create new board" : "Új tábla", + "Update board" : "Tábla frissítése", + "Reset board" : "Tábla visszaállítás", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Táblatörlés visszavonása – Egyébként a tábla az időzített feladat következő futásakor törlődik.", + "Create new board" : "Új tábla létrehozása", "New board title" : "Új tábla címe", - "Select an attachment" : "Melléklet kiválasztása", - "by" : "tőle: ", + "Create board" : "Tábla létrehozása", + "Select an attachment" : "Válasszon egy mellékletet", + "Cancel upload" : "Feltöltés megszakítása", + "by" : "tőle:", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Fájltörlés visszavonása – Egyébként a fájl az időzített feladat következő futásakor törlődik.", "Undo file deletion" : "Fájltörlés visszavonása", - "Insert the file into the description" : "Illeszd be a fájlt a leírásba", + "Insert the file into the description" : "Illessze be a fájlt a leírásba", + "Delete attachment" : "Melléklet törlése", "Modified:" : "Módosítva:", "Created:" : "Létrehozva:", - "Choose a tag" : "Válassz címkét", + "Choose a tag" : "Válasszon címkét", "Add a tag" : "Címke hozzáadása", "Select tags" : "Címkék kiválasztása", - "Assign users" : "Felhasználók kijelölése", - "Choose a user to assign" : "Válassz felhasználót a hozzárendeléshez", + "Assign users" : "Felhasználók hozzárendelése", + "Choose a user to assign" : "Válasszon egy hozzárendelendő felhasználót", "Assign this card to a user" : "Ezen kártya felhasználóhoz rendelése", "Due date" : "Határidő", - "Click to set" : "Kattints a beállításhoz", + "Click to set" : "Kattintson a beállításhoz", "Remove due date" : "Határidő eltávolítása", "Description" : "Leírás", "Attachments" : "Mellékletek", "Saved" : "Elmentve", "Unsaved changes" : "Mentetlen változtatások", - "Insert attachment" : "Melléklet beillesztése", + "Insert attachment" : "Melléklet beszúrása", "Formatting help" : "Formázási segítség", "Upload attachment" : "Melléklet feltöltése", - "Add a card description…" : "Adj hozzá kártya leírást...", + "Add a card description…" : "Adjon hozzá egy kártyaleírást…", "Shared boards" : "Megosztott táblák", - "Move board to archive" : "Tábla mozgatása archívumba", - "Create a new board" : "Új tábla létrehozása" + "Move board to archive" : "Tábla áthelyezése az archívumba", + "Create a new board" : "Új tábla létrehozása", + "Settings" : "Beállítások", + "Limit deck to groups" : "A Kártyák csoportokra korlátozása", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "A Kártyák korlátozása blokkolja a saját táblák létrehozását azoknál a felhasználóknál, akik nem tagjai a megadott csoportoknak. A felhasználók továbbra is tudnak dolgozni a velük megosztott táblákon." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/hu.json b/l10n/hu.json index d493f1501..53182de6c 100644 --- a/l10n/hu.json +++ b/l10n/hu.json @@ -1,42 +1,150 @@ { "translations": { - "The comment has been deleted" : "A hozzászólás törlésre került.", + "Please provide a content for your comment." : "Adja meg a hozzászólás tartalmát.", + "Posting the comment failed." : "A hozzászólás közzététele sikertelen.", + "The comment has been deleted" : "A hozzászólás törlésre került", + "The associated stack is deleted as well, it will be restored as well." : "A kapcsolódó rakás is törölt, az is vissza lesz állítva.", + "Restore associated stack" : "Kapcsolódó rakás visszaállítása", "Remove user from card" : "Felhasználó eltávolítása a kártyáról", "Hours" : "Óra", "Minutes" : "Perc", - "Deck" : "Pult", + "Maximum file size of {size} exceeded" : "A legnagyobb fájlméret ({size}) túllépve", + "You have created a new board {board}" : "Létrehozta az új {board} táblát", + "{user} has created a new board {board}" : "{user} létrehozta az új {board} táblát", + "You have deleted the board {board}" : "Törölte a(z) {board} táblát", + "{user} has deleted the board {board}" : "{user} törölte a(z) {board} táblát", + "You have restored the board {board}" : "Visszaállította a(z) {board} táblát", + "{user} has restored the board {board}" : "{user} visszaállította a(z) {board} táblát", + "You have shared the board {board} with {acl}" : "Megosztotta a(z) {board} táblát a következővel: {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} megosztotta a(z) {board} táblát a következővel: {sharee}", + "You have removed {acl} from the board {board}" : "Eltávolította a következőt a(z) {board} táblától: {acl}", + "{user} has removed {acl} from the board {board}" : "{user} eltávolította a következőt a(z) {board} táblától: {acl}", + "You have renamed the board {before} to {board}" : "Átnevezte a(z) {before} táblát erre: {board}", + "{user} has renamed the board {before} to {board}" : "{user} átnevezte a(z) {before} táblát erre: {board}", + "You have archived the board {board}" : "Archiválta a(z) {board} táblát", + "{user} has archived the board {before}" : "{user} archiválta a(z) {before} táblát", + "You have unarchived the board {board}" : "Visszavonta a(z) {board} tábla archiválását", + "{user} has unarchived the board {before}" : "{user} visszavonta a(z) {board} tábla archiválását", + "You have created a new stack {stack} on board {board}" : "Létrehozta az új {stack} rakást a(z) {board} táblán", + "{user} has created a new stack {stack} on board {board}" : "{user} létrehozta az új {stack} rakást a(z) {board} táblán", + "You have renamed stack {before} to {stack} on board {board}" : "Átnevezte a(z) {board} tábla {before} rakását erre: {stack}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} átnevezte a(z) {board} táblát {before} rakását erre: {stack}", + "You have deleted stack {stack} on board {board}" : "Törölte a(z) {stack} rakást a(z) {board} tábláról", + "{user} has deleted stack {stack} on board {board}" : "{user} törölte a(z) {stack} rakást a(z) {board} tábláról", + "You have created card {card} in stack {stack} on board {board}" : "Létrehozta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} létrehozta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "You have deleted card {card} in stack {stack} on board {board}" : "Törölte a(z) {card} kártyát a(z) {stack} rakásból, a(z) {board} táblán", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} törölte a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "You have renamed the card {before} to {card}" : "Átnevezte a(z) {before} kártyát erre: {card}", + "{user} has renamed the card {before} to {card}" : "{user} átnevezte a(z) {before} kártyát erre: {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Leírást adott hozzá a(z) {card} kártyához a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} leírást adott hozzá a(z) {card} kártyához a(z) {stack} rakásban, a(z) {board} táblán", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Frissítette a(z) {card} kártya leírását a(z) {stack} rakásban, a(z) {board} táblán", + "You have archived card {card} in stack {stack} on board {board}" : "Archiválta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} archiválta a(z) {card} kártyát a(z) {stack} rakásban, a(z) {board} táblán", + "You have unarchived card {card} in stack {stack} on board {board}" : "Visszavonta a(z) {card} kártya archiválását a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} visszavonta a(z) {card} kártya archiválását a(z) {stack} rakásban, a(z) {board} táblán", + "You have removed the due date of card {card}" : "Eltávolította a(z) {card} kártya esedékességét", + "{user} has removed the due date of card {card}" : "{user} eltávolította a(z) {card} kártya esedékességét", + "You have set the due date of card {card} to {after}" : "Beállította a(z) {card} kártya esedékességét", + "{user} has set the due date of card {card} to {after}" : "{user} beállította a(z) {card} kártya esedékességét", + "You have updated the due date of card {card} to {after}" : "Frissítette a(z) {card} kártya esedékességét erre: {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} frissítette a(z) {card} kártya esedékességét erre: {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Hozzáadta a(z) {label} címkét a(z) {card} kártyához, a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} hozzáadta a(z) {label} címkét a(z) {card} kártyához, a(z) {stack} rakásban, a(z) {board} táblán", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Eltávolította a(z) {label} címkét a(z) {card} kártyáról, a(z) {stack} rakásban, a(z) {board} táblán", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} eltávolította a(z) {label} címkét a(z) {card} kártyáról, a(z) {stack} rakásban, a(z) {board} táblán", + "You have assigned {assigneduser} to card {card} on board {board}" : "Hozzárendelte a(z) {card} kártyát a(z) {board} táblán a következőhöz: {assigneduser}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} hozzárendelte a(z) {card} kártyát a(z) {board} táblán a következőhöz: {assigneduser}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Eltávolította a(z) {card} kártyát a(z) {board} táblán a következőtől: {assigneduser}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} eltávolította a(z) {card} kártyát a(z) {board} táblán a következőtől: {assigneduser}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Áthelyezte a(z) {card} kártyát a(z) {stackBefore} rakásból a(z) {stack} rakásba", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} áthelyezte a(z) {card} kártyát a(z) {stackBefore} rakásból a(z) {stack} rakásba", + "You have added the attachment {attachment} to card {card}" : "Hozzáadta a(z) {attachment} mellékletet a(z) {card} kártyához", + "{user} has added the attachment {attachment} to card {card}" : "{user} hozzáadta a(z) {attachment} mellékletet a(z) {card} kártyához", + "You have updated the attachment {attachment} on card {card}" : "Frissítette a(z) {attachment} mellékletet a(z) {card} kártyánál", + "{user} has updated the attachment {attachment} to card {card}" : "{user} frissítette a(z) {attachment} mellékletet a(z) {card} kártyánál", + "You have deleted the attachment {attachment} from card {card}" : "Eltávolította a(z) {attachment} mellékletet a(z) {card} kártyáról", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} eltávolította a(z) {attachment} mellékletet a(z) {card} kártyáról", + "You have restored the attachment {attachment} to card {card}" : "Visszaállította a(z) {attachment} mellékletet a(z) {card} kártyánál", + "{user} has restored the attachment {attachment} to card {card}" : "{user} visszaállította a(z) {attachment} mellékletet a(z) {card} kártyánál", + "You have commented on card {card}" : "Hozzászólt a(z) {card} kártyához", + "{user} has commented on card {card}" : "{user} hozzászólt a(z) {card} kártyához", + "A card description inside the Deck app has been changed" : "A kártyaleírás megváltozott a Kártyák alkalmazásban", + "Deck" : "Kártyák", + "Changes in the Deck app" : "Változások a Kártyák alkalmazásban", "Personal" : "Személyes", - "The card \"%s\" on \"%s\" has reached its due date." : "A(z) \"%s\" kártya a(z) \"%s\" táblán a határidejéhez ért.", - "The board \"%s\" has been shared with you by %s." : "A(z) \"%s\" táblát %s osztotta meg veled.", - "{user} has shared the board %s with you." : "{user} felhasználó megosztotta veled a(z) %s táblát.", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "A(z) „%s” kártyát a(z) „%s” táblán %s hozzárendelte Önhöz.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hozzárendelte Önhöz a(z) „%s” kártyát a(z) „%s”.", + "The card \"%s\" on \"%s\" has reached its due date." : "A(z) „%s” kártya a(z) „%s” táblán elérte a határidejét.", + "%s has mentioned you in a comment on \"%s\"." : "%s megemlítette egy hozzászólásban ennél: „%s”.", + "{user} has mentioned you in a comment on \"%s\"." : "{user} megemlítette egy hozzászólásban ennél: „%s”.", + "The board \"%s\" has been shared with you by %s." : "A(z) „%s” táblát %s osztotta meg Önnel.", + "{user} has shared the board %s with you." : "{user} megosztotta Önnel a(z) %s táblát.", + "No data was provided to create an attachment." : "Nincsenek megadva adatok a melléklet létrehozásához.", "Finished" : "Kész", - "To review" : "Áttekinteni", + "To review" : "Áttekintendő", "Action needed" : "Művelet szükséges", "Later" : "Később", + "To do" : "Teendő", + "Doing" : "Folyamatban", + "Done" : "Kész", + "Example Task 3" : "3. példafeladat", + "Example Task 2" : "2. példafeladat", + "Example Task 1" : "1. példafeladat", + "The file was uploaded" : "A fájl fel lett töltve", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "A feltöltött fájl meghaladja a php.ini-ben szereplő upload_max_filesize direktívában megadott méretet", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "A feltöltött fájl meghaladja a HTML űrlapon megadott MAX_FILE_SIZE direktívában meghatározott méretet.", + "The file was only partially uploaded" : "A fájl csak részlegesen lett feltöltve", + "No file was uploaded" : "Nincs feltöltött fájl", + "Missing a temporary folder" : "Átmeneti mappa hiányzik", + "Could not write file to disk" : "Nem lehet a fájlt lemezre írni", + "A PHP extension stopped the file upload" : "A PHP kiterjesztés megállította a fájl feltöltését", + "No file uploaded or file size exceeds maximum of %s" : "Nincs fájl feltöltve, vagy a fájl meghaladja a maximumot: %s", + "A kanban style project and personal management tool for Nextcloud" : "Egy kanban-stílusú projektmenedzsment eszköz a Nextcloudhoz", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "A Kártyák egy kanban-stílusú szervezőeszköz, amely a személyes tervezést és a csapatok projektszervezését célozza, a Nextcloudba integrálva.\n\n\n- 📥 Saját feladatok kártyákhoz adása, és azok sorrendezése\n- 📄 További jegyzetek leírása markdownban\n- 🔖 Címkék hozzárendelése a még jobb rendszerezés miatt\n- 👥 Megosztás a csapattal, barátokkal vagy családdal\n- 📎 Fájlok hozzáadása mellékletként, vagy beágyazás a markdown leírásba\n- 💬 Megbeszélés a csapattal hozzászólások használatával\n- ⚡ A változások követése a tevékenységnaplóban\n- 🚀 Rendszerezze a projektjét", "Add a new stack" : "Új rakás hozzáadása", "Submit" : "Küldés", - "Show archived cards" : "Archív kártyák mutatása", - "Hide archived cards" : "Archív kártyák elrejtése", + "Show archived cards" : "Archivált kártyák megjelenítése", + "Hide archived cards" : "Archivált kártyák elrejtése", + "Toggle compact mode" : "Kompakt mód be/ki", + "Show board details" : "Tábla részleteinek megjelenítése", "All Boards" : "Minden tábla", - "Archived boards" : "Archív táblák", + "Archived boards" : "Archivált táblák", "Share board" : "Tábla megosztása", - "Enter a card title" : "Adj meg egy kártya címet", + "Archived cards" : "Archivált kártyák", + "Actions" : "Műveletek", + "Drop your files here to upload it to the card" : "Dobja ide a fájljait a kártyához feltöltéshez", + "Assign card to me" : "Kártya hozzám rendelése", + "Unassign card from me" : "Kártya elvétele tőlem", + "Archive card" : "Kártya archiválása", + "Unarchive card" : "Kártya archiválásának visszavonása", + "Delete card" : "Kártya törlése", + "Enter a card title" : "Adja meg a kártya címét", "Add card" : "Kártya hozzáadása", "Close" : "Bezárás", "Sharing" : "Megosztás", "Tags" : "Címkék", "Deleted items" : "Törölt elemek", - "Select users or groups to share with" : "Válassz felhasználókat vagy csoportokat a megosztáshoz", - "Access for" : "Hozzáfér", + "Timeline" : "Idővonal", + "Select users or groups to share with" : "Válasszon felhasználókat vagy csoportokat a megosztáshoz", + "Group" : "Csoport", "No matching user or group found." : "Nem található egyező felhasználó vagy csoport.", "Loading" : "Betöltés", - "Share" : "Megosztás", "Edit" : "Szerkesztés", + "Share" : "Megosztás", "Manage" : "Kezelés", - "Discard share" : "Megosztás figyelmen kívül hagyása", + "Discard share" : "Megosztás elvetése", + "Sharing has been disabled for your account." : "A megosztás le lett tiltva a fiókjánál.", + "Update tag" : "Címke frissítése", + "Edit tag" : "Címke szerkesztése", + "Delete tag" : "Címke törlése", "Create" : "Létrehozás", "Create a new tag" : "Új címke létrehozása", + "Deleted stacks" : "Törölt rakások", "Deleted cards" : "Törölt kártyák", "Status" : "Állapot", + "No archived boards to display" : "Nincsenek megjeleníthető archivált táblák", + "No shared boards to display" : "Nincsenek megjeleníthető megosztott táblák", "Title" : "Cím", "Members" : "Tagok", "More actions" : "További műveletek", @@ -44,34 +152,43 @@ "Archive board" : "Tábla archiválása", "Unarchive board" : "Tábla archiválásának visszavonása", "Delete board" : "Tábla törlése", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Táblatörlés visszavonása - Egyébként a tábla a következő időzített folyamatfutáskor törlődik.", - "Create new board" : "Új tábla", + "Update board" : "Tábla frissítése", + "Reset board" : "Tábla visszaállítás", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Táblatörlés visszavonása – Egyébként a tábla az időzített feladat következő futásakor törlődik.", + "Create new board" : "Új tábla létrehozása", "New board title" : "Új tábla címe", - "Select an attachment" : "Melléklet kiválasztása", - "by" : "tőle: ", + "Create board" : "Tábla létrehozása", + "Select an attachment" : "Válasszon egy mellékletet", + "Cancel upload" : "Feltöltés megszakítása", + "by" : "tőle:", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Fájltörlés visszavonása – Egyébként a fájl az időzített feladat következő futásakor törlődik.", "Undo file deletion" : "Fájltörlés visszavonása", - "Insert the file into the description" : "Illeszd be a fájlt a leírásba", + "Insert the file into the description" : "Illessze be a fájlt a leírásba", + "Delete attachment" : "Melléklet törlése", "Modified:" : "Módosítva:", "Created:" : "Létrehozva:", - "Choose a tag" : "Válassz címkét", + "Choose a tag" : "Válasszon címkét", "Add a tag" : "Címke hozzáadása", "Select tags" : "Címkék kiválasztása", - "Assign users" : "Felhasználók kijelölése", - "Choose a user to assign" : "Válassz felhasználót a hozzárendeléshez", + "Assign users" : "Felhasználók hozzárendelése", + "Choose a user to assign" : "Válasszon egy hozzárendelendő felhasználót", "Assign this card to a user" : "Ezen kártya felhasználóhoz rendelése", "Due date" : "Határidő", - "Click to set" : "Kattints a beállításhoz", + "Click to set" : "Kattintson a beállításhoz", "Remove due date" : "Határidő eltávolítása", "Description" : "Leírás", "Attachments" : "Mellékletek", "Saved" : "Elmentve", "Unsaved changes" : "Mentetlen változtatások", - "Insert attachment" : "Melléklet beillesztése", + "Insert attachment" : "Melléklet beszúrása", "Formatting help" : "Formázási segítség", "Upload attachment" : "Melléklet feltöltése", - "Add a card description…" : "Adj hozzá kártya leírást...", + "Add a card description…" : "Adjon hozzá egy kártyaleírást…", "Shared boards" : "Megosztott táblák", - "Move board to archive" : "Tábla mozgatása archívumba", - "Create a new board" : "Új tábla létrehozása" + "Move board to archive" : "Tábla áthelyezése az archívumba", + "Create a new board" : "Új tábla létrehozása", + "Settings" : "Beállítások", + "Limit deck to groups" : "A Kártyák csoportokra korlátozása", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "A Kártyák korlátozása blokkolja a saját táblák létrehozását azoknál a felhasználóknál, akik nem tagjai a megadott csoportoknak. A felhasználók továbbra is tudnak dolgozni a velük megosztott táblákon." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/is.js b/l10n/is.js index 35d29038a..95b0c0499 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Fjarlægja notanda af spjaldi", "Hours" : "klukkustundir", "Minutes" : "mínútur", + "Link to a board" : "Tengill við borð", "Maximum file size of {size} exceeded" : "Fór yfir hámarks skráarstærð {size}", "You have created a new board {board}" : "Þú hefur búið til nýja borðið {board}", "{user} has created a new board {board}" : "{user} hefur búið til nýja borðið {board}", @@ -21,58 +22,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Þú fjarlægðir {acl} af borðinu {board}", "{user} has removed {acl} from the board {board}" : "{user} fjarlægði {acl} af borðinu {board}", "You have renamed the board {before} to {board}" : "Þú hefur endurnefnt borðið {before} sem {board}", - "{user} has has renamed the board {before} to {board}" : "{user} hefur endurnefnt borðið {before} sem {board}", + "{user} has renamed the board {before} to {board}" : "{user} hefur endurnefnt borðið {before} sem {board}", "You have archived the board {board}" : "Þú settir borðið {board} í geymslu", "{user} has archived the board {before}" : "{user} setti borðið {before} í geymslu", "You have unarchived the board {board}" : "Þú tókst borðið {board} úr geymslu", "{user} has unarchived the board {before}" : "{user} tók borðið {before} úr geymslu", - "You have created a new stack {stack} on {board}" : "Þú hefur búið til nýjan stafla {stack} á {board}", - "{user} has created a new stack {stack} on {board}" : "{user} hefur búið til nýjan stafla {stack} á {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Þú hefur endurnefnt nýjan stafla {before} sem {stack} á {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hefur endurnefnt nýjan stafla {before} sem {stack} á {board}", - "You have deleted {stack} on {board}" : "Þú hefur eytt staflanum {stack} á borðinu {board}", - "{user} has deleted {stack} on {board}" : "{user} hefur eytt staflanum {stack} á borðinu {board}", - "You have created {card} in {stack} on {board}" : "Þú hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has created {card} in {stack} on {board}" : "{user} hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have deleted {card} in {stack} on {board}" : "Þú hefur eytt spjaldinu {card} í staflanum {stack} á borðinu {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} hefur eytt spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have created a new stack {stack} on board {board}" : "Þú hefur búið til nýjan stafla {stack} á borðinu {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} hefur búið til nýjan stafla {stack} á borðinu {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Þú hefur endurnefnt staflann {before} sem {stack} á {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hefur endurnefnt staflann {before} sem {stack} á {board}", + "You have deleted stack {stack} on board {board}" : "Þú hefur eytt staflanum {stack} á borðinu {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} hefur eytt staflanum {stack} á borðinu {board}", + "You have created card {card} in stack {stack} on board {board}" : "Þú hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Þú eyddir spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} eyddi spjaldinu {card} í staflanum {stack} á borðinu {board}", "You have renamed the card {before} to {card}" : "Þú hefur endurnefnt spjaldið {before} sem {card}", "{user} has renamed the card {before} to {card}" : "{user} hefur endurnefnt spjaldið {before} sem {card}", - "You have added a description to {card} in {stack} on {board}" : "Þú bættir lýsingu við spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} bætti lýsingu við spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have updated the description of {card} in {stack} on {board}" : "Þú uppfærðir lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} uppfærði lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", - "You have archived {card} in {stack} on {board}" : "Þú settir í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} setti í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have unarchived {card} in {stack} on {board}" : "Þú tókst úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} tók úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have removed the due date of {card}" : "Þú fjarlægðir gildistíma af {card}", - "{user} has removed the due date of {card}" : "{user} fjarlægði gildistíma af {card}", - "You have set the due date of {card} to {after}" : "Þú settir gildistíma {card} á {after}", - "{user} has set the due date of {card} to {after}" : "{user} setti gildistíma {card} á {after}", - "You have updated the due date of {card} to {after}" : "Þú uppfærðir gildistíma {card} á {after}", - "{user} has updated the due date of {card} to {after}" : "{user} uppfærði gildistíma {card} á {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Þú bættir skýringunni {label} við spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} bætti skýringunni {label} við spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Þú fjarlægðir skýringunna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} fjarlægði skýringunna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Þú úthlutaðir {assigneduser} á spjaldið {card} á borðinu {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} úthlutaði {assigneduser} á spjaldið {card} á borðinu {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Þú hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Þú færðir spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} færði spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", - "You have added the attachment {attachment} to {card}" : "Þú bættir viðhenginu {attachment} við spjaldið {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} bætti viðhenginu {attachment} við spjaldið {card}", - "You have updated the attachment {attachment} on {card}" : "Þú uppfærðir viðhengið {attachment} á spjaldinu {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} uppfærði viðhengið {attachment} á spjaldinu {card}", - "You have deleted the attachment {attachment} from {card}" : "Þú eyddir viðhenginu {attachment} af spjaldinu {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} eyddi viðhenginu {attachment} af spjaldinu {card}", - "You have restored the attachment {attachment} to {card}" : "Þú endurheimtir viðhengið {attachment} á spjaldinu {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} endurheimti viðhengið {attachment} á spjaldinu {card}", - "You have commented on {card}" : "Þú settir inn athugasemd við {card}", - "{user} has commented on {card}" : "{user} setti inn athugasemd um {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Þú bættir við lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} bætti við lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Þú uppfærðir lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} uppfærði lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Þú settir í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} setti í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Þú tókst úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} tók úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "You have removed the due date of card {card}" : "Þú fjarlægðir gildistíma af spjaldinu {card}", + "{user} has removed the due date of card {card}" : "{user} fjarlægði gildistíma af spjaldinu {card}", + "You have set the due date of card {card} to {after}" : "Þú settir gildistíma spjaldsins {card} á {after}", + "{user} has set the due date of card {card} to {after}" : "{user} setti gildistíma spjaldsins {card} á {after}", + "You have updated the due date of card {card} to {after}" : "Þú uppfærðir gildistíma spjaldsins {card} á {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} uppfærði gildistíma spjaldsins {card} á {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Þú bættir við merkingunni {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} bætti við merkingunni {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} fjarlægði merkinguna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} fjarlægði merkinguna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Þú úthlutaðir {assigneduser} á spjaldið {card} á borðinu {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} úthlutaði {assigneduser} á spjaldið {card} á borðinu {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Þú hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Þú færðir spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} færði spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", + "You have added the attachment {attachment} to card {card}" : "Þú bættir viðhenginu {attachment} við spjaldið {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} bætti viðhenginu {attachment} við spjaldið {card}", + "You have updated the attachment {attachment} on card {card}" : "Þú uppfærðir viðhengið {attachment} á spjaldinu {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} uppfærði viðhengið {attachment} á spjaldinu {card}", + "You have deleted the attachment {attachment} from card {card}" : "Þú eyddir viðhenginu {attachment} af spjaldinu {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} eyddi viðhenginu {attachment} af spjaldinu {card}", + "You have restored the attachment {attachment} to card {card}" : "Þú endurheimtir viðhengið {attachment} á spjaldinu {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} endurheimti viðhengið {attachment} á spjaldinu {card}", + "You have commented on card {card}" : "Þú settir inn athugasemd við spjaldið {card}", + "{user} has commented on card {card}" : "{user} setti inn athugasemd við spjaldið {card}", + "A card description inside the Deck app has been changed" : "Lýsingu á spjaldi inni í Deck-spjaldaforritinu hefur verið breytt", "Deck" : "Dekk", + "Changes in the Deck app" : "Breytingar í Deck spjaldaforritinu", "Personal" : "Einka", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Spjaldinu \"%s\" á \"%s\" hefur verið úthlutað til þín af %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hefur úthlutað spjaldinu \"%s\" á \"%s\" til þín.", @@ -103,16 +106,25 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Engin innsend skrá eða að skráarstærð fór fram úr hámarksstæðinni %s", "A kanban style project and personal management tool for Nextcloud" : "Verkefna- og persónuupplýsingastjórnun í kanban-stíl fyrir Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Dekk (e. Deck) er skipulagningartól í kanban-stíl sem ætlað er fyrir verkefna- og persónuupplýsingastjórnun hópvinnuteyma innan Nextcloud.\n\n\n- 📥 Settu verkefnin þín á spjöld of raðaðu þeim á ýmsa vegu\n- 📄 Skrifaðu niður minnispunkta í markdown-kóða\n- 🔖 Úthlutaðu merkjum/skýringum til að bæta skipulagninguna\n- 👥 Deildu með vinnuhópnum, vinum eða fjölskyldu\n- 📎 Hengdu við skrár og ívefðu þær í lýsinguna með markdown-kóða\n- 💬 Ræddu málin við hópinn þinn með athugasemdum\n- ⚡ Haltu utan um breytingar í virknistreyminu\n- 🚀 Haltu verkefnunum þínum skipulögðum", + "Select the board to link to a project" : "Veldu borðið sem á að tengja við verkefnið", + "Select board" : "Veldu borð", "Add a new stack" : "Bæta við nýjum stafla", "Submit" : "Senda inn", "Show archived cards" : "Sýna spjöld í geymslu", "Hide archived cards" : "Fela spjöld í geymslu", "Toggle compact mode" : "Víxla þjöppuðum ham af/á", + "Show board details" : "Birta nánari upplýsingar um borð", "All Boards" : "Öll borð", "Archived boards" : "Borð í geymslu", "Share board" : "Deila borði", + "Archived cards" : "Spjöld í geymslu", "Actions" : "Aðgerðir", "Drop your files here to upload it to the card" : "Slepptu hér skrám til að senda þær inn í spjaldið", + "Assign card to me" : "Úthluta spjaldinu til mín", + "Unassign card from me" : "Aftengja úthlutun spjalds til mín", + "Archive card" : "Setja spjald í geymslu", + "Unarchive card" : "Taka spjald úr geymslu", + "Delete card" : "Eyða spjaldi", "Enter a card title" : "Sláðu inn titil á spjald", "Add card" : "Bæta við spjaldi", "Close" : "Loka", @@ -121,13 +133,18 @@ OC.L10N.register( "Deleted items" : "Eydd atriði", "Timeline" : "Tímalína", "Select users or groups to share with" : "Veldu notendur eða hópa til að deila með", - "Access for" : "Aðgangur fyrir", + "Group" : "Hópur", + "Circle" : "Hringur", "No matching user or group found." : "Engir samsvarandi notendur eða hópar fundust.", "Loading" : "Hleð inn", - "Share" : "Deila", "Edit" : "Breyta", + "Share" : "Deila", "Manage" : "Skipuleggja", "Discard share" : "Henda sameign", + "Sharing has been disabled for your account." : "Deiling hefur evrið gerð óvirk á notandaaðgangnum þínum.", + "Update tag" : "Uppfæra merki", + "Edit tag" : "Breyta merki", + "Delete tag" : "Eyða merki", "Create" : "Búa til", "Create a new tag" : "Búa til nýtt merki", "Deleted stacks" : "Eyddir staflar", @@ -142,15 +159,19 @@ OC.L10N.register( "Archive board" : "Setja borð í geymslu", "Unarchive board" : "Taka borð úr geymslu", "Delete board" : "Eyða borði", + "Update board" : "Uppfæra borð", + "Reset board" : "Endurstilla borð", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Afturkalla eyðingu borðs - annars verður því eytt við næstu keyrslu cron-verks.", "Create new board" : "Búa til nýtt borð", "New board title" : "Nýr titill á borð", + "Create board" : "Búa til borð", "Select an attachment" : "Veldu viðhengi", "Cancel upload" : "Hætta við innsendingu", "by" : "af", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Afturkalla eyðingu skráar - annars verður skránni eytt við næstu keyrslu cron-verks.", "Undo file deletion" : "Afturkalla eyðingu skráar", "Insert the file into the description" : "Settu skrána inn í lýsinguna", + "Delete attachment" : "Eyða viðhengi", "Modified:" : "Breytt þann:", "Created:" : "Búið til:", "Choose a tag" : "Veldu merki", @@ -172,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Settu inn lýsingu á spjaldi ...", "Shared boards" : "Deild borð", "Move board to archive" : "Færa borð í geymslu", - "Create a new board" : "Búa til nýtt borð" + "Create a new board" : "Búa til nýtt borð", + "Settings" : "Stillingar", + "Limit deck to groups" : "Takmarka notkun forritsins við tiltekna hópa", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Takmörkun í Deck spjaldaforritinu mun loka notendur sem tilheyra ekki þessum hópum frá því að útbúa sín eigin borð. Notendurnir munu samt geta áfram unnið með borð sem hefur verið deilt til þeirra." }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/l10n/is.json b/l10n/is.json index 2bca8aa5e..3a0bbfb99 100644 --- a/l10n/is.json +++ b/l10n/is.json @@ -7,6 +7,7 @@ "Remove user from card" : "Fjarlægja notanda af spjaldi", "Hours" : "klukkustundir", "Minutes" : "mínútur", + "Link to a board" : "Tengill við borð", "Maximum file size of {size} exceeded" : "Fór yfir hámarks skráarstærð {size}", "You have created a new board {board}" : "Þú hefur búið til nýja borðið {board}", "{user} has created a new board {board}" : "{user} hefur búið til nýja borðið {board}", @@ -19,58 +20,60 @@ "You have removed {acl} from the board {board}" : "Þú fjarlægðir {acl} af borðinu {board}", "{user} has removed {acl} from the board {board}" : "{user} fjarlægði {acl} af borðinu {board}", "You have renamed the board {before} to {board}" : "Þú hefur endurnefnt borðið {before} sem {board}", - "{user} has has renamed the board {before} to {board}" : "{user} hefur endurnefnt borðið {before} sem {board}", + "{user} has renamed the board {before} to {board}" : "{user} hefur endurnefnt borðið {before} sem {board}", "You have archived the board {board}" : "Þú settir borðið {board} í geymslu", "{user} has archived the board {before}" : "{user} setti borðið {before} í geymslu", "You have unarchived the board {board}" : "Þú tókst borðið {board} úr geymslu", "{user} has unarchived the board {before}" : "{user} tók borðið {before} úr geymslu", - "You have created a new stack {stack} on {board}" : "Þú hefur búið til nýjan stafla {stack} á {board}", - "{user} has created a new stack {stack} on {board}" : "{user} hefur búið til nýjan stafla {stack} á {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Þú hefur endurnefnt nýjan stafla {before} sem {stack} á {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hefur endurnefnt nýjan stafla {before} sem {stack} á {board}", - "You have deleted {stack} on {board}" : "Þú hefur eytt staflanum {stack} á borðinu {board}", - "{user} has deleted {stack} on {board}" : "{user} hefur eytt staflanum {stack} á borðinu {board}", - "You have created {card} in {stack} on {board}" : "Þú hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has created {card} in {stack} on {board}" : "{user} hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have deleted {card} in {stack} on {board}" : "Þú hefur eytt spjaldinu {card} í staflanum {stack} á borðinu {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} hefur eytt spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have created a new stack {stack} on board {board}" : "Þú hefur búið til nýjan stafla {stack} á borðinu {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} hefur búið til nýjan stafla {stack} á borðinu {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Þú hefur endurnefnt staflann {before} sem {stack} á {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hefur endurnefnt staflann {before} sem {stack} á {board}", + "You have deleted stack {stack} on board {board}" : "Þú hefur eytt staflanum {stack} á borðinu {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} hefur eytt staflanum {stack} á borðinu {board}", + "You have created card {card} in stack {stack} on board {board}" : "Þú hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} hefur búið til spjaldið {card} í staflanum {stack} á borðinu {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Þú eyddir spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} eyddi spjaldinu {card} í staflanum {stack} á borðinu {board}", "You have renamed the card {before} to {card}" : "Þú hefur endurnefnt spjaldið {before} sem {card}", "{user} has renamed the card {before} to {card}" : "{user} hefur endurnefnt spjaldið {before} sem {card}", - "You have added a description to {card} in {stack} on {board}" : "Þú bættir lýsingu við spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} bætti lýsingu við spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have updated the description of {card} in {stack} on {board}" : "Þú uppfærðir lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} uppfærði lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", - "You have archived {card} in {stack} on {board}" : "Þú settir í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} setti í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have unarchived {card} in {stack} on {board}" : "Þú tókst úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} tók úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have removed the due date of {card}" : "Þú fjarlægðir gildistíma af {card}", - "{user} has removed the due date of {card}" : "{user} fjarlægði gildistíma af {card}", - "You have set the due date of {card} to {after}" : "Þú settir gildistíma {card} á {after}", - "{user} has set the due date of {card} to {after}" : "{user} setti gildistíma {card} á {after}", - "You have updated the due date of {card} to {after}" : "Þú uppfærðir gildistíma {card} á {after}", - "{user} has updated the due date of {card} to {after}" : "{user} uppfærði gildistíma {card} á {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Þú bættir skýringunni {label} við spjaldið {card} í staflanum {stack} á borðinu {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} bætti skýringunni {label} við spjaldið {card} í staflanum {stack} á borðinu {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Þú fjarlægðir skýringunna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} fjarlægði skýringunna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Þú úthlutaðir {assigneduser} á spjaldið {card} á borðinu {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} úthlutaði {assigneduser} á spjaldið {card} á borðinu {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Þú hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Þú færðir spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} færði spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", - "You have added the attachment {attachment} to {card}" : "Þú bættir viðhenginu {attachment} við spjaldið {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} bætti viðhenginu {attachment} við spjaldið {card}", - "You have updated the attachment {attachment} on {card}" : "Þú uppfærðir viðhengið {attachment} á spjaldinu {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} uppfærði viðhengið {attachment} á spjaldinu {card}", - "You have deleted the attachment {attachment} from {card}" : "Þú eyddir viðhenginu {attachment} af spjaldinu {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} eyddi viðhenginu {attachment} af spjaldinu {card}", - "You have restored the attachment {attachment} to {card}" : "Þú endurheimtir viðhengið {attachment} á spjaldinu {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} endurheimti viðhengið {attachment} á spjaldinu {card}", - "You have commented on {card}" : "Þú settir inn athugasemd við {card}", - "{user} has commented on {card}" : "{user} setti inn athugasemd um {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Þú bættir við lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} bætti við lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Þú uppfærðir lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} uppfærði lýsingu á spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Þú settir í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} setti í geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Þú tókst úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} tók úr geymslu spjaldið {card} í staflanum {stack} á borðinu {board}", + "You have removed the due date of card {card}" : "Þú fjarlægðir gildistíma af spjaldinu {card}", + "{user} has removed the due date of card {card}" : "{user} fjarlægði gildistíma af spjaldinu {card}", + "You have set the due date of card {card} to {after}" : "Þú settir gildistíma spjaldsins {card} á {after}", + "{user} has set the due date of card {card} to {after}" : "{user} setti gildistíma spjaldsins {card} á {after}", + "You have updated the due date of card {card} to {after}" : "Þú uppfærðir gildistíma spjaldsins {card} á {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} uppfærði gildistíma spjaldsins {card} á {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Þú bættir við merkingunni {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} bætti við merkingunni {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} fjarlægði merkinguna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} fjarlægði merkinguna {label} af spjaldinu {card} í staflanum {stack} á borðinu {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Þú úthlutaðir {assigneduser} á spjaldið {card} á borðinu {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} úthlutaði {assigneduser} á spjaldið {card} á borðinu {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Þú hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} hefur afturkallað úthlutun {assigneduser} á spjaldið {card} á borðinu {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Þú færðir spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} færði spjaldið {card} úr staflanum {stackBefore} yfir í {stack}", + "You have added the attachment {attachment} to card {card}" : "Þú bættir viðhenginu {attachment} við spjaldið {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} bætti viðhenginu {attachment} við spjaldið {card}", + "You have updated the attachment {attachment} on card {card}" : "Þú uppfærðir viðhengið {attachment} á spjaldinu {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} uppfærði viðhengið {attachment} á spjaldinu {card}", + "You have deleted the attachment {attachment} from card {card}" : "Þú eyddir viðhenginu {attachment} af spjaldinu {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} eyddi viðhenginu {attachment} af spjaldinu {card}", + "You have restored the attachment {attachment} to card {card}" : "Þú endurheimtir viðhengið {attachment} á spjaldinu {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} endurheimti viðhengið {attachment} á spjaldinu {card}", + "You have commented on card {card}" : "Þú settir inn athugasemd við spjaldið {card}", + "{user} has commented on card {card}" : "{user} setti inn athugasemd við spjaldið {card}", + "A card description inside the Deck app has been changed" : "Lýsingu á spjaldi inni í Deck-spjaldaforritinu hefur verið breytt", "Deck" : "Dekk", + "Changes in the Deck app" : "Breytingar í Deck spjaldaforritinu", "Personal" : "Einka", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Spjaldinu \"%s\" á \"%s\" hefur verið úthlutað til þín af %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} hefur úthlutað spjaldinu \"%s\" á \"%s\" til þín.", @@ -101,16 +104,25 @@ "No file uploaded or file size exceeds maximum of %s" : "Engin innsend skrá eða að skráarstærð fór fram úr hámarksstæðinni %s", "A kanban style project and personal management tool for Nextcloud" : "Verkefna- og persónuupplýsingastjórnun í kanban-stíl fyrir Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Dekk (e. Deck) er skipulagningartól í kanban-stíl sem ætlað er fyrir verkefna- og persónuupplýsingastjórnun hópvinnuteyma innan Nextcloud.\n\n\n- 📥 Settu verkefnin þín á spjöld of raðaðu þeim á ýmsa vegu\n- 📄 Skrifaðu niður minnispunkta í markdown-kóða\n- 🔖 Úthlutaðu merkjum/skýringum til að bæta skipulagninguna\n- 👥 Deildu með vinnuhópnum, vinum eða fjölskyldu\n- 📎 Hengdu við skrár og ívefðu þær í lýsinguna með markdown-kóða\n- 💬 Ræddu málin við hópinn þinn með athugasemdum\n- ⚡ Haltu utan um breytingar í virknistreyminu\n- 🚀 Haltu verkefnunum þínum skipulögðum", + "Select the board to link to a project" : "Veldu borðið sem á að tengja við verkefnið", + "Select board" : "Veldu borð", "Add a new stack" : "Bæta við nýjum stafla", "Submit" : "Senda inn", "Show archived cards" : "Sýna spjöld í geymslu", "Hide archived cards" : "Fela spjöld í geymslu", "Toggle compact mode" : "Víxla þjöppuðum ham af/á", + "Show board details" : "Birta nánari upplýsingar um borð", "All Boards" : "Öll borð", "Archived boards" : "Borð í geymslu", "Share board" : "Deila borði", + "Archived cards" : "Spjöld í geymslu", "Actions" : "Aðgerðir", "Drop your files here to upload it to the card" : "Slepptu hér skrám til að senda þær inn í spjaldið", + "Assign card to me" : "Úthluta spjaldinu til mín", + "Unassign card from me" : "Aftengja úthlutun spjalds til mín", + "Archive card" : "Setja spjald í geymslu", + "Unarchive card" : "Taka spjald úr geymslu", + "Delete card" : "Eyða spjaldi", "Enter a card title" : "Sláðu inn titil á spjald", "Add card" : "Bæta við spjaldi", "Close" : "Loka", @@ -119,13 +131,18 @@ "Deleted items" : "Eydd atriði", "Timeline" : "Tímalína", "Select users or groups to share with" : "Veldu notendur eða hópa til að deila með", - "Access for" : "Aðgangur fyrir", + "Group" : "Hópur", + "Circle" : "Hringur", "No matching user or group found." : "Engir samsvarandi notendur eða hópar fundust.", "Loading" : "Hleð inn", - "Share" : "Deila", "Edit" : "Breyta", + "Share" : "Deila", "Manage" : "Skipuleggja", "Discard share" : "Henda sameign", + "Sharing has been disabled for your account." : "Deiling hefur evrið gerð óvirk á notandaaðgangnum þínum.", + "Update tag" : "Uppfæra merki", + "Edit tag" : "Breyta merki", + "Delete tag" : "Eyða merki", "Create" : "Búa til", "Create a new tag" : "Búa til nýtt merki", "Deleted stacks" : "Eyddir staflar", @@ -140,15 +157,19 @@ "Archive board" : "Setja borð í geymslu", "Unarchive board" : "Taka borð úr geymslu", "Delete board" : "Eyða borði", + "Update board" : "Uppfæra borð", + "Reset board" : "Endurstilla borð", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Afturkalla eyðingu borðs - annars verður því eytt við næstu keyrslu cron-verks.", "Create new board" : "Búa til nýtt borð", "New board title" : "Nýr titill á borð", + "Create board" : "Búa til borð", "Select an attachment" : "Veldu viðhengi", "Cancel upload" : "Hætta við innsendingu", "by" : "af", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Afturkalla eyðingu skráar - annars verður skránni eytt við næstu keyrslu cron-verks.", "Undo file deletion" : "Afturkalla eyðingu skráar", "Insert the file into the description" : "Settu skrána inn í lýsinguna", + "Delete attachment" : "Eyða viðhengi", "Modified:" : "Breytt þann:", "Created:" : "Búið til:", "Choose a tag" : "Veldu merki", @@ -170,6 +191,9 @@ "Add a card description…" : "Settu inn lýsingu á spjaldi ...", "Shared boards" : "Deild borð", "Move board to archive" : "Færa borð í geymslu", - "Create a new board" : "Búa til nýtt borð" + "Create a new board" : "Búa til nýtt borð", + "Settings" : "Stillingar", + "Limit deck to groups" : "Takmarka notkun forritsins við tiltekna hópa", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Takmörkun í Deck spjaldaforritinu mun loka notendur sem tilheyra ekki þessum hópum frá því að útbúa sín eigin borð. Notendurnir munu samt geta áfram unnið með borð sem hefur verið deilt til þeirra." },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" } \ No newline at end of file diff --git a/l10n/it.js b/l10n/it.js index 0b064c785..2d5151fe1 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Rimuovi utente dalla scheda", "Hours" : "Ore", "Minutes" : "Minuti", + "Link to a board" : "Collega a una lavagna", "Maximum file size of {size} exceeded" : "Dimensione massima dei file di {size} superata", "You have created a new board {board}" : "Hai creato una nuova lavagna {board}", "{user} has created a new board {board}" : "{user} ha creato una nuova lavagna {board}", @@ -21,58 +22,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Hai rimosso {acl} dalla lavagna {board}", "{user} has removed {acl} from the board {board}" : "{user} ha rimosso {acl} dalla lavagna {board}", "You have renamed the board {before} to {board}" : "Hai rinominato la lavagna {before} in {board}", - "{user} has has renamed the board {before} to {board}" : "{user} ha rinominato la lavagna {before} in {board}", + "{user} has renamed the board {before} to {board}" : "{user} ha rinominato la lavagna {before} in {board}", "You have archived the board {board}" : "Hai archiviato la lavagna {board}", "{user} has archived the board {before}" : "{user} ha archiviato la lavagna {before}", "You have unarchived the board {board}" : "Hai annullato l'archiviazione della lavagna {board}", "{user} has unarchived the board {before}" : "{user} ha annullato l'archiviazione della lavagna {board}", - "You have created a new stack {stack} on {board}" : "Hai creato una nuova pila {stack} su {board}", - "{user} has created a new stack {stack} on {board}" : "{user} ha creato una nuova pila {stack} su {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Hai rinominato una nuova pila {before} in {stack} su {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} ha rinominato una nuova pila {before} in {stack} su {board}", - "You have deleted {stack} on {board}" : "Hai eliminato {stack} su {board}", - "{user} has deleted {stack} on {board}" : "{user} ha eliminato {stack} su {board}", - "You have created {card} in {stack} on {board}" : "Hai creato {card} in {stack} su {board}", - "{user} has created {card} in {stack} on {board}" : "{user} ha creato {card} in {stack} su {board}", - "You have deleted {card} in {stack} on {board}" : "Hai eliminato {card} in {stack} su {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} ha eliminato {card} in {stack} su {board}", + "You have created a new stack {stack} on board {board}" : "Hai creato una nuova pila {stack} sulla lavagna {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} ha creato una nuova pila {stack} sulla lavagna {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Hai rinominato la pila {before} in {stack} sulla lavagna {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha rinominato la pila {before} in {stack} sulla lavagna {board}", + "You have deleted stack {stack} on board {board}" : "Hai eliminato la pila {stack} sulla lavagna {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} ha eliminato la pila {stack} sulla lavagna {board}", + "You have created card {card} in stack {stack} on board {board}" : "Hai creato la scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creato la scheda {card} nella pila {stack} sulla lavagna {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Hai eliminato la scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha creato la scheda {card} nell pila {stack} sulla lavagna {board}", "You have renamed the card {before} to {card}" : "Hai rinominato la scheda {before} in {card}", "{user} has renamed the card {before} to {card}" : "{user} ha rinominato la scheda {before} in {card}", - "You have added a description to {card} in {stack} on {board}" : "Hai aggiunto una descrizione a {card} in {stack} su {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} ha aggiunto una descrizione a {card} in {stack} su {board}", - "You have updated the description of {card} in {stack} on {board}" : "Hai aggiornato la descrizione di {card} in {stack} su {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} ha aggiornato la descrizione di {card} in {stack} su {board}", - "You have archived {card} in {stack} on {board}" : "Hai archiviato {card} in {stack} su {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} ha archiviato {card} in {stack} su {board}", - "You have unarchived {card} in {stack} on {board}" : "Hai annullato l'archiviazione di {card} in {stack} su {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} ha annullato l'archiviazione di {card} in {stack} su {board}", - "You have removed the due date of {card}" : "Hai rimosso la data di scadenza di {card}", - "{user} has removed the due date of {card}" : "{user} ha rimosso la data di scadenza di {card}", - "You have set the due date of {card} to {after}" : "Hai impostato la data di scadenza di {card} a {after}", - "{user} has set the due date of {card} to {after}" : "{user} ha impostato la data di scadenza di {card} a {after}", - "You have updated the due date of {card} to {after}" : "Hai aggiornato la data di scadenza di {card} a {after}", - "{user} has updated the due date of {card} to {after}" : "{user} ha aggiornato la data di scadenza di {card} a {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Hai aggiunto l'etichetta {label} a {card} in {stack} su {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} ha aggiunto l'etichetta {label} a {card} in {stack} su {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Hai rimosso l'etichetta {label} da {card} in {stack} su {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} ha rimosso l'etichetta {label} da {card} in {stack} su {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Hai assegnato {assigneduser} a {card} su {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} ha assegnato {assigneduser} a {card} su {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Hai annullato l'assegnazione di {assigneduser} da {card} su {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} ha annullato l'assegnazione di {assigneduser} da {card} su {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Hai spostato la scheda {card} da {stackBefore} in {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} ha spostato la scheda {card} da {stackBefore} in {stack}", - "You have added the attachment {attachment} to {card}" : "Hai aggiunto l'allegato {attachment} a {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} ha aggiunto l'allegato {attachment} a {card}", - "You have updated the attachment {attachment} on {card}" : "Hai aggiornato l'allegato {attachment} su {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} ha aggiornato l'allegato {attachment} su {card}", - "You have deleted the attachment {attachment} from {card}" : "Hai eliminato l'allegato {attachment} da {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} ha eliminato l'allegato {attachment} da {card}", - "You have restored the attachment {attachment} to {card}" : "Hai ripristinato l'allegato {attachment} in {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} ha ripristinato l'allegato {attachment} in {card}", - "You have commented on {card}" : "Hai commentato su {card}", - "{user} has commented on {card}" : "{user} ha commentato su {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Hai aggiunto una descrizione alla scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha aggiunto una descrizione alla scheda {card} nella pila {stack} sulla lavagna {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Hai aggiornato la descrizione della scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ha aggiornato la descrizione della scheda {card} nella pila {stack} sulla lavagna {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Hai archiviato la scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha archiviato la scheda {card} nella pila {stack} sulla lavagna {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Hai annullato l'archiviazione della scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha annullato l'archiviazione della scheda {card} nella pila {stack} sulla lavagna {board}", + "You have removed the due date of card {card}" : "Hai rimosso la data di scadenza della scheda {card}", + "{user} has removed the due date of card {card}" : "{user} ha rimosso la data di scadenza dalla scheda {card}", + "You have set the due date of card {card} to {after}" : "Hai impostato la data di scadenza della scheda {card} a {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ha impostato la data di scadenza dell scheda {card} a {after}", + "You have updated the due date of card {card} to {after}" : "Hai aggiornato la data di scadenza della scheda {card} a {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ha aggiornato la data di scadenza della scheda {card} a {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Hai aggiunto l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha aggiunto l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Hai rimosso l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha rimosso l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Hai assegnato {assigneduser} alla scheda {card} sulla lavagna {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha assegnato {assigneduser} alla scheda {card} sulla lavagna {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Hai annullato l'assegnazione di {assigneduser} da scheda {card} sulla lavagna {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha annullato l'assegnazione di {assigneduser} dalla scheda {card} sulla lavagna {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Hai spostato la scheda {card} dalla pila {stackBefore} in {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha spostato la scheda {card} dalla pila {stackBefore} in {stack}", + "You have added the attachment {attachment} to card {card}" : "Hai aggiunto l'allegato {attachment} alla scheda {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} ha aggiunto l'allegato {attachment} alla scheda {card}", + "You have updated the attachment {attachment} on card {card}" : "Hai aggiornato l'allegato {attachment} sulla scheda {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ha aggiornato l'allegato {attachment} sulla scheda {card}", + "You have deleted the attachment {attachment} from card {card}" : "Hai eliminato l'allegato {attachment} dalla scheda {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} ha eliminato l'allegato {attachment} della scheda {card}", + "You have restored the attachment {attachment} to card {card}" : "Hai ripristinato l'allegato {attachment} nella scheda {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} ha ripristinato l'allegato {attachment} nella scheda {card}", + "You have commented on card {card}" : "Hai commentato sulla scheda {card}", + "{user} has commented on card {card}" : "{user} ha commentato sulla scheda {card}", + "A card description inside the Deck app has been changed" : "La descrizione di una scheda nell'applicazione Deck è stata modificata", "Deck" : "Deck", + "Changes in the Deck app" : "Modifiche nell'applicazione Deck", "Personal" : "Personale", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La scheda \"%s\" in \"%s\" ti è stata assegnata da %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} ti ha assegnato la scheda \"%s\" in \"%s\".", @@ -103,6 +106,8 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nessun file caricato o la dimensione del file supera il massimo di %s", "A kanban style project and personal management tool for Nextcloud" : "Uno strumento in stile kanban di gestione progetti e personale per Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck è uno strumento di organizzazione in stile kanban destinato alla pianificazione personale e all'organizzazione di progetti per squadre integrato con Nextcloud.\n\n\n- 📥 Aggiungi le tue attività alle schede e tienile in ordine\n- 📄 Scrivi note aggiuntive in markdown\n- 🔖 Assegna etichette per un'organizzazione ancora migliore\n- 👥 Condividi con la tua squadra, amici o famiglia\n- 📎 Allega file e integrali nella tua descrizione markdown\n- 💬 Discuti con la tua squadra utilizzando i commenti\n- ⚡ Tieni traccia dei cambiamenti nel flusso delle attività\n- 🚀 Organizza il tuo progetto", + "Select the board to link to a project" : "Seleziona la lavagna da collegare a un progetto", + "Select board" : "Seleziona lavagna", "Add a new stack" : "Aggiungi una nuova pila", "Submit" : "Invia", "Show archived cards" : "Mostra le carte archiviate", @@ -112,6 +117,7 @@ OC.L10N.register( "All Boards" : "Tutte le lavagne", "Archived boards" : "Lavagne archiviate", "Share board" : "Condividi lavagna", + "Archived cards" : "Schede archiviate", "Actions" : "Azioni", "Drop your files here to upload it to the card" : "Rilascia qui i tuoi file per caricarli nella scheda", "Assign card to me" : "Assegna scheda a me", @@ -127,13 +133,15 @@ OC.L10N.register( "Deleted items" : "Elementi eliminati", "Timeline" : "Linea temporale", "Select users or groups to share with" : "Seleziona utenti o gruppi con cui condividere", - "Access for" : "Accesso per", + "Group" : "Gruppo", + "Circle" : "Cerchia", "No matching user or group found." : "Nessun utente o gruppo trovato.", "Loading" : "Caricamento", - "Share" : "Condividi", "Edit" : "Modifica", + "Share" : "Condividi", "Manage" : "Gestisci", "Discard share" : "Annulla condivisione", + "Sharing has been disabled for your account." : "La condivisione è stata disabilitata per il tuo account.", "Update tag" : "Aggiorna etichetta", "Edit tag" : "Modifica etichetta", "Delete tag" : "Elimina etichetta", @@ -185,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Aggiungi descrizione della scheda...", "Shared boards" : "Lavagne condivise", "Move board to archive" : "Sposta lavagna nell'archivio", - "Create a new board" : "Crea una nuova lavagna" + "Create a new board" : "Crea una nuova lavagna", + "Settings" : "Impostazioni", + "Limit deck to groups" : "Limita Deck a gruppi", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "La limitazione di Deck impedirà agli utenti che non fanno parte di tali gruppi di creare le proprie lavagne. Gli utenti saranno ancora in grado di lavorare sulle lavagne che sono state condivise con loro," }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/it.json b/l10n/it.json index be703153f..73f64a44f 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -7,6 +7,7 @@ "Remove user from card" : "Rimuovi utente dalla scheda", "Hours" : "Ore", "Minutes" : "Minuti", + "Link to a board" : "Collega a una lavagna", "Maximum file size of {size} exceeded" : "Dimensione massima dei file di {size} superata", "You have created a new board {board}" : "Hai creato una nuova lavagna {board}", "{user} has created a new board {board}" : "{user} ha creato una nuova lavagna {board}", @@ -19,58 +20,60 @@ "You have removed {acl} from the board {board}" : "Hai rimosso {acl} dalla lavagna {board}", "{user} has removed {acl} from the board {board}" : "{user} ha rimosso {acl} dalla lavagna {board}", "You have renamed the board {before} to {board}" : "Hai rinominato la lavagna {before} in {board}", - "{user} has has renamed the board {before} to {board}" : "{user} ha rinominato la lavagna {before} in {board}", + "{user} has renamed the board {before} to {board}" : "{user} ha rinominato la lavagna {before} in {board}", "You have archived the board {board}" : "Hai archiviato la lavagna {board}", "{user} has archived the board {before}" : "{user} ha archiviato la lavagna {before}", "You have unarchived the board {board}" : "Hai annullato l'archiviazione della lavagna {board}", "{user} has unarchived the board {before}" : "{user} ha annullato l'archiviazione della lavagna {board}", - "You have created a new stack {stack} on {board}" : "Hai creato una nuova pila {stack} su {board}", - "{user} has created a new stack {stack} on {board}" : "{user} ha creato una nuova pila {stack} su {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Hai rinominato una nuova pila {before} in {stack} su {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} ha rinominato una nuova pila {before} in {stack} su {board}", - "You have deleted {stack} on {board}" : "Hai eliminato {stack} su {board}", - "{user} has deleted {stack} on {board}" : "{user} ha eliminato {stack} su {board}", - "You have created {card} in {stack} on {board}" : "Hai creato {card} in {stack} su {board}", - "{user} has created {card} in {stack} on {board}" : "{user} ha creato {card} in {stack} su {board}", - "You have deleted {card} in {stack} on {board}" : "Hai eliminato {card} in {stack} su {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} ha eliminato {card} in {stack} su {board}", + "You have created a new stack {stack} on board {board}" : "Hai creato una nuova pila {stack} sulla lavagna {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} ha creato una nuova pila {stack} sulla lavagna {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Hai rinominato la pila {before} in {stack} sulla lavagna {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} ha rinominato la pila {before} in {stack} sulla lavagna {board}", + "You have deleted stack {stack} on board {board}" : "Hai eliminato la pila {stack} sulla lavagna {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} ha eliminato la pila {stack} sulla lavagna {board}", + "You have created card {card} in stack {stack} on board {board}" : "Hai creato la scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} ha creato la scheda {card} nella pila {stack} sulla lavagna {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Hai eliminato la scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} ha creato la scheda {card} nell pila {stack} sulla lavagna {board}", "You have renamed the card {before} to {card}" : "Hai rinominato la scheda {before} in {card}", "{user} has renamed the card {before} to {card}" : "{user} ha rinominato la scheda {before} in {card}", - "You have added a description to {card} in {stack} on {board}" : "Hai aggiunto una descrizione a {card} in {stack} su {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} ha aggiunto una descrizione a {card} in {stack} su {board}", - "You have updated the description of {card} in {stack} on {board}" : "Hai aggiornato la descrizione di {card} in {stack} su {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} ha aggiornato la descrizione di {card} in {stack} su {board}", - "You have archived {card} in {stack} on {board}" : "Hai archiviato {card} in {stack} su {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} ha archiviato {card} in {stack} su {board}", - "You have unarchived {card} in {stack} on {board}" : "Hai annullato l'archiviazione di {card} in {stack} su {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} ha annullato l'archiviazione di {card} in {stack} su {board}", - "You have removed the due date of {card}" : "Hai rimosso la data di scadenza di {card}", - "{user} has removed the due date of {card}" : "{user} ha rimosso la data di scadenza di {card}", - "You have set the due date of {card} to {after}" : "Hai impostato la data di scadenza di {card} a {after}", - "{user} has set the due date of {card} to {after}" : "{user} ha impostato la data di scadenza di {card} a {after}", - "You have updated the due date of {card} to {after}" : "Hai aggiornato la data di scadenza di {card} a {after}", - "{user} has updated the due date of {card} to {after}" : "{user} ha aggiornato la data di scadenza di {card} a {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Hai aggiunto l'etichetta {label} a {card} in {stack} su {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} ha aggiunto l'etichetta {label} a {card} in {stack} su {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Hai rimosso l'etichetta {label} da {card} in {stack} su {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} ha rimosso l'etichetta {label} da {card} in {stack} su {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Hai assegnato {assigneduser} a {card} su {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} ha assegnato {assigneduser} a {card} su {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Hai annullato l'assegnazione di {assigneduser} da {card} su {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} ha annullato l'assegnazione di {assigneduser} da {card} su {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Hai spostato la scheda {card} da {stackBefore} in {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} ha spostato la scheda {card} da {stackBefore} in {stack}", - "You have added the attachment {attachment} to {card}" : "Hai aggiunto l'allegato {attachment} a {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} ha aggiunto l'allegato {attachment} a {card}", - "You have updated the attachment {attachment} on {card}" : "Hai aggiornato l'allegato {attachment} su {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} ha aggiornato l'allegato {attachment} su {card}", - "You have deleted the attachment {attachment} from {card}" : "Hai eliminato l'allegato {attachment} da {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} ha eliminato l'allegato {attachment} da {card}", - "You have restored the attachment {attachment} to {card}" : "Hai ripristinato l'allegato {attachment} in {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} ha ripristinato l'allegato {attachment} in {card}", - "You have commented on {card}" : "Hai commentato su {card}", - "{user} has commented on {card}" : "{user} ha commentato su {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Hai aggiunto una descrizione alla scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} ha aggiunto una descrizione alla scheda {card} nella pila {stack} sulla lavagna {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Hai aggiornato la descrizione della scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} ha aggiornato la descrizione della scheda {card} nella pila {stack} sulla lavagna {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Hai archiviato la scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} ha archiviato la scheda {card} nella pila {stack} sulla lavagna {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Hai annullato l'archiviazione della scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ha annullato l'archiviazione della scheda {card} nella pila {stack} sulla lavagna {board}", + "You have removed the due date of card {card}" : "Hai rimosso la data di scadenza della scheda {card}", + "{user} has removed the due date of card {card}" : "{user} ha rimosso la data di scadenza dalla scheda {card}", + "You have set the due date of card {card} to {after}" : "Hai impostato la data di scadenza della scheda {card} a {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ha impostato la data di scadenza dell scheda {card} a {after}", + "You have updated the due date of card {card} to {after}" : "Hai aggiornato la data di scadenza della scheda {card} a {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} ha aggiornato la data di scadenza della scheda {card} a {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Hai aggiunto l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} ha aggiunto l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Hai rimosso l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} ha rimosso l'etichetta {label} alla scheda {card} nella pila {stack} sulla lavagna {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Hai assegnato {assigneduser} alla scheda {card} sulla lavagna {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} ha assegnato {assigneduser} alla scheda {card} sulla lavagna {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Hai annullato l'assegnazione di {assigneduser} da scheda {card} sulla lavagna {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} ha annullato l'assegnazione di {assigneduser} dalla scheda {card} sulla lavagna {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Hai spostato la scheda {card} dalla pila {stackBefore} in {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} ha spostato la scheda {card} dalla pila {stackBefore} in {stack}", + "You have added the attachment {attachment} to card {card}" : "Hai aggiunto l'allegato {attachment} alla scheda {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} ha aggiunto l'allegato {attachment} alla scheda {card}", + "You have updated the attachment {attachment} on card {card}" : "Hai aggiornato l'allegato {attachment} sulla scheda {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} ha aggiornato l'allegato {attachment} sulla scheda {card}", + "You have deleted the attachment {attachment} from card {card}" : "Hai eliminato l'allegato {attachment} dalla scheda {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} ha eliminato l'allegato {attachment} della scheda {card}", + "You have restored the attachment {attachment} to card {card}" : "Hai ripristinato l'allegato {attachment} nella scheda {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} ha ripristinato l'allegato {attachment} nella scheda {card}", + "You have commented on card {card}" : "Hai commentato sulla scheda {card}", + "{user} has commented on card {card}" : "{user} ha commentato sulla scheda {card}", + "A card description inside the Deck app has been changed" : "La descrizione di una scheda nell'applicazione Deck è stata modificata", "Deck" : "Deck", + "Changes in the Deck app" : "Modifiche nell'applicazione Deck", "Personal" : "Personale", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "La scheda \"%s\" in \"%s\" ti è stata assegnata da %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} ti ha assegnato la scheda \"%s\" in \"%s\".", @@ -101,6 +104,8 @@ "No file uploaded or file size exceeds maximum of %s" : "Nessun file caricato o la dimensione del file supera il massimo di %s", "A kanban style project and personal management tool for Nextcloud" : "Uno strumento in stile kanban di gestione progetti e personale per Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck è uno strumento di organizzazione in stile kanban destinato alla pianificazione personale e all'organizzazione di progetti per squadre integrato con Nextcloud.\n\n\n- 📥 Aggiungi le tue attività alle schede e tienile in ordine\n- 📄 Scrivi note aggiuntive in markdown\n- 🔖 Assegna etichette per un'organizzazione ancora migliore\n- 👥 Condividi con la tua squadra, amici o famiglia\n- 📎 Allega file e integrali nella tua descrizione markdown\n- 💬 Discuti con la tua squadra utilizzando i commenti\n- ⚡ Tieni traccia dei cambiamenti nel flusso delle attività\n- 🚀 Organizza il tuo progetto", + "Select the board to link to a project" : "Seleziona la lavagna da collegare a un progetto", + "Select board" : "Seleziona lavagna", "Add a new stack" : "Aggiungi una nuova pila", "Submit" : "Invia", "Show archived cards" : "Mostra le carte archiviate", @@ -110,6 +115,7 @@ "All Boards" : "Tutte le lavagne", "Archived boards" : "Lavagne archiviate", "Share board" : "Condividi lavagna", + "Archived cards" : "Schede archiviate", "Actions" : "Azioni", "Drop your files here to upload it to the card" : "Rilascia qui i tuoi file per caricarli nella scheda", "Assign card to me" : "Assegna scheda a me", @@ -125,13 +131,15 @@ "Deleted items" : "Elementi eliminati", "Timeline" : "Linea temporale", "Select users or groups to share with" : "Seleziona utenti o gruppi con cui condividere", - "Access for" : "Accesso per", + "Group" : "Gruppo", + "Circle" : "Cerchia", "No matching user or group found." : "Nessun utente o gruppo trovato.", "Loading" : "Caricamento", - "Share" : "Condividi", "Edit" : "Modifica", + "Share" : "Condividi", "Manage" : "Gestisci", "Discard share" : "Annulla condivisione", + "Sharing has been disabled for your account." : "La condivisione è stata disabilitata per il tuo account.", "Update tag" : "Aggiorna etichetta", "Edit tag" : "Modifica etichetta", "Delete tag" : "Elimina etichetta", @@ -183,6 +191,9 @@ "Add a card description…" : "Aggiungi descrizione della scheda...", "Shared boards" : "Lavagne condivise", "Move board to archive" : "Sposta lavagna nell'archivio", - "Create a new board" : "Crea una nuova lavagna" + "Create a new board" : "Crea una nuova lavagna", + "Settings" : "Impostazioni", + "Limit deck to groups" : "Limita Deck a gruppi", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "La limitazione di Deck impedirà agli utenti che non fanno parte di tali gruppi di creare le proprie lavagne. Gli utenti saranno ancora in grado di lavorare sulle lavagne che sono state condivise con loro," },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/ja.js b/l10n/ja.js index 42f970a7d..e59449403 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -21,30 +21,22 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "{acl} をボード {board} から削除しました。", "{user} has removed {acl} from the board {board}" : "{user} がボード {board} から {acl} を削除しました", "You have renamed the board {before} to {board}" : "あなたは {before} のボードの名前を {board} に変更しました", - "{user} has has renamed the board {before} to {board}" : "{user} はボード {board} の名前を {before} に変更しました", + "{user} has renamed the board {before} to {board}" : "{user} はボード {before} を {board} に変更しました", "You have archived the board {board}" : "あなたはボードをアーカイブしました {board}", "{user} has archived the board {before}" : "{user} は {before} のボードをアーカイブしました", "You have unarchived the board {board}" : "ボード {board} がアーカイブされていません", "{user} has unarchived the board {before}" : "{user} は {before} のボードをアーカイブされていません", - "You have created a new stack {stack} on {board}" : "{board} に新しいスタック {stack} を作成しました。", - "{user} has created a new stack {stack} on {board}" : "{user} が {board} に新しいスタック {stack} を作成しました", - "You have renamed a new stack {before} to {stack} on {board}" : "あなたは新しいスタック {before} の名前を {stack} {board} に変更しました", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} が {board} の {stack} に新しいスタックの名前を{before} に変更しました", - "You have deleted {stack} on {board}" : "{board} の {stack} を削除しました。", - "{user} has deleted {stack} on {board}" : "{user} が {board} の {stack} を削除しました", - "You have created {card} in {stack} on {board}" : "{board} の {stack} に {card} を作成しました。", - "{user} has created {card} in {stack} on {board}" : "{user} が {board} の {stack} に {card} を作成しました", - "You have deleted {card} in {stack} on {board}" : "{board} の {stack} で {card} を削除しました。", - "{user} has deleted {card} in {stack} on {board}" : "{user} が {board} の {stack} で {card} を削除しました", + "You have created a new stack {stack} on board {board}" : "{board} に新しいスタック {stack} を作成しました。", + "{user} has created a new stack {stack} on board {board}" : "{user} が {board} に新しいスタック {stack} を作成しました", + "You have renamed stack {before} to {stack} on board {board}" : " {board} のスタックの名前を {before} から {stack} に変更しました", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} がボード {board} のスタックの名前を {before} から {stack} に変更しました", + "You have deleted stack {stack} on board {board}" : "ボード {board} のスタック {stack} を削除しました。", + "{user} has deleted stack {stack} on board {board}" : "{user} がボード {board} のスタック {stack} を削除しました。", + "You have created card {card} in stack {stack} on board {board}" : "{board} の {stack} に {card} を作成しました。", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} が {board} の {stack} に {card} を作成しました", + "You have deleted card {card} in stack {stack} on board {board}" : "{board} の {stack} で {card} を削除しました。", "You have renamed the card {before} to {card}" : "あなたはカード {before} の名前を {card} に変更しました", "{user} has renamed the card {before} to {card}" : "{user} が {before} カードの名前を {card} に変更しました", - "You have added a description to {card} in {stack} on {board}" : "{board} の {stack} の {card} に説明を追加しました。", - "{user} has added a description to {card} in {stack} on {board}" : "{user} が {board} の {stack} の {card} に説明を追加しました", - "You have updated the description of {card} in {stack} on {board}" : "{board} の {stack} の {card} の説明を更新しました。", - "{user} has updated the description {card} in {stack} on {board}" : "{user} が {board} の {stack} の {card} の説明を更新しました", - "You have archived {card} in {stack} on {board}" : "{board} の {stack} に {card} をアーカイブしました。", - "{user} has archived {card} in {stack} on {board}" : "{user} は {board} の {stack} に {card} をアーカイブしました", - "You have unarchived {card} in {stack} on {board}" : "{board} の {stack} に {card} のアーカイブを解除しました", "Deck" : "デッキ", "Personal" : "個人", "No data was provided to create an attachment." : "添付ファイルを作成するためのデータは提供されていません。", @@ -91,11 +83,10 @@ OC.L10N.register( "Deleted items" : "削除されたアイテム", "Timeline" : "タイムライン", "Select users or groups to share with" : "共有するユーザーまたはグループを選択する", - "Access for" : "のためのアクセス", "No matching user or group found." : "一致するユーザーまたはグループが見つかりません。", "Loading" : "読み込み中", - "Share" : "共有", "Edit" : "編集", + "Share" : "共有", "Manage" : "管理", "Discard share" : "共有をやめる", "Update tag" : "タグを更新する", @@ -134,7 +125,7 @@ OC.L10N.register( "Add a tag" : "タグを追加", "Select tags" : "タグを選択..", "Assign users" : "ユーザーを割り当てる", - "Choose a user to assign" : "割り当てるユーザを選択する", + "Choose a user to assign" : "割り当てるユーザーを選択する", "Assign this card to a user" : "このカードをユーザーに割り当てる", "Due date" : "期限", "Click to set" : "クリックして設定する", diff --git a/l10n/ja.json b/l10n/ja.json index efb5add1a..3e897ff85 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -19,30 +19,22 @@ "You have removed {acl} from the board {board}" : "{acl} をボード {board} から削除しました。", "{user} has removed {acl} from the board {board}" : "{user} がボード {board} から {acl} を削除しました", "You have renamed the board {before} to {board}" : "あなたは {before} のボードの名前を {board} に変更しました", - "{user} has has renamed the board {before} to {board}" : "{user} はボード {board} の名前を {before} に変更しました", + "{user} has renamed the board {before} to {board}" : "{user} はボード {before} を {board} に変更しました", "You have archived the board {board}" : "あなたはボードをアーカイブしました {board}", "{user} has archived the board {before}" : "{user} は {before} のボードをアーカイブしました", "You have unarchived the board {board}" : "ボード {board} がアーカイブされていません", "{user} has unarchived the board {before}" : "{user} は {before} のボードをアーカイブされていません", - "You have created a new stack {stack} on {board}" : "{board} に新しいスタック {stack} を作成しました。", - "{user} has created a new stack {stack} on {board}" : "{user} が {board} に新しいスタック {stack} を作成しました", - "You have renamed a new stack {before} to {stack} on {board}" : "あなたは新しいスタック {before} の名前を {stack} {board} に変更しました", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} が {board} の {stack} に新しいスタックの名前を{before} に変更しました", - "You have deleted {stack} on {board}" : "{board} の {stack} を削除しました。", - "{user} has deleted {stack} on {board}" : "{user} が {board} の {stack} を削除しました", - "You have created {card} in {stack} on {board}" : "{board} の {stack} に {card} を作成しました。", - "{user} has created {card} in {stack} on {board}" : "{user} が {board} の {stack} に {card} を作成しました", - "You have deleted {card} in {stack} on {board}" : "{board} の {stack} で {card} を削除しました。", - "{user} has deleted {card} in {stack} on {board}" : "{user} が {board} の {stack} で {card} を削除しました", + "You have created a new stack {stack} on board {board}" : "{board} に新しいスタック {stack} を作成しました。", + "{user} has created a new stack {stack} on board {board}" : "{user} が {board} に新しいスタック {stack} を作成しました", + "You have renamed stack {before} to {stack} on board {board}" : " {board} のスタックの名前を {before} から {stack} に変更しました", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} がボード {board} のスタックの名前を {before} から {stack} に変更しました", + "You have deleted stack {stack} on board {board}" : "ボード {board} のスタック {stack} を削除しました。", + "{user} has deleted stack {stack} on board {board}" : "{user} がボード {board} のスタック {stack} を削除しました。", + "You have created card {card} in stack {stack} on board {board}" : "{board} の {stack} に {card} を作成しました。", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} が {board} の {stack} に {card} を作成しました", + "You have deleted card {card} in stack {stack} on board {board}" : "{board} の {stack} で {card} を削除しました。", "You have renamed the card {before} to {card}" : "あなたはカード {before} の名前を {card} に変更しました", "{user} has renamed the card {before} to {card}" : "{user} が {before} カードの名前を {card} に変更しました", - "You have added a description to {card} in {stack} on {board}" : "{board} の {stack} の {card} に説明を追加しました。", - "{user} has added a description to {card} in {stack} on {board}" : "{user} が {board} の {stack} の {card} に説明を追加しました", - "You have updated the description of {card} in {stack} on {board}" : "{board} の {stack} の {card} の説明を更新しました。", - "{user} has updated the description {card} in {stack} on {board}" : "{user} が {board} の {stack} の {card} の説明を更新しました", - "You have archived {card} in {stack} on {board}" : "{board} の {stack} に {card} をアーカイブしました。", - "{user} has archived {card} in {stack} on {board}" : "{user} は {board} の {stack} に {card} をアーカイブしました", - "You have unarchived {card} in {stack} on {board}" : "{board} の {stack} に {card} のアーカイブを解除しました", "Deck" : "デッキ", "Personal" : "個人", "No data was provided to create an attachment." : "添付ファイルを作成するためのデータは提供されていません。", @@ -89,11 +81,10 @@ "Deleted items" : "削除されたアイテム", "Timeline" : "タイムライン", "Select users or groups to share with" : "共有するユーザーまたはグループを選択する", - "Access for" : "のためのアクセス", "No matching user or group found." : "一致するユーザーまたはグループが見つかりません。", "Loading" : "読み込み中", - "Share" : "共有", "Edit" : "編集", + "Share" : "共有", "Manage" : "管理", "Discard share" : "共有をやめる", "Update tag" : "タグを更新する", @@ -132,7 +123,7 @@ "Add a tag" : "タグを追加", "Select tags" : "タグを選択..", "Assign users" : "ユーザーを割り当てる", - "Choose a user to assign" : "割り当てるユーザを選択する", + "Choose a user to assign" : "割り当てるユーザーを選択する", "Assign this card to a user" : "このカードをユーザーに割り当てる", "Due date" : "期限", "Click to set" : "クリックして設定する", diff --git a/l10n/ka_GE.js b/l10n/ka_GE.js index d94e2fca0..3ae352c97 100644 --- a/l10n/ka_GE.js +++ b/l10n/ka_GE.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "გაზიარება", "Tags" : "ტეგები", "Select users or groups to share with" : "გასაზიარებლად აირჩიეთ მომხმარებლები ან ჯგუფები", - "Access for" : "წვდომა ობიექტისთვის", "No matching user or group found." : "მომხმარებლები ან ჯგუფები ვერ იქნა ნაპოვნი.", "Loading" : "იტვირთება", - "Share" : "გაზიარება", "Edit" : "შეცვლა", + "Share" : "გაზიარება", "Manage" : "მენეჯმენტი", "Discard share" : "გაზიარების უარყოფა", "Create" : "შექმნა", diff --git a/l10n/ka_GE.json b/l10n/ka_GE.json index 0103b0293..b1fa77942 100644 --- a/l10n/ka_GE.json +++ b/l10n/ka_GE.json @@ -22,11 +22,10 @@ "Sharing" : "გაზიარება", "Tags" : "ტეგები", "Select users or groups to share with" : "გასაზიარებლად აირჩიეთ მომხმარებლები ან ჯგუფები", - "Access for" : "წვდომა ობიექტისთვის", "No matching user or group found." : "მომხმარებლები ან ჯგუფები ვერ იქნა ნაპოვნი.", "Loading" : "იტვირთება", - "Share" : "გაზიარება", "Edit" : "შეცვლა", + "Share" : "გაზიარება", "Manage" : "მენეჯმენტი", "Discard share" : "გაზიარების უარყოფა", "Create" : "შექმნა", diff --git a/l10n/ko.js b/l10n/ko.js index 75bf4c7b3..e1946c114 100644 --- a/l10n/ko.js +++ b/l10n/ko.js @@ -24,11 +24,10 @@ OC.L10N.register( "Sharing" : "공유", "Tags" : "태그", "Select users or groups to share with" : "공유할 사용자나 그룹 선택", - "Access for" : "접근 권한", "No matching user or group found." : "일치하는 사용자나 그룹이 없습니다.", "Loading" : "불러오는 중", - "Share" : "공유", "Edit" : "편집", + "Share" : "공유", "Manage" : "관리", "Discard share" : "공유 무시", "Create" : "만들기", diff --git a/l10n/ko.json b/l10n/ko.json index 83d13f2d8..a12e3d8b9 100644 --- a/l10n/ko.json +++ b/l10n/ko.json @@ -22,11 +22,10 @@ "Sharing" : "공유", "Tags" : "태그", "Select users or groups to share with" : "공유할 사용자나 그룹 선택", - "Access for" : "접근 권한", "No matching user or group found." : "일치하는 사용자나 그룹이 없습니다.", "Loading" : "불러오는 중", - "Share" : "공유", "Edit" : "편집", + "Share" : "공유", "Manage" : "관리", "Discard share" : "공유 무시", "Create" : "만들기", diff --git a/l10n/lt_LT.js b/l10n/lt_LT.js index d1507c7e0..30bdd2116 100644 --- a/l10n/lt_LT.js +++ b/l10n/lt_LT.js @@ -1,10 +1,15 @@ OC.L10N.register( "deck", { + "Please provide a content for your comment." : "Pateikite savo komentaro turinį.", + "Posting the comment failed." : "Komentaro paskelbimas patyrė nesėkmę.", + "The comment has been deleted" : "Komentaras ištrintas", "Remove user from card" : "Šalinti naudotoją iš kortelės", "Hours" : "Valandos", "Minutes" : "Minutės", + "{user} has shared the board {board} with {sharee}" : "{user} pasidalino {board} su {sharee}", "Deck" : "Užduočių saugykla", + "No data was provided to create an attachment." : "Priedo sukūrimui nebuvo pateikta jokių duomenų.", "Finished" : "Baigta", "To review" : "Peržiūrėti", "Action needed" : "Reikalingas veiksmas", @@ -15,6 +20,7 @@ OC.L10N.register( "Example Task 1" : "Pavyzdinė užduotis 1", "The file was uploaded" : "Failas buvo įkeltas", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Įkeliamas failas viršija upload_max_filesize direktyvą, esančią faile php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Įkeltas failas viršija MAX_FILE_SIZE direktyvą, kuri buvo nurodyta HTML formoje", "The file was only partially uploaded" : "Failas buvo tik dalinai įkeltas", "No file was uploaded" : "Nebuvo įkeltas joks failas", "Missing a temporary folder" : "Trūksta laikinojo aplanko", @@ -26,19 +32,26 @@ OC.L10N.register( "Hide archived cards" : "Paslėpti archyvuotus elementus", "All Boards" : "Visi užduočių sąrašai", "Archived boards" : "Archyvuoti sąrašai", + "Actions" : "Veiksmai", "Drop your files here to upload it to the card" : "Vilkite savo failus čia, norėdami įkelti juos į kortelę", "Enter a card title" : "Įveskite kortelės vardą", "Add card" : "Pridėti kortelę", "Close" : "Užverti", "Sharing" : "Bendrinimas", "Tags" : "Žymės", + "Deleted items" : "Ištrinti elementai", "Select users or groups to share with" : "Pasirinkti naudotojus ar naudotojų grupes bendrinimui", + "Group" : "Grupė", + "Circle" : "Ratas", "No matching user or group found." : "Nerasta vartotojų ir grupių", "Loading" : "Įkeliama", - "Share" : "Dalintis", "Edit" : "Taisyti", - "Manage" : "Redaguoti", - "Discard share" : "Atšaukti dalinimąsi", + "Share" : "Dalintis", + "Manage" : "Tvarkyti", + "Sharing has been disabled for your account." : "Bendrinimas jūsų paskyrai yra išjungtas.", + "Update tag" : "Atnaujinti žymę", + "Edit tag" : "Taisyti žymę", + "Delete tag" : "Ištrinti žymę", "Create" : "Sukurti", "Create a new tag" : "Sukurti naują žymę", "Status" : "Būsena", @@ -51,7 +64,7 @@ OC.L10N.register( "Delete board" : "Pašalinti sąrašą", "Create new board" : "Sukurti naują sąrašą", "New board title" : "Naujas sąrašo vardas", - "Cancel upload" : "Atsisakyti įkėlimo", + "Cancel upload" : "Atšaukti įkėlimą", "by" : " ", "Undo file deletion" : "Atšaukti failo ištrynimą", "Insert the file into the description" : "Įterpti failą į aprašą", @@ -73,6 +86,7 @@ OC.L10N.register( "Add a card description…" : "Pridėti elemento apibūdinimą...", "Shared boards" : "Bendrinami sąrašai", "Move board to archive" : "Perkelti sąrašą į archyvą", - "Create a new board" : "Sukurti naują sąrašą" + "Create a new board" : "Sukurti naują sąrašą", + "Settings" : "Nustatymai" }, "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/l10n/lt_LT.json b/l10n/lt_LT.json index 5eb77789e..93ed60c3c 100644 --- a/l10n/lt_LT.json +++ b/l10n/lt_LT.json @@ -1,8 +1,13 @@ { "translations": { + "Please provide a content for your comment." : "Pateikite savo komentaro turinį.", + "Posting the comment failed." : "Komentaro paskelbimas patyrė nesėkmę.", + "The comment has been deleted" : "Komentaras ištrintas", "Remove user from card" : "Šalinti naudotoją iš kortelės", "Hours" : "Valandos", "Minutes" : "Minutės", + "{user} has shared the board {board} with {sharee}" : "{user} pasidalino {board} su {sharee}", "Deck" : "Užduočių saugykla", + "No data was provided to create an attachment." : "Priedo sukūrimui nebuvo pateikta jokių duomenų.", "Finished" : "Baigta", "To review" : "Peržiūrėti", "Action needed" : "Reikalingas veiksmas", @@ -13,6 +18,7 @@ "Example Task 1" : "Pavyzdinė užduotis 1", "The file was uploaded" : "Failas buvo įkeltas", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Įkeliamas failas viršija upload_max_filesize direktyvą, esančią faile php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Įkeltas failas viršija MAX_FILE_SIZE direktyvą, kuri buvo nurodyta HTML formoje", "The file was only partially uploaded" : "Failas buvo tik dalinai įkeltas", "No file was uploaded" : "Nebuvo įkeltas joks failas", "Missing a temporary folder" : "Trūksta laikinojo aplanko", @@ -24,19 +30,26 @@ "Hide archived cards" : "Paslėpti archyvuotus elementus", "All Boards" : "Visi užduočių sąrašai", "Archived boards" : "Archyvuoti sąrašai", + "Actions" : "Veiksmai", "Drop your files here to upload it to the card" : "Vilkite savo failus čia, norėdami įkelti juos į kortelę", "Enter a card title" : "Įveskite kortelės vardą", "Add card" : "Pridėti kortelę", "Close" : "Užverti", "Sharing" : "Bendrinimas", "Tags" : "Žymės", + "Deleted items" : "Ištrinti elementai", "Select users or groups to share with" : "Pasirinkti naudotojus ar naudotojų grupes bendrinimui", + "Group" : "Grupė", + "Circle" : "Ratas", "No matching user or group found." : "Nerasta vartotojų ir grupių", "Loading" : "Įkeliama", - "Share" : "Dalintis", "Edit" : "Taisyti", - "Manage" : "Redaguoti", - "Discard share" : "Atšaukti dalinimąsi", + "Share" : "Dalintis", + "Manage" : "Tvarkyti", + "Sharing has been disabled for your account." : "Bendrinimas jūsų paskyrai yra išjungtas.", + "Update tag" : "Atnaujinti žymę", + "Edit tag" : "Taisyti žymę", + "Delete tag" : "Ištrinti žymę", "Create" : "Sukurti", "Create a new tag" : "Sukurti naują žymę", "Status" : "Būsena", @@ -49,7 +62,7 @@ "Delete board" : "Pašalinti sąrašą", "Create new board" : "Sukurti naują sąrašą", "New board title" : "Naujas sąrašo vardas", - "Cancel upload" : "Atsisakyti įkėlimo", + "Cancel upload" : "Atšaukti įkėlimą", "by" : " ", "Undo file deletion" : "Atšaukti failo ištrynimą", "Insert the file into the description" : "Įterpti failą į aprašą", @@ -71,6 +84,7 @@ "Add a card description…" : "Pridėti elemento apibūdinimą...", "Shared boards" : "Bendrinami sąrašai", "Move board to archive" : "Perkelti sąrašą į archyvą", - "Create a new board" : "Sukurti naują sąrašą" + "Create a new board" : "Sukurti naują sąrašą", + "Settings" : "Nustatymai" },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" } \ No newline at end of file diff --git a/l10n/nb.js b/l10n/nb.js index 4ccd1a1af..f3fba1c02 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -1,51 +1,172 @@ OC.L10N.register( "deck", { + "Please provide a content for your comment." : "Vennligst oppgi innhold for din kommentar.", + "Posting the comment failed." : "Lagring av kommentar feilet.", + "The comment has been deleted" : "Kommentar er slettet", + "The associated stack is deleted as well, it will be restored as well." : "Den tilhørende stabel er også slettet, den vil også bli gjennopprettet.", + "Restore associated stack" : "Gjennopprett tilhørende stabel", "Remove user from card" : "Fjern bruker fra kort", "Hours" : "Timer", "Minutes" : "Minutter", + "Maximum file size of {size} exceeded" : "Maksimal størrelse for filer på {size} er overskredet", + "You have created a new board {board}" : "Du har opprettet ny stabel {board}", + "{user} has created a new board {board}" : "{user} har opprettet stabel {board}", + "You have deleted the board {board}" : "Du har slettet stabel {board}", + "{user} has deleted the board {board}" : "{user} har slettet stabel {board}", + "You have restored the board {board}" : "Du har gjennopprettet stabel {board}", + "{user} has restored the board {board}" : "{user} har gjennopprettet stabel {board}", + "You have shared the board {board} with {acl}" : "Du har delt stabel {board} med {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} har delt stabel {board} med {sharee}", + "You have removed {acl} from the board {board}" : "Du har fjernet {acl} fra stabel {board}", + "{user} has removed {acl} from the board {board}" : "{user} har fjernet {acl} fra stabel {board}", + "You have renamed the board {before} to {board}" : "Du har endret navn på stabel {before} til {board}", + "{user} has renamed the board {before} to {board}" : "{user} har endret navn på stabel {before} til {board}", + "You have archived the board {board}" : "Du har arkivert stabel {board}", + "{user} has archived the board {before}" : "{user} har arkivert stabel {board}", + "You have unarchived the board {board}" : "Du har hentet tavle {board} fra arkiv", + "{user} has unarchived the board {before}" : "{user} har hentet tavle {board} fra arkiv", + "You have created a new stack {stack} on board {board}" : "Du har opprettett ny stabel {stack} på tavle {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} har opprettett ny stabel {stack} på tavle {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Du har endret stabel {before} til {stack} på tavle {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} har endret stabel {before} til {stack} på tavle {board}", + "You have deleted stack {stack} on board {board}" : "Du har slettet stabel {stack} på tavle {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} har slettet stabel {stack} på tavle {board}", + "You have created card {card} in stack {stack} on board {board}" : "Du har opprettet kort {card} i stabel {stack} på tavle {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} har opprettet kort {card} i stabel {stack} på tavle {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Du har slettet kort {card} i stabel {stack} på tavle {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} har slettet kort {card} i stabel {stack} på tavle {board}", + "You have renamed the card {before} to {card}" : "Du har endret navn fra {before} til {card}", + "{user} has renamed the card {before} to {card}" : "{user} har endret navn fra {before} til {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Du har lagt til beskrivelse for kort {card} i stabel {stack} på tavle {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} har lagt til beskrivelse for kort {card} i stabel {stack} på tavle {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Du har endret beskrivelse for kort {card} i stabel {stack} på tavle {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Du har arkivert kort {card} i stabel {stack} på tavle {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} har arkivert kort {card} i stabel {stack} på tavle {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Du har hentet arkivert kort {card} tilbake til stabel {stack} på tavle {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} har hentet arkivert kort {card} tilbake til stabel {stack} på tavle {board}", + "You have removed the due date of card {card}" : "Du har fjernet forfallsdato for kort {card}", + "{user} has removed the due date of card {card}" : "{user} har fjernet forfallsdato for kort {card}", + "You have set the due date of card {card} to {after}" : "Du har satt forfallsdato på kort {card} etter {after}", + "{user} has set the due date of card {card} to {after}" : "{user} har satt forfallsdato på kort {card} etter {after}", + "You have updated the due date of card {card} to {after}" : "Du har oppdatert forfallsdato på kort {card} etter {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} har oppdatert forfallsdato på kort {card} etter {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Du har lagt til merke {label} til kort {card} i stabel {stack} på tavle {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} har lagt til merke {label} til kort {card} i stabel {stack} på tavle {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du har fjernet merke {label} fra kort {card} i stabel {stack} på tavle {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} har fjernet merke {label} fra kort {card} i stabel {stack} på tavle {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Du har tildelt {assigneduser} til kort {card} på tavle {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} har tildelt {assigneduser} til kort {card} på tavle {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Du har fjernet {assigneduser} fra kort {card} på tavle {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} har fjernet {assigneduser} fra kort {card} på tavle {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Du har flyttet kort {card} fra {stackBefore} til {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} har flyttet kort {card} fra {stackBefore} til {stack}", + "You have added the attachment {attachment} to card {card}" : "Du har lagt til vedlegget {attachment} ti kortet {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} har lagt til vedlegget {attachment} på kortet {card}", + "You have updated the attachment {attachment} on card {card}" : "Du har oppdatert vedlegget {attachment} på kortet {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} har oppdatert vedlegget {attachment} på kortet {card}", + "You have deleted the attachment {attachment} from card {card}" : "Du har slettet vedlegget {attachment} på kortet {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} har slettet vedlegget {attachment} på kortet {card}", + "You have restored the attachment {attachment} to card {card}" : "Du har gjennopprettet vedlegget {attachment} på kortet {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} har gjennopprettet vedlegget {attachment} på kortet {card}", + "You have commented on card {card}" : "Du har kommetnert på kort {card}", + "{user} has commented on card {card}" : "{user} har kommetnert på kort {card}", + "A card description inside the Deck app has been changed" : "En kort beskrivelsei Stokk-appen er endret", "Deck" : "Stokk", + "Changes in the Deck app" : "Endringer i Stokk-appen", "Personal" : "Personlig", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortet \"%s\" på \"%s\" er endret til deg av %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} har tildelt kortet \"%s\" på \"%s\" til deg.", "The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nådd sin utløpsdato.", + "%s has mentioned you in a comment on \"%s\"." : "%shar nevnt deg i en kommentar på \"%s\".", + "{user} has mentioned you in a comment on \"%s\"." : "{user} har nevnt deg i en kommentar på \"%s\".", "The board \"%s\" has been shared with you by %s." : "Brettet \"%s\" har blitt delt med deg av %s.", "{user} has shared the board %s with you." : "{user} har delt brettet %s med deg.", + "No data was provided to create an attachment." : "Ingen data for å opprette vedlegg.", "Finished" : "Fullført", "To review" : "Til gjennomlesning", "Action needed" : "Handling påkrevd", "Later" : "Senere", + "To do" : "Å gjøre", + "Doing" : "Pågår", + "Done" : "Ferdig", + "Example Task 3" : "Eksempel oppgave 3", + "Example Task 2" : "Eksempel oppgave 2", + "Example Task 1" : "Eksempel oppgave 1", + "The file was uploaded" : "Filen er lastet opp", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Filen er større enn definert grense i upload_max_filesize direktiv i php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Filen er større enn definert grense i MAX_FILE_SIZE direktiv i HTML formen.", + "The file was only partially uploaded" : "Filen er delvis opplastet", + "No file was uploaded" : "Ingen fil var lastet opp", + "Missing a temporary folder" : "Mangler katalog for midlertidige filer", + "Could not write file to disk" : "Kan ikke skrive til disk", + "A PHP extension stopped the file upload" : "En PHP utvidelse stoppet når fil ble lastet opp", + "No file uploaded or file size exceeds maximum of %s" : "Ingen fil lastet opp eller filen er større enn %s", + "A kanban style project and personal management tool for Nextcloud" : "Et kanban inspirert verktøy for prosjekt og personlig admistrasjon for Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Stokk er et kanban inspirert verktøy for organisering for personlig planlegging og prosjekt organisering for team integrert med Nextcloud.\n\n\n- 📥 Legg til oppgaver på kort og hold orden på disse.\n- 📄 Legg til notater.\n- 🔖 Tildel merke for enda bedre organisering.\n- 👥 Del med team, venner eller familile.\n- 📎 Legg ved filer som kan integreres i beskrivelser.\n- 💬 Diskuter med ditt team ved å bruke kommentarer.\n- ⚡ Hold oversikt over endringer i aktivitetsstrøm.\n- 🚀 Få dine prosjekt organisert.", "Add a new stack" : "Legg til ny stabel", "Submit" : "Send inn", "Show archived cards" : "Vis arkiverkte kort", "Hide archived cards" : "Skjul arkiverte kort", - "All Boards" : "Alle bord", - "Archived boards" : "Akriverte bord", + "Toggle compact mode" : "Endre kompakt modus", + "Show board details" : "Vis detaljer for tavle", + "All Boards" : "Alle tavler", + "Archived boards" : "Arkiverte tavler", + "Share board" : "Del tavle", + "Archived cards" : "Arkiver tavle", + "Actions" : "Handlinger", + "Drop your files here to upload it to the card" : "Slipp filene her for å legge dem ved kortet", + "Assign card to me" : "Tildel til meg", + "Unassign card from me" : "Fjern tildeling til meg", + "Archive card" : "Arkiver kort", + "Unarchive card" : "Hent kort fra arkiv", + "Delete card" : "Slett kort", "Enter a card title" : "Skriv inn en kort tittel", "Add card" : "Legg til kort", "Close" : "Lukk", "Sharing" : "Deling", "Tags" : "Merkelapper", + "Deleted items" : "Slettede element", + "Timeline" : "Tidslinje", "Select users or groups to share with" : "Velg brukere og grupper du vil dele med", - "Access for" : "Tilgang for", + "Group" : "Gruppe", "No matching user or group found." : "Ingen treff på bruker eller gruppe.", "Loading" : "Laster", - "Share" : "Del", "Edit" : "Rediger", + "Share" : "Del", "Manage" : "Håndtere", "Discard share" : "Fjern deling", + "Sharing has been disabled for your account." : "Deling er ikke aktivt for din konto.", + "Update tag" : "Oppdater merke", + "Edit tag" : "Endre merke", + "Delete tag" : "Slett merke", "Create" : "Opprett her", "Create a new tag" : "Lag en ny merkelapp", + "Deleted stacks" : "Slettede stabeler", + "Deleted cards" : "Slettede kort", "Status" : "Status", + "No archived boards to display" : "Ingen arkiverte tavler", + "No shared boards to display" : "Ingen delte tavler", "Title" : "Tittel", "Members" : "Medlemmer", "More actions" : "Flere handlinger", - "Edit board" : "Rediger bord", - "Archive board" : "Arkiver bord", - "Unarchive board" : "Avarkiver bord", - "Delete board" : "Slett bord", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Angre sletting av forumseksjon - Ellers vil forumseksjonen bli slettet under neste cronjob-kjøring.", - "Create new board" : "Opprett et nytt bord", - "New board title" : "Ny seksjonstittel", + "Edit board" : "Rediger tavle", + "Archive board" : "Arkiver tavle", + "Unarchive board" : "Aktiver tavle", + "Delete board" : "Slett tavle", + "Update board" : "Oppdater tavle", + "Reset board" : "Nullstill tavle", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Angre sletting av stabel - ellers slettes stabel ved neste cronjob-kjøring.", + "Create new board" : "Opprett ny tavle", + "New board title" : "Ny tittel for stabel", + "Create board" : "Opprett tavle", + "Select an attachment" : "Velg vedlegg", + "Cancel upload" : "Avbryt opplasting", "by" : "av", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Gjennopprett av fil - ellers vil denne slettes ved neste cronjob kjøring.", + "Undo file deletion" : "Gjennopprett av fil", + "Insert the file into the description" : "Sett filen inn i beskrivelse", + "Delete attachment" : "Slett vedlegg", "Modified:" : "Endret:", "Created:" : "Opprettet:", "Choose a tag" : "Velg en merkelapp", @@ -58,12 +179,18 @@ OC.L10N.register( "Click to set" : "Klikk for å sette", "Remove due date" : "Fjern forfallsdato", "Description" : "Beskrivelse", + "Attachments" : "Vedlegg", "Saved" : "Lagret", "Unsaved changes" : "Ulagrede endringer", + "Insert attachment" : "Legg til vedlegg", "Formatting help" : "Formateringshjelp", + "Upload attachment" : "Last opp vedlegg", "Add a card description…" : "Legg til en kortbeskrivelse…", - "Shared boards" : "Delte bord", - "Move board to archive" : "Flytt bord til arkiv", - "Create a new board" : "Opprett et nytt bord" + "Shared boards" : "Delte tavler", + "Move board to archive" : "Arkiver tavle", + "Create a new board" : "Opprett en ny tavle", + "Settings" : "Innstillinger", + "Limit deck to groups" : "Begrens tavle til grupper", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Begrensning av tavler vil hindre tilgang til de brukere som ikke er medlem av en gruppe fra å lage egne tavler. Bruker kan arbeide på de tavler som er delt med dem." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/nb.json b/l10n/nb.json index 8bdbb6cec..dda890185 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -1,49 +1,170 @@ { "translations": { + "Please provide a content for your comment." : "Vennligst oppgi innhold for din kommentar.", + "Posting the comment failed." : "Lagring av kommentar feilet.", + "The comment has been deleted" : "Kommentar er slettet", + "The associated stack is deleted as well, it will be restored as well." : "Den tilhørende stabel er også slettet, den vil også bli gjennopprettet.", + "Restore associated stack" : "Gjennopprett tilhørende stabel", "Remove user from card" : "Fjern bruker fra kort", "Hours" : "Timer", "Minutes" : "Minutter", + "Maximum file size of {size} exceeded" : "Maksimal størrelse for filer på {size} er overskredet", + "You have created a new board {board}" : "Du har opprettet ny stabel {board}", + "{user} has created a new board {board}" : "{user} har opprettet stabel {board}", + "You have deleted the board {board}" : "Du har slettet stabel {board}", + "{user} has deleted the board {board}" : "{user} har slettet stabel {board}", + "You have restored the board {board}" : "Du har gjennopprettet stabel {board}", + "{user} has restored the board {board}" : "{user} har gjennopprettet stabel {board}", + "You have shared the board {board} with {acl}" : "Du har delt stabel {board} med {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} har delt stabel {board} med {sharee}", + "You have removed {acl} from the board {board}" : "Du har fjernet {acl} fra stabel {board}", + "{user} has removed {acl} from the board {board}" : "{user} har fjernet {acl} fra stabel {board}", + "You have renamed the board {before} to {board}" : "Du har endret navn på stabel {before} til {board}", + "{user} has renamed the board {before} to {board}" : "{user} har endret navn på stabel {before} til {board}", + "You have archived the board {board}" : "Du har arkivert stabel {board}", + "{user} has archived the board {before}" : "{user} har arkivert stabel {board}", + "You have unarchived the board {board}" : "Du har hentet tavle {board} fra arkiv", + "{user} has unarchived the board {before}" : "{user} har hentet tavle {board} fra arkiv", + "You have created a new stack {stack} on board {board}" : "Du har opprettett ny stabel {stack} på tavle {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} har opprettett ny stabel {stack} på tavle {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Du har endret stabel {before} til {stack} på tavle {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} har endret stabel {before} til {stack} på tavle {board}", + "You have deleted stack {stack} on board {board}" : "Du har slettet stabel {stack} på tavle {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} har slettet stabel {stack} på tavle {board}", + "You have created card {card} in stack {stack} on board {board}" : "Du har opprettet kort {card} i stabel {stack} på tavle {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} har opprettet kort {card} i stabel {stack} på tavle {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Du har slettet kort {card} i stabel {stack} på tavle {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} har slettet kort {card} i stabel {stack} på tavle {board}", + "You have renamed the card {before} to {card}" : "Du har endret navn fra {before} til {card}", + "{user} has renamed the card {before} to {card}" : "{user} har endret navn fra {before} til {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Du har lagt til beskrivelse for kort {card} i stabel {stack} på tavle {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} har lagt til beskrivelse for kort {card} i stabel {stack} på tavle {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Du har endret beskrivelse for kort {card} i stabel {stack} på tavle {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Du har arkivert kort {card} i stabel {stack} på tavle {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} har arkivert kort {card} i stabel {stack} på tavle {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Du har hentet arkivert kort {card} tilbake til stabel {stack} på tavle {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} har hentet arkivert kort {card} tilbake til stabel {stack} på tavle {board}", + "You have removed the due date of card {card}" : "Du har fjernet forfallsdato for kort {card}", + "{user} has removed the due date of card {card}" : "{user} har fjernet forfallsdato for kort {card}", + "You have set the due date of card {card} to {after}" : "Du har satt forfallsdato på kort {card} etter {after}", + "{user} has set the due date of card {card} to {after}" : "{user} har satt forfallsdato på kort {card} etter {after}", + "You have updated the due date of card {card} to {after}" : "Du har oppdatert forfallsdato på kort {card} etter {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} har oppdatert forfallsdato på kort {card} etter {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Du har lagt til merke {label} til kort {card} i stabel {stack} på tavle {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} har lagt til merke {label} til kort {card} i stabel {stack} på tavle {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du har fjernet merke {label} fra kort {card} i stabel {stack} på tavle {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} har fjernet merke {label} fra kort {card} i stabel {stack} på tavle {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Du har tildelt {assigneduser} til kort {card} på tavle {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} har tildelt {assigneduser} til kort {card} på tavle {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Du har fjernet {assigneduser} fra kort {card} på tavle {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} har fjernet {assigneduser} fra kort {card} på tavle {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Du har flyttet kort {card} fra {stackBefore} til {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} har flyttet kort {card} fra {stackBefore} til {stack}", + "You have added the attachment {attachment} to card {card}" : "Du har lagt til vedlegget {attachment} ti kortet {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} har lagt til vedlegget {attachment} på kortet {card}", + "You have updated the attachment {attachment} on card {card}" : "Du har oppdatert vedlegget {attachment} på kortet {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} har oppdatert vedlegget {attachment} på kortet {card}", + "You have deleted the attachment {attachment} from card {card}" : "Du har slettet vedlegget {attachment} på kortet {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} har slettet vedlegget {attachment} på kortet {card}", + "You have restored the attachment {attachment} to card {card}" : "Du har gjennopprettet vedlegget {attachment} på kortet {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} har gjennopprettet vedlegget {attachment} på kortet {card}", + "You have commented on card {card}" : "Du har kommetnert på kort {card}", + "{user} has commented on card {card}" : "{user} har kommetnert på kort {card}", + "A card description inside the Deck app has been changed" : "En kort beskrivelsei Stokk-appen er endret", "Deck" : "Stokk", + "Changes in the Deck app" : "Endringer i Stokk-appen", "Personal" : "Personlig", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortet \"%s\" på \"%s\" er endret til deg av %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} har tildelt kortet \"%s\" på \"%s\" til deg.", "The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nådd sin utløpsdato.", + "%s has mentioned you in a comment on \"%s\"." : "%shar nevnt deg i en kommentar på \"%s\".", + "{user} has mentioned you in a comment on \"%s\"." : "{user} har nevnt deg i en kommentar på \"%s\".", "The board \"%s\" has been shared with you by %s." : "Brettet \"%s\" har blitt delt med deg av %s.", "{user} has shared the board %s with you." : "{user} har delt brettet %s med deg.", + "No data was provided to create an attachment." : "Ingen data for å opprette vedlegg.", "Finished" : "Fullført", "To review" : "Til gjennomlesning", "Action needed" : "Handling påkrevd", "Later" : "Senere", + "To do" : "Å gjøre", + "Doing" : "Pågår", + "Done" : "Ferdig", + "Example Task 3" : "Eksempel oppgave 3", + "Example Task 2" : "Eksempel oppgave 2", + "Example Task 1" : "Eksempel oppgave 1", + "The file was uploaded" : "Filen er lastet opp", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Filen er større enn definert grense i upload_max_filesize direktiv i php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Filen er større enn definert grense i MAX_FILE_SIZE direktiv i HTML formen.", + "The file was only partially uploaded" : "Filen er delvis opplastet", + "No file was uploaded" : "Ingen fil var lastet opp", + "Missing a temporary folder" : "Mangler katalog for midlertidige filer", + "Could not write file to disk" : "Kan ikke skrive til disk", + "A PHP extension stopped the file upload" : "En PHP utvidelse stoppet når fil ble lastet opp", + "No file uploaded or file size exceeds maximum of %s" : "Ingen fil lastet opp eller filen er større enn %s", + "A kanban style project and personal management tool for Nextcloud" : "Et kanban inspirert verktøy for prosjekt og personlig admistrasjon for Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Stokk er et kanban inspirert verktøy for organisering for personlig planlegging og prosjekt organisering for team integrert med Nextcloud.\n\n\n- 📥 Legg til oppgaver på kort og hold orden på disse.\n- 📄 Legg til notater.\n- 🔖 Tildel merke for enda bedre organisering.\n- 👥 Del med team, venner eller familile.\n- 📎 Legg ved filer som kan integreres i beskrivelser.\n- 💬 Diskuter med ditt team ved å bruke kommentarer.\n- ⚡ Hold oversikt over endringer i aktivitetsstrøm.\n- 🚀 Få dine prosjekt organisert.", "Add a new stack" : "Legg til ny stabel", "Submit" : "Send inn", "Show archived cards" : "Vis arkiverkte kort", "Hide archived cards" : "Skjul arkiverte kort", - "All Boards" : "Alle bord", - "Archived boards" : "Akriverte bord", + "Toggle compact mode" : "Endre kompakt modus", + "Show board details" : "Vis detaljer for tavle", + "All Boards" : "Alle tavler", + "Archived boards" : "Arkiverte tavler", + "Share board" : "Del tavle", + "Archived cards" : "Arkiver tavle", + "Actions" : "Handlinger", + "Drop your files here to upload it to the card" : "Slipp filene her for å legge dem ved kortet", + "Assign card to me" : "Tildel til meg", + "Unassign card from me" : "Fjern tildeling til meg", + "Archive card" : "Arkiver kort", + "Unarchive card" : "Hent kort fra arkiv", + "Delete card" : "Slett kort", "Enter a card title" : "Skriv inn en kort tittel", "Add card" : "Legg til kort", "Close" : "Lukk", "Sharing" : "Deling", "Tags" : "Merkelapper", + "Deleted items" : "Slettede element", + "Timeline" : "Tidslinje", "Select users or groups to share with" : "Velg brukere og grupper du vil dele med", - "Access for" : "Tilgang for", + "Group" : "Gruppe", "No matching user or group found." : "Ingen treff på bruker eller gruppe.", "Loading" : "Laster", - "Share" : "Del", "Edit" : "Rediger", + "Share" : "Del", "Manage" : "Håndtere", "Discard share" : "Fjern deling", + "Sharing has been disabled for your account." : "Deling er ikke aktivt for din konto.", + "Update tag" : "Oppdater merke", + "Edit tag" : "Endre merke", + "Delete tag" : "Slett merke", "Create" : "Opprett her", "Create a new tag" : "Lag en ny merkelapp", + "Deleted stacks" : "Slettede stabeler", + "Deleted cards" : "Slettede kort", "Status" : "Status", + "No archived boards to display" : "Ingen arkiverte tavler", + "No shared boards to display" : "Ingen delte tavler", "Title" : "Tittel", "Members" : "Medlemmer", "More actions" : "Flere handlinger", - "Edit board" : "Rediger bord", - "Archive board" : "Arkiver bord", - "Unarchive board" : "Avarkiver bord", - "Delete board" : "Slett bord", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Angre sletting av forumseksjon - Ellers vil forumseksjonen bli slettet under neste cronjob-kjøring.", - "Create new board" : "Opprett et nytt bord", - "New board title" : "Ny seksjonstittel", + "Edit board" : "Rediger tavle", + "Archive board" : "Arkiver tavle", + "Unarchive board" : "Aktiver tavle", + "Delete board" : "Slett tavle", + "Update board" : "Oppdater tavle", + "Reset board" : "Nullstill tavle", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Angre sletting av stabel - ellers slettes stabel ved neste cronjob-kjøring.", + "Create new board" : "Opprett ny tavle", + "New board title" : "Ny tittel for stabel", + "Create board" : "Opprett tavle", + "Select an attachment" : "Velg vedlegg", + "Cancel upload" : "Avbryt opplasting", "by" : "av", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Gjennopprett av fil - ellers vil denne slettes ved neste cronjob kjøring.", + "Undo file deletion" : "Gjennopprett av fil", + "Insert the file into the description" : "Sett filen inn i beskrivelse", + "Delete attachment" : "Slett vedlegg", "Modified:" : "Endret:", "Created:" : "Opprettet:", "Choose a tag" : "Velg en merkelapp", @@ -56,12 +177,18 @@ "Click to set" : "Klikk for å sette", "Remove due date" : "Fjern forfallsdato", "Description" : "Beskrivelse", + "Attachments" : "Vedlegg", "Saved" : "Lagret", "Unsaved changes" : "Ulagrede endringer", + "Insert attachment" : "Legg til vedlegg", "Formatting help" : "Formateringshjelp", + "Upload attachment" : "Last opp vedlegg", "Add a card description…" : "Legg til en kortbeskrivelse…", - "Shared boards" : "Delte bord", - "Move board to archive" : "Flytt bord til arkiv", - "Create a new board" : "Opprett et nytt bord" + "Shared boards" : "Delte tavler", + "Move board to archive" : "Arkiver tavle", + "Create a new board" : "Opprett en ny tavle", + "Settings" : "Innstillinger", + "Limit deck to groups" : "Begrens tavle til grupper", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Begrensning av tavler vil hindre tilgang til de brukere som ikke er medlem av en gruppe fra å lage egne tavler. Bruker kan arbeide på de tavler som er delt med dem." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/nl.js b/l10n/nl.js index fd8549e74..25e0afd4f 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -21,58 +21,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Je verwijderde {acl} van bord {board}", "{user} has removed {acl} from the board {board}" : "{user} verwijderde {acl} van bord {board}", "You have renamed the board {before} to {board}" : "Je hernoemde bord {before} naar {board}", - "{user} has has renamed the board {before} to {board}" : "{user} hernoemde bord {before} naar {board}", + "{user} has renamed the board {before} to {board}" : "{user} hernoemde bord {before} naar {board}", "You have archived the board {board}" : "Je hebt bord {board} gearchiveerd", "{user} has archived the board {before}" : "{user} archiveerde bord {before}", "You have unarchived the board {board}" : "Je hebt bord {board} uit het archief opgehaald", "{user} has unarchived the board {before}" : "{user} heeft bord {before} uit het archief opgehaald", - "You have created a new stack {stack} on {board}" : "Je creëerde een nieuwe stapel {stack} op {board}", - "{user} has created a new stack {stack} on {board}" : "{user} creëerde een nieuwe stapel {stack} op {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Je hernoemde een nieuwe stapel {before} naar {stack} op {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hernoemde een nieuwe stapel {before} naar {stack} op {board}", - "You have deleted {stack} on {board}" : "Je verwijderde {stack} op {board}", - "{user} has deleted {stack} on {board}" : "{user} verwijderde {stack} op {board}", - "You have created {card} in {stack} on {board}" : "Je creëerde {card} in {stack} op {board}", - "{user} has created {card} in {stack} on {board}" : "{user} creëerde {card} in {stack} op {board}", - "You have deleted {card} in {stack} on {board}" : "Je verwijderde {card} in {stack} op {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} verwijderde {card} in {stack} op {board}", + "You have created a new stack {stack} on board {board}" : "Je creëerde een nieuwe stapel {stack} op bord {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} creëerde een nieuwe stapel {stack} op bord {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Je hernoemde een nieuwe stapel {before} naar {stack} op bord {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hernoemde een nieuwe stapel {before} naar {stack} op bord {board}", + "You have deleted stack {stack} on board {board}" : "Je verwijderde stapel {stack} op bord {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} verwijderde stapel {stack} op bord {board}", + "You have created card {card} in stack {stack} on board {board}" : "Je creëerde kaart {card} in stapel {stack} op bord {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} creëerde kaart {card} in stapel {stack} op bord {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Je verwijderde kaart {card} in stapel {stack} op bord {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} verwijderde kaart {card} in stapel {stack} op bord {board}", "You have renamed the card {before} to {card}" : "Je hernoemde kaart {before} naar {card}", "{user} has renamed the card {before} to {card}" : "{user} hernoemde kaart {before} naar {card}", - "You have added a description to {card} in {stack} on {board}" : "Je voegde een beschrijving toe aan {card} in {stack} op {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} voegde een beschrijving toe aan {card} in {stack} op {board}", - "You have updated the description of {card} in {stack} on {board}" : "Je bewerkte de beschrijving bij op {card} in {stack} op {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} bewerkte de beschrijving bij op {card} in {stack} op {board}", - "You have archived {card} in {stack} on {board}" : "Je archiveerde {card} in {stack} op {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} archiveerde {card} in {stack} op {board}", - "You have unarchived {card} in {stack} on {board}" : "Je haalde {card} in {stack} op {board} uit het archief", - "{user} has unarchived {card} in {stack} on {board}" : "{user} haalde {card} in {stack} op {board} uit het archief", - "You have removed the due date of {card}" : "Je verwijderde de vervaldatum van {card}", - "{user} has removed the due date of {card}" : "{user} verwijderde de vervaldatum van {card}", - "You have set the due date of {card} to {after}" : "Je stelde de vervaldatum van {card} in op {after}", - "{user} has set the due date of {card} to {after}" : "{user} stelde de vervaldatum van {card} in op {after}", - "You have updated the due date of {card} to {after}" : "Je werkte de vervaldatum van {card} bij tot {after}", - "{user} has updated the due date of {card} to {after}" : "{user} werkte de vervaldatum van {card} bij tot {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Je voegde label {label} toe aan {card} in {stack} op {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} voegde label {label} toe aan {card} in {stack} op {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Je verwijderde label {label} van {card} in {stack} op {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} verwijderde label {label} van {card} in {stack} op {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Je wees {assigneduser} toe aan {card} op {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} wees {assigneduser} toe aan {card} op {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Je verwijderd {assigneduser} van {card} op {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} verwijderd {assigneduser} van {card} op {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Je verplaatste kaart {card} van {stackBefore} naar {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} verplaatste kaart {card} van {stackBefore} naar {stack}", - "You have added the attachment {attachment} to {card}" : "Je voegde bijlage {attachment} toe aan {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} voegde bijlage {attachment} toe aan {card}", - "You have updated the attachment {attachment} on {card}" : "Je werkte bijlage {attachment} bij op {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} werkte bijlage {attachment} bij op {card}", - "You have deleted the attachment {attachment} from {card}" : "Je verwijderde bijlage {attachment} van {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} verwijderde bijlage {attachment} van {card}", - "You have restored the attachment {attachment} to {card}" : "Je herstelde bijlage {attachment} bij {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} herstelde bijlage {attachment} bij {card}", - "You have commented on {card}" : "Je hebt gereageerd op {card}", - "{user} has commented on {card}" : "{user} reageerde op {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Je voegde een beschrijving toe aan kaart {card} in stapel {stack} op bord {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} voegde een beschrijving toe aan kaart {card} in stapel {stack} op bord {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Je bewerkte de beschrijving bij op kaart {card} in stapel {stack} op bord {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} heeft de beschrijving van de kaart {card} in de stack {stack} op het bord {board} bijgewerkt", + "You have archived card {card} in stack {stack} on board {board}" : "Je archiveerde kaart {card} in stapel {stack} op bord {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} archiveerde kaart {card} in stapel {stack} op bord {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Je haalde kaart {card} in stapel {stack} op bord {board} uit het archief", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} haalde kaart {card} in stapel {stack} op bord {board} uit het archief", + "You have removed the due date of card {card}" : "Je verwijderde de vervaldatum van kaart {card}", + "{user} has removed the due date of card {card}" : "{user} verwijderde de vervaldatum van kaart {card}", + "You have set the due date of card {card} to {after}" : "Je stelde de vervaldatum van kaart {card} in op {after}", + "{user} has set the due date of card {card} to {after}" : "{user} stelde de vervaldatum van kaart {card} in op {after}", + "You have updated the due date of card {card} to {after}" : "Je werkte de vervaldatum van kaart {card} bij tot {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} werkte de vervaldatum van kaart {card} bij tot {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Je voegde label {label} toe aan kaart {card} in stapel {stack} op bord {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} voegde label {label} toe aan kaart {card} in stapel {stack} op bord {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Je verwijderde label {label} van kaart {card} in stapel {stack} op bord {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} verwijderde label {label} van kaart {card} in stapel {stack} op bord {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Je wees {assigneduser} toe aan kaart {card} op bord {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} wees {assigneduser} toe aan kaart {card} op bord {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Je verwijderd {assigneduser} van kaart {card} op bord {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} verwijderd {assigneduser} van kaart {card} op bord {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Je verplaatste kaart {card} van stapel {stackBefore} naar {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} verplaatste kaart {card} van stapel {stackBefore} naar {stack}", + "You have added the attachment {attachment} to card {card}" : "Je voegde bijlage {attachment} toe aan kaart {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} voegde bijlage {attachment} toe aan kaart {card}", + "You have updated the attachment {attachment} on card {card}" : "Je werkte bijlage {attachment} bij op kaart {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} werkte bijlage {attachment} bij op kaart {card}", + "You have deleted the attachment {attachment} from card {card}" : "Je verwijderde bijlage {attachment} van kaart {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} verwijderde bijlage {attachment} van kaart {card}", + "You have restored the attachment {attachment} to card {card}" : "Je herstelde bijlage {attachment} bij kaart {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} herstelde bijlage {attachment} bij kaart {card}", + "You have commented on card {card}" : "Je hebt gereageerd op kaart {card}", + "{user} has commented on card {card}" : "{user} reageerde op kaart {card}", + "A card description inside the Deck app has been changed" : "Een kaart beschrijving binnen de Deck app is gewijzigd", "Deck" : "Deck", + "Changes in the Deck app" : "Wijzigingen in de Deck app", "Personal" : "Persoonlijk", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "De kaart \"%s\" op \"%s\" is aan jou toegewezen door %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} heeft kaart \"%s\" op \"%s\" aan jou toegewezen.", @@ -108,11 +110,18 @@ OC.L10N.register( "Show archived cards" : "Gearchiveerde kaarten weergeven", "Hide archived cards" : "Gearchiveerde kaarten verbergen", "Toggle compact mode" : "Omschakelen compacte modus", + "Show board details" : "Toon bord details", "All Boards" : "Alle borden", "Archived boards" : "Gearchiveerde borden", "Share board" : "Bord delen", + "Archived cards" : "Gearchiveerde kaarten", "Actions" : "Acties", "Drop your files here to upload it to the card" : "Sleep je bestanden hierheen om naar de kaart te uploaden", + "Assign card to me" : "Wijs kaart toe aan mij", + "Unassign card from me" : "Kaart van mij terughalen", + "Archive card" : "Archiveer kaart", + "Unarchive card" : "Terughalen kaart uit archief", + "Delete card" : "Verwijderen kaart", "Enter a card title" : "Kaart titel toevoegen", "Add card" : "Toevoegen kaart", "Close" : "Sluiten", @@ -121,13 +130,18 @@ OC.L10N.register( "Deleted items" : "Verwijderde objecten", "Timeline" : "Tijdlijn", "Select users or groups to share with" : "Gebruikers of groepen selecteren om te delen", - "Access for" : "Toegang voor", + "Group" : "Groep", + "Circle" : "Kring", "No matching user or group found." : "Geen passende gebruiker of groep gevonden", "Loading" : "Laden", - "Share" : "Delen", "Edit" : "Bewerken", + "Share" : "Delen", "Manage" : "Beheren", "Discard share" : "Delen uitzetten", + "Sharing has been disabled for your account." : "Delen is uitgeschakeld voor jouw account.", + "Update tag" : "Bijwerken tag", + "Edit tag" : "Bewerken tag", + "Delete tag" : "Verwijderen tag", "Create" : "Aanmaken", "Create a new tag" : "Nieuw label maken", "Deleted stacks" : "Verwijderde stapels", @@ -142,15 +156,19 @@ OC.L10N.register( "Archive board" : "Archiveer bord", "Unarchive board" : "De-archiveer bord", "Delete board" : "Verwijder bord", + "Update board" : "Update bord", + "Reset board" : "Reset bord", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Bord verwijdering ongedaan maken - Anders zal het bord worden verwijderd tijdens de volgende cronjob run.", "Create new board" : "Nieuw bord maken", "New board title" : "Nieuwe bord titel", + "Create board" : "Creëren bord", "Select an attachment" : "Selecteer een bijlage", "Cancel upload" : "Upload annuleren", "by" : "door", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Bestandsverwijdering ongedaan maken - Anders zal het bestand worden verwijderd tijdens de volgende cronjob run.", "Undo file deletion" : "Bestandsverwijdering ongedaan maken", "Insert the file into the description" : "Voeg het bestand toe aan de beschrijving", + "Delete attachment" : "Verwijderen bijlage", "Modified:" : "Bewerkt:", "Created:" : "Gemaakt:", "Choose a tag" : "Kies een tag", @@ -172,6 +190,9 @@ OC.L10N.register( "Add a card description…" : "Voeg een kaartbeschrijving toe...", "Shared boards" : "Gedeelde borden", "Move board to archive" : "Verplaats bord naar archief", - "Create a new board" : "Een nieuw bord maken" + "Create a new board" : "Een nieuw bord maken", + "Settings" : "Instellingen", + "Limit deck to groups" : "Beperk deck tot groepen", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Het beperken van Deck verhindert dat gebruikers die niet lid zijn van die groepen hun eigen borden kunnen maken. gebruikers kunnen nog wel werken met de borden die met deze gebruikers zijn gedeeld." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/nl.json b/l10n/nl.json index aca8fee7a..717f5301e 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -19,58 +19,60 @@ "You have removed {acl} from the board {board}" : "Je verwijderde {acl} van bord {board}", "{user} has removed {acl} from the board {board}" : "{user} verwijderde {acl} van bord {board}", "You have renamed the board {before} to {board}" : "Je hernoemde bord {before} naar {board}", - "{user} has has renamed the board {before} to {board}" : "{user} hernoemde bord {before} naar {board}", + "{user} has renamed the board {before} to {board}" : "{user} hernoemde bord {before} naar {board}", "You have archived the board {board}" : "Je hebt bord {board} gearchiveerd", "{user} has archived the board {before}" : "{user} archiveerde bord {before}", "You have unarchived the board {board}" : "Je hebt bord {board} uit het archief opgehaald", "{user} has unarchived the board {before}" : "{user} heeft bord {before} uit het archief opgehaald", - "You have created a new stack {stack} on {board}" : "Je creëerde een nieuwe stapel {stack} op {board}", - "{user} has created a new stack {stack} on {board}" : "{user} creëerde een nieuwe stapel {stack} op {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Je hernoemde een nieuwe stapel {before} naar {stack} op {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} hernoemde een nieuwe stapel {before} naar {stack} op {board}", - "You have deleted {stack} on {board}" : "Je verwijderde {stack} op {board}", - "{user} has deleted {stack} on {board}" : "{user} verwijderde {stack} op {board}", - "You have created {card} in {stack} on {board}" : "Je creëerde {card} in {stack} op {board}", - "{user} has created {card} in {stack} on {board}" : "{user} creëerde {card} in {stack} op {board}", - "You have deleted {card} in {stack} on {board}" : "Je verwijderde {card} in {stack} op {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} verwijderde {card} in {stack} op {board}", + "You have created a new stack {stack} on board {board}" : "Je creëerde een nieuwe stapel {stack} op bord {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} creëerde een nieuwe stapel {stack} op bord {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Je hernoemde een nieuwe stapel {before} naar {stack} op bord {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} hernoemde een nieuwe stapel {before} naar {stack} op bord {board}", + "You have deleted stack {stack} on board {board}" : "Je verwijderde stapel {stack} op bord {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} verwijderde stapel {stack} op bord {board}", + "You have created card {card} in stack {stack} on board {board}" : "Je creëerde kaart {card} in stapel {stack} op bord {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} creëerde kaart {card} in stapel {stack} op bord {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Je verwijderde kaart {card} in stapel {stack} op bord {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} verwijderde kaart {card} in stapel {stack} op bord {board}", "You have renamed the card {before} to {card}" : "Je hernoemde kaart {before} naar {card}", "{user} has renamed the card {before} to {card}" : "{user} hernoemde kaart {before} naar {card}", - "You have added a description to {card} in {stack} on {board}" : "Je voegde een beschrijving toe aan {card} in {stack} op {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} voegde een beschrijving toe aan {card} in {stack} op {board}", - "You have updated the description of {card} in {stack} on {board}" : "Je bewerkte de beschrijving bij op {card} in {stack} op {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} bewerkte de beschrijving bij op {card} in {stack} op {board}", - "You have archived {card} in {stack} on {board}" : "Je archiveerde {card} in {stack} op {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} archiveerde {card} in {stack} op {board}", - "You have unarchived {card} in {stack} on {board}" : "Je haalde {card} in {stack} op {board} uit het archief", - "{user} has unarchived {card} in {stack} on {board}" : "{user} haalde {card} in {stack} op {board} uit het archief", - "You have removed the due date of {card}" : "Je verwijderde de vervaldatum van {card}", - "{user} has removed the due date of {card}" : "{user} verwijderde de vervaldatum van {card}", - "You have set the due date of {card} to {after}" : "Je stelde de vervaldatum van {card} in op {after}", - "{user} has set the due date of {card} to {after}" : "{user} stelde de vervaldatum van {card} in op {after}", - "You have updated the due date of {card} to {after}" : "Je werkte de vervaldatum van {card} bij tot {after}", - "{user} has updated the due date of {card} to {after}" : "{user} werkte de vervaldatum van {card} bij tot {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Je voegde label {label} toe aan {card} in {stack} op {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} voegde label {label} toe aan {card} in {stack} op {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Je verwijderde label {label} van {card} in {stack} op {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} verwijderde label {label} van {card} in {stack} op {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Je wees {assigneduser} toe aan {card} op {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} wees {assigneduser} toe aan {card} op {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Je verwijderd {assigneduser} van {card} op {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} verwijderd {assigneduser} van {card} op {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Je verplaatste kaart {card} van {stackBefore} naar {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} verplaatste kaart {card} van {stackBefore} naar {stack}", - "You have added the attachment {attachment} to {card}" : "Je voegde bijlage {attachment} toe aan {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} voegde bijlage {attachment} toe aan {card}", - "You have updated the attachment {attachment} on {card}" : "Je werkte bijlage {attachment} bij op {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} werkte bijlage {attachment} bij op {card}", - "You have deleted the attachment {attachment} from {card}" : "Je verwijderde bijlage {attachment} van {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} verwijderde bijlage {attachment} van {card}", - "You have restored the attachment {attachment} to {card}" : "Je herstelde bijlage {attachment} bij {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} herstelde bijlage {attachment} bij {card}", - "You have commented on {card}" : "Je hebt gereageerd op {card}", - "{user} has commented on {card}" : "{user} reageerde op {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Je voegde een beschrijving toe aan kaart {card} in stapel {stack} op bord {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} voegde een beschrijving toe aan kaart {card} in stapel {stack} op bord {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Je bewerkte de beschrijving bij op kaart {card} in stapel {stack} op bord {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} heeft de beschrijving van de kaart {card} in de stack {stack} op het bord {board} bijgewerkt", + "You have archived card {card} in stack {stack} on board {board}" : "Je archiveerde kaart {card} in stapel {stack} op bord {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} archiveerde kaart {card} in stapel {stack} op bord {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Je haalde kaart {card} in stapel {stack} op bord {board} uit het archief", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} haalde kaart {card} in stapel {stack} op bord {board} uit het archief", + "You have removed the due date of card {card}" : "Je verwijderde de vervaldatum van kaart {card}", + "{user} has removed the due date of card {card}" : "{user} verwijderde de vervaldatum van kaart {card}", + "You have set the due date of card {card} to {after}" : "Je stelde de vervaldatum van kaart {card} in op {after}", + "{user} has set the due date of card {card} to {after}" : "{user} stelde de vervaldatum van kaart {card} in op {after}", + "You have updated the due date of card {card} to {after}" : "Je werkte de vervaldatum van kaart {card} bij tot {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} werkte de vervaldatum van kaart {card} bij tot {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Je voegde label {label} toe aan kaart {card} in stapel {stack} op bord {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} voegde label {label} toe aan kaart {card} in stapel {stack} op bord {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Je verwijderde label {label} van kaart {card} in stapel {stack} op bord {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} verwijderde label {label} van kaart {card} in stapel {stack} op bord {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Je wees {assigneduser} toe aan kaart {card} op bord {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} wees {assigneduser} toe aan kaart {card} op bord {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Je verwijderd {assigneduser} van kaart {card} op bord {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} verwijderd {assigneduser} van kaart {card} op bord {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Je verplaatste kaart {card} van stapel {stackBefore} naar {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} verplaatste kaart {card} van stapel {stackBefore} naar {stack}", + "You have added the attachment {attachment} to card {card}" : "Je voegde bijlage {attachment} toe aan kaart {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} voegde bijlage {attachment} toe aan kaart {card}", + "You have updated the attachment {attachment} on card {card}" : "Je werkte bijlage {attachment} bij op kaart {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} werkte bijlage {attachment} bij op kaart {card}", + "You have deleted the attachment {attachment} from card {card}" : "Je verwijderde bijlage {attachment} van kaart {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} verwijderde bijlage {attachment} van kaart {card}", + "You have restored the attachment {attachment} to card {card}" : "Je herstelde bijlage {attachment} bij kaart {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} herstelde bijlage {attachment} bij kaart {card}", + "You have commented on card {card}" : "Je hebt gereageerd op kaart {card}", + "{user} has commented on card {card}" : "{user} reageerde op kaart {card}", + "A card description inside the Deck app has been changed" : "Een kaart beschrijving binnen de Deck app is gewijzigd", "Deck" : "Deck", + "Changes in the Deck app" : "Wijzigingen in de Deck app", "Personal" : "Persoonlijk", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "De kaart \"%s\" op \"%s\" is aan jou toegewezen door %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} heeft kaart \"%s\" op \"%s\" aan jou toegewezen.", @@ -106,11 +108,18 @@ "Show archived cards" : "Gearchiveerde kaarten weergeven", "Hide archived cards" : "Gearchiveerde kaarten verbergen", "Toggle compact mode" : "Omschakelen compacte modus", + "Show board details" : "Toon bord details", "All Boards" : "Alle borden", "Archived boards" : "Gearchiveerde borden", "Share board" : "Bord delen", + "Archived cards" : "Gearchiveerde kaarten", "Actions" : "Acties", "Drop your files here to upload it to the card" : "Sleep je bestanden hierheen om naar de kaart te uploaden", + "Assign card to me" : "Wijs kaart toe aan mij", + "Unassign card from me" : "Kaart van mij terughalen", + "Archive card" : "Archiveer kaart", + "Unarchive card" : "Terughalen kaart uit archief", + "Delete card" : "Verwijderen kaart", "Enter a card title" : "Kaart titel toevoegen", "Add card" : "Toevoegen kaart", "Close" : "Sluiten", @@ -119,13 +128,18 @@ "Deleted items" : "Verwijderde objecten", "Timeline" : "Tijdlijn", "Select users or groups to share with" : "Gebruikers of groepen selecteren om te delen", - "Access for" : "Toegang voor", + "Group" : "Groep", + "Circle" : "Kring", "No matching user or group found." : "Geen passende gebruiker of groep gevonden", "Loading" : "Laden", - "Share" : "Delen", "Edit" : "Bewerken", + "Share" : "Delen", "Manage" : "Beheren", "Discard share" : "Delen uitzetten", + "Sharing has been disabled for your account." : "Delen is uitgeschakeld voor jouw account.", + "Update tag" : "Bijwerken tag", + "Edit tag" : "Bewerken tag", + "Delete tag" : "Verwijderen tag", "Create" : "Aanmaken", "Create a new tag" : "Nieuw label maken", "Deleted stacks" : "Verwijderde stapels", @@ -140,15 +154,19 @@ "Archive board" : "Archiveer bord", "Unarchive board" : "De-archiveer bord", "Delete board" : "Verwijder bord", + "Update board" : "Update bord", + "Reset board" : "Reset bord", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Bord verwijdering ongedaan maken - Anders zal het bord worden verwijderd tijdens de volgende cronjob run.", "Create new board" : "Nieuw bord maken", "New board title" : "Nieuwe bord titel", + "Create board" : "Creëren bord", "Select an attachment" : "Selecteer een bijlage", "Cancel upload" : "Upload annuleren", "by" : "door", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Bestandsverwijdering ongedaan maken - Anders zal het bestand worden verwijderd tijdens de volgende cronjob run.", "Undo file deletion" : "Bestandsverwijdering ongedaan maken", "Insert the file into the description" : "Voeg het bestand toe aan de beschrijving", + "Delete attachment" : "Verwijderen bijlage", "Modified:" : "Bewerkt:", "Created:" : "Gemaakt:", "Choose a tag" : "Kies een tag", @@ -170,6 +188,9 @@ "Add a card description…" : "Voeg een kaartbeschrijving toe...", "Shared boards" : "Gedeelde borden", "Move board to archive" : "Verplaats bord naar archief", - "Create a new board" : "Een nieuw bord maken" + "Create a new board" : "Een nieuw bord maken", + "Settings" : "Instellingen", + "Limit deck to groups" : "Beperk deck tot groepen", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Het beperken van Deck verhindert dat gebruikers die niet lid zijn van die groepen hun eigen borden kunnen maken. gebruikers kunnen nog wel werken met de borden die met deze gebruikers zijn gedeeld." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/pl.js b/l10n/pl.js index 9582ab5a9..bbe69ad1d 100644 --- a/l10n/pl.js +++ b/l10n/pl.js @@ -1,11 +1,15 @@ OC.L10N.register( "deck", { + "Please provide a content for your comment." : "Podaj treść komentarza.", + "Posting the comment failed." : "Publikowanie komentarza nie powiodło się.", + "The comment has been deleted" : "Komentarz został usunięty", "The associated stack is deleted as well, it will be restored as well." : "Powiązany blok został również usunięty, zostanie on także przywrócony.", "Restore associated stack" : "Przywróć powiązany blok", "Remove user from card" : "Usuń użytkownika z karty", "Hours" : "Godzin", "Minutes" : "Minut", + "Link to a board" : "Link do tablicy", "Maximum file size of {size} exceeded" : "Przekroczono maksymalny rozmiar pliku {size}", "You have created a new board {board}" : "Stworzyłeś(-aś) nową tablicę {board}", "{user} has created a new board {board}" : "{user} utworzył(-a) nową tablicę {board}", @@ -18,60 +22,66 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Usunąłes(-aś) {acl} z tablicy {board}", "{user} has removed {acl} from the board {board}" : "Użytkownik {user} usunął {acl} z tablicy {board}", "You have renamed the board {before} to {board}" : "Zmieniłeś(-aś) nazwę tablicy {before} na {board}", - "{user} has has renamed the board {before} to {board}" : "Użytkownik {user} zmienił(-a) nazwę tablicy {before} na {board}", + "{user} has renamed the board {before} to {board}" : "{user} zmienił(-a) nazwę tablicy {before} na {board} ", "You have archived the board {board}" : "Zarchiwizowałeś(-aś) tablicę {board}", "{user} has archived the board {before}" : "Użytkownik {user} zarchiwizował(-a) tablicę {board}", "You have unarchived the board {board}" : "Przywróciłeś(-aś) tablicę {board} z archiwum", "{user} has unarchived the board {before}" : "{user} przywrócił(-a) tablicę {board} z archiwum", - "You have created a new stack {stack} on {board}" : "Utworzyłeś(-aś) nowy stos {stack} na tablicy {board}", - "{user} has created a new stack {stack} on {board}" : "Użytkownik {user} utworzył(-a) nowy stos {stack} na tablicy {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Zmieniłeś(-aś) nazwę stosu tablicy {before} na {stack} na talicy {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "Użytkownik {user} zmienił(-a) nazwę stosu {before} na {stack} na tablicy {board}", - "You have deleted {stack} on {board}" : "Usunąłeś(-aś) stos {stack} na tablicy {board}", - "{user} has deleted {stack} on {board}" : "Użytkownik {user} usunął stos {stack} na tablicy {board}", - "You have created {card} in {stack} on {board}" : "Utworzyłeś(-aś) nową kartę {card} w stosie {stack} na tablicy {board}", - "{user} has created {card} in {stack} on {board}" : "Użytkownik {user} utworzył(-a) nową kartę {card} w stosie {stack} na tablicy {board}", - "You have deleted {card} in {stack} on {board}" : "Usunąłeś(-aś) kartę {card} w stosie {stack} na tablicy {board}", - "{user} has deleted {card} in {stack} on {board}" : "Użytkownik {user} usunął kartę {card} w stosie {stack} na tablicy {board}", + "You have created a new stack {stack} on board {board}" : "Utworzyłeś/-aś nowy stos {stack} na tablicy {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} utworzył nowy stos {stack} na tablicy {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Zmieniłeś/-aś nazwę stosu {before} dla {stack} na tablicy {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} zmienił nazwę stosu {before} dla {stack} na tablicy {board}", + "You have deleted stack {stack} on board {board}" : "Usunąłeś/-aś stos {stack} na tablicy {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} usunął stos {stack} na tablicy {board}", + "You have created card {card} in stack {stack} on board {board}" : "Utworzyłeś/-aś kartę {card} w stosie {stack} na tablicy {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} utworzył kartę {card} w stosie {stack} na tablicy {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś kartę {card} w stosie {stack} na tablicy {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} usunął kartę {card} w stosie {stack} na tablicy {board}", "You have renamed the card {before} to {card}" : "Zmieniłeś(-aś) nazwę karty {before} na {card}", "{user} has renamed the card {before} to {card}" : "Użytkownik {user} zmienił(-a) nazwę karty {before} na {card}", - "You have added a description to {card} in {stack} on {board}" : "Dodałeś(-aś) nowy opis karty {card} w stosie {stack} na tablicy {board}", - "{user} has added a description to {card} in {stack} on {board}" : "Użytkownik {user} dodał(-a) nowy opis karty {card} w stosie {stack} na tablicy {board}", - "You have updated the description of {card} in {stack} on {board}" : "Zaktualizowałeś(-aś) opis karty {card} w stosie {stack} na tablicy {board}", - "{user} has updated the description {card} in {stack} on {board}" : "Użytkownik {user} zmienił(-a) opis karty {card} w stosie {stack} na tablicy {board}", - "You have archived {card} in {stack} on {board}" : "Zarchiwizowałeś(-aś) kartę {card} w stosie {stack} na tablicy {board}", - "{user} has archived {card} in {stack} on {board}" : "Użytkownik {user} zarchiwizował(-a) kartę {card} w stosie {stack} na tablicy {board}", - "You have unarchived {card} in {stack} on {board}" : "Przywróciłeś(-aś) kartę {card} w stosie {stack} na tablicę {board} z archiwum", - "{user} has unarchived {card} in {stack} on {board}" : "{user} przywrócił(-a) kartę {card} w stosie {stack} na tablicę {board} z archiwum", - "You have removed the due date of {card}" : "Usunąłeś(-aś) datę ważności karty {card}", - "{user} has removed the due date of {card}" : "Użytkownik {user} usunął datę ważności {card}", - "You have set the due date of {card} to {after}" : "Ustawiłeś(-aś) datę ważności karty {card} na {after}", - "{user} has set the due date of {card} to {after}" : "Użytkownik {user} ustawił datę ważności karty {card} na {after}", - "You have updated the due date of {card} to {after}" : "Zaktualizowałeś(-aś) datę ważności karty {card} na {after}", - "{user} has updated the due date of {card} to {after}" : "Użytkownik {user} zaktualizował(-a) datę ważności karty {card} na {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Dodałeś(-aś) etykietę {label} na karcie {card} w stosie {stack} na tablicy {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "Użytkownik {user} dodał(-a) etykietę {label} na karcie {card} w stosie {stack} na tablicy {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Usunąłeś(-aś) etykietę {label} z karty {card} w stosie {stack} na tablicy {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "Użytkownik {user} usunął etykietę {label} z karty {card} w stosie {stack} na tablicy {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Przydzieliłeś(-aś) {assigneduser} do karty {card} na tablicy {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "Użytkownik {user} przydzielił(-a) {assigneduser} do karty {card} na tablicy {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Cofnąłeś(-aś) przydzielenie {assigneduser} do karty {card} na tablicy {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "Użytkownik {user} cofnął przydzielenie {assigneduser} do karty {card} na tablicy {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Przeniosłeś(-aś) kartę {card} ze stosu {stackBefore} do {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "Użytkownik {user} przeniósł(-ła) kartę {card} ze stosu {stackBefore} do {stack}", - "You have added the attachment {attachment} to {card}" : "Dodałeś(-aś) załącznik {attachment} do karty {card}", - "{user} has added the attachment {attachment} to {card}" : "Użytkownik {user} dodał załącznik {attachment} do karty {card}", - "You have updated the attachment {attachment} on {card}" : "Zaktualizowałeś(-aś) załącznik {attachment} na karcie {card}", - "{user} has updated the attachment {attachment} to {card}" : "Uzytkownik {user} zaktualizował(-a) załącznik {attachment} na karcie {card}", - "You have deleted the attachment {attachment} from {card}" : "Usunąłeś(-aś) załącznik {attachment} z karty {card}", - "{user} has deleted the attachment {attachment} to {card}" : "Użytkownik {user} usunął załącznik {attachment} z karty {card}", - "You have restored the attachment {attachment} to {card}" : "Przywróciłeś(-aś) załącznik {attachment} na kartę {card}", - "{user} has restored the attachment {attachment} to {card}" : "Użytkownik {user} przywrócił(-a) załącznik {attachment} na kartę {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} dodał opis karty {card} w stosie {stack} na tablicy {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Zaktualizowałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} zaktualizował opis karty {card} w stosie {stack} na tablicy {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Zarchiwizowałeś/-aś kartę {card} w stosie {stack} na tablicy {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} zarchiwizował kartę {card} w stosie {stack} na tablicy {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Masz niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ma niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}", + "You have removed the due date of card {card}" : "Usunąłeś/-aś datę ważności karty {card}", + "{user} has removed the due date of card {card}" : "{user} usunął datę ważności karty {card}", + "You have set the due date of card {card} to {after}" : "Ustawiłeś/-aś datę ważności karty {card} na {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ustawił datę ważności karty {card} na {after}", + "You have updated the due date of card {card} to {after}" : "Zaktualizowałeś/-aś datę ważności karty {card} na {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} zaktualizował datę ważności karty {card} na {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} dodał etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} usunął etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Przydzieliłeś/-aś {assigneduser} do karty {card} na tablicy {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} przydzielił {assigneduser} do karty {card} na tablicy {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Usunąłeś/-aś przydzielenie {assigneduser} do karty {card} na tablicy {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} usunął przydzielenie {assigneduser} do karty {card} na tablicy {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Przeniosłeś/-aś kartę {card} ze stosu {stackBefore} do {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} przeniósł kartę {card} ze stosu {stackBefore} do {stack}", + "You have added the attachment {attachment} to card {card}" : "Dodałeś/-aś załącznik {attachment} do karty {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} dodał załącznik {attachment} do karty {card}", + "You have updated the attachment {attachment} on card {card}" : "Zaktualizowałeś/-aś załącznik {attachment} na karcie {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} zaktualizował załącznik {attachment} na karcie {card}", + "You have deleted the attachment {attachment} from card {card}" : "Usunąłeś/-aś załącznik {attachment} z karty {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} usunął załącznik {attachment} z karty {card}", + "You have restored the attachment {attachment} to card {card}" : "Przywróciłeś/-aś załącznik {attachment} na kartę {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} przywrócił załącznik {attachment} na kartę {card}", + "You have commented on card {card}" : "Skomentowałeś/-aś kartę {card}", + "{user} has commented on card {card}" : "{user} skomentował kartę {card}", + "A card description inside the Deck app has been changed" : "Opis karty w aplikacji Deck został zmieniony", "Deck" : "Tablica", + "Changes in the Deck app" : "Zmiany w aplikacji Deck", "Personal" : "Osobiste", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Karta \"%s\" na \"%s\" została przydzielona Tobie przez %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "Użytkownik {user} przydzielił(-a) Tobie kartę \"%s\" na \"%s\".", "The card \"%s\" on \"%s\" has reached its due date." : "Karta \"%s\" na \"%s\" wygasła.", + "%s has mentioned you in a comment on \"%s\"." : "%s wspomniał o Tobie w komentarzu do „%s”.", + "{user} has mentioned you in a comment on \"%s\"." : "{user} wspomniał o Tobie w komentarzu do „%s”.", "The board \"%s\" has been shared with you by %s." : "Tablica \"%s\" została współdzielona Tobie przez %s.", "{user} has shared the board %s with you." : "{user} rozpoczął współdzielenie tablicy %s z Tobą.", "No data was provided to create an attachment." : "Nie podano żadnych danych do utworzenia załącznika.", @@ -95,31 +105,50 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "Rozszerzenie PHP zatrzymało wysyłanie pliku", "No file uploaded or file size exceeds maximum of %s" : "Brak przesłanego pliku lub rozmiar pliku przekracza maksymalny limit %s", "A kanban style project and personal management tool for Nextcloud" : "Projekt w stylu kanban jako narzędzie osobistego planowania i zarządzania dla Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck to narzędzie organizacyjne w stylu kanban, którego celem jest osobiste planowanie i organizacja projektu dla zespołów zintegrowanych z Nextcloud.\n\n\n- 📥 Dodaj swoje zadania do kart i porządkuj je\n- 📄 Zapisuj dodatkowe notatki\n- 🔖 Przypisuj etykiety dla jeszcze lepszej organizacji\n- 👥 Współdziel ze swoim zespołem, przyjaciółmi lub rodziną\n- 📎 Dołączaj pliki i umieszczaj je z opisem\n- 💬 Porozmawiaj ze swoim zespołem za pomocą komentarzy\n- ⚡ Śledź zmiany w strumieniu aktywności\n- 🚀 Organizuj swój projekt", + "Select the board to link to a project" : "Wybierz tablicę, aby połączyć się z projektem", + "Select board" : "Wybierz tablicę", "Add a new stack" : "Dodaj nowy stos", "Submit" : "Zatwierdź", "Show archived cards" : "Pokaż zarchiwizowane karty", "Hide archived cards" : "Ukryj zarchiwizowane karty", "Toggle compact mode" : "Przełącz w tryb kompaktowy", + "Show board details" : "Pokaż szczegóły tablicy", "All Boards" : "Tablice", "Archived boards" : "Zarchiwizowane tablice", "Share board" : "Udostępnij tablicę", + "Archived cards" : "Zarchiwizowane karty", "Actions" : "Akcje", "Drop your files here to upload it to the card" : "Upuść pliki tutaj aby wysłać je na kartę", + "Assign card to me" : "Przydziel mi kartę", + "Unassign card from me" : "Usuń przydzieloną kartę", + "Archive card" : "Zarchiwizuj kartę", + "Unarchive card" : "Nie archiwizuj karty", + "Delete card" : "Usuń kartę", "Enter a card title" : "Wprowadź tytuł karty", "Add card" : "Dodaj kartę", "Close" : "Zamknij", "Sharing" : "Współdzielenie", "Tags" : "Etykiety", + "Deleted items" : "Usunięte pozycje", + "Timeline" : "Oś czasu", "Select users or groups to share with" : "Wybierz użytkowników lub grupy, żeby współdzielić z nimi", - "Access for" : "Dostęp dla", + "Group" : "Grupa", + "Circle" : "Krąg", "No matching user or group found." : "Nie znaleziono pasujących użytkowników lub grup", "Loading" : "Ładowanie", - "Share" : "Współdziel", "Edit" : "Edycja", + "Share" : "Współdziel", "Manage" : "Zarządzanie", "Discard share" : "Usuń współdzielenie", + "Sharing has been disabled for your account." : "Udostępnianie zostało wyłączone dla Twojego konta.", + "Update tag" : "Zaktualizuj etykiety", + "Edit tag" : "Edytuj etykiety", + "Delete tag" : "Usuń etykiety", "Create" : "Utwórz", - "Create a new tag" : "Utwórz nowy tag", + "Create a new tag" : "Utwórz nową etykietę", + "Deleted stacks" : "Usunięte Stosy", + "Deleted cards" : "Usunięte karty", "Status" : "Status", "No archived boards to display" : "Brak zarchiwizowanych tablic do wyświetlenia", "No shared boards to display" : "Brak współdzielonych tablic do wyświetlenia", @@ -130,20 +159,24 @@ OC.L10N.register( "Archive board" : "Zarchiwizuj tablicę", "Unarchive board" : "Przywróć tablicę", "Delete board" : "Usuń tablicę", + "Update board" : "Zaktualizuj tablicę", + "Reset board" : "Zresetuj tablicę", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Cofnij usunięcie tablicy - w innym przypadku tablica zostanie usunięta przy kolejnym wykonaniu zadania cron.", "Create new board" : "Utwórz nową tablicę", "New board title" : "Tytuł nowej tablicy", + "Create board" : "Utwórz tablicę", "Select an attachment" : "Zaznacz załącznik", "Cancel upload" : "Anuluj wysyłanie", "by" : "przez", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Cofnij usuwanie pliku - w innym przypadku kolejne zadanie harmonogramu na serwerze usunie go.", "Undo file deletion" : "Cofnij usuwanie pliku", "Insert the file into the description" : "Wstaw plik do opisu", + "Delete attachment" : "Usuń załącznik", "Modified:" : "Zmodyfikowano:", "Created:" : "Utworzono:", - "Choose a tag" : "Wybierz tag", - "Add a tag" : "Dodaj tag", - "Select tags" : "Zaznacz tagi", + "Choose a tag" : "Wybierz etykietę", + "Add a tag" : "Dodaj etykietę", + "Select tags" : "Wybierz etykietę", "Assign users" : "Przydziel użytkowników", "Choose a user to assign" : "Wybierz użytkownika, który chcesz przypisać", "Assign this card to a user" : "Przydziel tę kartę użytkownikowi", @@ -160,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Dodaj opis karty", "Shared boards" : "Tablice współdzielone", "Move board to archive" : "Przesuń tablicę do archiwum", - "Create a new board" : "Utwórz nową tablicę" + "Create a new board" : "Utwórz nową tablicę", + "Settings" : "Ustawienia", + "Limit deck to groups" : "Ogranicz tablicę dla grup", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiting Deck zablokuje użytkownikom możliwość tworzenia własnych tablic, którzy nie należą do tych grup. Użytkownicy nadal będą mogli pracować na tablicach, które zostały im udostępnione." }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/l10n/pl.json b/l10n/pl.json index d0aee78c8..b5e5042d1 100644 --- a/l10n/pl.json +++ b/l10n/pl.json @@ -1,9 +1,13 @@ { "translations": { + "Please provide a content for your comment." : "Podaj treść komentarza.", + "Posting the comment failed." : "Publikowanie komentarza nie powiodło się.", + "The comment has been deleted" : "Komentarz został usunięty", "The associated stack is deleted as well, it will be restored as well." : "Powiązany blok został również usunięty, zostanie on także przywrócony.", "Restore associated stack" : "Przywróć powiązany blok", "Remove user from card" : "Usuń użytkownika z karty", "Hours" : "Godzin", "Minutes" : "Minut", + "Link to a board" : "Link do tablicy", "Maximum file size of {size} exceeded" : "Przekroczono maksymalny rozmiar pliku {size}", "You have created a new board {board}" : "Stworzyłeś(-aś) nową tablicę {board}", "{user} has created a new board {board}" : "{user} utworzył(-a) nową tablicę {board}", @@ -16,60 +20,66 @@ "You have removed {acl} from the board {board}" : "Usunąłes(-aś) {acl} z tablicy {board}", "{user} has removed {acl} from the board {board}" : "Użytkownik {user} usunął {acl} z tablicy {board}", "You have renamed the board {before} to {board}" : "Zmieniłeś(-aś) nazwę tablicy {before} na {board}", - "{user} has has renamed the board {before} to {board}" : "Użytkownik {user} zmienił(-a) nazwę tablicy {before} na {board}", + "{user} has renamed the board {before} to {board}" : "{user} zmienił(-a) nazwę tablicy {before} na {board} ", "You have archived the board {board}" : "Zarchiwizowałeś(-aś) tablicę {board}", "{user} has archived the board {before}" : "Użytkownik {user} zarchiwizował(-a) tablicę {board}", "You have unarchived the board {board}" : "Przywróciłeś(-aś) tablicę {board} z archiwum", "{user} has unarchived the board {before}" : "{user} przywrócił(-a) tablicę {board} z archiwum", - "You have created a new stack {stack} on {board}" : "Utworzyłeś(-aś) nowy stos {stack} na tablicy {board}", - "{user} has created a new stack {stack} on {board}" : "Użytkownik {user} utworzył(-a) nowy stos {stack} na tablicy {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Zmieniłeś(-aś) nazwę stosu tablicy {before} na {stack} na talicy {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "Użytkownik {user} zmienił(-a) nazwę stosu {before} na {stack} na tablicy {board}", - "You have deleted {stack} on {board}" : "Usunąłeś(-aś) stos {stack} na tablicy {board}", - "{user} has deleted {stack} on {board}" : "Użytkownik {user} usunął stos {stack} na tablicy {board}", - "You have created {card} in {stack} on {board}" : "Utworzyłeś(-aś) nową kartę {card} w stosie {stack} na tablicy {board}", - "{user} has created {card} in {stack} on {board}" : "Użytkownik {user} utworzył(-a) nową kartę {card} w stosie {stack} na tablicy {board}", - "You have deleted {card} in {stack} on {board}" : "Usunąłeś(-aś) kartę {card} w stosie {stack} na tablicy {board}", - "{user} has deleted {card} in {stack} on {board}" : "Użytkownik {user} usunął kartę {card} w stosie {stack} na tablicy {board}", + "You have created a new stack {stack} on board {board}" : "Utworzyłeś/-aś nowy stos {stack} na tablicy {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} utworzył nowy stos {stack} na tablicy {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Zmieniłeś/-aś nazwę stosu {before} dla {stack} na tablicy {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} zmienił nazwę stosu {before} dla {stack} na tablicy {board}", + "You have deleted stack {stack} on board {board}" : "Usunąłeś/-aś stos {stack} na tablicy {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} usunął stos {stack} na tablicy {board}", + "You have created card {card} in stack {stack} on board {board}" : "Utworzyłeś/-aś kartę {card} w stosie {stack} na tablicy {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} utworzył kartę {card} w stosie {stack} na tablicy {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś kartę {card} w stosie {stack} na tablicy {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} usunął kartę {card} w stosie {stack} na tablicy {board}", "You have renamed the card {before} to {card}" : "Zmieniłeś(-aś) nazwę karty {before} na {card}", "{user} has renamed the card {before} to {card}" : "Użytkownik {user} zmienił(-a) nazwę karty {before} na {card}", - "You have added a description to {card} in {stack} on {board}" : "Dodałeś(-aś) nowy opis karty {card} w stosie {stack} na tablicy {board}", - "{user} has added a description to {card} in {stack} on {board}" : "Użytkownik {user} dodał(-a) nowy opis karty {card} w stosie {stack} na tablicy {board}", - "You have updated the description of {card} in {stack} on {board}" : "Zaktualizowałeś(-aś) opis karty {card} w stosie {stack} na tablicy {board}", - "{user} has updated the description {card} in {stack} on {board}" : "Użytkownik {user} zmienił(-a) opis karty {card} w stosie {stack} na tablicy {board}", - "You have archived {card} in {stack} on {board}" : "Zarchiwizowałeś(-aś) kartę {card} w stosie {stack} na tablicy {board}", - "{user} has archived {card} in {stack} on {board}" : "Użytkownik {user} zarchiwizował(-a) kartę {card} w stosie {stack} na tablicy {board}", - "You have unarchived {card} in {stack} on {board}" : "Przywróciłeś(-aś) kartę {card} w stosie {stack} na tablicę {board} z archiwum", - "{user} has unarchived {card} in {stack} on {board}" : "{user} przywrócił(-a) kartę {card} w stosie {stack} na tablicę {board} z archiwum", - "You have removed the due date of {card}" : "Usunąłeś(-aś) datę ważności karty {card}", - "{user} has removed the due date of {card}" : "Użytkownik {user} usunął datę ważności {card}", - "You have set the due date of {card} to {after}" : "Ustawiłeś(-aś) datę ważności karty {card} na {after}", - "{user} has set the due date of {card} to {after}" : "Użytkownik {user} ustawił datę ważności karty {card} na {after}", - "You have updated the due date of {card} to {after}" : "Zaktualizowałeś(-aś) datę ważności karty {card} na {after}", - "{user} has updated the due date of {card} to {after}" : "Użytkownik {user} zaktualizował(-a) datę ważności karty {card} na {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Dodałeś(-aś) etykietę {label} na karcie {card} w stosie {stack} na tablicy {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "Użytkownik {user} dodał(-a) etykietę {label} na karcie {card} w stosie {stack} na tablicy {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Usunąłeś(-aś) etykietę {label} z karty {card} w stosie {stack} na tablicy {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "Użytkownik {user} usunął etykietę {label} z karty {card} w stosie {stack} na tablicy {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Przydzieliłeś(-aś) {assigneduser} do karty {card} na tablicy {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "Użytkownik {user} przydzielił(-a) {assigneduser} do karty {card} na tablicy {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Cofnąłeś(-aś) przydzielenie {assigneduser} do karty {card} na tablicy {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "Użytkownik {user} cofnął przydzielenie {assigneduser} do karty {card} na tablicy {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Przeniosłeś(-aś) kartę {card} ze stosu {stackBefore} do {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "Użytkownik {user} przeniósł(-ła) kartę {card} ze stosu {stackBefore} do {stack}", - "You have added the attachment {attachment} to {card}" : "Dodałeś(-aś) załącznik {attachment} do karty {card}", - "{user} has added the attachment {attachment} to {card}" : "Użytkownik {user} dodał załącznik {attachment} do karty {card}", - "You have updated the attachment {attachment} on {card}" : "Zaktualizowałeś(-aś) załącznik {attachment} na karcie {card}", - "{user} has updated the attachment {attachment} to {card}" : "Uzytkownik {user} zaktualizował(-a) załącznik {attachment} na karcie {card}", - "You have deleted the attachment {attachment} from {card}" : "Usunąłeś(-aś) załącznik {attachment} z karty {card}", - "{user} has deleted the attachment {attachment} to {card}" : "Użytkownik {user} usunął załącznik {attachment} z karty {card}", - "You have restored the attachment {attachment} to {card}" : "Przywróciłeś(-aś) załącznik {attachment} na kartę {card}", - "{user} has restored the attachment {attachment} to {card}" : "Użytkownik {user} przywrócił(-a) załącznik {attachment} na kartę {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} dodał opis karty {card} w stosie {stack} na tablicy {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Zaktualizowałeś/-aś opis karty {card} w stosie {stack} na tablicy {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} zaktualizował opis karty {card} w stosie {stack} na tablicy {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Zarchiwizowałeś/-aś kartę {card} w stosie {stack} na tablicy {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} zarchiwizował kartę {card} w stosie {stack} na tablicy {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Masz niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} ma niezarchiwizowaną kartę {card} w stosie {stack} na tablicy {board}", + "You have removed the due date of card {card}" : "Usunąłeś/-aś datę ważności karty {card}", + "{user} has removed the due date of card {card}" : "{user} usunął datę ważności karty {card}", + "You have set the due date of card {card} to {after}" : "Ustawiłeś/-aś datę ważności karty {card} na {after}", + "{user} has set the due date of card {card} to {after}" : "{user} ustawił datę ważności karty {card} na {after}", + "You have updated the due date of card {card} to {after}" : "Zaktualizowałeś/-aś datę ważności karty {card} na {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} zaktualizował datę ważności karty {card} na {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Dodałeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} dodał etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Usunąłeś/-aś etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} usunął etykietę {label} do karty {card} w stosie {stack} na tablicy {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Przydzieliłeś/-aś {assigneduser} do karty {card} na tablicy {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} przydzielił {assigneduser} do karty {card} na tablicy {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Usunąłeś/-aś przydzielenie {assigneduser} do karty {card} na tablicy {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} usunął przydzielenie {assigneduser} do karty {card} na tablicy {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Przeniosłeś/-aś kartę {card} ze stosu {stackBefore} do {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} przeniósł kartę {card} ze stosu {stackBefore} do {stack}", + "You have added the attachment {attachment} to card {card}" : "Dodałeś/-aś załącznik {attachment} do karty {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} dodał załącznik {attachment} do karty {card}", + "You have updated the attachment {attachment} on card {card}" : "Zaktualizowałeś/-aś załącznik {attachment} na karcie {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} zaktualizował załącznik {attachment} na karcie {card}", + "You have deleted the attachment {attachment} from card {card}" : "Usunąłeś/-aś załącznik {attachment} z karty {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} usunął załącznik {attachment} z karty {card}", + "You have restored the attachment {attachment} to card {card}" : "Przywróciłeś/-aś załącznik {attachment} na kartę {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} przywrócił załącznik {attachment} na kartę {card}", + "You have commented on card {card}" : "Skomentowałeś/-aś kartę {card}", + "{user} has commented on card {card}" : "{user} skomentował kartę {card}", + "A card description inside the Deck app has been changed" : "Opis karty w aplikacji Deck został zmieniony", "Deck" : "Tablica", + "Changes in the Deck app" : "Zmiany w aplikacji Deck", "Personal" : "Osobiste", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Karta \"%s\" na \"%s\" została przydzielona Tobie przez %s.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "Użytkownik {user} przydzielił(-a) Tobie kartę \"%s\" na \"%s\".", "The card \"%s\" on \"%s\" has reached its due date." : "Karta \"%s\" na \"%s\" wygasła.", + "%s has mentioned you in a comment on \"%s\"." : "%s wspomniał o Tobie w komentarzu do „%s”.", + "{user} has mentioned you in a comment on \"%s\"." : "{user} wspomniał o Tobie w komentarzu do „%s”.", "The board \"%s\" has been shared with you by %s." : "Tablica \"%s\" została współdzielona Tobie przez %s.", "{user} has shared the board %s with you." : "{user} rozpoczął współdzielenie tablicy %s z Tobą.", "No data was provided to create an attachment." : "Nie podano żadnych danych do utworzenia załącznika.", @@ -93,31 +103,50 @@ "A PHP extension stopped the file upload" : "Rozszerzenie PHP zatrzymało wysyłanie pliku", "No file uploaded or file size exceeds maximum of %s" : "Brak przesłanego pliku lub rozmiar pliku przekracza maksymalny limit %s", "A kanban style project and personal management tool for Nextcloud" : "Projekt w stylu kanban jako narzędzie osobistego planowania i zarządzania dla Nextcloud", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck to narzędzie organizacyjne w stylu kanban, którego celem jest osobiste planowanie i organizacja projektu dla zespołów zintegrowanych z Nextcloud.\n\n\n- 📥 Dodaj swoje zadania do kart i porządkuj je\n- 📄 Zapisuj dodatkowe notatki\n- 🔖 Przypisuj etykiety dla jeszcze lepszej organizacji\n- 👥 Współdziel ze swoim zespołem, przyjaciółmi lub rodziną\n- 📎 Dołączaj pliki i umieszczaj je z opisem\n- 💬 Porozmawiaj ze swoim zespołem za pomocą komentarzy\n- ⚡ Śledź zmiany w strumieniu aktywności\n- 🚀 Organizuj swój projekt", + "Select the board to link to a project" : "Wybierz tablicę, aby połączyć się z projektem", + "Select board" : "Wybierz tablicę", "Add a new stack" : "Dodaj nowy stos", "Submit" : "Zatwierdź", "Show archived cards" : "Pokaż zarchiwizowane karty", "Hide archived cards" : "Ukryj zarchiwizowane karty", "Toggle compact mode" : "Przełącz w tryb kompaktowy", + "Show board details" : "Pokaż szczegóły tablicy", "All Boards" : "Tablice", "Archived boards" : "Zarchiwizowane tablice", "Share board" : "Udostępnij tablicę", + "Archived cards" : "Zarchiwizowane karty", "Actions" : "Akcje", "Drop your files here to upload it to the card" : "Upuść pliki tutaj aby wysłać je na kartę", + "Assign card to me" : "Przydziel mi kartę", + "Unassign card from me" : "Usuń przydzieloną kartę", + "Archive card" : "Zarchiwizuj kartę", + "Unarchive card" : "Nie archiwizuj karty", + "Delete card" : "Usuń kartę", "Enter a card title" : "Wprowadź tytuł karty", "Add card" : "Dodaj kartę", "Close" : "Zamknij", "Sharing" : "Współdzielenie", "Tags" : "Etykiety", + "Deleted items" : "Usunięte pozycje", + "Timeline" : "Oś czasu", "Select users or groups to share with" : "Wybierz użytkowników lub grupy, żeby współdzielić z nimi", - "Access for" : "Dostęp dla", + "Group" : "Grupa", + "Circle" : "Krąg", "No matching user or group found." : "Nie znaleziono pasujących użytkowników lub grup", "Loading" : "Ładowanie", - "Share" : "Współdziel", "Edit" : "Edycja", + "Share" : "Współdziel", "Manage" : "Zarządzanie", "Discard share" : "Usuń współdzielenie", + "Sharing has been disabled for your account." : "Udostępnianie zostało wyłączone dla Twojego konta.", + "Update tag" : "Zaktualizuj etykiety", + "Edit tag" : "Edytuj etykiety", + "Delete tag" : "Usuń etykiety", "Create" : "Utwórz", - "Create a new tag" : "Utwórz nowy tag", + "Create a new tag" : "Utwórz nową etykietę", + "Deleted stacks" : "Usunięte Stosy", + "Deleted cards" : "Usunięte karty", "Status" : "Status", "No archived boards to display" : "Brak zarchiwizowanych tablic do wyświetlenia", "No shared boards to display" : "Brak współdzielonych tablic do wyświetlenia", @@ -128,20 +157,24 @@ "Archive board" : "Zarchiwizuj tablicę", "Unarchive board" : "Przywróć tablicę", "Delete board" : "Usuń tablicę", + "Update board" : "Zaktualizuj tablicę", + "Reset board" : "Zresetuj tablicę", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Cofnij usunięcie tablicy - w innym przypadku tablica zostanie usunięta przy kolejnym wykonaniu zadania cron.", "Create new board" : "Utwórz nową tablicę", "New board title" : "Tytuł nowej tablicy", + "Create board" : "Utwórz tablicę", "Select an attachment" : "Zaznacz załącznik", "Cancel upload" : "Anuluj wysyłanie", "by" : "przez", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Cofnij usuwanie pliku - w innym przypadku kolejne zadanie harmonogramu na serwerze usunie go.", "Undo file deletion" : "Cofnij usuwanie pliku", "Insert the file into the description" : "Wstaw plik do opisu", + "Delete attachment" : "Usuń załącznik", "Modified:" : "Zmodyfikowano:", "Created:" : "Utworzono:", - "Choose a tag" : "Wybierz tag", - "Add a tag" : "Dodaj tag", - "Select tags" : "Zaznacz tagi", + "Choose a tag" : "Wybierz etykietę", + "Add a tag" : "Dodaj etykietę", + "Select tags" : "Wybierz etykietę", "Assign users" : "Przydziel użytkowników", "Choose a user to assign" : "Wybierz użytkownika, który chcesz przypisać", "Assign this card to a user" : "Przydziel tę kartę użytkownikowi", @@ -158,6 +191,9 @@ "Add a card description…" : "Dodaj opis karty", "Shared boards" : "Tablice współdzielone", "Move board to archive" : "Przesuń tablicę do archiwum", - "Create a new board" : "Utwórz nową tablicę" + "Create a new board" : "Utwórz nową tablicę", + "Settings" : "Ustawienia", + "Limit deck to groups" : "Ogranicz tablicę dla grup", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiting Deck zablokuje użytkownikom możliwość tworzenia własnych tablic, którzy nie należą do tych grup. Użytkownicy nadal będą mogli pracować na tablicach, które zostały im udostępnione." },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" } \ No newline at end of file diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js index 2b6d38bbd..bfc601b50 100644 --- a/l10n/pt_BR.js +++ b/l10n/pt_BR.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Remover usuário do cartão", "Hours" : "Horas", "Minutes" : "Minutos", + "Link to a board" : "Linkar a um painel", "Maximum file size of {size} exceeded" : "Excedeu o tamanho máximo de arquivo de {size}", "You have created a new board {board}" : "Você criou um novo painel {board}", "{user} has created a new board {board}" : "{user} criou um novo painel {board}", @@ -21,61 +22,63 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Você excluiu {acl} do painel {board}", "{user} has removed {acl} from the board {board}" : "{user} excluiu {acl} do painel {board}", "You have renamed the board {before} to {board}" : "Você renomeou o painel {before} para {board}", - "{user} has has renamed the board {before} to {board}" : "{user} renomeou o painel {before} para {board}", + "{user} has renamed the board {before} to {board}" : "{user} renomeou o painel {before} para {board}", "You have archived the board {board}" : "Você arquivou o painel {board}", "{user} has archived the board {before}" : "{user} arquivou o painel {before}", "You have unarchived the board {board}" : "Você desarquivou o painel {board}", "{user} has unarchived the board {before}" : "{user} desarquivou o painel {board}", - "You have created a new stack {stack} on {board}" : "Você criou uma nova pilha {stack} em {board}", - "{user} has created a new stack {stack} on {board}" : "{user} criou uma nova pilha {stack} em {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Você renomeou a pilha {before} para {stack} em {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} renomeou a pilha {before} para {stack} em {board}", - "You have deleted {stack} on {board}" : "Você excluiu {stack} de {board}", - "{user} has deleted {stack} on {board}" : "{user} excluiu {stack} de {board}", - "You have created {card} in {stack} on {board}" : "Você criou {card} em {stack} de {board}", - "{user} has created {card} in {stack} on {board}" : "{user} criou {card} em {stack} de {board}", - "You have deleted {card} in {stack} on {board}" : "Você excluiu {card} em {stack} de {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} excluiu {card} em {stack} de {board}", + "You have created a new stack {stack} on board {board}" : "Você criou uma nova pilha {stack} no painel {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} criou uma nova pilha {stack} no painel {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Você renomeou a pilha {before} para {stack} do painel {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} renomeou a pilha {before} para {stack} do painel {board}", + "You have deleted stack {stack} on board {board}" : "Você excluiu a pilha {stack} do painel {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} excluiu a pilha {stack} do painel {board}", + "You have created card {card} in stack {stack} on board {board}" : "Você criou o cartão {card} na pilha {stack} do painel {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} criou o cartão {card} na pilha {stack} do painel {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Você excluiu o cartão {card} na pilha {stack} do painel {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} excluiu o cartão {card} na pilha {stack} do painel {board}", "You have renamed the card {before} to {card}" : "Você renomeou o cartão {before} para {card}", "{user} has renamed the card {before} to {card}" : "{user} renomeou o cartão {before} para {card}", - "You have added a description to {card} in {stack} on {board}" : "Você adicionou uma descrição para {card} em {stack} de {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} adicionou uma descrição para {card} em {stack} de {board}", - "You have updated the description of {card} in {stack} on {board}" : "Você atualizou a descrição de {card} em {stack} de {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} atualizou a descrição de {card} em {stack} de {board}", - "You have archived {card} in {stack} on {board}" : "Você arquivou {card} de {stack} de {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} arquivou {card} de {stack} de {board}", - "You have unarchived {card} in {stack} on {board}" : "Você desarquivou {card} de {stack} de {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} desarquivou {card} de {stack} de {board}", - "You have removed the due date of {card}" : "Você removeu a data de vencimento de {card}", - "{user} has removed the due date of {card}" : "{user} removeu a data de vencimento de {card}", - "You have set the due date of {card} to {after}" : "Você definiu a data de vencimento de {card} para {after}", - "{user} has set the due date of {card} to {after}" : "{user} definiu a data de vencimento de {card} para {after}", - "You have updated the due date of {card} to {after}" : "Você atualizou a data de vencimento de {card} para {after}", - "{user} has updated the due date of {card} to {after}" : "{user} atualizou a data de vencimento de {card} para {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Você adicionou o rótulo {label} para {card} em {stack} de {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} adicionou o rótulo {label} para {card} em {stack} de {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Você excluiu o rótulo {label} para {card} em {stack} de {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} excluiu o rótulo {label} para {card} em {stack} de {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Você atribuiu {assigneduser} para {card} de {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} atribuiu {assigneduser} para {card} de {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Você desatribuiu {assigneduser} de {card} de {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} desatribuiu {assigneduser} de {card} de {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Você moveu o cartão {card} de {stackBefore} para {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} moveu o cartão {card} de {stackBefore} para {stack}", - "You have added the attachment {attachment} to {card}" : "Você adicionou o anexo {attachment} em {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} adicionou o anexo {attachment} em {card}", - "You have updated the attachment {attachment} on {card}" : "Você atualizou o anexo {attachment} em {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} atualizou o anexo {attachment} em {card}", - "You have deleted the attachment {attachment} from {card}" : "Você excluiu o anexo {attachment} de {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} excluiu o anexo {attachment} de {card}", - "You have restored the attachment {attachment} to {card}" : "Você restaurou o anexo {attachment} de {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} restaurou o anexo {attachment} de {card}", - "You have commented on {card}" : "Você comentou em {card}", - "{user} has commented on {card}" : "{user} comentou em {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Você adicionou uma descrição ao cartão {card} na pilha {stack} do painel {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} adicionou uma descrição ao cartão {card} na pilha {stack} do painel {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Você atualizou a descrição do cartão {card} na pilha {stack} do painel {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} atualizou a descrição do cartão {card} na pilha {stack} no painel {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Você arquivou o cartão {card} na pilha {stack} do painel {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} arquivou o cartão {card} na pilha {stack} do painel {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Você desarquivou o cartão {card} na pilha {stack} do painel {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} desarquivou o cartão {card} na pilha {stack} do painel {board}", + "You have removed the due date of card {card}" : "Você excluiu a data de vencimento do cartão {card}", + "{user} has removed the due date of card {card}" : "{user} excluiu a data de vencimento do cartão {card}", + "You have set the due date of card {card} to {after}" : "Você definiu a data de vencimento do cartão {card} para {after}", + "{user} has set the due date of card {card} to {after}" : "{user} definiu a data de vencimento do cartão {card} para {after}", + "You have updated the due date of card {card} to {after}" : "Você atualizou a data de vencimento do cartão {card} para {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} atualizou a data de vencimento do cartão {card} para {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Você adicionou um rótulo {label} ao cartão {card} na pilha {stack} do painel {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} adicionou um rótulo {label} ao cartão {card} na pilha {stack} do painel {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Você removeu o rótulo {label} do cartão {card} na pilha {stack} do painel {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} removeu o rótulo {label} do cartão {card} na pilha {stack} do painel {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Você vinculou {assigneduser} ao cartão {card} do painel {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} vinculou {assigneduser} ao cartão {card} do painel {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Você desvinculou {assigneduser} do cartão {card} no painel {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} desvinculou {assigneduser} do cartão {card} no painel {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Você moveu o cartão {card} da pilha {stackBefore} para {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} moveu o cartão {card} da pilha {stackBefore} para {stack}", + "You have added the attachment {attachment} to card {card}" : "Você adicionou o anexo {attachment} no cartão {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} adicionou um anexo {attachment} ao cartão {card}", + "You have updated the attachment {attachment} on card {card}" : "Você atualizou o anexo {attachment} do cartão {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} atualizou o anexo {attachment} do cartão {card}", + "You have deleted the attachment {attachment} from card {card}" : "Você excluiu o anexo {attachment} do cartão {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} excluiu o anexo {attachment} do cartão {card}", + "You have restored the attachment {attachment} to card {card}" : "Você restaurou o anexo {attachment} do cartão {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} do cartão {card}", + "You have commented on card {card}" : "Você comentou no cartão {card}", + "{user} has commented on card {card}" : "{user} comentou no cartão {card}", + "A card description inside the Deck app has been changed" : "Uma descrição do cartão dentro do aplicativo Deck foi alterada", "Deck" : "Deck", + "Changes in the Deck app" : "Mudanças no aplicativo Deck", "Personal" : "Pessoal", - "The card \"%s\" on \"%s\" has been assigned to you by %s." : "O cartão \"%s\" em \"%s\" foi atribuído a você por %s.", - "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} atribuiu o cartão \"%s\" em \"%s\" para você.", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "O cartão \"%s\" em \"%s\" foi vinculado com você por %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vinculou o cartão \"%s\" em \"%s\" com você.", "The card \"%s\" on \"%s\" has reached its due date." : "O cartão \"%s\" em \"%s\" atingiu sua data de vencimento.", "%s has mentioned you in a comment on \"%s\"." : "%s citou você num comentário em \"%s\".", "{user} has mentioned you in a comment on \"%s\"." : "{user} citou você num comentário em \"%s\".", @@ -103,19 +106,22 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Nenhum arquivo enviado ou o tamanho excede o máximo de %s", "A kanban style project and personal management tool for Nextcloud" : "Um projeto no estilo kanban e uma ferramenta de gerenciamento pessoal para Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck é uma ferramenta de organização de estilo kanban destinada ao planejamento pessoal e organização para equipes integradas com o Nextcloud.\n\n\n- 📥 Adicione suas tarefas aos cartões e coloque-os em ordem\n- 📄 Insira notas adicionais no markdown\n- 🔖 Atribua rótulos para uma organização ainda melhor\n- 👥 Compartilhe com sua equipe, amigos ou familiares\n- 📎 Anexe arquivos e incorpore-os em sua descrição no markdown\n- 💬 Discuta com sua equipe usando os comentários\n- ⚡ Acompanhe as alterações no fluxo de atividades\n- 🚀 Mantenha seu projeto organizado", + "Select the board to link to a project" : "Selecione o painel para vincular a um projeto", + "Select board" : "Selecionar painel", "Add a new stack" : "Adicionar uma nova pilha", "Submit" : "Enviar", - "Show archived cards" : "Mostrar cartões arquivados", + "Show archived cards" : "Exibir cartões arquivados", "Hide archived cards" : "Ocultar cartões arquivados", "Toggle compact mode" : "Alternar para modo compacto", - "Show board details" : "Mostrar detalhes do painel", + "Show board details" : "Exibir detalhes do painel", "All Boards" : "Todos os painéis", "Archived boards" : "Painéis arquivados", "Share board" : "Compartilhar painel", + "Archived cards" : "Cartões arquivados", "Actions" : "Ações", "Drop your files here to upload it to the card" : "Solte seus arquivos aqui para enviá-los para o cartão", - "Assign card to me" : "Atribuir cartão a mim", - "Unassign card from me" : "Desatribuir cartão a mim", + "Assign card to me" : "Vincular o cartão comigo", + "Unassign card from me" : "Desvincular o cartão de mim", "Archive card" : "Arquivar cartão", "Unarchive card" : "Desarquivar cartão", "Delete card" : "Excluir cartão", @@ -127,13 +133,15 @@ OC.L10N.register( "Deleted items" : "Itens excluídos", "Timeline" : "Linha do tempo", "Select users or groups to share with" : "Selecionar usuários ou grupos para compartilhar", - "Access for" : "Acesso para", + "Group" : "Grupo", + "Circle" : "Círculo", "No matching user or group found." : "Usuário ou grupo não encontrado.", "Loading" : "Carregando", - "Share" : "Compartilhar", "Edit" : "Editar", + "Share" : "Compartilhar", "Manage" : "Gerenciar", "Discard share" : "Descartar compartilhamento", + "Sharing has been disabled for your account." : "O compartilhamento foi desativado para sua conta.", "Update tag" : "Atualizar rótulo", "Edit tag" : "Editar rótulo", "Delete tag" : "Excluir tag", @@ -169,9 +177,9 @@ OC.L10N.register( "Choose a tag" : "Escolha um rótulo", "Add a tag" : "Adicione um rótulo", "Select tags" : "Selecione os rótulos", - "Assign users" : "Atribuir usuários", - "Choose a user to assign" : "Escolha um usuário a atribuir", - "Assign this card to a user" : "Atribuir este cartão a um usuário", + "Assign users" : "Vincular usuários", + "Choose a user to assign" : "Escolha um usuário a vincular", + "Assign this card to a user" : "Vincular este cartão com um usuário", "Due date" : "Data devida", "Click to set" : "Clique para setar", "Remove due date" : "Remover devido à data", @@ -185,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Adicionar uma descrição para o cartão...", "Shared boards" : "Painéis compartilhados", "Move board to archive" : "Mover painel para o arquivo", - "Create a new board" : "Criar um novo painel" + "Create a new board" : "Criar um novo painel", + "Settings" : "Configurações", + "Limit deck to groups" : "Limite do Deck para grupos", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar o Deck impedirá que usuários que não fazem parte desses grupos criem seus próprios quadros. Os usuários ainda poderão trabalhar em pastas que foram compartilhadas com eles." }, "nplurals=2; plural=(n > 1);"); diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json index 0fac1d351..bcafb4923 100644 --- a/l10n/pt_BR.json +++ b/l10n/pt_BR.json @@ -7,6 +7,7 @@ "Remove user from card" : "Remover usuário do cartão", "Hours" : "Horas", "Minutes" : "Minutos", + "Link to a board" : "Linkar a um painel", "Maximum file size of {size} exceeded" : "Excedeu o tamanho máximo de arquivo de {size}", "You have created a new board {board}" : "Você criou um novo painel {board}", "{user} has created a new board {board}" : "{user} criou um novo painel {board}", @@ -19,61 +20,63 @@ "You have removed {acl} from the board {board}" : "Você excluiu {acl} do painel {board}", "{user} has removed {acl} from the board {board}" : "{user} excluiu {acl} do painel {board}", "You have renamed the board {before} to {board}" : "Você renomeou o painel {before} para {board}", - "{user} has has renamed the board {before} to {board}" : "{user} renomeou o painel {before} para {board}", + "{user} has renamed the board {before} to {board}" : "{user} renomeou o painel {before} para {board}", "You have archived the board {board}" : "Você arquivou o painel {board}", "{user} has archived the board {before}" : "{user} arquivou o painel {before}", "You have unarchived the board {board}" : "Você desarquivou o painel {board}", "{user} has unarchived the board {before}" : "{user} desarquivou o painel {board}", - "You have created a new stack {stack} on {board}" : "Você criou uma nova pilha {stack} em {board}", - "{user} has created a new stack {stack} on {board}" : "{user} criou uma nova pilha {stack} em {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Você renomeou a pilha {before} para {stack} em {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} renomeou a pilha {before} para {stack} em {board}", - "You have deleted {stack} on {board}" : "Você excluiu {stack} de {board}", - "{user} has deleted {stack} on {board}" : "{user} excluiu {stack} de {board}", - "You have created {card} in {stack} on {board}" : "Você criou {card} em {stack} de {board}", - "{user} has created {card} in {stack} on {board}" : "{user} criou {card} em {stack} de {board}", - "You have deleted {card} in {stack} on {board}" : "Você excluiu {card} em {stack} de {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} excluiu {card} em {stack} de {board}", + "You have created a new stack {stack} on board {board}" : "Você criou uma nova pilha {stack} no painel {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} criou uma nova pilha {stack} no painel {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Você renomeou a pilha {before} para {stack} do painel {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} renomeou a pilha {before} para {stack} do painel {board}", + "You have deleted stack {stack} on board {board}" : "Você excluiu a pilha {stack} do painel {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} excluiu a pilha {stack} do painel {board}", + "You have created card {card} in stack {stack} on board {board}" : "Você criou o cartão {card} na pilha {stack} do painel {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} criou o cartão {card} na pilha {stack} do painel {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Você excluiu o cartão {card} na pilha {stack} do painel {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} excluiu o cartão {card} na pilha {stack} do painel {board}", "You have renamed the card {before} to {card}" : "Você renomeou o cartão {before} para {card}", "{user} has renamed the card {before} to {card}" : "{user} renomeou o cartão {before} para {card}", - "You have added a description to {card} in {stack} on {board}" : "Você adicionou uma descrição para {card} em {stack} de {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} adicionou uma descrição para {card} em {stack} de {board}", - "You have updated the description of {card} in {stack} on {board}" : "Você atualizou a descrição de {card} em {stack} de {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} atualizou a descrição de {card} em {stack} de {board}", - "You have archived {card} in {stack} on {board}" : "Você arquivou {card} de {stack} de {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} arquivou {card} de {stack} de {board}", - "You have unarchived {card} in {stack} on {board}" : "Você desarquivou {card} de {stack} de {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} desarquivou {card} de {stack} de {board}", - "You have removed the due date of {card}" : "Você removeu a data de vencimento de {card}", - "{user} has removed the due date of {card}" : "{user} removeu a data de vencimento de {card}", - "You have set the due date of {card} to {after}" : "Você definiu a data de vencimento de {card} para {after}", - "{user} has set the due date of {card} to {after}" : "{user} definiu a data de vencimento de {card} para {after}", - "You have updated the due date of {card} to {after}" : "Você atualizou a data de vencimento de {card} para {after}", - "{user} has updated the due date of {card} to {after}" : "{user} atualizou a data de vencimento de {card} para {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Você adicionou o rótulo {label} para {card} em {stack} de {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} adicionou o rótulo {label} para {card} em {stack} de {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Você excluiu o rótulo {label} para {card} em {stack} de {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} excluiu o rótulo {label} para {card} em {stack} de {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Você atribuiu {assigneduser} para {card} de {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} atribuiu {assigneduser} para {card} de {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Você desatribuiu {assigneduser} de {card} de {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} desatribuiu {assigneduser} de {card} de {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Você moveu o cartão {card} de {stackBefore} para {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} moveu o cartão {card} de {stackBefore} para {stack}", - "You have added the attachment {attachment} to {card}" : "Você adicionou o anexo {attachment} em {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} adicionou o anexo {attachment} em {card}", - "You have updated the attachment {attachment} on {card}" : "Você atualizou o anexo {attachment} em {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} atualizou o anexo {attachment} em {card}", - "You have deleted the attachment {attachment} from {card}" : "Você excluiu o anexo {attachment} de {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} excluiu o anexo {attachment} de {card}", - "You have restored the attachment {attachment} to {card}" : "Você restaurou o anexo {attachment} de {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} restaurou o anexo {attachment} de {card}", - "You have commented on {card}" : "Você comentou em {card}", - "{user} has commented on {card}" : "{user} comentou em {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Você adicionou uma descrição ao cartão {card} na pilha {stack} do painel {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} adicionou uma descrição ao cartão {card} na pilha {stack} do painel {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Você atualizou a descrição do cartão {card} na pilha {stack} do painel {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} atualizou a descrição do cartão {card} na pilha {stack} no painel {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Você arquivou o cartão {card} na pilha {stack} do painel {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} arquivou o cartão {card} na pilha {stack} do painel {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Você desarquivou o cartão {card} na pilha {stack} do painel {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} desarquivou o cartão {card} na pilha {stack} do painel {board}", + "You have removed the due date of card {card}" : "Você excluiu a data de vencimento do cartão {card}", + "{user} has removed the due date of card {card}" : "{user} excluiu a data de vencimento do cartão {card}", + "You have set the due date of card {card} to {after}" : "Você definiu a data de vencimento do cartão {card} para {after}", + "{user} has set the due date of card {card} to {after}" : "{user} definiu a data de vencimento do cartão {card} para {after}", + "You have updated the due date of card {card} to {after}" : "Você atualizou a data de vencimento do cartão {card} para {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} atualizou a data de vencimento do cartão {card} para {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Você adicionou um rótulo {label} ao cartão {card} na pilha {stack} do painel {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} adicionou um rótulo {label} ao cartão {card} na pilha {stack} do painel {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Você removeu o rótulo {label} do cartão {card} na pilha {stack} do painel {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} removeu o rótulo {label} do cartão {card} na pilha {stack} do painel {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Você vinculou {assigneduser} ao cartão {card} do painel {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} vinculou {assigneduser} ao cartão {card} do painel {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Você desvinculou {assigneduser} do cartão {card} no painel {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} desvinculou {assigneduser} do cartão {card} no painel {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Você moveu o cartão {card} da pilha {stackBefore} para {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} moveu o cartão {card} da pilha {stackBefore} para {stack}", + "You have added the attachment {attachment} to card {card}" : "Você adicionou o anexo {attachment} no cartão {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} adicionou um anexo {attachment} ao cartão {card}", + "You have updated the attachment {attachment} on card {card}" : "Você atualizou o anexo {attachment} do cartão {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} atualizou o anexo {attachment} do cartão {card}", + "You have deleted the attachment {attachment} from card {card}" : "Você excluiu o anexo {attachment} do cartão {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} excluiu o anexo {attachment} do cartão {card}", + "You have restored the attachment {attachment} to card {card}" : "Você restaurou o anexo {attachment} do cartão {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} do cartão {card}", + "You have commented on card {card}" : "Você comentou no cartão {card}", + "{user} has commented on card {card}" : "{user} comentou no cartão {card}", + "A card description inside the Deck app has been changed" : "Uma descrição do cartão dentro do aplicativo Deck foi alterada", "Deck" : "Deck", + "Changes in the Deck app" : "Mudanças no aplicativo Deck", "Personal" : "Pessoal", - "The card \"%s\" on \"%s\" has been assigned to you by %s." : "O cartão \"%s\" em \"%s\" foi atribuído a você por %s.", - "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} atribuiu o cartão \"%s\" em \"%s\" para você.", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "O cartão \"%s\" em \"%s\" foi vinculado com você por %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vinculou o cartão \"%s\" em \"%s\" com você.", "The card \"%s\" on \"%s\" has reached its due date." : "O cartão \"%s\" em \"%s\" atingiu sua data de vencimento.", "%s has mentioned you in a comment on \"%s\"." : "%s citou você num comentário em \"%s\".", "{user} has mentioned you in a comment on \"%s\"." : "{user} citou você num comentário em \"%s\".", @@ -101,19 +104,22 @@ "No file uploaded or file size exceeds maximum of %s" : "Nenhum arquivo enviado ou o tamanho excede o máximo de %s", "A kanban style project and personal management tool for Nextcloud" : "Um projeto no estilo kanban e uma ferramenta de gerenciamento pessoal para Nextcloud", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck é uma ferramenta de organização de estilo kanban destinada ao planejamento pessoal e organização para equipes integradas com o Nextcloud.\n\n\n- 📥 Adicione suas tarefas aos cartões e coloque-os em ordem\n- 📄 Insira notas adicionais no markdown\n- 🔖 Atribua rótulos para uma organização ainda melhor\n- 👥 Compartilhe com sua equipe, amigos ou familiares\n- 📎 Anexe arquivos e incorpore-os em sua descrição no markdown\n- 💬 Discuta com sua equipe usando os comentários\n- ⚡ Acompanhe as alterações no fluxo de atividades\n- 🚀 Mantenha seu projeto organizado", + "Select the board to link to a project" : "Selecione o painel para vincular a um projeto", + "Select board" : "Selecionar painel", "Add a new stack" : "Adicionar uma nova pilha", "Submit" : "Enviar", - "Show archived cards" : "Mostrar cartões arquivados", + "Show archived cards" : "Exibir cartões arquivados", "Hide archived cards" : "Ocultar cartões arquivados", "Toggle compact mode" : "Alternar para modo compacto", - "Show board details" : "Mostrar detalhes do painel", + "Show board details" : "Exibir detalhes do painel", "All Boards" : "Todos os painéis", "Archived boards" : "Painéis arquivados", "Share board" : "Compartilhar painel", + "Archived cards" : "Cartões arquivados", "Actions" : "Ações", "Drop your files here to upload it to the card" : "Solte seus arquivos aqui para enviá-los para o cartão", - "Assign card to me" : "Atribuir cartão a mim", - "Unassign card from me" : "Desatribuir cartão a mim", + "Assign card to me" : "Vincular o cartão comigo", + "Unassign card from me" : "Desvincular o cartão de mim", "Archive card" : "Arquivar cartão", "Unarchive card" : "Desarquivar cartão", "Delete card" : "Excluir cartão", @@ -125,13 +131,15 @@ "Deleted items" : "Itens excluídos", "Timeline" : "Linha do tempo", "Select users or groups to share with" : "Selecionar usuários ou grupos para compartilhar", - "Access for" : "Acesso para", + "Group" : "Grupo", + "Circle" : "Círculo", "No matching user or group found." : "Usuário ou grupo não encontrado.", "Loading" : "Carregando", - "Share" : "Compartilhar", "Edit" : "Editar", + "Share" : "Compartilhar", "Manage" : "Gerenciar", "Discard share" : "Descartar compartilhamento", + "Sharing has been disabled for your account." : "O compartilhamento foi desativado para sua conta.", "Update tag" : "Atualizar rótulo", "Edit tag" : "Editar rótulo", "Delete tag" : "Excluir tag", @@ -167,9 +175,9 @@ "Choose a tag" : "Escolha um rótulo", "Add a tag" : "Adicione um rótulo", "Select tags" : "Selecione os rótulos", - "Assign users" : "Atribuir usuários", - "Choose a user to assign" : "Escolha um usuário a atribuir", - "Assign this card to a user" : "Atribuir este cartão a um usuário", + "Assign users" : "Vincular usuários", + "Choose a user to assign" : "Escolha um usuário a vincular", + "Assign this card to a user" : "Vincular este cartão com um usuário", "Due date" : "Data devida", "Click to set" : "Clique para setar", "Remove due date" : "Remover devido à data", @@ -183,6 +191,9 @@ "Add a card description…" : "Adicionar uma descrição para o cartão...", "Shared boards" : "Painéis compartilhados", "Move board to archive" : "Mover painel para o arquivo", - "Create a new board" : "Criar um novo painel" + "Create a new board" : "Criar um novo painel", + "Settings" : "Configurações", + "Limit deck to groups" : "Limite do Deck para grupos", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar o Deck impedirá que usuários que não fazem parte desses grupos criem seus próprios quadros. Os usuários ainda poderão trabalhar em pastas que foram compartilhadas com eles." },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/l10n/ru.js b/l10n/ru.js index 7e3934a77..2379219a4 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -21,57 +21,15 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Вы закрыли {acl} доступ к рабочей доске «{board}»", "{user} has removed {acl} from the board {board}" : "{user} закрыл(а) {acl} доступ к рабочей доске «{board}»", "You have renamed the board {before} to {board}" : "Вы переименовали рабочую доску из «{before}» в «{board}»", - "{user} has has renamed the board {before} to {board}" : "{user} переименовал(а) рабочую доску из «{before}» в «{board}»", + "{user} has renamed the board {before} to {board}" : "{user} переименовал(а) рабочую доску из «{before}» в «{board}»", "You have archived the board {board}" : "Вы переместили доску «{board}» в архив", "{user} has archived the board {before}" : "{user} переместил(а) доску «{board}» в архив", "You have unarchived the board {board}" : "Вы восстановили доску «{board}» из архива", "{user} has unarchived the board {before}" : "{user} восстановил(а) доску «{before}» из архива", - "You have created a new stack {stack} on {board}" : "Вы создали стопку карточек «{stack}» на рабочей доске «{board}»", - "{user} has created a new stack {stack} on {board}" : "{user} создал(а) стопку карточек «{stack}» на рабочей доске «{board}»", - "You have renamed a new stack {before} to {stack} on {board}" : "Вы переименовали стопку карточек на рабочей доске «{board}» из «{before}» в «{stack}»", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} переименовал(а) стопку карточек на рабочей доске «{board}» из «{before}» в «{stack}»", - "You have deleted {stack} on {board}" : "Вы удалили стопку карточек «{stack}» с рабочей доски «{board}»", - "{user} has deleted {stack} on {board}" : "{user} удалил(а) стопку карточек «{stack}» с рабочей доски «{board}»", - "You have created {card} in {stack} on {board}" : "Вы создали карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has created {card} in {stack} on {board}" : "{user} создал(а) карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have deleted {card} in {stack} on {board}" : "Вы удалили карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has deleted {card} in {stack} on {board}" : "{user} удалил(а) карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", + "You have created a new stack {stack} on board {board}" : "Вы создали стопку карточек «{stack}» на рабочей доске «{board}»", "You have renamed the card {before} to {card}" : "Вы переименовали карточку из «{before}» в «{card}»", "{user} has renamed the card {before} to {card}" : "{user} переименовал(а) карточку из «{before}» в «{card}»", - "You have added a description to {card} in {stack} on {board}" : "Вы добавили описание в карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has added a description to {card} in {stack} on {board}" : "{user} добавил(а) описание в карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have updated the description of {card} in {stack} on {board}" : "Вы изменили описание в карточке «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has updated the description {card} in {stack} on {board}" : "{user} изменил(а) описание в карточке «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have archived {card} in {stack} on {board}" : "Вы переместили в архив карточку «{card}» из стопки «{stack}» на рабочей доске «{board}»", - "{user} has archived {card} in {stack} on {board}" : "{user} переместил(а) в архив карточку «{card}» из стопки «{stack}» на рабочей доске «{board}»", - "You have unarchived {card} in {stack} on {board}" : "Вы восстановили из архива карточку «{card}» в стопку «{stack}» на рабочей доске «{board}»", - "{user} has unarchived {card} in {stack} on {board}" : "{user} восстановил(а) из архива карточку «{card}» в стопку «{stack}» на рабочей доске «{board}»", - "You have removed the due date of {card}" : "Вы удалили срок исполнения по карточке «{card}»", - "{user} has removed the due date of {card}" : "{user} удалил(а) срок исполнения по карточке «{card}»", - "You have set the due date of {card} to {after}" : "Вы задали срок исполнения по карточке «{card}» до {after}", - "{user} has set the due date of {card} to {after}" : "{user} задал(а) срок исполнения по карточке «{card}» до {after}", - "You have updated the due date of {card} to {after}" : "Вы изменили срок исполнения по карточке «{card}» до {after}", - "{user} has updated the due date of {card} to {after}" : "{user} изменил(а) срок исполнения по карточке «{card}» до {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Вы пометили карточку «{card}» в стопке «{stack}» на рабочей доске «{board}» меткой «{label}»", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} пометил(а) карточку «{card}» в стопке «{stack}» на рабочей доске «{board}» меткой «{label}»", - "You have removed the label {label} from {card} in {stack} on {board}" : "Вы убрали метку «{label}» с карточки «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} убрал(а) метку «{label}» с карточки «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have assigned {assigneduser} to {card} on {board}" : "Вы назначили пользователю {assigneduser} карточку «{card}» с рабочей доски «{board}»", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} назначил(а) пользователю {assigneduser} карточку «{card}» с рабочей доски «{board}»", - "You have unassigned {assigneduser} from {card} on {board}" : "Вы отменили назначение пользователю {assigneduser} карточки «{card}» с рабочей доски «{board}»", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} отменил(а) назначение пользователю {assigneduser} карточки «{card}» с рабочей доски «{board}»", - "You have moved the card {card} from {stackBefore} to {stack}" : "Вы переместили карточку «{card}» из стопки «{stackBefore}» в стопку «{stack}»", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} переместил(а) карточку «{card}» из стопки «{stackBefore}» в стопку «{stack}»", - "You have added the attachment {attachment} to {card}" : "Вы вложили файл «{attachment}» в карточку «{card}»", - "{user} has added the attachment {attachment} to {card}" : "{user} вложил(а) файл «{attachment}» в карточку «{card}»", - "You have updated the attachment {attachment} on {card}" : "Вы изменили файл «{attachment}» в карточке «{card}»", - "{user} has updated the attachment {attachment} to {card}" : "{user} изменил(а) файл «{attachment}» в карточке «{card}»", - "You have deleted the attachment {attachment} from {card}" : "Вы удалили файл «{attachment}» из карточки «{card}»", - "{user} has deleted the attachment {attachment} to {card}" : "{user} удалил(а) файл «{attachment}» из карточки «{card}»", - "You have restored the attachment {attachment} to {card}" : "Вы восстановили из корзины файл «{attachment}» в карточке «{card}»", - "{user} has restored the attachment {attachment} to {card}" : "{user} восстановил(а) из корзины файл «{attachment}» в карточке «{card}»", - "You have commented on {card}" : "Вы добавили комментарий к карточке «{card}»", - "{user} has commented on {card}" : "{user} добавил комментарий к карточке «{card}»", + "{user} has restored the attachment {attachment} to card {card}" : "{user} восстановил(а) из корзины файл «{attachment}» в карточке «{card}»", "Deck" : "Deck", "Personal" : "Личное", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Вам назначена карточка «%s» с рабочей доски «%s» пользователем %s.", @@ -108,11 +66,17 @@ OC.L10N.register( "Show archived cards" : "Показать архивные карточки", "Hide archived cards" : "Скрыть архивные карточки", "Toggle compact mode" : "Переключение в компактный режим и обратно", + "Show board details" : "Подробные сведения", "All Boards" : "Все доски", "Archived boards" : "Архив досок", "Share board" : "Поделиться", "Actions" : "Действия", "Drop your files here to upload it to the card" : "Для загрузки файла в карточку, перетащите его сюда", + "Assign card to me" : "Назначить карточку себе", + "Unassign card from me" : "Отказаться от назначения", + "Archive card" : "Переместить в архив", + "Unarchive card" : "Восстановить из архива", + "Delete card" : "Удалить", "Enter a card title" : "Введите заголовок карточки…", "Add card" : "Создать карточку", "Close" : "Закрыть", @@ -121,13 +85,15 @@ OC.L10N.register( "Deleted items" : "Объекты в корзине", "Timeline" : "Шкала времени", "Select users or groups to share with" : "Поделиться с пользователями или группами", - "Access for" : "Доступ для", "No matching user or group found." : "Не найдено соответствующих групп или пользователей.", "Loading" : "Загрузка", - "Share" : "Поделиться", "Edit" : "Редактировать", + "Share" : "Поделиться", "Manage" : "Управлять", "Discard share" : "Отказаться от предложения общего доступа", + "Update tag" : "Обновить метку", + "Edit tag" : "Изменить метку", + "Delete tag" : "Удалить метку", "Create" : "Создать", "Create a new tag" : "Создать метку", "Deleted stacks" : "Стопки карточек в корзине", @@ -142,15 +108,19 @@ OC.L10N.register( "Archive board" : "Переместить в архив", "Unarchive board" : "Восстановить доску из архива", "Delete board" : "Удалить доску", + "Update board" : "Обновить доску", + "Reset board" : "Очистить доску", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Отменить удаление доски, иначе она будет автоматически удалена при следующей обработке cronjob.", "Create new board" : "Создать рабочую доску", "New board title" : "Введите заголовок рабочей доски…", + "Create board" : "Создать доску", "Select an attachment" : "Выберите вложение", "Cancel upload" : "Прервать загрузку", "by" : "автор", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Отменить удаление файла, иначе он будет автоматически удалена при следующей обработке cronjob.", "Undo file deletion" : "Отменить удаление файла", "Insert the file into the description" : "Вложите файл в описание", + "Delete attachment" : "Удалить вложение", "Modified:" : "Последнее изменение:", "Created:" : "Создание:", "Choose a tag" : "Выберите метку", @@ -172,6 +142,7 @@ OC.L10N.register( "Add a card description…" : "Введите описание карточки…", "Shared boards" : "Общие доски", "Move board to archive" : "Переместить доску в архив", - "Create a new board" : "Создать доску" + "Create a new board" : "Создать доску", + "Settings" : "Параметры" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/l10n/ru.json b/l10n/ru.json index 803b9a95f..ae2a65b52 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -19,57 +19,15 @@ "You have removed {acl} from the board {board}" : "Вы закрыли {acl} доступ к рабочей доске «{board}»", "{user} has removed {acl} from the board {board}" : "{user} закрыл(а) {acl} доступ к рабочей доске «{board}»", "You have renamed the board {before} to {board}" : "Вы переименовали рабочую доску из «{before}» в «{board}»", - "{user} has has renamed the board {before} to {board}" : "{user} переименовал(а) рабочую доску из «{before}» в «{board}»", + "{user} has renamed the board {before} to {board}" : "{user} переименовал(а) рабочую доску из «{before}» в «{board}»", "You have archived the board {board}" : "Вы переместили доску «{board}» в архив", "{user} has archived the board {before}" : "{user} переместил(а) доску «{board}» в архив", "You have unarchived the board {board}" : "Вы восстановили доску «{board}» из архива", "{user} has unarchived the board {before}" : "{user} восстановил(а) доску «{before}» из архива", - "You have created a new stack {stack} on {board}" : "Вы создали стопку карточек «{stack}» на рабочей доске «{board}»", - "{user} has created a new stack {stack} on {board}" : "{user} создал(а) стопку карточек «{stack}» на рабочей доске «{board}»", - "You have renamed a new stack {before} to {stack} on {board}" : "Вы переименовали стопку карточек на рабочей доске «{board}» из «{before}» в «{stack}»", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} переименовал(а) стопку карточек на рабочей доске «{board}» из «{before}» в «{stack}»", - "You have deleted {stack} on {board}" : "Вы удалили стопку карточек «{stack}» с рабочей доски «{board}»", - "{user} has deleted {stack} on {board}" : "{user} удалил(а) стопку карточек «{stack}» с рабочей доски «{board}»", - "You have created {card} in {stack} on {board}" : "Вы создали карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has created {card} in {stack} on {board}" : "{user} создал(а) карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have deleted {card} in {stack} on {board}" : "Вы удалили карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has deleted {card} in {stack} on {board}" : "{user} удалил(а) карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", + "You have created a new stack {stack} on board {board}" : "Вы создали стопку карточек «{stack}» на рабочей доске «{board}»", "You have renamed the card {before} to {card}" : "Вы переименовали карточку из «{before}» в «{card}»", "{user} has renamed the card {before} to {card}" : "{user} переименовал(а) карточку из «{before}» в «{card}»", - "You have added a description to {card} in {stack} on {board}" : "Вы добавили описание в карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has added a description to {card} in {stack} on {board}" : "{user} добавил(а) описание в карточку «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have updated the description of {card} in {stack} on {board}" : "Вы изменили описание в карточке «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has updated the description {card} in {stack} on {board}" : "{user} изменил(а) описание в карточке «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have archived {card} in {stack} on {board}" : "Вы переместили в архив карточку «{card}» из стопки «{stack}» на рабочей доске «{board}»", - "{user} has archived {card} in {stack} on {board}" : "{user} переместил(а) в архив карточку «{card}» из стопки «{stack}» на рабочей доске «{board}»", - "You have unarchived {card} in {stack} on {board}" : "Вы восстановили из архива карточку «{card}» в стопку «{stack}» на рабочей доске «{board}»", - "{user} has unarchived {card} in {stack} on {board}" : "{user} восстановил(а) из архива карточку «{card}» в стопку «{stack}» на рабочей доске «{board}»", - "You have removed the due date of {card}" : "Вы удалили срок исполнения по карточке «{card}»", - "{user} has removed the due date of {card}" : "{user} удалил(а) срок исполнения по карточке «{card}»", - "You have set the due date of {card} to {after}" : "Вы задали срок исполнения по карточке «{card}» до {after}", - "{user} has set the due date of {card} to {after}" : "{user} задал(а) срок исполнения по карточке «{card}» до {after}", - "You have updated the due date of {card} to {after}" : "Вы изменили срок исполнения по карточке «{card}» до {after}", - "{user} has updated the due date of {card} to {after}" : "{user} изменил(а) срок исполнения по карточке «{card}» до {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Вы пометили карточку «{card}» в стопке «{stack}» на рабочей доске «{board}» меткой «{label}»", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} пометил(а) карточку «{card}» в стопке «{stack}» на рабочей доске «{board}» меткой «{label}»", - "You have removed the label {label} from {card} in {stack} on {board}" : "Вы убрали метку «{label}» с карточки «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} убрал(а) метку «{label}» с карточки «{card}» в стопке «{stack}» на рабочей доске «{board}»", - "You have assigned {assigneduser} to {card} on {board}" : "Вы назначили пользователю {assigneduser} карточку «{card}» с рабочей доски «{board}»", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} назначил(а) пользователю {assigneduser} карточку «{card}» с рабочей доски «{board}»", - "You have unassigned {assigneduser} from {card} on {board}" : "Вы отменили назначение пользователю {assigneduser} карточки «{card}» с рабочей доски «{board}»", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} отменил(а) назначение пользователю {assigneduser} карточки «{card}» с рабочей доски «{board}»", - "You have moved the card {card} from {stackBefore} to {stack}" : "Вы переместили карточку «{card}» из стопки «{stackBefore}» в стопку «{stack}»", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} переместил(а) карточку «{card}» из стопки «{stackBefore}» в стопку «{stack}»", - "You have added the attachment {attachment} to {card}" : "Вы вложили файл «{attachment}» в карточку «{card}»", - "{user} has added the attachment {attachment} to {card}" : "{user} вложил(а) файл «{attachment}» в карточку «{card}»", - "You have updated the attachment {attachment} on {card}" : "Вы изменили файл «{attachment}» в карточке «{card}»", - "{user} has updated the attachment {attachment} to {card}" : "{user} изменил(а) файл «{attachment}» в карточке «{card}»", - "You have deleted the attachment {attachment} from {card}" : "Вы удалили файл «{attachment}» из карточки «{card}»", - "{user} has deleted the attachment {attachment} to {card}" : "{user} удалил(а) файл «{attachment}» из карточки «{card}»", - "You have restored the attachment {attachment} to {card}" : "Вы восстановили из корзины файл «{attachment}» в карточке «{card}»", - "{user} has restored the attachment {attachment} to {card}" : "{user} восстановил(а) из корзины файл «{attachment}» в карточке «{card}»", - "You have commented on {card}" : "Вы добавили комментарий к карточке «{card}»", - "{user} has commented on {card}" : "{user} добавил комментарий к карточке «{card}»", + "{user} has restored the attachment {attachment} to card {card}" : "{user} восстановил(а) из корзины файл «{attachment}» в карточке «{card}»", "Deck" : "Deck", "Personal" : "Личное", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Вам назначена карточка «%s» с рабочей доски «%s» пользователем %s.", @@ -106,11 +64,17 @@ "Show archived cards" : "Показать архивные карточки", "Hide archived cards" : "Скрыть архивные карточки", "Toggle compact mode" : "Переключение в компактный режим и обратно", + "Show board details" : "Подробные сведения", "All Boards" : "Все доски", "Archived boards" : "Архив досок", "Share board" : "Поделиться", "Actions" : "Действия", "Drop your files here to upload it to the card" : "Для загрузки файла в карточку, перетащите его сюда", + "Assign card to me" : "Назначить карточку себе", + "Unassign card from me" : "Отказаться от назначения", + "Archive card" : "Переместить в архив", + "Unarchive card" : "Восстановить из архива", + "Delete card" : "Удалить", "Enter a card title" : "Введите заголовок карточки…", "Add card" : "Создать карточку", "Close" : "Закрыть", @@ -119,13 +83,15 @@ "Deleted items" : "Объекты в корзине", "Timeline" : "Шкала времени", "Select users or groups to share with" : "Поделиться с пользователями или группами", - "Access for" : "Доступ для", "No matching user or group found." : "Не найдено соответствующих групп или пользователей.", "Loading" : "Загрузка", - "Share" : "Поделиться", "Edit" : "Редактировать", + "Share" : "Поделиться", "Manage" : "Управлять", "Discard share" : "Отказаться от предложения общего доступа", + "Update tag" : "Обновить метку", + "Edit tag" : "Изменить метку", + "Delete tag" : "Удалить метку", "Create" : "Создать", "Create a new tag" : "Создать метку", "Deleted stacks" : "Стопки карточек в корзине", @@ -140,15 +106,19 @@ "Archive board" : "Переместить в архив", "Unarchive board" : "Восстановить доску из архива", "Delete board" : "Удалить доску", + "Update board" : "Обновить доску", + "Reset board" : "Очистить доску", "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Отменить удаление доски, иначе она будет автоматически удалена при следующей обработке cronjob.", "Create new board" : "Создать рабочую доску", "New board title" : "Введите заголовок рабочей доски…", + "Create board" : "Создать доску", "Select an attachment" : "Выберите вложение", "Cancel upload" : "Прервать загрузку", "by" : "автор", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Отменить удаление файла, иначе он будет автоматически удалена при следующей обработке cronjob.", "Undo file deletion" : "Отменить удаление файла", "Insert the file into the description" : "Вложите файл в описание", + "Delete attachment" : "Удалить вложение", "Modified:" : "Последнее изменение:", "Created:" : "Создание:", "Choose a tag" : "Выберите метку", @@ -170,6 +140,7 @@ "Add a card description…" : "Введите описание карточки…", "Shared boards" : "Общие доски", "Move board to archive" : "Переместить доску в архив", - "Create a new board" : "Создать доску" + "Create a new board" : "Создать доску", + "Settings" : "Параметры" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" } \ No newline at end of file diff --git a/l10n/sk.js b/l10n/sk.js index ef9a13085..e0cb4bef4 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -10,10 +10,10 @@ OC.L10N.register( "Hours" : "Hodín", "Minutes" : "Minút", "Maximum file size of {size} exceeded" : "Bola prekročená maximálna veľkosť súboru {size}", - "You have created a new board {board}" : "Vytvorili ste nástenku", + "You have created a new board {board}" : "Vytvorili ste nová nástenku {board}", "{user} has created a new board {board}" : "Používateľ {user} vytvoril novú nástenku {board}", - "You have deleted the board {board}" : "Odstránili ste nástenku {board}", - "{user} has deleted the board {board}" : "Používateľ {user} odstránil nástenku {board}", + "You have deleted the board {board}" : "Vymazali ste nástenku {board}", + "{user} has deleted the board {board}" : "Používateľ {user} vymazal nástenku {board}", "You have restored the board {board}" : "Obnovili ste nástenku {board}", "{user} has restored the board {board}" : "Používateľ {user} obnovil nástenku {board}", "You have shared the board {board} with {acl}" : "Sprístupnili ste nástenku {board} s {acl}", @@ -21,43 +21,69 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Odobrali ste {acl} z nástenky {board}", "{user} has removed {acl} from the board {board}" : "Používateľ {user} odobral {acl} z nástenky {board}", "You have renamed the board {before} to {board}" : "Premenovali ste nástenku {before} na {board}", - "{user} has has renamed the board {before} to {board}" : "Používateľ {user} premenoval nástenku {before} na {board}", + "{user} has renamed the board {before} to {board}" : "Používateľ {user} premenoval nástenku {before} na {board}", "You have archived the board {board}" : "Archivovali ste nástenku {board}", "{user} has archived the board {before}" : "Používateľ {user} archivoval nástenku {board}", "You have unarchived the board {board}" : "Zrušili ste archiváciu nástenky {board}", "{user} has unarchived the board {before}" : "Používateľ {user} zrušil archiváciu nástenky {before}", - "You have created a new stack {stack} on {board}" : "Vytvorili ste nový stoh {stack} na nástenke {board}", - "{user} has created a new stack {stack} on {board}" : "Používateľ {user} vytvoril nový stoh {stack} na nástenke {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Premenovali ste nový stoh {before} na {stack} na nástenke {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "Používateľ {user} premenoval nový stoh {before} na {stack} na nástenke {board}", - "You have deleted {stack} on {board}" : "Odstránili ste stoh {stack} na nástenke {board}", - "{user} has deleted {stack} on {board}" : "Používateľ {user} odstránil stack {stack} na nástenke {board}", - "You have created {card} in {stack} on {board}" : "Vytvorili ste kartu {card} v stohu {stack} na nástenke {board}", - "{user} has created {card} in {stack} on {board}" : "Používateľ {user} vytvoril kartu {card} v stohu {stack} na nástenke {board}", - "You have deleted {card} in {stack} on {board}" : "Odstránili ste kartu {card} v stohu {stack} na nástenke {board}", - "{user} has deleted {card} in {stack} on {board}" : "Používateľ {user} odstránil kartu {card} v stohu {stack} na nástenke {board}", - "You have added a description to {card} in {stack} on {board}" : "Pridali ste popis ku karte {card} v stohu {stack} na nástenke {board}", - "{user} has added a description to {card} in {stack} on {board}" : "Používateľ {user} pridal popis ku karte {card} v stohu {stack} na nástenke {board}", - "You have updated the description of {card} in {stack} on {board}" : "Aktualizovali ste popis v karte {card} v stohu {stack} na nástenke {board}", - "{user} has updated the description {card} in {stack} on {board}" : "Používateľ {user} aktualizoval popis v karte {card} v stohu {stack} na nástenke {board}", - "You have archived {card} in {stack} on {board}" : "Archivovali ste kartu {card} v stohu {stack} na nástenke {board}", - "{user} has archived {card} in {stack} on {board}" : "Používateľ {user} archivoval kartu {card} v stohu {stack} na nástenke {board}", - "You have unarchived {card} in {stack} on {board}" : "Zrušili ste archiváciu karty {card} v stohu {stack} na nástenke {board}", - "{user} has unarchived {card} in {stack} on {board}" : "Používateľ {user} zrušil archiváciu karty {card} v stohu {stack} na nástenke {board}", - "You have updated the due date of {card} to {after}" : "Zmenili ste termín karty {card} na {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Pridali ste štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "Používateľ pridal štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Odobrali ste štítok {label} z karty {card} v stohu {stack} na nástenke {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "Používateľ {user} odobral štítok {label} z karty {card} v stohu {stack} na nástenke {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Priradili ste používateľa {assigneduser} ku karte {card} na nástenke {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "Používateľ {user} priradil {assigneduser} ku karte {card} na nástenke {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Vyradili ste používateľa {assigneduser} z karty {card} na nástenke {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "Používateľ {user} vyradil používateľa {assigneduser} z karty {card} na nástenke {board}", - "Deck" : "Tabuľa", + "You have created a new stack {stack} on board {board}" : "Vytvorili ste nový stoh {stack} na nástenke {board}", + "{user} has created a new stack {stack} on board {board}" : "Používateľ {user} vytvoril nový stoh {stack} na nástenke {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Premenovali ste stoh {before} na {stack} na nástenke {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "Používateľ {user} premenoval stoh {before} na {stack} na nástenke {board}", + "You have deleted stack {stack} on board {board}" : "Vymazali ste stoh {stack} z nástenky {board}", + "{user} has deleted stack {stack} on board {board}" : "Používateľ {user} vymazal stoh {stack} z nástenky {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vytvorili ste kartu {card} v stohu {stack} na nástenke {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "Používateľ {user} vytvoril kartu {card} v stohu {stack} na nástenke {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vymazali ste kartu {card} v stohu {stack} z nástenky {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "Používateľ {user} vymazal kartu {card} v stohu {stack} z nástenky {board}", + "You have renamed the card {before} to {card}" : "Premenovali ste kartu {before} na {card}", + "{user} has renamed the card {before} to {card}" : "Používateľ {user} premenoval kartu {before} na {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Pridali ste popis ku karte {card} v stohu {stack} na nástenke {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "Používateľ {user} pridal popis ku karte {card} v stohu {stack} na nástenke {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali ste popis v karte {card} v stohu {stack} na nástenke {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "Používateľ {user} aktualizoval popis karty {card} v stohu {stack} na nástenke {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Archivovali ste kartu {card} v stohu {stack} na nástenke {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "Používateľ {user} archivoval kartu {card} v stohu {stack} na nástenke {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili ste archiváciu karty {card} v stohu {stack} na nástenke {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "Používateľ {user} zrušil archiváciu karty {card} v stohu {stack} na nástenke {board}", + "You have removed the due date of card {card}" : "Odobrali ste termín dokončenia z karty {card}", + "{user} has removed the due date of card {card}" : "Používateľ {user} odobral termín dokončenia z karty {card}", + "You have set the due date of card {card} to {after}" : "Nastavili ste termín dokončenia pre kartu {card} na {after}", + "{user} has set the due date of card {card} to {after}" : "Používateľ {user} nastavil termín dokončenia karty {card} na {after}", + "You have updated the due date of card {card} to {after}" : "Zmenili ste termín dokončenia karty {card} na {after}", + "{user} has updated the due date of card {card} to {after}" : "Používateľ {user} aktualizoval termín dokončenia karty {card} na {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Pridali ste štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "Používateľ {user} pridal štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odobrali ste štítok {label} z karty {card} v stohu {stack} na nástenke {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "Používateľ {user} odobral štítok {label} z karty {card} v stohu {stack} na nástenke {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Priradili ste používateľa {assigneduser} ku karte {card} na nástenke {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "Používateľ {user} priradil používateľa {assigneduser} ku karte {card} na nástenke {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vyradili ste priradenie používateľa {assigneduser} z karty {card} na nástenke {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "Používateľ {user} vyradil používateľa {assigneduser} z karty {card} na nástenke {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Presunuli ste kartu {card} zo stohu {stackBefore} do stohu {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "Používateľ {user} presunul kartu {card} zo stohu {stackBefore} do stohu {stack}", + "You have added the attachment {attachment} to card {card}" : "Pridali ste prílohu {attachment} ku karte {card}", + "{user} has added the attachment {attachment} to card {card}" : "Používateľ {user} pridal prílohu {attachment} ku karte {card}", + "You have updated the attachment {attachment} on card {card}" : "Aktualizovali ste prílohu {attachment} na karte {card}", + "{user} has updated the attachment {attachment} to card {card}" : "Používateľ {user} aktualizoval prílohu {attachment} ku karte {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vymazali ste prílohu {attachment} na karte {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "Používateľ {user} vymazal prílohu {attachment} z karty {card}", + "You have restored the attachment {attachment} to card {card}" : "Obnovili ste prílohu {attachment} na karte {card}", + "{user} has restored the attachment {attachment} to card {card}" : "Používateľ {user} obnovil prílohu {attachment} na karte {card}", + "You have commented on card {card}" : "Komentovali ste kartu {card}", + "{user} has commented on card {card}" : "{user} komentoval(a) kartu {card}", + "A card description inside the Deck app has been changed" : "V apke Nástenka sa zmenil Popis karty", + "Deck" : "Nástenka", + "Changes in the Deck app" : "Zmeny v apke Nástenka", "Personal" : "Osobné", - "The card \"%s\" on \"%s\" has reached its due date." : "Karta \"%s\" na \"%s\" dosiahla dátum platnosti", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Používateľ %s vám priradil kartu „%s“ na „%s“.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "Používateľ {user} vám priradil kartu „%s“ na „%s“.", + "The card \"%s\" on \"%s\" has reached its due date." : "Karta \"%s\" na nástenke \"%s\" dosiahla termín dokončenia.", + "%s has mentioned you in a comment on \"%s\"." : "Používateľ %s vás zmienil v komentári ku „%s“.", + "{user} has mentioned you in a comment on \"%s\"." : "Používateľ {user} vás zmienil v komentári v „%s“.", "The board \"%s\" has been shared with you by %s." : "Používateľ %s vám sprístupnil nástenku \"%s\".", "{user} has shared the board %s with you." : "Používateľ {user} vám sprístupnil nástenku %s.", + "No data was provided to create an attachment." : "Neboli poskytnuté dáta pre vytvorenie prílohy.", "Finished" : "Ukončené", "To review" : "Na posúdenie", "Action needed" : "Potrebná akcia", @@ -69,15 +95,33 @@ OC.L10N.register( "Example Task 2" : "Príklad úlohy 2", "Example Task 1" : "Príklad úlohy 1", "The file was uploaded" : "Súbor bol nahraný", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Nahraný súbor prekročil limit nastavený v upload_max_filesize v súbore php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.", + "The file was only partially uploaded" : "Súbor bol nahraný iba čiastočne", + "No file was uploaded" : "Nenahral sa žiadny súbor", + "Missing a temporary folder" : "Chýba priečinok pre dočasné súbory", + "Could not write file to disk" : "Nepodarilo sa zapísať súbor na disk", + "A PHP extension stopped the file upload" : "Rozšírenie PHP zastavilo nahrávanie súboru", + "No file uploaded or file size exceeds maximum of %s" : "Nenahral sa žiadny súbor alebo jeho veľkosť presiahla %s", + "A kanban style project and personal management tool for Nextcloud" : "Nástroj pre projektové a osobné riadenie v štýle Kanban.", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Karty sú nástroj zacielený na osobné alebo projektové plánovanie tímov v štýle Kanban integrovaný do Nextcloud.\n\n\n- 📥 Zadávajte a usporadúvajte svoje úlohy do kariet\n- 📄 Zapisujte si dodatočné poznámky\n- 🔖 Priraďujte štítky pre ešte lepšiu organizáciu\n- 👥 Zdieľajte so svojim tímom, priateľmi alebo rodinou\n- 🚀 Dostaňte svoj projekt pod kontrolu", "Add a new stack" : "Pridať nový stoh", "Submit" : "Odoslať", "Show archived cards" : "Zobraziť archivované karty", "Hide archived cards" : "Skryť archivované karty", - "Toggle compact mode" : "Prepnúť kompaktný režim", + "Toggle compact mode" : "Vyp/zap. kompaktný režim", + "Show board details" : "Zobraziť podrobnosti o nástenke", "All Boards" : "Všetky nástenky", "Archived boards" : "Archivované nástenky", "Share board" : "Zdieľať nástenku", + "Archived cards" : "Archivované karty", "Actions" : "Akcie", + "Drop your files here to upload it to the card" : "Tu vložte svoje súbory ak ich chcete pripojiť ku karte.", + "Assign card to me" : "Priradiť kartu mne", + "Unassign card from me" : "Zrušiť priradenie karty mne", + "Archive card" : "Archivovať kartu", + "Unarchive card" : "Zrušiť archiváciu karty", + "Delete card" : "Zmazať kartu", "Enter a card title" : "Zmeniť názov karty", "Add card" : "Pridať kartu", "Close" : "Zavrieť", @@ -86,13 +130,17 @@ OC.L10N.register( "Deleted items" : "Zmazané položky", "Timeline" : "Časová os", "Select users or groups to share with" : "Vyberte používateľov albo skupiny pre sprístupnenie", - "Access for" : "Prístup pre", + "Group" : "Skupina", "No matching user or group found." : "Neboli nájdení vyhovujúci používatelia alebo skupiny.", "Loading" : "Načítavanie", - "Share" : "Sprístupniť", "Edit" : "Upraviť", + "Share" : "Sprístupniť", "Manage" : "Spravovať", "Discard share" : "Zrušiť sprístupnenie", + "Sharing has been disabled for your account." : "Sprístupňovanie bolo pre vaše konto zakázané.", + "Update tag" : "Aktualizovať štítok", + "Edit tag" : "Upraviť štítok", + "Delete tag" : "Zmazať štítok", "Create" : "Vytvoriť", "Create a new tag" : "Vytvoriť nový štítok", "Deleted stacks" : "Odstránené stohy", @@ -107,14 +155,19 @@ OC.L10N.register( "Archive board" : "Archivovať nástenku", "Unarchive board" : "Vybrať nástenku z archívu", "Delete board" : "Zmazať nástenku", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátiť späť vymazanie nástenky - v opačnom prípade bude tabuľa vymazaná počas ďalšieho behu úlohy cronjob.", + "Update board" : "Aktualizovať nástenku", + "Reset board" : "Resetovať nástenku", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátiť späť vymazanie nástenky - v opačnom prípade bude nástenka vymazaná počas ďalšieho behu úlohy cronjob.", "Create new board" : "Vytvoriť novú nástenku", "New board title" : "Názov novej nástenky", + "Create board" : "Vytvoriť nástenku", "Select an attachment" : "Vybrať prílohu", "Cancel upload" : "Zrušiť nahrávanie", "by" : "-", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Vrátiť späť zmazanie súboru - v opačnom prípade bude súbor vymazaný počas ďalšieho behu úlohy cronjob.", "Undo file deletion" : "Vrátiť späť odstránenie súboru", "Insert the file into the description" : "Vložte súbor do popisu", + "Delete attachment" : "Zmazať prílohu", "Modified:" : "Upravené:", "Created:" : "Vytvorené:", "Choose a tag" : "Vybrať štítok", @@ -123,9 +176,9 @@ OC.L10N.register( "Assign users" : "Priradiť používateľov", "Choose a user to assign" : "Vyberte používateľa, ktorého chcete priradiť", "Assign this card to a user" : "Priradiť túto kartu používateľovi", - "Due date" : "Do dátumu", + "Due date" : "Termín dokončenia", "Click to set" : "Kliknite pre nastavenie", - "Remove due date" : "Odstrániť do dátumu", + "Remove due date" : "Odstrániť termín dokončenia", "Description" : "Popis", "Attachments" : "Prílohy", "Saved" : "Uložené", @@ -136,6 +189,9 @@ OC.L10N.register( "Add a card description…" : "Pridať popis karty...", "Shared boards" : "Sprístupnené nástenky", "Move board to archive" : "Presunúť nástenku do archívu", - "Create a new board" : "Vytvoriť novú nástenku" + "Create a new board" : "Vytvoriť novú nástenku", + "Settings" : "Nastavenia", + "Limit deck to groups" : "Obmedziť nástenku pre skupiny", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Obmedzenie Násteniek bráni používateľom, ktorí nie sú súčasťou týchto skupín, aby si vytvárali vlastné nástenky. Môžu však stále pracovať na nástenkách, ktoré im niekto sprístupní." }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/l10n/sk.json b/l10n/sk.json index d95470887..d56a2c2ce 100644 --- a/l10n/sk.json +++ b/l10n/sk.json @@ -8,10 +8,10 @@ "Hours" : "Hodín", "Minutes" : "Minút", "Maximum file size of {size} exceeded" : "Bola prekročená maximálna veľkosť súboru {size}", - "You have created a new board {board}" : "Vytvorili ste nástenku", + "You have created a new board {board}" : "Vytvorili ste nová nástenku {board}", "{user} has created a new board {board}" : "Používateľ {user} vytvoril novú nástenku {board}", - "You have deleted the board {board}" : "Odstránili ste nástenku {board}", - "{user} has deleted the board {board}" : "Používateľ {user} odstránil nástenku {board}", + "You have deleted the board {board}" : "Vymazali ste nástenku {board}", + "{user} has deleted the board {board}" : "Používateľ {user} vymazal nástenku {board}", "You have restored the board {board}" : "Obnovili ste nástenku {board}", "{user} has restored the board {board}" : "Používateľ {user} obnovil nástenku {board}", "You have shared the board {board} with {acl}" : "Sprístupnili ste nástenku {board} s {acl}", @@ -19,43 +19,69 @@ "You have removed {acl} from the board {board}" : "Odobrali ste {acl} z nástenky {board}", "{user} has removed {acl} from the board {board}" : "Používateľ {user} odobral {acl} z nástenky {board}", "You have renamed the board {before} to {board}" : "Premenovali ste nástenku {before} na {board}", - "{user} has has renamed the board {before} to {board}" : "Používateľ {user} premenoval nástenku {before} na {board}", + "{user} has renamed the board {before} to {board}" : "Používateľ {user} premenoval nástenku {before} na {board}", "You have archived the board {board}" : "Archivovali ste nástenku {board}", "{user} has archived the board {before}" : "Používateľ {user} archivoval nástenku {board}", "You have unarchived the board {board}" : "Zrušili ste archiváciu nástenky {board}", "{user} has unarchived the board {before}" : "Používateľ {user} zrušil archiváciu nástenky {before}", - "You have created a new stack {stack} on {board}" : "Vytvorili ste nový stoh {stack} na nástenke {board}", - "{user} has created a new stack {stack} on {board}" : "Používateľ {user} vytvoril nový stoh {stack} na nástenke {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Premenovali ste nový stoh {before} na {stack} na nástenke {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "Používateľ {user} premenoval nový stoh {before} na {stack} na nástenke {board}", - "You have deleted {stack} on {board}" : "Odstránili ste stoh {stack} na nástenke {board}", - "{user} has deleted {stack} on {board}" : "Používateľ {user} odstránil stack {stack} na nástenke {board}", - "You have created {card} in {stack} on {board}" : "Vytvorili ste kartu {card} v stohu {stack} na nástenke {board}", - "{user} has created {card} in {stack} on {board}" : "Používateľ {user} vytvoril kartu {card} v stohu {stack} na nástenke {board}", - "You have deleted {card} in {stack} on {board}" : "Odstránili ste kartu {card} v stohu {stack} na nástenke {board}", - "{user} has deleted {card} in {stack} on {board}" : "Používateľ {user} odstránil kartu {card} v stohu {stack} na nástenke {board}", - "You have added a description to {card} in {stack} on {board}" : "Pridali ste popis ku karte {card} v stohu {stack} na nástenke {board}", - "{user} has added a description to {card} in {stack} on {board}" : "Používateľ {user} pridal popis ku karte {card} v stohu {stack} na nástenke {board}", - "You have updated the description of {card} in {stack} on {board}" : "Aktualizovali ste popis v karte {card} v stohu {stack} na nástenke {board}", - "{user} has updated the description {card} in {stack} on {board}" : "Používateľ {user} aktualizoval popis v karte {card} v stohu {stack} na nástenke {board}", - "You have archived {card} in {stack} on {board}" : "Archivovali ste kartu {card} v stohu {stack} na nástenke {board}", - "{user} has archived {card} in {stack} on {board}" : "Používateľ {user} archivoval kartu {card} v stohu {stack} na nástenke {board}", - "You have unarchived {card} in {stack} on {board}" : "Zrušili ste archiváciu karty {card} v stohu {stack} na nástenke {board}", - "{user} has unarchived {card} in {stack} on {board}" : "Používateľ {user} zrušil archiváciu karty {card} v stohu {stack} na nástenke {board}", - "You have updated the due date of {card} to {after}" : "Zmenili ste termín karty {card} na {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Pridali ste štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "Používateľ pridal štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Odobrali ste štítok {label} z karty {card} v stohu {stack} na nástenke {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "Používateľ {user} odobral štítok {label} z karty {card} v stohu {stack} na nástenke {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Priradili ste používateľa {assigneduser} ku karte {card} na nástenke {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "Používateľ {user} priradil {assigneduser} ku karte {card} na nástenke {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Vyradili ste používateľa {assigneduser} z karty {card} na nástenke {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "Používateľ {user} vyradil používateľa {assigneduser} z karty {card} na nástenke {board}", - "Deck" : "Tabuľa", + "You have created a new stack {stack} on board {board}" : "Vytvorili ste nový stoh {stack} na nástenke {board}", + "{user} has created a new stack {stack} on board {board}" : "Používateľ {user} vytvoril nový stoh {stack} na nástenke {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Premenovali ste stoh {before} na {stack} na nástenke {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "Používateľ {user} premenoval stoh {before} na {stack} na nástenke {board}", + "You have deleted stack {stack} on board {board}" : "Vymazali ste stoh {stack} z nástenky {board}", + "{user} has deleted stack {stack} on board {board}" : "Používateľ {user} vymazal stoh {stack} z nástenky {board}", + "You have created card {card} in stack {stack} on board {board}" : "Vytvorili ste kartu {card} v stohu {stack} na nástenke {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "Používateľ {user} vytvoril kartu {card} v stohu {stack} na nástenke {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Vymazali ste kartu {card} v stohu {stack} z nástenky {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "Používateľ {user} vymazal kartu {card} v stohu {stack} z nástenky {board}", + "You have renamed the card {before} to {card}" : "Premenovali ste kartu {before} na {card}", + "{user} has renamed the card {before} to {card}" : "Používateľ {user} premenoval kartu {before} na {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Pridali ste popis ku karte {card} v stohu {stack} na nástenke {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "Používateľ {user} pridal popis ku karte {card} v stohu {stack} na nástenke {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Aktualizovali ste popis v karte {card} v stohu {stack} na nástenke {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "Používateľ {user} aktualizoval popis karty {card} v stohu {stack} na nástenke {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Archivovali ste kartu {card} v stohu {stack} na nástenke {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "Používateľ {user} archivoval kartu {card} v stohu {stack} na nástenke {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Zrušili ste archiváciu karty {card} v stohu {stack} na nástenke {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "Používateľ {user} zrušil archiváciu karty {card} v stohu {stack} na nástenke {board}", + "You have removed the due date of card {card}" : "Odobrali ste termín dokončenia z karty {card}", + "{user} has removed the due date of card {card}" : "Používateľ {user} odobral termín dokončenia z karty {card}", + "You have set the due date of card {card} to {after}" : "Nastavili ste termín dokončenia pre kartu {card} na {after}", + "{user} has set the due date of card {card} to {after}" : "Používateľ {user} nastavil termín dokončenia karty {card} na {after}", + "You have updated the due date of card {card} to {after}" : "Zmenili ste termín dokončenia karty {card} na {after}", + "{user} has updated the due date of card {card} to {after}" : "Používateľ {user} aktualizoval termín dokončenia karty {card} na {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Pridali ste štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "Používateľ {user} pridal štítok {label} ku karte {card} v stohu {stack} na nástenke {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Odobrali ste štítok {label} z karty {card} v stohu {stack} na nástenke {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "Používateľ {user} odobral štítok {label} z karty {card} v stohu {stack} na nástenke {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Priradili ste používateľa {assigneduser} ku karte {card} na nástenke {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "Používateľ {user} priradil používateľa {assigneduser} ku karte {card} na nástenke {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Vyradili ste priradenie používateľa {assigneduser} z karty {card} na nástenke {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "Používateľ {user} vyradil používateľa {assigneduser} z karty {card} na nástenke {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Presunuli ste kartu {card} zo stohu {stackBefore} do stohu {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "Používateľ {user} presunul kartu {card} zo stohu {stackBefore} do stohu {stack}", + "You have added the attachment {attachment} to card {card}" : "Pridali ste prílohu {attachment} ku karte {card}", + "{user} has added the attachment {attachment} to card {card}" : "Používateľ {user} pridal prílohu {attachment} ku karte {card}", + "You have updated the attachment {attachment} on card {card}" : "Aktualizovali ste prílohu {attachment} na karte {card}", + "{user} has updated the attachment {attachment} to card {card}" : "Používateľ {user} aktualizoval prílohu {attachment} ku karte {card}", + "You have deleted the attachment {attachment} from card {card}" : "Vymazali ste prílohu {attachment} na karte {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "Používateľ {user} vymazal prílohu {attachment} z karty {card}", + "You have restored the attachment {attachment} to card {card}" : "Obnovili ste prílohu {attachment} na karte {card}", + "{user} has restored the attachment {attachment} to card {card}" : "Používateľ {user} obnovil prílohu {attachment} na karte {card}", + "You have commented on card {card}" : "Komentovali ste kartu {card}", + "{user} has commented on card {card}" : "{user} komentoval(a) kartu {card}", + "A card description inside the Deck app has been changed" : "V apke Nástenka sa zmenil Popis karty", + "Deck" : "Nástenka", + "Changes in the Deck app" : "Zmeny v apke Nástenka", "Personal" : "Osobné", - "The card \"%s\" on \"%s\" has reached its due date." : "Karta \"%s\" na \"%s\" dosiahla dátum platnosti", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Používateľ %s vám priradil kartu „%s“ na „%s“.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "Používateľ {user} vám priradil kartu „%s“ na „%s“.", + "The card \"%s\" on \"%s\" has reached its due date." : "Karta \"%s\" na nástenke \"%s\" dosiahla termín dokončenia.", + "%s has mentioned you in a comment on \"%s\"." : "Používateľ %s vás zmienil v komentári ku „%s“.", + "{user} has mentioned you in a comment on \"%s\"." : "Používateľ {user} vás zmienil v komentári v „%s“.", "The board \"%s\" has been shared with you by %s." : "Používateľ %s vám sprístupnil nástenku \"%s\".", "{user} has shared the board %s with you." : "Používateľ {user} vám sprístupnil nástenku %s.", + "No data was provided to create an attachment." : "Neboli poskytnuté dáta pre vytvorenie prílohy.", "Finished" : "Ukončené", "To review" : "Na posúdenie", "Action needed" : "Potrebná akcia", @@ -67,15 +93,33 @@ "Example Task 2" : "Príklad úlohy 2", "Example Task 1" : "Príklad úlohy 1", "The file was uploaded" : "Súbor bol nahraný", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Nahraný súbor prekročil limit nastavený v upload_max_filesize v súbore php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Ukladaný súbor prekračuje nastavenie MAX_FILE_SIZE z volieb HTML formulára.", + "The file was only partially uploaded" : "Súbor bol nahraný iba čiastočne", + "No file was uploaded" : "Nenahral sa žiadny súbor", + "Missing a temporary folder" : "Chýba priečinok pre dočasné súbory", + "Could not write file to disk" : "Nepodarilo sa zapísať súbor na disk", + "A PHP extension stopped the file upload" : "Rozšírenie PHP zastavilo nahrávanie súboru", + "No file uploaded or file size exceeds maximum of %s" : "Nenahral sa žiadny súbor alebo jeho veľkosť presiahla %s", + "A kanban style project and personal management tool for Nextcloud" : "Nástroj pre projektové a osobné riadenie v štýle Kanban.", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Karty sú nástroj zacielený na osobné alebo projektové plánovanie tímov v štýle Kanban integrovaný do Nextcloud.\n\n\n- 📥 Zadávajte a usporadúvajte svoje úlohy do kariet\n- 📄 Zapisujte si dodatočné poznámky\n- 🔖 Priraďujte štítky pre ešte lepšiu organizáciu\n- 👥 Zdieľajte so svojim tímom, priateľmi alebo rodinou\n- 🚀 Dostaňte svoj projekt pod kontrolu", "Add a new stack" : "Pridať nový stoh", "Submit" : "Odoslať", "Show archived cards" : "Zobraziť archivované karty", "Hide archived cards" : "Skryť archivované karty", - "Toggle compact mode" : "Prepnúť kompaktný režim", + "Toggle compact mode" : "Vyp/zap. kompaktný režim", + "Show board details" : "Zobraziť podrobnosti o nástenke", "All Boards" : "Všetky nástenky", "Archived boards" : "Archivované nástenky", "Share board" : "Zdieľať nástenku", + "Archived cards" : "Archivované karty", "Actions" : "Akcie", + "Drop your files here to upload it to the card" : "Tu vložte svoje súbory ak ich chcete pripojiť ku karte.", + "Assign card to me" : "Priradiť kartu mne", + "Unassign card from me" : "Zrušiť priradenie karty mne", + "Archive card" : "Archivovať kartu", + "Unarchive card" : "Zrušiť archiváciu karty", + "Delete card" : "Zmazať kartu", "Enter a card title" : "Zmeniť názov karty", "Add card" : "Pridať kartu", "Close" : "Zavrieť", @@ -84,13 +128,17 @@ "Deleted items" : "Zmazané položky", "Timeline" : "Časová os", "Select users or groups to share with" : "Vyberte používateľov albo skupiny pre sprístupnenie", - "Access for" : "Prístup pre", + "Group" : "Skupina", "No matching user or group found." : "Neboli nájdení vyhovujúci používatelia alebo skupiny.", "Loading" : "Načítavanie", - "Share" : "Sprístupniť", "Edit" : "Upraviť", + "Share" : "Sprístupniť", "Manage" : "Spravovať", "Discard share" : "Zrušiť sprístupnenie", + "Sharing has been disabled for your account." : "Sprístupňovanie bolo pre vaše konto zakázané.", + "Update tag" : "Aktualizovať štítok", + "Edit tag" : "Upraviť štítok", + "Delete tag" : "Zmazať štítok", "Create" : "Vytvoriť", "Create a new tag" : "Vytvoriť nový štítok", "Deleted stacks" : "Odstránené stohy", @@ -105,14 +153,19 @@ "Archive board" : "Archivovať nástenku", "Unarchive board" : "Vybrať nástenku z archívu", "Delete board" : "Zmazať nástenku", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátiť späť vymazanie nástenky - v opačnom prípade bude tabuľa vymazaná počas ďalšieho behu úlohy cronjob.", + "Update board" : "Aktualizovať nástenku", + "Reset board" : "Resetovať nástenku", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátiť späť vymazanie nástenky - v opačnom prípade bude nástenka vymazaná počas ďalšieho behu úlohy cronjob.", "Create new board" : "Vytvoriť novú nástenku", "New board title" : "Názov novej nástenky", + "Create board" : "Vytvoriť nástenku", "Select an attachment" : "Vybrať prílohu", "Cancel upload" : "Zrušiť nahrávanie", "by" : "-", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Vrátiť späť zmazanie súboru - v opačnom prípade bude súbor vymazaný počas ďalšieho behu úlohy cronjob.", "Undo file deletion" : "Vrátiť späť odstránenie súboru", "Insert the file into the description" : "Vložte súbor do popisu", + "Delete attachment" : "Zmazať prílohu", "Modified:" : "Upravené:", "Created:" : "Vytvorené:", "Choose a tag" : "Vybrať štítok", @@ -121,9 +174,9 @@ "Assign users" : "Priradiť používateľov", "Choose a user to assign" : "Vyberte používateľa, ktorého chcete priradiť", "Assign this card to a user" : "Priradiť túto kartu používateľovi", - "Due date" : "Do dátumu", + "Due date" : "Termín dokončenia", "Click to set" : "Kliknite pre nastavenie", - "Remove due date" : "Odstrániť do dátumu", + "Remove due date" : "Odstrániť termín dokončenia", "Description" : "Popis", "Attachments" : "Prílohy", "Saved" : "Uložené", @@ -134,6 +187,9 @@ "Add a card description…" : "Pridať popis karty...", "Shared boards" : "Sprístupnené nástenky", "Move board to archive" : "Presunúť nástenku do archívu", - "Create a new board" : "Vytvoriť novú nástenku" + "Create a new board" : "Vytvoriť novú nástenku", + "Settings" : "Nastavenia", + "Limit deck to groups" : "Obmedziť nástenku pre skupiny", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Obmedzenie Násteniek bráni používateľom, ktorí nie sú súčasťou týchto skupín, aby si vytvárali vlastné nástenky. Môžu však stále pracovať na nástenkách, ktoré im niekto sprístupní." },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" } \ No newline at end of file diff --git a/l10n/sq.js b/l10n/sq.js index 4998469bd..1b4aa40be 100644 --- a/l10n/sq.js +++ b/l10n/sq.js @@ -27,8 +27,8 @@ OC.L10N.register( "Select users or groups to share with" : "Shpërndajeni duke zgjedhur përdorues ose grupe ", "No matching user or group found." : "Nuk u gjet asnjë përdorues ose grup i përputhshëm.", "Loading" : "Po ngarkohet", - "Share" : "Ndaj ", "Edit" : "Edito", + "Share" : "Ndaj ", "Manage" : "Menaxho", "Discard share" : "Fshi ndarjen", "Create" : "Krijo", diff --git a/l10n/sq.json b/l10n/sq.json index 26ea5dc3b..c02a93e61 100644 --- a/l10n/sq.json +++ b/l10n/sq.json @@ -25,8 +25,8 @@ "Select users or groups to share with" : "Shpërndajeni duke zgjedhur përdorues ose grupe ", "No matching user or group found." : "Nuk u gjet asnjë përdorues ose grup i përputhshëm.", "Loading" : "Po ngarkohet", - "Share" : "Ndaj ", "Edit" : "Edito", + "Share" : "Ndaj ", "Manage" : "Menaxho", "Discard share" : "Fshi ndarjen", "Create" : "Krijo", diff --git a/l10n/sr.js b/l10n/sr.js index 1b279f0b3..ac098a062 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Уклони корисника са картице", "Hours" : "Сати", "Minutes" : "Минути", + "Link to a board" : "Веза ка табли", "Maximum file size of {size} exceeded" : "Премашена максимална величина фајла од {size}", "You have created a new board {board}" : "Направили сте нову таблу {board}", "{user} has created a new board {board}" : "{user} је направио нову таблу {board}", @@ -21,58 +22,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Уклонили сте {acl} са табле {board}", "{user} has removed {acl} from the board {board}" : "{user} је уклонио {acl} са табле {board}", "You have renamed the board {before} to {board}" : "Преименовали сте таблу {before} у {board}", - "{user} has has renamed the board {before} to {board}" : "{user} је преименовао таблу {before} у {board}", + "{user} has renamed the board {before} to {board}" : "{user} је преименовао таблу {before} у {board}", "You have archived the board {board}" : "Архивирали сте таблу {board}", "{user} has archived the board {before}" : "{user} је архивирао таблу {before}", "You have unarchived the board {board}" : "Вратили сте таблу {board} из архиве", "{user} has unarchived the board {before}" : "{user} је вратио таблу {before} из архиве", - "You have created a new stack {stack} on {board}" : "Направили сте нову гомилу {stack} на табли {board}", - "{user} has created a new stack {stack} on {board}" : "{user} је направио нову гомилу {stack} на табли {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Преименовали сте гомилу {before} у {stack} на табли {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} је преименовао гомилу {before} у {stack} на табли {board}", - "You have deleted {stack} on {board}" : "Обрисали сте гомилу {stack} са табле {board}", - "{user} has deleted {stack} on {board}" : "{user} је обрисао гомилу {stack} са табле {board}", - "You have created {card} in {stack} on {board}" : "Направили сте картицу {card} на гомили {stack} у табли {board}", - "{user} has created {card} in {stack} on {board}" : "{user} је направио картицу {card} на гомили {stack} у табли {board}", - "You have deleted {card} in {stack} on {board}" : "Обрисали сте картицу {card} са гомиле {stack} у табли {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} је обрисао картицу {card} са гомиле {stack} у табли {board}", + "You have created a new stack {stack} on board {board}" : "Направили сте нову гомилу {stack} на табли {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} је направио нову гомилу {stack} на табли {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Преименовали сте гомилу {before} у {stack} на табли {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} је преименовао гомилу {before} у {stack} на табли {board}", + "You have deleted stack {stack} on board {board}" : "Обрисали сте гомилу {stack} са табле {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} је обрисао гомилу {stack} са табле {board}", + "You have created card {card} in stack {stack} on board {board}" : "Направили сте картицу {card} на гомили {stack} у табли {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} је направио картицу {card} на гомили {stack} у табли {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Обрисали сте картицу {card} са гомиле {stack} у табли {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} је обрисао картицу {card} са гомиле {stack} у табли {board}", "You have renamed the card {before} to {card}" : "Преименовали сте картицу {before} као картицу {card}", "{user} has renamed the card {before} to {card}" : "{user} је преименовао картицу {before} као картицу {card}", - "You have added a description to {card} in {stack} on {board}" : "Додали сте опис картици {card} са гомиле {stack} на табли {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} је додао опис картици {card} са гомиле {stack} на табли {board}", - "You have updated the description of {card} in {stack} on {board}" : "Ажурирали сте опис картице {card} са гомиле {stack} на табли {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} је ажурирао опис картице {card} са гомиле {stack} на табли {board}", - "You have archived {card} in {stack} on {board}" : "Архивирали сте картицу {card} са гомиле {stack} на табли {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} је архивирао картицу {card} са гомиле {stack} на табли {board}", - "You have unarchived {card} in {stack} on {board}" : "Вратили сте из архиве картицу {card} са гомиле {stack} у табли {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} је вратио из архиве картицу {card} са гомиле {stack} у табли {board}", - "You have removed the due date of {card}" : "Уклонили сте рок са картице {card}", - "{user} has removed the due date of {card}" : "{user} је уклонио рок са картице {card}", - "You have set the due date of {card} to {after}" : "Поставили сте рок {after} на картици {card}", - "{user} has set the due date of {card} to {after}" : "{user} је поставио рок {after} на картици {card}", - "You have updated the due date of {card} to {after}" : "Ажурирали сте рок на {after} на картици {card}", - "{user} has updated the due date of {card} to {after}" : "{user} јежурирао рок на {after} на картици {card}", - "You have added the label {label} to {card} in {stack} on {board}" : "Додали сте ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} је додао ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Уклонили сте ознаку {label} са картице {card} са гомиле {stack} у табли {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} је уклонио ознаку {label} са картице {card} са гомиле {stack} у табли {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Доделили сте корисника {assigneduser} картици {card} са табле {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} је доделио корисника {assigneduser} картици {card} са табле {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Склонили сте корисника {assigneduser} са картице {card} са табле {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} је склонио корисника {assigneduser} са картице {card} са табле {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Померили сте картицу {card} са гомиле {stackBefore} на гомилу {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} је померио картицу {card} са гомиле {stackBefore} на гомилу {stack}", - "You have added the attachment {attachment} to {card}" : "Додали сте прилог {attachment} на картицу {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} је додао прилог {attachment} на картицу {card}", - "You have updated the attachment {attachment} on {card}" : "Ажурирали сте прилог {attachment} на картици {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} је ажурирао прилог {attachment} на картици {card}", - "You have deleted the attachment {attachment} from {card}" : "Обрисали сте прилог {attachment} са картице {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} је обрисао прилог {attachment} са картице {card}", - "You have restored the attachment {attachment} to {card}" : "Повратили сте прилог {attachment} на картицу {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} је повратио прилог {attachment} на картицу {card}", - "You have commented on {card}" : "Оставили сте коментар на картици {card}", - "{user} has commented on {card}" : "{user} је оставио коментар на картици {card}", - "Deck" : "Шпил", + "You have added a description to card {card} in stack {stack} on board {board}" : "Додали сте опис картици {card} са гомиле {stack} на табли {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} је додао опис картици {card} са гомиле {stack} на табли {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Ажурирали сте опис картице {card} са гомиле {stack} на табли {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "Корисник {user} је ажурирао опис картице {card} са гомиле {stack} на табли {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Архивирали сте картицу {card} са гомиле {stack} на табли {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} је архивирао картицу {card} са гомиле {stack} на табли {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Вратили сте из архиве картицу {card} са гомиле {stack} у табли {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} је вратио из архиве картицу {card} са гомиле {stack} у табли {board}", + "You have removed the due date of card {card}" : "Уклонили сте рок са картице {card}", + "{user} has removed the due date of card {card}" : "{user} је уклонио рок са картице {card}", + "You have set the due date of card {card} to {after}" : "Поставили сте рок {after} на картици {card}", + "{user} has set the due date of card {card} to {after}" : "{user} је поставио рок {after} на картици {card}", + "You have updated the due date of card {card} to {after}" : "Ажурирали сте рок на {after} на картици {card}", + "{user} has updated the due date of card {card} to {after}" : "{user} је ажурирао рок на {after} на картици {card}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Додали сте ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} је додао ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Уклонили сте ознаку {label} са картице {card} са гомиле {stack} у табли {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} је уклонио ознаку {label} са картице {card} са гомиле {stack} у табли {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Доделили сте корисника {assigneduser} картици {card} са табле {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} је доделио корисника {assigneduser} картици {card} са табле {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Склонили сте корисника {assigneduser} са картице {card} са табле {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} је склонио корисника {assigneduser} са картице {card} са табле {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Померили сте картицу {card} са гомиле {stackBefore} на гомилу {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} је померио картицу {card} са гомиле {stackBefore} на гомилу {stack}", + "You have added the attachment {attachment} to card {card}" : "Додали сте прилог {attachment} на картицу {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} је додао прилог {attachment} на картицу {card}", + "You have updated the attachment {attachment} on card {card}" : "Ажурирали сте прилог {attachment} на картици {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} је ажурирао прилог {attachment} на картици {card}", + "You have deleted the attachment {attachment} from card {card}" : "Обрисали сте прилог {attachment} са картице {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} је обрисао прилог {attachment} са картице {card}", + "You have restored the attachment {attachment} to card {card}" : "Повратили сте прилог {attachment} на картицу {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} је повратио прилог {attachment} на картицу {card}", + "You have commented on card {card}" : "Оставили сте коментар на картици {card}", + "{user} has commented on card {card}" : "{user} је оставио коментар на картици {card}", + "A card description inside the Deck app has been changed" : "опис картице унутар Deck апликације је промењен", + "Deck" : "Deck", + "Changes in the Deck app" : "Измене у Deck апликацији", "Personal" : "Лично", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Корисник %s Вам је доделио картицу „%s“ са табле „%s“.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "Корисник {user} Вам је доделио картицу „%s“ са табле „%s“.", @@ -103,6 +106,8 @@ OC.L10N.register( "No file uploaded or file size exceeds maximum of %s" : "Ниједан фајл није отпремљен или величина фајла премашује максимум од %s", "A kanban style project and personal management tool for Nextcloud" : "Канбан стил пројекта и лични менаџмент алат за Некстклауд", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck је алатка канбан организационог стила намењена за лично планирање и организацију пројеката за тимове интегрисане са Некстклаудом.\n\n\n- 📥 Додајте Ваше задатке на картице и распоређујте их како желите\n- 📄 Допишите додатне белешке markdown синтаксом\n- 🔖 Додељујте ознаке за још боље организовање\n- 👥 Делите са Вашим тимом, пријатељима или породицом\n- 📎 Качите фајлове и уградите их у Ваш markdown опис\n- 💬 Дискутујте са тимом преко коментара\n- ⚡ Пазите на промене коришћењем тока активности\n- 🚀 Организујте Ваше пројекте", + "Select the board to link to a project" : "Одаберите таблу да је повежете са пројектом", + "Select board" : "Одаберите таблу", "Add a new stack" : "Додај нову гомилу", "Submit" : "Пошаљи", "Show archived cards" : "Прикажи архивиране картице", @@ -112,6 +117,7 @@ OC.L10N.register( "All Boards" : "Све табле", "Archived boards" : "Архивиране табле", "Share board" : "Подели таблу", + "Archived cards" : "Архивиране картице", "Actions" : "Радње", "Drop your files here to upload it to the card" : "Превуците Ваше фајлове овде да их отпремите у картицу", "Assign card to me" : "Додели картицу мени", @@ -127,13 +133,15 @@ OC.L10N.register( "Deleted items" : "Обрисане ставке", "Timeline" : "Временска оса", "Select users or groups to share with" : "Одаберите кориснике или групе за дељење", - "Access for" : "Приступ за", + "Group" : "Група", + "Circle" : "Круг", "No matching user or group found." : "Нема корисника ни група који одговарају претрази.", "Loading" : "Учитавам", - "Share" : "Дели", "Edit" : "Измени", + "Share" : "Дели", "Manage" : "Управљај", "Discard share" : "Одбаци дељење", + "Sharing has been disabled for your account." : "Дељење је искључено за Ваш налог.", "Update tag" : "Ажурирај ознаку", "Edit tag" : "Измени ознаку", "Delete tag" : "Обриши ознаку", @@ -185,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Додај опис картице…", "Shared boards" : "Дељене табле", "Move board to archive" : "Помери таблу у архиву", - "Create a new board" : "Направи нову таблу" + "Create a new board" : "Направи нову таблу", + "Settings" : "Поставке", + "Limit deck to groups" : "Ограничи шпил на групе", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Ограничавање Deck апликације ће блокирати кориснике који нису део одабраних група да креирају своје табле. Корисници ће и даље моћи да раде на таблама које су подељене са њима." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/l10n/sr.json b/l10n/sr.json index 69e60dfb0..885fa6767 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -7,6 +7,7 @@ "Remove user from card" : "Уклони корисника са картице", "Hours" : "Сати", "Minutes" : "Минути", + "Link to a board" : "Веза ка табли", "Maximum file size of {size} exceeded" : "Премашена максимална величина фајла од {size}", "You have created a new board {board}" : "Направили сте нову таблу {board}", "{user} has created a new board {board}" : "{user} је направио нову таблу {board}", @@ -19,58 +20,60 @@ "You have removed {acl} from the board {board}" : "Уклонили сте {acl} са табле {board}", "{user} has removed {acl} from the board {board}" : "{user} је уклонио {acl} са табле {board}", "You have renamed the board {before} to {board}" : "Преименовали сте таблу {before} у {board}", - "{user} has has renamed the board {before} to {board}" : "{user} је преименовао таблу {before} у {board}", + "{user} has renamed the board {before} to {board}" : "{user} је преименовао таблу {before} у {board}", "You have archived the board {board}" : "Архивирали сте таблу {board}", "{user} has archived the board {before}" : "{user} је архивирао таблу {before}", "You have unarchived the board {board}" : "Вратили сте таблу {board} из архиве", "{user} has unarchived the board {before}" : "{user} је вратио таблу {before} из архиве", - "You have created a new stack {stack} on {board}" : "Направили сте нову гомилу {stack} на табли {board}", - "{user} has created a new stack {stack} on {board}" : "{user} је направио нову гомилу {stack} на табли {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Преименовали сте гомилу {before} у {stack} на табли {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} је преименовао гомилу {before} у {stack} на табли {board}", - "You have deleted {stack} on {board}" : "Обрисали сте гомилу {stack} са табле {board}", - "{user} has deleted {stack} on {board}" : "{user} је обрисао гомилу {stack} са табле {board}", - "You have created {card} in {stack} on {board}" : "Направили сте картицу {card} на гомили {stack} у табли {board}", - "{user} has created {card} in {stack} on {board}" : "{user} је направио картицу {card} на гомили {stack} у табли {board}", - "You have deleted {card} in {stack} on {board}" : "Обрисали сте картицу {card} са гомиле {stack} у табли {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} је обрисао картицу {card} са гомиле {stack} у табли {board}", + "You have created a new stack {stack} on board {board}" : "Направили сте нову гомилу {stack} на табли {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} је направио нову гомилу {stack} на табли {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Преименовали сте гомилу {before} у {stack} на табли {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} је преименовао гомилу {before} у {stack} на табли {board}", + "You have deleted stack {stack} on board {board}" : "Обрисали сте гомилу {stack} са табле {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} је обрисао гомилу {stack} са табле {board}", + "You have created card {card} in stack {stack} on board {board}" : "Направили сте картицу {card} на гомили {stack} у табли {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} је направио картицу {card} на гомили {stack} у табли {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Обрисали сте картицу {card} са гомиле {stack} у табли {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} је обрисао картицу {card} са гомиле {stack} у табли {board}", "You have renamed the card {before} to {card}" : "Преименовали сте картицу {before} као картицу {card}", "{user} has renamed the card {before} to {card}" : "{user} је преименовао картицу {before} као картицу {card}", - "You have added a description to {card} in {stack} on {board}" : "Додали сте опис картици {card} са гомиле {stack} на табли {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} је додао опис картици {card} са гомиле {stack} на табли {board}", - "You have updated the description of {card} in {stack} on {board}" : "Ажурирали сте опис картице {card} са гомиле {stack} на табли {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} је ажурирао опис картице {card} са гомиле {stack} на табли {board}", - "You have archived {card} in {stack} on {board}" : "Архивирали сте картицу {card} са гомиле {stack} на табли {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} је архивирао картицу {card} са гомиле {stack} на табли {board}", - "You have unarchived {card} in {stack} on {board}" : "Вратили сте из архиве картицу {card} са гомиле {stack} у табли {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} је вратио из архиве картицу {card} са гомиле {stack} у табли {board}", - "You have removed the due date of {card}" : "Уклонили сте рок са картице {card}", - "{user} has removed the due date of {card}" : "{user} је уклонио рок са картице {card}", - "You have set the due date of {card} to {after}" : "Поставили сте рок {after} на картици {card}", - "{user} has set the due date of {card} to {after}" : "{user} је поставио рок {after} на картици {card}", - "You have updated the due date of {card} to {after}" : "Ажурирали сте рок на {after} на картици {card}", - "{user} has updated the due date of {card} to {after}" : "{user} јежурирао рок на {after} на картици {card}", - "You have added the label {label} to {card} in {stack} on {board}" : "Додали сте ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} је додао ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Уклонили сте ознаку {label} са картице {card} са гомиле {stack} у табли {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} је уклонио ознаку {label} са картице {card} са гомиле {stack} у табли {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Доделили сте корисника {assigneduser} картици {card} са табле {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} је доделио корисника {assigneduser} картици {card} са табле {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Склонили сте корисника {assigneduser} са картице {card} са табле {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} је склонио корисника {assigneduser} са картице {card} са табле {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Померили сте картицу {card} са гомиле {stackBefore} на гомилу {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} је померио картицу {card} са гомиле {stackBefore} на гомилу {stack}", - "You have added the attachment {attachment} to {card}" : "Додали сте прилог {attachment} на картицу {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} је додао прилог {attachment} на картицу {card}", - "You have updated the attachment {attachment} on {card}" : "Ажурирали сте прилог {attachment} на картици {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} је ажурирао прилог {attachment} на картици {card}", - "You have deleted the attachment {attachment} from {card}" : "Обрисали сте прилог {attachment} са картице {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} је обрисао прилог {attachment} са картице {card}", - "You have restored the attachment {attachment} to {card}" : "Повратили сте прилог {attachment} на картицу {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} је повратио прилог {attachment} на картицу {card}", - "You have commented on {card}" : "Оставили сте коментар на картици {card}", - "{user} has commented on {card}" : "{user} је оставио коментар на картици {card}", - "Deck" : "Шпил", + "You have added a description to card {card} in stack {stack} on board {board}" : "Додали сте опис картици {card} са гомиле {stack} на табли {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} је додао опис картици {card} са гомиле {stack} на табли {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Ажурирали сте опис картице {card} са гомиле {stack} на табли {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "Корисник {user} је ажурирао опис картице {card} са гомиле {stack} на табли {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Архивирали сте картицу {card} са гомиле {stack} на табли {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} је архивирао картицу {card} са гомиле {stack} на табли {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Вратили сте из архиве картицу {card} са гомиле {stack} у табли {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} је вратио из архиве картицу {card} са гомиле {stack} у табли {board}", + "You have removed the due date of card {card}" : "Уклонили сте рок са картице {card}", + "{user} has removed the due date of card {card}" : "{user} је уклонио рок са картице {card}", + "You have set the due date of card {card} to {after}" : "Поставили сте рок {after} на картици {card}", + "{user} has set the due date of card {card} to {after}" : "{user} је поставио рок {after} на картици {card}", + "You have updated the due date of card {card} to {after}" : "Ажурирали сте рок на {after} на картици {card}", + "{user} has updated the due date of card {card} to {after}" : "{user} је ажурирао рок на {after} на картици {card}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Додали сте ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} је додао ознаку {label} на картицу {card} са гомиле {stack} у табли {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Уклонили сте ознаку {label} са картице {card} са гомиле {stack} у табли {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} је уклонио ознаку {label} са картице {card} са гомиле {stack} у табли {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Доделили сте корисника {assigneduser} картици {card} са табле {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} је доделио корисника {assigneduser} картици {card} са табле {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Склонили сте корисника {assigneduser} са картице {card} са табле {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} је склонио корисника {assigneduser} са картице {card} са табле {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Померили сте картицу {card} са гомиле {stackBefore} на гомилу {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} је померио картицу {card} са гомиле {stackBefore} на гомилу {stack}", + "You have added the attachment {attachment} to card {card}" : "Додали сте прилог {attachment} на картицу {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} је додао прилог {attachment} на картицу {card}", + "You have updated the attachment {attachment} on card {card}" : "Ажурирали сте прилог {attachment} на картици {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} је ажурирао прилог {attachment} на картици {card}", + "You have deleted the attachment {attachment} from card {card}" : "Обрисали сте прилог {attachment} са картице {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} је обрисао прилог {attachment} са картице {card}", + "You have restored the attachment {attachment} to card {card}" : "Повратили сте прилог {attachment} на картицу {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} је повратио прилог {attachment} на картицу {card}", + "You have commented on card {card}" : "Оставили сте коментар на картици {card}", + "{user} has commented on card {card}" : "{user} је оставио коментар на картици {card}", + "A card description inside the Deck app has been changed" : "опис картице унутар Deck апликације је промењен", + "Deck" : "Deck", + "Changes in the Deck app" : "Измене у Deck апликацији", "Personal" : "Лично", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Корисник %s Вам је доделио картицу „%s“ са табле „%s“.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "Корисник {user} Вам је доделио картицу „%s“ са табле „%s“.", @@ -101,6 +104,8 @@ "No file uploaded or file size exceeds maximum of %s" : "Ниједан фајл није отпремљен или величина фајла премашује максимум од %s", "A kanban style project and personal management tool for Nextcloud" : "Канбан стил пројекта и лични менаџмент алат за Некстклауд", "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck је алатка канбан организационог стила намењена за лично планирање и организацију пројеката за тимове интегрисане са Некстклаудом.\n\n\n- 📥 Додајте Ваше задатке на картице и распоређујте их како желите\n- 📄 Допишите додатне белешке markdown синтаксом\n- 🔖 Додељујте ознаке за још боље организовање\n- 👥 Делите са Вашим тимом, пријатељима или породицом\n- 📎 Качите фајлове и уградите их у Ваш markdown опис\n- 💬 Дискутујте са тимом преко коментара\n- ⚡ Пазите на промене коришћењем тока активности\n- 🚀 Организујте Ваше пројекте", + "Select the board to link to a project" : "Одаберите таблу да је повежете са пројектом", + "Select board" : "Одаберите таблу", "Add a new stack" : "Додај нову гомилу", "Submit" : "Пошаљи", "Show archived cards" : "Прикажи архивиране картице", @@ -110,6 +115,7 @@ "All Boards" : "Све табле", "Archived boards" : "Архивиране табле", "Share board" : "Подели таблу", + "Archived cards" : "Архивиране картице", "Actions" : "Радње", "Drop your files here to upload it to the card" : "Превуците Ваше фајлове овде да их отпремите у картицу", "Assign card to me" : "Додели картицу мени", @@ -125,13 +131,15 @@ "Deleted items" : "Обрисане ставке", "Timeline" : "Временска оса", "Select users or groups to share with" : "Одаберите кориснике или групе за дељење", - "Access for" : "Приступ за", + "Group" : "Група", + "Circle" : "Круг", "No matching user or group found." : "Нема корисника ни група који одговарају претрази.", "Loading" : "Учитавам", - "Share" : "Дели", "Edit" : "Измени", + "Share" : "Дели", "Manage" : "Управљај", "Discard share" : "Одбаци дељење", + "Sharing has been disabled for your account." : "Дељење је искључено за Ваш налог.", "Update tag" : "Ажурирај ознаку", "Edit tag" : "Измени ознаку", "Delete tag" : "Обриши ознаку", @@ -183,6 +191,9 @@ "Add a card description…" : "Додај опис картице…", "Shared boards" : "Дељене табле", "Move board to archive" : "Помери таблу у архиву", - "Create a new board" : "Направи нову таблу" + "Create a new board" : "Направи нову таблу", + "Settings" : "Поставке", + "Limit deck to groups" : "Ограничи шпил на групе", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Ограничавање Deck апликације ће блокирати кориснике који нису део одабраних група да креирају своје табле. Корисници ће и даље моћи да раде на таблама које су подељене са њима." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" } \ No newline at end of file diff --git a/l10n/sv.js b/l10n/sv.js index 7cc180c5c..ccd511169 100644 --- a/l10n/sv.js +++ b/l10n/sv.js @@ -1,49 +1,177 @@ OC.L10N.register( "deck", { + "Please provide a content for your comment." : "Ange ett innehåll för din kommentar.", + "Posting the comment failed." : "Det gick inte att skriva in kommentaren.", + "The comment has been deleted" : "Kommentaren har tagits bort", + "The associated stack is deleted as well, it will be restored as well." : "Den tillhörande stapeln raderas också, den kommer också att återställas.", + "Restore associated stack" : "Återställ tillhörande stapel", "Remove user from card" : "Ta bort användare från kort", "Hours" : "Timmar", "Minutes" : "Minuter", - "Deck" : "Kortlek", + "Link to a board" : "Länka till en tavla", + "Maximum file size of {size} exceeded" : "Maximal filstorlek på {size} överskriden", + "You have created a new board {board}" : "Du har skapat en ny tavla {board}", + "{user} has created a new board {board}" : "{user} har skapat en ny tavla {board}", + "You have deleted the board {board}" : "Du har raderat tavlan {board}", + "{user} has deleted the board {board}" : "{user} har raderat tavlan {board}", + "You have restored the board {board}" : "Du har återställt tavlan {board}", + "{user} has restored the board {board}" : "{user} har återställt tavlan {board}", + "You have shared the board {board} with {acl}" : "Du har delat tavlan {board} med {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} har delat tavlan {board} med {sharee}", + "You have removed {acl} from the board {board}" : "Du har raderat {acl} från tavlan {board}", + "{user} has removed {acl} from the board {board}" : "{user} har raderat {acl} från tavlan {board}", + "You have renamed the board {before} to {board}" : "Du har bytt namn på tavlan {before} till {board}", + "{user} has renamed the board {before} to {board}" : "{user} har bytt namn på tavlan {before} till {board}", + "You have archived the board {board}" : "Du har arkiverat tavlan {board}", + "{user} has archived the board {before}" : "{user} har arkiverat tavlan {before}", + "You have unarchived the board {board}" : "Du har avarkiverat tavlan {board}", + "{user} has unarchived the board {before}" : "{user} har avarkiverat tavlan {before}", + "You have created a new stack {stack} on board {board}" : "Du har skapat en ny stapel {stack} på on tavlan {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} har skapat en ny stapel {stack} på tavlan {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Du har bytt namn på stapel {before} till {stack} på tavlan {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} har bytt namn på stapel {before} till {stack} på tavlan {board}", + "You have deleted stack {stack} on board {board}" : "Du har raderat stapel {stack} på tavlan {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} har raderat stapel {stack} på tavlan {board}", + "You have created card {card} in stack {stack} on board {board}" : "Du har skapat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} har skapat kortet {card} i stapel {stack} på tavlan {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Du har raderat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} har raderat kortet {card} i stapel {stack} på tavlan {board}", + "You have renamed the card {before} to {card}" : "Du har bytt namn på kortet {before} till {card}", + "{user} has renamed the card {before} to {card}" : "{user} har bytt namn på kortet {before} till {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Du har lagt till en beskrivning till kortet {card} i stapel {stack} på tavlan {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} har lagt till en beskrivning till kortet {card} i stapel {stack} på tavlan {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Du har uppdaterat beskrivningen för kortet {card} i stapel {stack} på tavlan {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} har uppdaterat beskrivningen för kortet {card} i stapel {stack} på tavlan {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Du har arkiverat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} har arkiverat kortet {card} i stapel {stack} på tavlan {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Du har avarkiverat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} har avarkiverat kortet {card} i stapel {stack} på tavlan {board}", + "You have removed the due date of card {card}" : "Du har tagit bort förfallodatum för kortet {card}", + "{user} has removed the due date of card {card}" : "{user} tagit bort förfallodatum för kortet {card}", + "You have set the due date of card {card} to {after}" : "Du har satt förfallodatum för kortet {card} till {after}", + "{user} has set the due date of card {card} to {after}" : "{user} har satt förfallodatum för kortet {card} till {after}", + "You have updated the due date of card {card} to {after}" : "Du har uppdaterat förfallodatum för kortet {card} till {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} har uppdaterat förfallodatum för kortet {card} till {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Du har lagt till taggen {label} till kortet {card} i stapel {stack} på tavlan {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} har lagt till taggen {label} till kortet {card} i stapel {stack} på tavlan {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du har raderat taggen {label} från kortet {card} i stapel {stack} på tavlan {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} har raderat taggen {label} från kortet {card} i stapel {stack} på tavlan {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Du har tilldelat {assigneduser} till kortet {card} på tavlan {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} har tilldelat {assigneduser} till kortet {card} på tavlan {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Du har tagit bort tilldelningen för {assigneduser} från kortet {card} på tavlan {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} har tagit bort tilldelningen för {assigneduser} från kortet {card} på tavlan {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Du har flyttat kortet {card} från stapel {stackBefore} till {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} har flyttat kortet {card} från stapel {stackBefore} till {stack}", + "You have added the attachment {attachment} to card {card}" : "Du har lagt till bilagan {attachment} till kortet {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} har lagt till bilagan {attachment} till kortet {card}", + "You have updated the attachment {attachment} on card {card}" : "Du har uppdaterat bilagan {attachment} på kortet {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} har uppdaterat bilagan {attachment} på kortet {card}", + "You have deleted the attachment {attachment} from card {card}" : "Du har raderat bilagan {attachment} från kortet {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} har raderat bilagan {attachment} från kortet {card}", + "You have restored the attachment {attachment} to card {card}" : "Du har återställt bilagan {attachment} till kortet {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} har återställt bilagan {attachment} till kortet {card}", + "You have commented on card {card}" : "Du har kommenterat på kortet {card}", + "{user} has commented on card {card}" : "{user} har kommenterat på kortet {card}", + "A card description inside the Deck app has been changed" : "En kortbeskrivning i Deck-appen har ändrats", + "Deck" : "Deck", + "Changes in the Deck app" : "Ändringar i Deck-appen", + "Personal" : "Personlig", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortet \"%s\" på \"%s\" har tilldelats dig av %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} har tilldelat kortet \"%s\" på \"%s\" till dig.", "The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nått sitt utgångsdatum.", + "%s has mentioned you in a comment on \"%s\"." : "%s har nämnt dig i en kommentar på \"%s\".", + "{user} has mentioned you in a comment on \"%s\"." : "{user} har nämnt dig i en kommentar på \"%s\".", "The board \"%s\" has been shared with you by %s." : "Tavlan \"%s\" har delats med dig av %s.", "{user} has shared the board %s with you." : "{user} har delat tavlan %s med dig.", + "No data was provided to create an attachment." : "Inga data lämnades för att skapa en bilaga.", "Finished" : "Färdig", "To review" : "Att granska", "Action needed" : "Åtgärd behövs", "Later" : "Senare", - "Add a new stack" : "Lägg till en ny hög", - "Submit" : "Skicka", + "To do" : "Att göra", + "Doing" : "Gör", + "Done" : "Klart", + "Example Task 3" : "Exempeluppgift 3", + "Example Task 2" : "Exempeluppgift 2", + "Example Task 1" : "Exempeluppgift 1", + "The file was uploaded" : "Filen laddades upp", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Den uppladdade filen överstiger direktivet upload_max_filesize i php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Den uppladdade filen överstiger MAX_FILE_SIZE-direktivet som specificerades i HTML-formuläret", + "The file was only partially uploaded" : "Filen var endast delvis uppladdad", + "No file was uploaded" : "Ingen fil laddades upp", + "Missing a temporary folder" : "Saknas en tillfällig mapp", + "Could not write file to disk" : "Kunde inte skriva fil till disk", + "A PHP extension stopped the file upload" : "Ett PHP-tillägg stoppade filuppladdningen", + "No file uploaded or file size exceeds maximum of %s" : "Ingen fil uppladdad eller filstorleken överstiger max %s", + "A kanban style project and personal management tool for Nextcloud" : "En kanban-liknande projekt- och person-hanteringsapp för Nextcloud ", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Korthögar är en kanban-liknande projekt- och organiseringsapp för arbetsgrupper i Nextcloud.\n\n\n- 📥 Lägg till uppgifter på kort och ordna dem\n- 📄 Skriv anteckningar i markdown\n- 🔖 Tilldela etiketter för organisering\n- 👥 Dela med arbetsgruppen, vänner eller familj\n- 📎 Bifoga filer och bädda in dem i markdown-anteckningarna\n- 💬 Diskutera i arbetsgruppen genom kommentarer\n- ⚡ Håll koll på ändringar i aktivitetsflödet\n- 🚀 Börja organisera din arbetsgrupp nu!", + "Select the board to link to a project" : "Välj tavla att länka till ett projekt", + "Select board" : "Välj tavla", + "Add a new stack" : "Lägg till en ny stapel", + "Submit" : "Skapa", "Show archived cards" : "Visa arkiverade kort", "Hide archived cards" : "Göm arkiverade kort", + "Toggle compact mode" : "Växla kompakt läge", + "Show board details" : "Visa taveldetaljer", "All Boards" : "Alla tavlor", "Archived boards" : "Arkiverade tavlor", + "Share board" : "Dela tavla", + "Archived cards" : "Arkiverade kort", + "Actions" : "Åtgärder", + "Drop your files here to upload it to the card" : "Släpp dina filer här för att ladda upp det till kortet", + "Assign card to me" : "Tilldela kort till mig", + "Unassign card from me" : "Ta bort kort från mig", + "Archive card" : "Arkivera kort", + "Unarchive card" : "Avarkivera kort", + "Delete card" : "Ta bort kort", "Enter a card title" : "Ange en korttitel", "Add card" : "Lägg till kort", "Close" : "Stäng", "Sharing" : "Delning", "Tags" : "Taggar", + "Deleted items" : "Raderade objekt", + "Timeline" : "Tidslinje", "Select users or groups to share with" : "Välj användare och grupper att dela med", - "Access for" : "Tillgång till", + "Group" : "Grupp", + "Circle" : "Cirkel", "No matching user or group found." : "Ingen matchande användare eller grupp hittades.", "Loading" : "Laddar", - "Share" : "Dela", "Edit" : "Redigera", + "Share" : "Dela", "Manage" : "Hantera", "Discard share" : "Ta bort delning", + "Sharing has been disabled for your account." : "Delning har inaktiverats för ditt konto.", + "Update tag" : "Uppdatera tagg", + "Edit tag" : "Redigera tagg", + "Delete tag" : "Radera tagg", "Create" : "Skapa", "Create a new tag" : "Skapa en ny tagg", + "Deleted stacks" : "Radera staplar", + "Deleted cards" : "Radera kort", "Status" : "Status", + "No archived boards to display" : "Inga arkiverade tavlor att visa", + "No shared boards to display" : "Inga delade tavlor att visa", "Title" : "Titel", "Members" : "Medlemmar", "More actions" : "Fler händelser", "Edit board" : "Ändra tavla", - "Archive board" : "Arkivera tavla", - "Unarchive board" : "Ta bort tavla ur arkivet", + "Archive board" : "Arkivera tavlan", + "Unarchive board" : "Ta bort tavlan ur arkivet", "Delete board" : "Ta bort tavla", + "Update board" : "Uppdatera tavla", + "Reset board" : "Återställ tavla", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Ångra tavelradering - annars kommer tavlan att raderas när nästa cronjob körs.", "Create new board" : "Skapa ny tavla", "New board title" : "Ny taveltitel", + "Create board" : "Skapa tavla", + "Select an attachment" : "Välj en bilaga", + "Cancel upload" : "Avbryt uppladdning", "by" : "av", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Ångra filborttagning - annars kommer filen att tas bort när nästa cronjob körs.", + "Undo file deletion" : "Ångra filborttagning", + "Insert the file into the description" : "Infoga filen i beskrivningen", + "Delete attachment" : "Ta bort bilaga", "Modified:" : "Ändrad:", "Created:" : "Skapad:", "Choose a tag" : "Välj en tagg", @@ -64,7 +192,10 @@ OC.L10N.register( "Upload attachment" : "Ladda upp bilaga", "Add a card description…" : "Lägg till en kortbeskrivning...", "Shared boards" : "Delade tavlor", - "Move board to archive" : "Flytta tavla till arkiv", - "Create a new board" : "Skapa en ny tavla" + "Move board to archive" : "Flytta tavlan till arkivet", + "Create a new board" : "Skapa en ny tavla", + "Settings" : "Inställningar", + "Limit deck to groups" : "Begränsa Deck till grupper", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Begränsa Deck blockerar användare som inte ingår i dessa grupper från att skapa egna tavlor. Användare kan fortfarande arbeta med tavlor som har delats med dem." }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/sv.json b/l10n/sv.json index ed51c0466..64cee451f 100644 --- a/l10n/sv.json +++ b/l10n/sv.json @@ -1,47 +1,175 @@ { "translations": { + "Please provide a content for your comment." : "Ange ett innehåll för din kommentar.", + "Posting the comment failed." : "Det gick inte att skriva in kommentaren.", + "The comment has been deleted" : "Kommentaren har tagits bort", + "The associated stack is deleted as well, it will be restored as well." : "Den tillhörande stapeln raderas också, den kommer också att återställas.", + "Restore associated stack" : "Återställ tillhörande stapel", "Remove user from card" : "Ta bort användare från kort", "Hours" : "Timmar", "Minutes" : "Minuter", - "Deck" : "Kortlek", + "Link to a board" : "Länka till en tavla", + "Maximum file size of {size} exceeded" : "Maximal filstorlek på {size} överskriden", + "You have created a new board {board}" : "Du har skapat en ny tavla {board}", + "{user} has created a new board {board}" : "{user} har skapat en ny tavla {board}", + "You have deleted the board {board}" : "Du har raderat tavlan {board}", + "{user} has deleted the board {board}" : "{user} har raderat tavlan {board}", + "You have restored the board {board}" : "Du har återställt tavlan {board}", + "{user} has restored the board {board}" : "{user} har återställt tavlan {board}", + "You have shared the board {board} with {acl}" : "Du har delat tavlan {board} med {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} har delat tavlan {board} med {sharee}", + "You have removed {acl} from the board {board}" : "Du har raderat {acl} från tavlan {board}", + "{user} has removed {acl} from the board {board}" : "{user} har raderat {acl} från tavlan {board}", + "You have renamed the board {before} to {board}" : "Du har bytt namn på tavlan {before} till {board}", + "{user} has renamed the board {before} to {board}" : "{user} har bytt namn på tavlan {before} till {board}", + "You have archived the board {board}" : "Du har arkiverat tavlan {board}", + "{user} has archived the board {before}" : "{user} har arkiverat tavlan {before}", + "You have unarchived the board {board}" : "Du har avarkiverat tavlan {board}", + "{user} has unarchived the board {before}" : "{user} har avarkiverat tavlan {before}", + "You have created a new stack {stack} on board {board}" : "Du har skapat en ny stapel {stack} på on tavlan {board}", + "{user} has created a new stack {stack} on board {board}" : "{user} har skapat en ny stapel {stack} på tavlan {board}", + "You have renamed stack {before} to {stack} on board {board}" : "Du har bytt namn på stapel {before} till {stack} på tavlan {board}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} har bytt namn på stapel {before} till {stack} på tavlan {board}", + "You have deleted stack {stack} on board {board}" : "Du har raderat stapel {stack} på tavlan {board}", + "{user} has deleted stack {stack} on board {board}" : "{user} har raderat stapel {stack} på tavlan {board}", + "You have created card {card} in stack {stack} on board {board}" : "Du har skapat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} har skapat kortet {card} i stapel {stack} på tavlan {board}", + "You have deleted card {card} in stack {stack} on board {board}" : "Du har raderat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} har raderat kortet {card} i stapel {stack} på tavlan {board}", + "You have renamed the card {before} to {card}" : "Du har bytt namn på kortet {before} till {card}", + "{user} has renamed the card {before} to {card}" : "{user} har bytt namn på kortet {before} till {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "Du har lagt till en beskrivning till kortet {card} i stapel {stack} på tavlan {board}", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} har lagt till en beskrivning till kortet {card} i stapel {stack} på tavlan {board}", + "You have updated the description of card {card} in stack {stack} on board {board}" : "Du har uppdaterat beskrivningen för kortet {card} i stapel {stack} på tavlan {board}", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} har uppdaterat beskrivningen för kortet {card} i stapel {stack} på tavlan {board}", + "You have archived card {card} in stack {stack} on board {board}" : "Du har arkiverat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} har arkiverat kortet {card} i stapel {stack} på tavlan {board}", + "You have unarchived card {card} in stack {stack} on board {board}" : "Du har avarkiverat kortet {card} i stapel {stack} på tavlan {board}", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} har avarkiverat kortet {card} i stapel {stack} på tavlan {board}", + "You have removed the due date of card {card}" : "Du har tagit bort förfallodatum för kortet {card}", + "{user} has removed the due date of card {card}" : "{user} tagit bort förfallodatum för kortet {card}", + "You have set the due date of card {card} to {after}" : "Du har satt förfallodatum för kortet {card} till {after}", + "{user} has set the due date of card {card} to {after}" : "{user} har satt förfallodatum för kortet {card} till {after}", + "You have updated the due date of card {card} to {after}" : "Du har uppdaterat förfallodatum för kortet {card} till {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} har uppdaterat förfallodatum för kortet {card} till {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "Du har lagt till taggen {label} till kortet {card} i stapel {stack} på tavlan {board}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} har lagt till taggen {label} till kortet {card} i stapel {stack} på tavlan {board}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "Du har raderat taggen {label} från kortet {card} i stapel {stack} på tavlan {board}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} har raderat taggen {label} från kortet {card} i stapel {stack} på tavlan {board}", + "You have assigned {assigneduser} to card {card} on board {board}" : "Du har tilldelat {assigneduser} till kortet {card} på tavlan {board}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} har tilldelat {assigneduser} till kortet {card} på tavlan {board}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "Du har tagit bort tilldelningen för {assigneduser} från kortet {card} på tavlan {board}", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} har tagit bort tilldelningen för {assigneduser} från kortet {card} på tavlan {board}", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "Du har flyttat kortet {card} från stapel {stackBefore} till {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} har flyttat kortet {card} från stapel {stackBefore} till {stack}", + "You have added the attachment {attachment} to card {card}" : "Du har lagt till bilagan {attachment} till kortet {card}", + "{user} has added the attachment {attachment} to card {card}" : "{user} har lagt till bilagan {attachment} till kortet {card}", + "You have updated the attachment {attachment} on card {card}" : "Du har uppdaterat bilagan {attachment} på kortet {card}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} har uppdaterat bilagan {attachment} på kortet {card}", + "You have deleted the attachment {attachment} from card {card}" : "Du har raderat bilagan {attachment} från kortet {card}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} har raderat bilagan {attachment} från kortet {card}", + "You have restored the attachment {attachment} to card {card}" : "Du har återställt bilagan {attachment} till kortet {card}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} har återställt bilagan {attachment} till kortet {card}", + "You have commented on card {card}" : "Du har kommenterat på kortet {card}", + "{user} has commented on card {card}" : "{user} har kommenterat på kortet {card}", + "A card description inside the Deck app has been changed" : "En kortbeskrivning i Deck-appen har ändrats", + "Deck" : "Deck", + "Changes in the Deck app" : "Ändringar i Deck-appen", + "Personal" : "Personlig", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Kortet \"%s\" på \"%s\" har tilldelats dig av %s.", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} har tilldelat kortet \"%s\" på \"%s\" till dig.", "The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nått sitt utgångsdatum.", + "%s has mentioned you in a comment on \"%s\"." : "%s har nämnt dig i en kommentar på \"%s\".", + "{user} has mentioned you in a comment on \"%s\"." : "{user} har nämnt dig i en kommentar på \"%s\".", "The board \"%s\" has been shared with you by %s." : "Tavlan \"%s\" har delats med dig av %s.", "{user} has shared the board %s with you." : "{user} har delat tavlan %s med dig.", + "No data was provided to create an attachment." : "Inga data lämnades för att skapa en bilaga.", "Finished" : "Färdig", "To review" : "Att granska", "Action needed" : "Åtgärd behövs", "Later" : "Senare", - "Add a new stack" : "Lägg till en ny hög", - "Submit" : "Skicka", + "To do" : "Att göra", + "Doing" : "Gör", + "Done" : "Klart", + "Example Task 3" : "Exempeluppgift 3", + "Example Task 2" : "Exempeluppgift 2", + "Example Task 1" : "Exempeluppgift 1", + "The file was uploaded" : "Filen laddades upp", + "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Den uppladdade filen överstiger direktivet upload_max_filesize i php.ini", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Den uppladdade filen överstiger MAX_FILE_SIZE-direktivet som specificerades i HTML-formuläret", + "The file was only partially uploaded" : "Filen var endast delvis uppladdad", + "No file was uploaded" : "Ingen fil laddades upp", + "Missing a temporary folder" : "Saknas en tillfällig mapp", + "Could not write file to disk" : "Kunde inte skriva fil till disk", + "A PHP extension stopped the file upload" : "Ett PHP-tillägg stoppade filuppladdningen", + "No file uploaded or file size exceeds maximum of %s" : "Ingen fil uppladdad eller filstorleken överstiger max %s", + "A kanban style project and personal management tool for Nextcloud" : "En kanban-liknande projekt- och person-hanteringsapp för Nextcloud ", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Korthögar är en kanban-liknande projekt- och organiseringsapp för arbetsgrupper i Nextcloud.\n\n\n- 📥 Lägg till uppgifter på kort och ordna dem\n- 📄 Skriv anteckningar i markdown\n- 🔖 Tilldela etiketter för organisering\n- 👥 Dela med arbetsgruppen, vänner eller familj\n- 📎 Bifoga filer och bädda in dem i markdown-anteckningarna\n- 💬 Diskutera i arbetsgruppen genom kommentarer\n- ⚡ Håll koll på ändringar i aktivitetsflödet\n- 🚀 Börja organisera din arbetsgrupp nu!", + "Select the board to link to a project" : "Välj tavla att länka till ett projekt", + "Select board" : "Välj tavla", + "Add a new stack" : "Lägg till en ny stapel", + "Submit" : "Skapa", "Show archived cards" : "Visa arkiverade kort", "Hide archived cards" : "Göm arkiverade kort", + "Toggle compact mode" : "Växla kompakt läge", + "Show board details" : "Visa taveldetaljer", "All Boards" : "Alla tavlor", "Archived boards" : "Arkiverade tavlor", + "Share board" : "Dela tavla", + "Archived cards" : "Arkiverade kort", + "Actions" : "Åtgärder", + "Drop your files here to upload it to the card" : "Släpp dina filer här för att ladda upp det till kortet", + "Assign card to me" : "Tilldela kort till mig", + "Unassign card from me" : "Ta bort kort från mig", + "Archive card" : "Arkivera kort", + "Unarchive card" : "Avarkivera kort", + "Delete card" : "Ta bort kort", "Enter a card title" : "Ange en korttitel", "Add card" : "Lägg till kort", "Close" : "Stäng", "Sharing" : "Delning", "Tags" : "Taggar", + "Deleted items" : "Raderade objekt", + "Timeline" : "Tidslinje", "Select users or groups to share with" : "Välj användare och grupper att dela med", - "Access for" : "Tillgång till", + "Group" : "Grupp", + "Circle" : "Cirkel", "No matching user or group found." : "Ingen matchande användare eller grupp hittades.", "Loading" : "Laddar", - "Share" : "Dela", "Edit" : "Redigera", + "Share" : "Dela", "Manage" : "Hantera", "Discard share" : "Ta bort delning", + "Sharing has been disabled for your account." : "Delning har inaktiverats för ditt konto.", + "Update tag" : "Uppdatera tagg", + "Edit tag" : "Redigera tagg", + "Delete tag" : "Radera tagg", "Create" : "Skapa", "Create a new tag" : "Skapa en ny tagg", + "Deleted stacks" : "Radera staplar", + "Deleted cards" : "Radera kort", "Status" : "Status", + "No archived boards to display" : "Inga arkiverade tavlor att visa", + "No shared boards to display" : "Inga delade tavlor att visa", "Title" : "Titel", "Members" : "Medlemmar", "More actions" : "Fler händelser", "Edit board" : "Ändra tavla", - "Archive board" : "Arkivera tavla", - "Unarchive board" : "Ta bort tavla ur arkivet", + "Archive board" : "Arkivera tavlan", + "Unarchive board" : "Ta bort tavlan ur arkivet", "Delete board" : "Ta bort tavla", + "Update board" : "Uppdatera tavla", + "Reset board" : "Återställ tavla", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Ångra tavelradering - annars kommer tavlan att raderas när nästa cronjob körs.", "Create new board" : "Skapa ny tavla", "New board title" : "Ny taveltitel", + "Create board" : "Skapa tavla", + "Select an attachment" : "Välj en bilaga", + "Cancel upload" : "Avbryt uppladdning", "by" : "av", + "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Ångra filborttagning - annars kommer filen att tas bort när nästa cronjob körs.", + "Undo file deletion" : "Ångra filborttagning", + "Insert the file into the description" : "Infoga filen i beskrivningen", + "Delete attachment" : "Ta bort bilaga", "Modified:" : "Ändrad:", "Created:" : "Skapad:", "Choose a tag" : "Välj en tagg", @@ -62,7 +190,10 @@ "Upload attachment" : "Ladda upp bilaga", "Add a card description…" : "Lägg till en kortbeskrivning...", "Shared boards" : "Delade tavlor", - "Move board to archive" : "Flytta tavla till arkiv", - "Create a new board" : "Skapa en ny tavla" + "Move board to archive" : "Flytta tavlan till arkivet", + "Create a new board" : "Skapa en ny tavla", + "Settings" : "Inställningar", + "Limit deck to groups" : "Begränsa Deck till grupper", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Begränsa Deck blockerar användare som inte ingår i dessa grupper från att skapa egna tavlor. Användare kan fortfarande arbeta med tavlor som har delats med dem." },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/tr.js b/l10n/tr.js index 01794be48..1a0c4d246 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -9,6 +9,7 @@ OC.L10N.register( "Remove user from card" : "Kullanıcıyı karttan kaldır", "Hours" : "Saat", "Minutes" : "Dakika", + "Link to a board" : "Bir panoya bağla", "Maximum file size of {size} exceeded" : "{size} olan en büyük dosya boyutu sınırı aşıldı", "You have created a new board {board}" : "{board} panosunu eklediniz", "{user} has created a new board {board}" : "{user}, {board} panosunu ekledi", @@ -21,58 +22,60 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "{board} panosunun {acl} ile paylaşımını kaldırdınız", "{user} has removed {acl} from the board {board}" : "{user}, {board} panosunun {acl} ile paylaşımını kaldırdı", "You have renamed the board {before} to {board}" : "Panonun {before} olan adını {board} olarak değiştirdiniz", - "{user} has has renamed the board {before} to {board}" : "{user}, panonun {before} olan adını {board} olarak değiştirdi", + "{user} has renamed the board {before} to {board}" : "{user}, panonun {before} olan adını {board} olarak değiştirdi", "You have archived the board {board}" : "{board} panosunu arşive kaldırdınız", "{user} has archived the board {before}" : "{user}, {board} panosunu arşive kaldırdı", "You have unarchived the board {board}" : "{board} panosunu arşivden çıkardınız", "{user} has unarchived the board {before}" : "{user}, {board} panosunu arşivden çıkardı", - "You have created a new stack {stack} on {board}" : "{board} panosuna {stack} yığınını eklediniz", - "{user} has created a new stack {stack} on {board}" : "{user}, {board} panosuna {stack} yığınını ekledi", - "You have renamed a new stack {before} to {stack} on {board}" : "{board} panosundaki yığının {before} olan adını {stack} olarak değiştirdiniz", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user}, {board} panosundaki yığının {before} olan adını {stack} olarak değiştirdi", - "You have deleted {stack} on {board}" : "{board} panosundaki {stack} yığınını sildiniz", - "{user} has deleted {stack} on {board}" : "{user}, {board} panosundaki {stack} yığınını sildi", - "You have created {card} in {stack} on {board}" : "{board} panosuna {stack} yığınını eklediniz", - "{user} has created {card} in {stack} on {board}" : "{user}, {board} panosuna {stack} yığınını ekledi", - "You have deleted {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içinden {card} kartını sildiniz", - "{user} has deleted {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içinden {card} kartını sildi", + "You have created a new stack {stack} on board {board}" : "{board} panosuna {stack} yığınını eklediniz", + "{user} has created a new stack {stack} on board {board}" : "{user}, {board} panosuna {stack} yığınını ekledi", + "You have renamed stack {before} to {stack} on board {board}" : "{board} panosundaki yığının {before} olan adını {stack} olarak değiştirdiniz", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user}, {board} panosundaki yığının {before} olan adını {stack} olarak değiştirdi", + "You have deleted stack {stack} on board {board}" : "{board} panosundaki {stack} yığınını sildiniz", + "{user} has deleted stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınını sildi", + "You have created card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınına {card} kartını eklediniz", + "{user} has created card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınına {card} kartını ekledi", + "You have deleted card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınından {card} kartını sildi", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınından {card} kartını sildi", "You have renamed the card {before} to {card}" : "Kartın {before} olan adını {card} olarak değiştirdiniz", "{user} has renamed the card {before} to {card}" : "{user}, kartın {before} olan adını {card} olarak değiştirdi", - "You have added a description to {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içine {card} kartını eklediniz", - "{user} has added a description to {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içine {card} kartını ekledi", - "You have updated the description of {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını güncellediniz", - "{user} has updated the description {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartını güncelledi", - "You have archived {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını arşive kaldırdınız", - "{user} has archived {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartını arşive kaldırdı", - "You have unarchived {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını arşivden çıkardınız", - "{user} has unarchived {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartını arşivden çıkardı", - "You have removed the due date of {card}" : "{card} kartının bitiş tarihini kaldırdınız", - "{user} has removed the due date of {card}" : "{user}, {card} kartının bitiş tarihini kaldırdı", - "You have set the due date of {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak ayarladınız", - "{user} has set the due date of {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak ayarladı", - "You have updated the due date of {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak güncellediniz", - "{user} has updated the due date of {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak güncelledi", - "You have added the label {label} to {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartına {label} etiketini eklediniz", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartına {label} etiketini ekledi", - "You have removed the label {label} from {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartından {label} etiketini kaldırdınız", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartından {label} etiketini kaldırdı", - "You have assigned {assigneduser} to {card} on {board}" : "{board} panosundaki {card} kartını {assigneduser} kullanıcısına atadınız", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user}, {board} panosundaki {card} kartını {assigneduser} kullanıcısına atadı", - "You have unassigned {assigneduser} from {card} on {board}" : "{board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldınız", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user}, {board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldı", - "You have moved the card {card} from {stackBefore} to {stack}" : "{card} kartını {stackBefore} yığınından {stack} yığınına taşıdınız", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user}, {card} kartını {stackBefore} yığınından {stack} yığınına taşıdı", - "You have added the attachment {attachment} to {card}" : "{card} kartına {attachment} dosyasını eklediniz", - "{user} has added the attachment {attachment} to {card}" : "{user}, {card} kartına {attachment} dosyasını ekledi", - "You have updated the attachment {attachment} on {card}" : "{card} kartındaki {attachment} dosyasını güncellediniz", - "{user} has updated the attachment {attachment} to {card}" : "{user}, {card} kartındaki {attachment} dosyasını güncelledi", - "You have deleted the attachment {attachment} from {card}" : "{card} kartındaki {attachment} dosyasını sildiniz", - "{user} has deleted the attachment {attachment} to {card}" : "{user}, {card} kartındaki {attachment} dosyasını sildi", - "You have restored the attachment {attachment} to {card}" : "{card} kartındaki {attachment} dosyasını geri yüklediniz", - "{user} has restored the attachment {attachment} to {card}" : "{user}, {card} kartındaki {attachment} dosyasını geri yükledi", - "You have commented on {card}" : "{card} hakkında yorum yaptınız", - "{user} has commented on {card}" : "{user}, {card} hakkında yorum yaptı", + "You have added a description to card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartına bir açıklama eklediniz", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartına bir açıklama ekledi", + "You have updated the description of card {card} in stack {stack} on board {board}" : "{board} panosundaKİ {stack} yığınının içindeki {card} kartının açıklamasını güncellediniz", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartının açıklamasını güncelledi", + "You have archived card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartını arşive kaldırdınız", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartını arşive kaldırdı", + "You have unarchived card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını arşivden çıkardınız", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartını arşivden çıkardı", + "You have removed the due date of card {card}" : "{card} kartının bitiş tarihini kaldırdınız", + "{user} has removed the due date of card {card}" : "{user}, {card} kartının bitiş tarihini kaldırdı", + "You have set the due date of card {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak ayarladınız", + "{user} has set the due date of card {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak ayarladı", + "You have updated the due date of card {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak güncellediniz", + "{user} has updated the due date of card {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak güncelledi", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartına {label} etiketini eklediniz", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartına {label} etiketini ekledi", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartından {label} etiketini kaldırdınız", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartından {label} etiketini kaldırdı", + "You have assigned {assigneduser} to card {card} on board {board}" : "{board} panosundaki {card} kartını {assigneduser} kullanıcısına atadınız", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user}, {board} panosundaki {card} kartını {assigneduser} kullanıcısına atadı", + "You have unassigned {assigneduser} from card {card} on board {board}" : "{board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldınız", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user}, {board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldı", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "{card} kartını {stackBefore} yığınından {stack} yığınına taşıdınız", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user}, {card} kartını {stackBefore} yığınından {stack} yığınına taşıdı", + "You have added the attachment {attachment} to card {card}" : "{card} kartına {attachment} dosyasını eklediniz", + "{user} has added the attachment {attachment} to card {card}" : "{user}, {card} kartına {attachment} dosyasını ekledi", + "You have updated the attachment {attachment} on card {card}" : "{card} kartındaki {attachment} dosyasını güncellediniz", + "{user} has updated the attachment {attachment} to card {card}" : "{user}, {card} kartındaki {attachment} dosyasını güncelledi", + "You have deleted the attachment {attachment} from card {card}" : "{card} kartındaki {attachment} dosyasını sildiniz", + "{user} has deleted the attachment {attachment} to card {card}" : "{user}, {card} kartındaki {attachment} dosyasını sildi", + "You have restored the attachment {attachment} to card {card}" : "{card} kartındaki {attachment} dosyasını geri yüklediniz", + "{user} has restored the attachment {attachment} to card {card}" : "{user}, {card} kartındaki {attachment} dosyasını geri yükledi", + "You have commented on card {card}" : "{card} kartı hakkında yorum yaptınız", + "{user} has commented on card {card}" : "{user}, {card} kartı hakkında yorum yaptı", + "A card description inside the Deck app has been changed" : "Tahta uygulamasında bir kart açıklaması değiştirildi", "Deck" : "Tahta", + "Changes in the Deck app" : "Tahta uygulamasındaki değişiklikler", "Personal" : "Kişisel", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "\"%s\" kartı \"%s\" zamanında %s tarafından size atandı.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} size \"%s\" kartını \"%s\" zamanında atadı.", @@ -102,7 +105,9 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "Bir PHP eklentisi dosyanın yüklenmesini engelledi", "No file uploaded or file size exceeds maximum of %s" : "Herhangi bir dosya yüklenmedi ya da %s olan en büyük dosya boyutu sınırı aşıldı", "A kanban style project and personal management tool for Nextcloud" : "Nextcloud için Kanban tarzında bir proje ve kişisel yönetim uygulaması", - "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deste, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 💬 Yorumları kullanarak konular üzerinde takımınız ile yazışabilirsiniz\n- ⚡ İşlem akışı ile değişiklikleri görebilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tahta, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 💬 Yorumları kullanarak konular üzerinde takımınız ile yazışabilirsiniz\n- ⚡ İşlem akışı ile değişiklikleri görebilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz", + "Select the board to link to a project" : "Projeye eklenecek pano bağlantısını seçin", + "Select board" : "Pano seçin", "Add a new stack" : "Yığın ekle", "Submit" : "Gönder", "Show archived cards" : "Arşivlenmiş kartları görüntüle", @@ -112,6 +117,7 @@ OC.L10N.register( "All Boards" : "Tüm Panolar", "Archived boards" : "Arşivlenmiş panolar", "Share board" : "Panoyu paylaş", + "Archived cards" : "Arşivlenmiş kartlar", "Actions" : "İşlemler", "Drop your files here to upload it to the card" : "Karta yüklemek istediğiniz dosyalarınızı sürükleyip buraya bırakın", "Assign card to me" : "Kartı bana ata", @@ -127,13 +133,15 @@ OC.L10N.register( "Deleted items" : "Silinmiş ögeler", "Timeline" : "Zaman tüneli", "Select users or groups to share with" : "Paylaşılacak kullanıcı ya da grupları seçin", - "Access for" : "Şuraya erişim", + "Group" : "Grup", + "Circle" : "Çevre", "No matching user or group found." : "Eşleşen bir kullanıcı ya da grup bulunamadı.", "Loading" : "Yükleniyor", - "Share" : "Paylaş", "Edit" : "Düzenle", + "Share" : "Paylaş", "Manage" : "Yönetim", "Discard share" : "Paylaşımı kaldır", + "Sharing has been disabled for your account." : "Hesabınız için paylaşım özelliği devre dışı bırakılmış.", "Update tag" : "Kartı güncelle", "Edit tag" : "Kartı düzenle", "Delete tag" : "Etiketi sil", @@ -185,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "Bir kart açıklaması ekle...", "Shared boards" : "Paylaşılmış panolar", "Move board to archive" : "Panoyu arşive taşı", - "Create a new board" : "Pano ekle" + "Create a new board" : "Pano ekle", + "Settings" : "Ayarlar", + "Limit deck to groups" : "Tahtayı şu gruplar kullanabilsin", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Tahta kullanımı gruplar ile sınırlandığında belirtilen grupların üyesi olmayan kişiler kendi tahtalarını oluşturamaz. Bu kullanıcılar ancak kendileri ile paylaşılan tahtalar üzerinde çalışabilir." }, "nplurals=2; plural=(n > 1);"); diff --git a/l10n/tr.json b/l10n/tr.json index 6a3bef6dc..6f0488479 100644 --- a/l10n/tr.json +++ b/l10n/tr.json @@ -7,6 +7,7 @@ "Remove user from card" : "Kullanıcıyı karttan kaldır", "Hours" : "Saat", "Minutes" : "Dakika", + "Link to a board" : "Bir panoya bağla", "Maximum file size of {size} exceeded" : "{size} olan en büyük dosya boyutu sınırı aşıldı", "You have created a new board {board}" : "{board} panosunu eklediniz", "{user} has created a new board {board}" : "{user}, {board} panosunu ekledi", @@ -19,58 +20,60 @@ "You have removed {acl} from the board {board}" : "{board} panosunun {acl} ile paylaşımını kaldırdınız", "{user} has removed {acl} from the board {board}" : "{user}, {board} panosunun {acl} ile paylaşımını kaldırdı", "You have renamed the board {before} to {board}" : "Panonun {before} olan adını {board} olarak değiştirdiniz", - "{user} has has renamed the board {before} to {board}" : "{user}, panonun {before} olan adını {board} olarak değiştirdi", + "{user} has renamed the board {before} to {board}" : "{user}, panonun {before} olan adını {board} olarak değiştirdi", "You have archived the board {board}" : "{board} panosunu arşive kaldırdınız", "{user} has archived the board {before}" : "{user}, {board} panosunu arşive kaldırdı", "You have unarchived the board {board}" : "{board} panosunu arşivden çıkardınız", "{user} has unarchived the board {before}" : "{user}, {board} panosunu arşivden çıkardı", - "You have created a new stack {stack} on {board}" : "{board} panosuna {stack} yığınını eklediniz", - "{user} has created a new stack {stack} on {board}" : "{user}, {board} panosuna {stack} yığınını ekledi", - "You have renamed a new stack {before} to {stack} on {board}" : "{board} panosundaki yığının {before} olan adını {stack} olarak değiştirdiniz", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user}, {board} panosundaki yığının {before} olan adını {stack} olarak değiştirdi", - "You have deleted {stack} on {board}" : "{board} panosundaki {stack} yığınını sildiniz", - "{user} has deleted {stack} on {board}" : "{user}, {board} panosundaki {stack} yığınını sildi", - "You have created {card} in {stack} on {board}" : "{board} panosuna {stack} yığınını eklediniz", - "{user} has created {card} in {stack} on {board}" : "{user}, {board} panosuna {stack} yığınını ekledi", - "You have deleted {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içinden {card} kartını sildiniz", - "{user} has deleted {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içinden {card} kartını sildi", + "You have created a new stack {stack} on board {board}" : "{board} panosuna {stack} yığınını eklediniz", + "{user} has created a new stack {stack} on board {board}" : "{user}, {board} panosuna {stack} yığınını ekledi", + "You have renamed stack {before} to {stack} on board {board}" : "{board} panosundaki yığının {before} olan adını {stack} olarak değiştirdiniz", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user}, {board} panosundaki yığının {before} olan adını {stack} olarak değiştirdi", + "You have deleted stack {stack} on board {board}" : "{board} panosundaki {stack} yığınını sildiniz", + "{user} has deleted stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınını sildi", + "You have created card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınına {card} kartını eklediniz", + "{user} has created card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınına {card} kartını ekledi", + "You have deleted card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınından {card} kartını sildi", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınından {card} kartını sildi", "You have renamed the card {before} to {card}" : "Kartın {before} olan adını {card} olarak değiştirdiniz", "{user} has renamed the card {before} to {card}" : "{user}, kartın {before} olan adını {card} olarak değiştirdi", - "You have added a description to {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içine {card} kartını eklediniz", - "{user} has added a description to {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içine {card} kartını ekledi", - "You have updated the description of {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını güncellediniz", - "{user} has updated the description {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartını güncelledi", - "You have archived {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını arşive kaldırdınız", - "{user} has archived {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartını arşive kaldırdı", - "You have unarchived {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını arşivden çıkardınız", - "{user} has unarchived {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartını arşivden çıkardı", - "You have removed the due date of {card}" : "{card} kartının bitiş tarihini kaldırdınız", - "{user} has removed the due date of {card}" : "{user}, {card} kartının bitiş tarihini kaldırdı", - "You have set the due date of {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak ayarladınız", - "{user} has set the due date of {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak ayarladı", - "You have updated the due date of {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak güncellediniz", - "{user} has updated the due date of {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak güncelledi", - "You have added the label {label} to {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartına {label} etiketini eklediniz", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartına {label} etiketini ekledi", - "You have removed the label {label} from {card} in {stack} on {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartından {label} etiketini kaldırdınız", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user}, {board} panosundaki {stack} yığını içindeki {card} kartından {label} etiketini kaldırdı", - "You have assigned {assigneduser} to {card} on {board}" : "{board} panosundaki {card} kartını {assigneduser} kullanıcısına atadınız", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user}, {board} panosundaki {card} kartını {assigneduser} kullanıcısına atadı", - "You have unassigned {assigneduser} from {card} on {board}" : "{board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldınız", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user}, {board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldı", - "You have moved the card {card} from {stackBefore} to {stack}" : "{card} kartını {stackBefore} yığınından {stack} yığınına taşıdınız", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user}, {card} kartını {stackBefore} yığınından {stack} yığınına taşıdı", - "You have added the attachment {attachment} to {card}" : "{card} kartına {attachment} dosyasını eklediniz", - "{user} has added the attachment {attachment} to {card}" : "{user}, {card} kartına {attachment} dosyasını ekledi", - "You have updated the attachment {attachment} on {card}" : "{card} kartındaki {attachment} dosyasını güncellediniz", - "{user} has updated the attachment {attachment} to {card}" : "{user}, {card} kartındaki {attachment} dosyasını güncelledi", - "You have deleted the attachment {attachment} from {card}" : "{card} kartındaki {attachment} dosyasını sildiniz", - "{user} has deleted the attachment {attachment} to {card}" : "{user}, {card} kartındaki {attachment} dosyasını sildi", - "You have restored the attachment {attachment} to {card}" : "{card} kartındaki {attachment} dosyasını geri yüklediniz", - "{user} has restored the attachment {attachment} to {card}" : "{user}, {card} kartındaki {attachment} dosyasını geri yükledi", - "You have commented on {card}" : "{card} hakkında yorum yaptınız", - "{user} has commented on {card}" : "{user}, {card} hakkında yorum yaptı", + "You have added a description to card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartına bir açıklama eklediniz", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartına bir açıklama ekledi", + "You have updated the description of card {card} in stack {stack} on board {board}" : "{board} panosundaKİ {stack} yığınının içindeki {card} kartının açıklamasını güncellediniz", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartının açıklamasını güncelledi", + "You have archived card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartını arşive kaldırdınız", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartını arşive kaldırdı", + "You have unarchived card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığını içindeki {card} kartını arşivden çıkardınız", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartını arşivden çıkardı", + "You have removed the due date of card {card}" : "{card} kartının bitiş tarihini kaldırdınız", + "{user} has removed the due date of card {card}" : "{user}, {card} kartının bitiş tarihini kaldırdı", + "You have set the due date of card {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak ayarladınız", + "{user} has set the due date of card {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak ayarladı", + "You have updated the due date of card {card} to {after}" : "{card} kartının bitiş tarihini {after} olarak güncellediniz", + "{user} has updated the due date of card {card} to {after}" : "{user}, {card} kartının bitiş tarihini {after} olarak güncelledi", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartına {label} etiketini eklediniz", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartına {label} etiketini ekledi", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "{board} panosundaki {stack} yığınının içindeki {card} kartından {label} etiketini kaldırdınız", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user}, {board} panosundaki {stack} yığınının içindeki {card} kartından {label} etiketini kaldırdı", + "You have assigned {assigneduser} to card {card} on board {board}" : "{board} panosundaki {card} kartını {assigneduser} kullanıcısına atadınız", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user}, {board} panosundaki {card} kartını {assigneduser} kullanıcısına atadı", + "You have unassigned {assigneduser} from card {card} on board {board}" : "{board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldınız", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user}, {board} panosundaki {card} kartının atamasını {assigneduser} kullanıcısından geri aldı", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "{card} kartını {stackBefore} yığınından {stack} yığınına taşıdınız", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user}, {card} kartını {stackBefore} yığınından {stack} yığınına taşıdı", + "You have added the attachment {attachment} to card {card}" : "{card} kartına {attachment} dosyasını eklediniz", + "{user} has added the attachment {attachment} to card {card}" : "{user}, {card} kartına {attachment} dosyasını ekledi", + "You have updated the attachment {attachment} on card {card}" : "{card} kartındaki {attachment} dosyasını güncellediniz", + "{user} has updated the attachment {attachment} to card {card}" : "{user}, {card} kartındaki {attachment} dosyasını güncelledi", + "You have deleted the attachment {attachment} from card {card}" : "{card} kartındaki {attachment} dosyasını sildiniz", + "{user} has deleted the attachment {attachment} to card {card}" : "{user}, {card} kartındaki {attachment} dosyasını sildi", + "You have restored the attachment {attachment} to card {card}" : "{card} kartındaki {attachment} dosyasını geri yüklediniz", + "{user} has restored the attachment {attachment} to card {card}" : "{user}, {card} kartındaki {attachment} dosyasını geri yükledi", + "You have commented on card {card}" : "{card} kartı hakkında yorum yaptınız", + "{user} has commented on card {card}" : "{user}, {card} kartı hakkında yorum yaptı", + "A card description inside the Deck app has been changed" : "Tahta uygulamasında bir kart açıklaması değiştirildi", "Deck" : "Tahta", + "Changes in the Deck app" : "Tahta uygulamasındaki değişiklikler", "Personal" : "Kişisel", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "\"%s\" kartı \"%s\" zamanında %s tarafından size atandı.", "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} size \"%s\" kartını \"%s\" zamanında atadı.", @@ -100,7 +103,9 @@ "A PHP extension stopped the file upload" : "Bir PHP eklentisi dosyanın yüklenmesini engelledi", "No file uploaded or file size exceeds maximum of %s" : "Herhangi bir dosya yüklenmedi ya da %s olan en büyük dosya boyutu sınırı aşıldı", "A kanban style project and personal management tool for Nextcloud" : "Nextcloud için Kanban tarzında bir proje ve kişisel yönetim uygulaması", - "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deste, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 💬 Yorumları kullanarak konular üzerinde takımınız ile yazışabilirsiniz\n- ⚡ İşlem akışı ile değişiklikleri görebilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tahta, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 💬 Yorumları kullanarak konular üzerinde takımınız ile yazışabilirsiniz\n- ⚡ İşlem akışı ile değişiklikleri görebilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz", + "Select the board to link to a project" : "Projeye eklenecek pano bağlantısını seçin", + "Select board" : "Pano seçin", "Add a new stack" : "Yığın ekle", "Submit" : "Gönder", "Show archived cards" : "Arşivlenmiş kartları görüntüle", @@ -110,6 +115,7 @@ "All Boards" : "Tüm Panolar", "Archived boards" : "Arşivlenmiş panolar", "Share board" : "Panoyu paylaş", + "Archived cards" : "Arşivlenmiş kartlar", "Actions" : "İşlemler", "Drop your files here to upload it to the card" : "Karta yüklemek istediğiniz dosyalarınızı sürükleyip buraya bırakın", "Assign card to me" : "Kartı bana ata", @@ -125,13 +131,15 @@ "Deleted items" : "Silinmiş ögeler", "Timeline" : "Zaman tüneli", "Select users or groups to share with" : "Paylaşılacak kullanıcı ya da grupları seçin", - "Access for" : "Şuraya erişim", + "Group" : "Grup", + "Circle" : "Çevre", "No matching user or group found." : "Eşleşen bir kullanıcı ya da grup bulunamadı.", "Loading" : "Yükleniyor", - "Share" : "Paylaş", "Edit" : "Düzenle", + "Share" : "Paylaş", "Manage" : "Yönetim", "Discard share" : "Paylaşımı kaldır", + "Sharing has been disabled for your account." : "Hesabınız için paylaşım özelliği devre dışı bırakılmış.", "Update tag" : "Kartı güncelle", "Edit tag" : "Kartı düzenle", "Delete tag" : "Etiketi sil", @@ -183,6 +191,9 @@ "Add a card description…" : "Bir kart açıklaması ekle...", "Shared boards" : "Paylaşılmış panolar", "Move board to archive" : "Panoyu arşive taşı", - "Create a new board" : "Pano ekle" + "Create a new board" : "Pano ekle", + "Settings" : "Ayarlar", + "Limit deck to groups" : "Tahtayı şu gruplar kullanabilsin", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Tahta kullanımı gruplar ile sınırlandığında belirtilen grupların üyesi olmayan kişiler kendi tahtalarını oluşturamaz. Bu kullanıcılar ancak kendileri ile paylaşılan tahtalar üzerinde çalışabilir." },"pluralForm" :"nplurals=2; plural=(n > 1);" } \ No newline at end of file diff --git a/l10n/vi.js b/l10n/vi.js index f99b1dc51..0d018fd1e 100644 --- a/l10n/vi.js +++ b/l10n/vi.js @@ -18,55 +18,12 @@ OC.L10N.register( "You have removed {acl} from the board {board}" : "Bạn đã loại bỏ {acl} khỏi dự án {board}", "{user} has removed {acl} from the board {board}" : "{user} đã loại bỏ {acl} khỏi dự án {board}", "You have renamed the board {before} to {board}" : "Bạn đã đổi tên dự án từ {before} thành {board}", - "{user} has has renamed the board {before} to {board}" : "{user} đã đổi tên dự án từ {before} thành {board}", "You have archived the board {board}" : "Bạn đã lưu trữ dự án {board}", "{user} has archived the board {before}" : "{user} đã lưu trữ dự án {before}", "You have unarchived the board {board}" : "Bạn đã bỏ lưu trữ dự án {board}", "{user} has unarchived the board {before}" : "{user} đã bỏ lưu trữ dự án {before}", - "You have created a new stack {stack} on {board}" : "Bạn đã tạo một giai đoạn mới {stack} trong {board}", - "{user} has created a new stack {stack} on {board}" : "{user} đã tạo một giai đoạn mới {stack} trong {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Bạn đã đổi một tên mới cho giai đoạn {before} tới {stack} trong {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} đã đổi một tên mới cho giai đoạn {before} tới {stack} trong {board}", - "You have deleted {stack} on {board}" : "Bạn đã xóa giai đoạn {stack} trong {board}", - "{user} has deleted {stack} on {board}" : "{user} đã xóa giai đoạn {stack} trong {board}", - "You have created {card} in {stack} on {board}" : "Bạn đã tạo một tác vụ {card} trong {stack} của {board}", - "{user} has created {card} in {stack} on {board}" : "{user} đã tạo một tác vụ {card} trong {stack} của {board}", - "You have deleted {card} in {stack} on {board}" : "Bạn đã xóa tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} đã xóa tác vụ {card} trong giai đoạn {stack} của {board}", "You have renamed the card {before} to {card}" : "Bạn đã thay đổi tên của tác vụ {before} thành {card}", "{user} has renamed the card {before} to {card}" : "{user} đã thay đổi tên của tác vụ {before} thành {card}", - "You have added a description to {card} in {stack} on {board}" : "Bạn đã thêm một mô tả tới {card} trong giai đoạn {stack} của {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} đã thêm một mô tả tới {card} trong giai đoạn {stack} của {board}", - "You have updated the description of {card} in {stack} on {board}" : "Bạn đã tải lên một mô tả của tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} đã tải lên mô tả tác vụ {card} trong giai đoạn {stack} của {board}", - "You have archived {card} in {stack} on {board}" : "Bạn đã lưu trữ tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} đã lưu trữ tác vụ {card} trong giai đoạn {stack} của {board}", - "You have unarchived {card} in {stack} on {board}" : "Bạn đã bỏ lưu trữ {card} trong giai đoạn {stack} của {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} đã bỏ lưu trữ tác vụ {card} trong giai đoạn {stack} của {board}", - "You have removed the due date of {card}" : "Bạn đã loại bỏ thời hạn của tác vụ {card}", - "{user} has removed the due date of {card}" : "{user} đã loại bỏ thời hạn của tác vụ {card}", - "You have set the due date of {card} to {after}" : "Bạn đã thiết đặt thời hạn cho tác vụ {card} đến ngày {after}", - "{user} has set the due date of {card} to {after}" : "{user} đã thiết đặt thời hạn cho tác vụ {card} đến ngày {after}", - "You have updated the due date of {card} to {after}" : "Bạn đã cập nhật thời hạn cho tác vụ {card} đến ngày {after}", - "{user} has updated the due date of {card} to {after}" : "{user} đã cập nhật thời hạn cho tác vụ {card} đến ngày {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Bạn đã thêm nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} đã thêm nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Bạn đã xóa bỏ nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} đã xóa bỏ nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Bạn đã phân công cho {assigneduser} tác vụ {card} của dự án {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} đã phân công cho {assigneduser} tác vụ {card} của dự án {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Bạn đã bỏ phân công cho {assigneduser} với tác vụ {card} của dự án {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} đã bỏ phân công cho {assigneduser} với tác vụ {card} của dự án {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Bạn đã dịch chuyển tác vụ {card} từ {stackBefore} đến {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} đã dịch chuyển tác vụ {card} từ {stackBefore} đến {stack}", - "You have added the attachment {attachment} to {card}" : "Bạn đã đính kèm thêm tập tin {attachment} vào {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} đã đính kèm thêm tập tin {attachment} vào {card}", - "You have updated the attachment {attachment} on {card}" : "Bạn đã tải lên tập tin đính kèm {attachment} vào {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} đã tải lên tập tin đính kèm {attachment} vào {card}", - "You have deleted the attachment {attachment} from {card}" : "Bạn đã xóa tập tin đính kèm {attachment} từ {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} đã xóa tập tin đính kèm {attachment} từ {card}", - "You have restored the attachment {attachment} to {card}" : "Bạn đã khôi phục lại tập tin đính kèm {attachment} từ {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} đã khôi phục lại tập tin đính kèm {attachment} từ {card}", "Deck" : "Kế hoạch", "Personal" : "Cá nhân", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Tác vụ \"%s\" trong \"%s\" đã được phân công cho bạn bởi %s.", @@ -111,11 +68,10 @@ OC.L10N.register( "Sharing" : "Đang chia sẽ", "Tags" : "Thẻ", "Select users or groups to share with" : "Chọn người dùng hoặc nhóm để chia sẽ với", - "Access for" : "Truy cập cho", "No matching user or group found." : "Không tìm thấy người dùng hoặc nhóm.", "Loading" : "Đang tải", - "Share" : "Chia sẽ", "Edit" : "Chỉnh sửa", + "Share" : "Chia sẽ", "Manage" : "Quản lý", "Discard share" : "Hủy chia sẽ", "Create" : "Tạo", diff --git a/l10n/vi.json b/l10n/vi.json index ece8318e8..76235abf3 100644 --- a/l10n/vi.json +++ b/l10n/vi.json @@ -16,55 +16,12 @@ "You have removed {acl} from the board {board}" : "Bạn đã loại bỏ {acl} khỏi dự án {board}", "{user} has removed {acl} from the board {board}" : "{user} đã loại bỏ {acl} khỏi dự án {board}", "You have renamed the board {before} to {board}" : "Bạn đã đổi tên dự án từ {before} thành {board}", - "{user} has has renamed the board {before} to {board}" : "{user} đã đổi tên dự án từ {before} thành {board}", "You have archived the board {board}" : "Bạn đã lưu trữ dự án {board}", "{user} has archived the board {before}" : "{user} đã lưu trữ dự án {before}", "You have unarchived the board {board}" : "Bạn đã bỏ lưu trữ dự án {board}", "{user} has unarchived the board {before}" : "{user} đã bỏ lưu trữ dự án {before}", - "You have created a new stack {stack} on {board}" : "Bạn đã tạo một giai đoạn mới {stack} trong {board}", - "{user} has created a new stack {stack} on {board}" : "{user} đã tạo một giai đoạn mới {stack} trong {board}", - "You have renamed a new stack {before} to {stack} on {board}" : "Bạn đã đổi một tên mới cho giai đoạn {before} tới {stack} trong {board}", - "{user} has renamed a new stack {before} to {stack} on {board}" : "{user} đã đổi một tên mới cho giai đoạn {before} tới {stack} trong {board}", - "You have deleted {stack} on {board}" : "Bạn đã xóa giai đoạn {stack} trong {board}", - "{user} has deleted {stack} on {board}" : "{user} đã xóa giai đoạn {stack} trong {board}", - "You have created {card} in {stack} on {board}" : "Bạn đã tạo một tác vụ {card} trong {stack} của {board}", - "{user} has created {card} in {stack} on {board}" : "{user} đã tạo một tác vụ {card} trong {stack} của {board}", - "You have deleted {card} in {stack} on {board}" : "Bạn đã xóa tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has deleted {card} in {stack} on {board}" : "{user} đã xóa tác vụ {card} trong giai đoạn {stack} của {board}", "You have renamed the card {before} to {card}" : "Bạn đã thay đổi tên của tác vụ {before} thành {card}", "{user} has renamed the card {before} to {card}" : "{user} đã thay đổi tên của tác vụ {before} thành {card}", - "You have added a description to {card} in {stack} on {board}" : "Bạn đã thêm một mô tả tới {card} trong giai đoạn {stack} của {board}", - "{user} has added a description to {card} in {stack} on {board}" : "{user} đã thêm một mô tả tới {card} trong giai đoạn {stack} của {board}", - "You have updated the description of {card} in {stack} on {board}" : "Bạn đã tải lên một mô tả của tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has updated the description {card} in {stack} on {board}" : "{user} đã tải lên mô tả tác vụ {card} trong giai đoạn {stack} của {board}", - "You have archived {card} in {stack} on {board}" : "Bạn đã lưu trữ tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has archived {card} in {stack} on {board}" : "{user} đã lưu trữ tác vụ {card} trong giai đoạn {stack} của {board}", - "You have unarchived {card} in {stack} on {board}" : "Bạn đã bỏ lưu trữ {card} trong giai đoạn {stack} của {board}", - "{user} has unarchived {card} in {stack} on {board}" : "{user} đã bỏ lưu trữ tác vụ {card} trong giai đoạn {stack} của {board}", - "You have removed the due date of {card}" : "Bạn đã loại bỏ thời hạn của tác vụ {card}", - "{user} has removed the due date of {card}" : "{user} đã loại bỏ thời hạn của tác vụ {card}", - "You have set the due date of {card} to {after}" : "Bạn đã thiết đặt thời hạn cho tác vụ {card} đến ngày {after}", - "{user} has set the due date of {card} to {after}" : "{user} đã thiết đặt thời hạn cho tác vụ {card} đến ngày {after}", - "You have updated the due date of {card} to {after}" : "Bạn đã cập nhật thời hạn cho tác vụ {card} đến ngày {after}", - "{user} has updated the due date of {card} to {after}" : "{user} đã cập nhật thời hạn cho tác vụ {card} đến ngày {after}", - "You have added the label {label} to {card} in {stack} on {board}" : "Bạn đã thêm nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has added the label {label} to {card} in {stack} on {board}" : "{user} đã thêm nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "You have removed the label {label} from {card} in {stack} on {board}" : "Bạn đã xóa bỏ nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "{user} has removed the label {label} from {card} in {stack} on {board}" : "{user} đã xóa bỏ nhãn {label} cho tác vụ {card} trong giai đoạn {stack} của {board}", - "You have assigned {assigneduser} to {card} on {board}" : "Bạn đã phân công cho {assigneduser} tác vụ {card} của dự án {board}", - "{user} has assigned {assigneduser} to {card} on {board}" : "{user} đã phân công cho {assigneduser} tác vụ {card} của dự án {board}", - "You have unassigned {assigneduser} from {card} on {board}" : "Bạn đã bỏ phân công cho {assigneduser} với tác vụ {card} của dự án {board}", - "{user} has unassigned {assigneduser} from {card} on {board}" : "{user} đã bỏ phân công cho {assigneduser} với tác vụ {card} của dự án {board}", - "You have moved the card {card} from {stackBefore} to {stack}" : "Bạn đã dịch chuyển tác vụ {card} từ {stackBefore} đến {stack}", - "{user} has moved the card {card} from {stackBefore} to {stack}" : "{user} đã dịch chuyển tác vụ {card} từ {stackBefore} đến {stack}", - "You have added the attachment {attachment} to {card}" : "Bạn đã đính kèm thêm tập tin {attachment} vào {card}", - "{user} has added the attachment {attachment} to {card}" : "{user} đã đính kèm thêm tập tin {attachment} vào {card}", - "You have updated the attachment {attachment} on {card}" : "Bạn đã tải lên tập tin đính kèm {attachment} vào {card}", - "{user} has updated the attachment {attachment} to {card}" : "{user} đã tải lên tập tin đính kèm {attachment} vào {card}", - "You have deleted the attachment {attachment} from {card}" : "Bạn đã xóa tập tin đính kèm {attachment} từ {card}", - "{user} has deleted the attachment {attachment} to {card}" : "{user} đã xóa tập tin đính kèm {attachment} từ {card}", - "You have restored the attachment {attachment} to {card}" : "Bạn đã khôi phục lại tập tin đính kèm {attachment} từ {card}", - "{user} has restored the attachment {attachment} to {card}" : "{user} đã khôi phục lại tập tin đính kèm {attachment} từ {card}", "Deck" : "Kế hoạch", "Personal" : "Cá nhân", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "Tác vụ \"%s\" trong \"%s\" đã được phân công cho bạn bởi %s.", @@ -109,11 +66,10 @@ "Sharing" : "Đang chia sẽ", "Tags" : "Thẻ", "Select users or groups to share with" : "Chọn người dùng hoặc nhóm để chia sẽ với", - "Access for" : "Truy cập cho", "No matching user or group found." : "Không tìm thấy người dùng hoặc nhóm.", "Loading" : "Đang tải", - "Share" : "Chia sẽ", "Edit" : "Chỉnh sửa", + "Share" : "Chia sẽ", "Manage" : "Quản lý", "Discard share" : "Hủy chia sẽ", "Create" : "Tạo", diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index e07aba672..a1b868bd8 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -2,23 +2,88 @@ OC.L10N.register( "deck", { "Please provide a content for your comment." : "请提供评论内容", - "Posting the comment failed." : "发表评论失败", + "Posting the comment failed." : "评论发表失败", "The comment has been deleted" : "评论已删除", - "The associated stack is deleted as well, it will be restored as well." : "相关联的堆也会被删除,同样也会被恢复。", - "Restore associated stack" : "恢复相关联的堆", - "Remove user from card" : "把用户从卡片删除", + "The associated stack is deleted as well, it will be restored as well." : "相关联的任务也已删除,当然也可以进行恢复。", + "Restore associated stack" : "恢复相关联的任务", + "Remove user from card" : "从卡片中删除用户", "Hours" : "小时", "Minutes" : "分", - "Maximum file size of {size} exceeded" : "已超出最大文件大小 {size}", - "Deck" : "面板", + "Link to a board" : "链接到一个面板", + "Maximum file size of {size} exceeded" : "文件大小 {size} 超出最大限制", + "You have created a new board {board}" : "您创建了一个新面板 {board}", + "{user} has created a new board {board}" : "{user} 创建了一个新面板 {board}", + "You have deleted the board {board}" : "您删除了面板 {board}", + "{user} has deleted the board {board}" : "{user} 删除了面板 {board}", + "You have restored the board {board}" : "您恢复了面板 {board}", + "{user} has restored the board {board}" : "{user} 恢复了 {board}", + "You have shared the board {board} with {acl}" : "您已共享 {board} 给 {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} 已共享面板 {board} 给 {sharee}", + "You have removed {acl} from the board {board}" : "您从面板 {board} 中移除了 {acl}", + "{user} has removed {acl} from the board {board}" : "{user} 从面板 {board} 中移除了 {acl} ", + "You have renamed the board {before} to {board}" : "您将面板 {before} 重命名为 {board}", + "{user} has renamed the board {before} to {board}" : "{user} 将面板 {before} 重命名为 {board}", + "You have archived the board {board}" : "您已将面板 {board} 存档", + "{user} has archived the board {before}" : "{user} 已将面板 {before} 存档", + "You have unarchived the board {board}" : "您撤销了 {board} 存档", + "{user} has unarchived the board {before}" : "{user} 撤销了面板 {before} 存档", + "You have created a new stack {stack} on board {board}" : "您在面板 {board} 上创建了新任务 {stack} ", + "{user} has created a new stack {stack} on board {board}" : "{user} 在面板 {board} 上创建了新任务 {stack}", + "You have renamed stack {before} to {stack} on board {board}" : "您将面板 {board} 上的任务 {before} 重命名为 {stack}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} 将面板 {board} 上的任务 {before} 重命名为 {stack}", + "You have deleted stack {stack} on board {board}" : "您删除了面板 {board} 上的任务 {stack}", + "{user} has deleted stack {stack} on board {board}" : "{user} 删除了面板 {board} 上的任务 {stack}", + "You have created card {card} in stack {stack} on board {board}" : "您在面板 {board} 上的任务 {stack} 中创建了卡片 {card}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} 在面板 {board} 上的任务 {stack} 中创建了卡片 {card}", + "You have deleted card {card} in stack {stack} on board {board}" : "您在面板 {board} 上的任务 {stack} 中删除了卡片 {card}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} 在面板 {board} 上的任务 {stack} 中删除了卡片 {card}", + "You have renamed the card {before} to {card}" : "您将卡片 {before} 重命名为 {card}", + "{user} has renamed the card {before} to {card}" : "{user} 将卡片 {before} 重命名为 {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "您为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了描述", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} 为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了描述", + "You have updated the description of card {card} in stack {stack} on board {board}" : "您更新了面板 {board} 上的任务 {stack} 中的卡片 {card} 的描述", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} 更新了面板 {board} 上,任务 {stack} 的卡片 {card}中的描述", + "You have archived card {card} in stack {stack} on board {board}" : "您已对面板 {board} 上的任务 {stack} 中的卡片 {card} 存档", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} 已对面板 {board} 上的任务 {stack} 中的卡片 {card} 存档", + "You have unarchived card {card} in stack {stack} on board {board}" : "您已对面板 {board} 上的任务 {stack} 中的卡片 {card} 恢复存档", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} 已对面板 {board} 上的任务 {stack} 中的卡片 {card} 恢复存档", + "You have removed the due date of card {card}" : "您移除了到期的卡片 {card}", + "{user} has removed the due date of card {card}" : "{user} 移除了到期的卡片 {card}", + "You have set the due date of card {card} to {after}" : "您设置到期的卡片 {card} 为 {after}", + "{user} has set the due date of card {card} to {after}" : "{user} 设置到期的卡片 {card} 为 {after}", + "You have updated the due date of card {card} to {after}" : "您更新到期的卡片 {card} 为 {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} 更新到期的卡片 {card} 为 {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "您为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了标签 {label}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} 为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了标签 {label}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "您移除了面板 {board} 上的任务 {stack} 中的卡片 {card} 的标签 {label}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} 移除了面板 {board} 上的任务 {stack} 中的卡片 {card} 的标签 {label}", + "You have assigned {assigneduser} to card {card} on board {board}" : "您将面板 {board} 上的卡片 {card} 指派给了 {assigneduser}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} 将面板 {board} 上的卡片 {card} 指派给了 {assigneduser}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "您对 {assigneduser} 取消了面板 {board} 上的卡片 {card} 指派", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} 对 {assigneduser} 取消了面板 {board} 上的卡片 {card} 指派", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "您将卡片 {card} 从任务 {stackBefore} 移到任务 {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} 将卡片 {card} 从任务 {stackBefore} 移到任务 {stack}", + "You have added the attachment {attachment} to card {card}" : "您为卡片 {card} 添加了附件 {attachment}", + "{user} has added the attachment {attachment} to card {card}" : "{user} 为卡片 {card} 添加了附件 {attachment}", + "You have updated the attachment {attachment} on card {card}" : "您更新了卡片 {card} 中的附件 {attachment}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} 更新了卡片 {card} 中的附件 {attachment}", + "You have deleted the attachment {attachment} from card {card}" : "您删除了卡片 {card} 中的附件 {attachment}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} 删除了卡片 {card} 中的附件 {attachment}", + "You have restored the attachment {attachment} to card {card}" : "您恢复了卡片 {card} 中的附件 {attachment}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} 恢复了卡片 {card} 中的附件 {attachment}", + "You have commented on card {card}" : "您评论了卡片 {card}", + "{user} has commented on card {card}" : "{user} 评论了卡片 {card}", + "A card description inside the Deck app has been changed" : "看板应用中的 卡片描述 已改变", + "Deck" : "看板", + "Changes in the Deck app" : "看板应用中的改变", "Personal" : "个人", - "The card \"%s\" on \"%s\" has been assigned to you by %s." : "卡片 \"%s\" 在 \"%s\" 被%s指派给您。", - "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} 已指派卡片 \"%s\" 在 \"%s\" 给您。", - "The card \"%s\" on \"%s\" has reached its due date." : "卡片 \"%s\" 在 \"%s\" 已经到期。", - "%s has mentioned you in a comment on \"%s\"." : "%s 在 “%s” 的评论中提到了您", - "{user} has mentioned you in a comment on \"%s\"." : "{user} 在 “%s” 的评论中提到了您", - "The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给你。", - "{user} has shared the board %s with you." : "{user} 共享面板 %s 给你。", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "%s已给您指派\"%s\" 中的卡片\"%s\"。", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} 已给您指派\"%s\" 中的卡片\"%s\"。", + "The card \"%s\" on \"%s\" has reached its due date." : "\"%s\"中的卡片 \"%s\" 已到期。", + "%s has mentioned you in a comment on \"%s\"." : "%s 在 “%s” 的评论中提到了您。", + "{user} has mentioned you in a comment on \"%s\"." : "{user} 在 “%s” 的评论中提到了您。", + "The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给您。", + "{user} has shared the board %s with you." : "{user} 共享面板 %s 给您。", "No data was provided to create an attachment." : "未能提供数据以创建附件", "Finished" : "完成", "To review" : "回顾", @@ -39,17 +104,27 @@ OC.L10N.register( "Could not write file to disk" : "无法写入文件到磁盘", "A PHP extension stopped the file upload" : "PHP扩展停止了文件上传。", "No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s", - "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck 是集成于 Nextcloud 中的一个看板风格的筹划工具,用于帮助进行个人规划与团队的项目安排。\n\n\n- 📥 把您的任务添加到卡片上,并将它们有序排列\n- 📄 将您的补充说明用markdown写下来\n- 🔖 利用指派标签更好地进行筹划\n- 👥 与您的团队,朋友或家人共享\n- 📎 附加文件并将它们嵌入到您的markdown说明中\n- 💬 用评论与您的团队讨论\n- ⚡ 在活动流中紧跟变化\n- 🚀 使你的项目井井有条", - "Add a new stack" : "新增", + "A kanban style project and personal management tool for Nextcloud" : "一款用于 Nextcloud 的看板风格的项目和个人管理工具 ", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "看板是集成于 Nextcloud 中的一款看板风格的任务管理工具,用于帮助进行个人计划与项目安排。\n\n\n- 📥 把您的任务添加到卡片上,并将它们有序排列\n- 📄 将您的补充说明用markdown写下来\n- 🔖 利用指派标签更好地进行筹划\n- 👥 与您的团队,朋友或家人共享\n- 📎 附加文件并将它们嵌入到您的markdown说明中\n- 💬 用评论与您的团队讨论\n- ⚡ 在活动流中紧跟变化\n- 🚀 使您的项目井井有条", + "Select the board to link to a project" : "选择要链接到一个项目的面板", + "Select board" : "选择面板", + "Add a new stack" : "添加一个新任务", "Submit" : "提交", "Show archived cards" : "显示已存档的卡片", "Hide archived cards" : "隐藏已存档的卡片", "Toggle compact mode" : "切换简洁模式", + "Show board details" : "显示面板详情", "All Boards" : "全部面板", "Archived boards" : "已归档面板", "Share board" : "共享面板", + "Archived cards" : "已存档卡片", "Actions" : "操作", - "Drop your files here to upload it to the card" : "将你的文件放置至此以将之上传到该卡片", + "Drop your files here to upload it to the card" : "将您的文件放置至此以将之上传到该卡片", + "Assign card to me" : "对我指派卡片", + "Unassign card from me" : "取消指派给我的卡片", + "Archive card" : "存档卡片", + "Unarchive card" : "恢复卡片存档", + "Delete card" : "删除卡片", "Enter a card title" : "输入卡片标题", "Add card" : "添加卡片", "Close" : "关闭", @@ -58,16 +133,21 @@ OC.L10N.register( "Deleted items" : "已删除项", "Timeline" : "时间线", "Select users or groups to share with" : "选择要共享的用户或组", - "Access for" : "可访问", + "Group" : "分组", + "Circle" : "圈子", "No matching user or group found." : "未找到匹配的用户或组。", "Loading" : "加载中", - "Share" : "共享", "Edit" : "编辑", + "Share" : "共享", "Manage" : "管理", "Discard share" : "取消共享", + "Sharing has been disabled for your account." : "您的账户已禁用分享", + "Update tag" : "更新标签", + "Edit tag" : "编辑标签", + "Delete tag" : "删除标签", "Create" : "创建", "Create a new tag" : "创建新标签", - "Deleted stacks" : "已删除堆", + "Deleted stacks" : "已删除的任务", "Deleted cards" : "已删除卡片", "Status" : "状态", "No archived boards to display" : "无归档面板可显示", @@ -79,15 +159,19 @@ OC.L10N.register( "Archive board" : "归档面板", "Unarchive board" : "未归档面板", "Delete board" : "删除面板", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "取消删除面板 - 否则面板将在下一次定时任务运行时删除", + "Update board" : "更新面板", + "Reset board" : "重置面板", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "取消删除面板 - 否则面板将在下一次定时任务运行时删除。", "Create new board" : "创建新面板", "New board title" : "新面板标题", + "Create board" : "创建面板", "Select an attachment" : "选择一个附件", "Cancel upload" : "取消上传", "by" : "由", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "取消删除文件 - 否则文件将在下一次定时任务运行时删除", "Undo file deletion" : "取消删除文件", "Insert the file into the description" : "将文件插入到说明中", + "Delete attachment" : "删除附件", "Modified:" : "修改于:", "Created:" : "创建于:", "Choose a tag" : "选择一个标签", @@ -109,6 +193,9 @@ OC.L10N.register( "Add a card description…" : "添加卡片描述…", "Shared boards" : "已共享面板", "Move board to archive" : "移动面板到归档", - "Create a new board" : "创建一个新面板" + "Create a new board" : "创建一个新面板", + "Settings" : "设置", + "Limit deck to groups" : "对用户组限制看板", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "非面板创建用户组的用户将不能使用受限看板。但用户仍然能够使用已共享给他们的面板工作。" }, "nplurals=1; plural=0;"); diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index 0c264f84c..d17d3d5d1 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -1,22 +1,87 @@ { "translations": { "Please provide a content for your comment." : "请提供评论内容", - "Posting the comment failed." : "发表评论失败", + "Posting the comment failed." : "评论发表失败", "The comment has been deleted" : "评论已删除", - "The associated stack is deleted as well, it will be restored as well." : "相关联的堆也会被删除,同样也会被恢复。", - "Restore associated stack" : "恢复相关联的堆", - "Remove user from card" : "把用户从卡片删除", + "The associated stack is deleted as well, it will be restored as well." : "相关联的任务也已删除,当然也可以进行恢复。", + "Restore associated stack" : "恢复相关联的任务", + "Remove user from card" : "从卡片中删除用户", "Hours" : "小时", "Minutes" : "分", - "Maximum file size of {size} exceeded" : "已超出最大文件大小 {size}", - "Deck" : "面板", + "Link to a board" : "链接到一个面板", + "Maximum file size of {size} exceeded" : "文件大小 {size} 超出最大限制", + "You have created a new board {board}" : "您创建了一个新面板 {board}", + "{user} has created a new board {board}" : "{user} 创建了一个新面板 {board}", + "You have deleted the board {board}" : "您删除了面板 {board}", + "{user} has deleted the board {board}" : "{user} 删除了面板 {board}", + "You have restored the board {board}" : "您恢复了面板 {board}", + "{user} has restored the board {board}" : "{user} 恢复了 {board}", + "You have shared the board {board} with {acl}" : "您已共享 {board} 给 {acl}", + "{user} has shared the board {board} with {sharee}" : "{user} 已共享面板 {board} 给 {sharee}", + "You have removed {acl} from the board {board}" : "您从面板 {board} 中移除了 {acl}", + "{user} has removed {acl} from the board {board}" : "{user} 从面板 {board} 中移除了 {acl} ", + "You have renamed the board {before} to {board}" : "您将面板 {before} 重命名为 {board}", + "{user} has renamed the board {before} to {board}" : "{user} 将面板 {before} 重命名为 {board}", + "You have archived the board {board}" : "您已将面板 {board} 存档", + "{user} has archived the board {before}" : "{user} 已将面板 {before} 存档", + "You have unarchived the board {board}" : "您撤销了 {board} 存档", + "{user} has unarchived the board {before}" : "{user} 撤销了面板 {before} 存档", + "You have created a new stack {stack} on board {board}" : "您在面板 {board} 上创建了新任务 {stack} ", + "{user} has created a new stack {stack} on board {board}" : "{user} 在面板 {board} 上创建了新任务 {stack}", + "You have renamed stack {before} to {stack} on board {board}" : "您将面板 {board} 上的任务 {before} 重命名为 {stack}", + "{user} has renamed stack {before} to {stack} on board {board}" : "{user} 将面板 {board} 上的任务 {before} 重命名为 {stack}", + "You have deleted stack {stack} on board {board}" : "您删除了面板 {board} 上的任务 {stack}", + "{user} has deleted stack {stack} on board {board}" : "{user} 删除了面板 {board} 上的任务 {stack}", + "You have created card {card} in stack {stack} on board {board}" : "您在面板 {board} 上的任务 {stack} 中创建了卡片 {card}", + "{user} has created card {card} in stack {stack} on board {board}" : "{user} 在面板 {board} 上的任务 {stack} 中创建了卡片 {card}", + "You have deleted card {card} in stack {stack} on board {board}" : "您在面板 {board} 上的任务 {stack} 中删除了卡片 {card}", + "{user} has deleted card {card} in stack {stack} on board {board}" : "{user} 在面板 {board} 上的任务 {stack} 中删除了卡片 {card}", + "You have renamed the card {before} to {card}" : "您将卡片 {before} 重命名为 {card}", + "{user} has renamed the card {before} to {card}" : "{user} 将卡片 {before} 重命名为 {card}", + "You have added a description to card {card} in stack {stack} on board {board}" : "您为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了描述", + "{user} has added a description to card {card} in stack {stack} on board {board}" : "{user} 为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了描述", + "You have updated the description of card {card} in stack {stack} on board {board}" : "您更新了面板 {board} 上的任务 {stack} 中的卡片 {card} 的描述", + "{user} has updated the description of the card {card} in stack {stack} on board {board}" : "{user} 更新了面板 {board} 上,任务 {stack} 的卡片 {card}中的描述", + "You have archived card {card} in stack {stack} on board {board}" : "您已对面板 {board} 上的任务 {stack} 中的卡片 {card} 存档", + "{user} has archived card {card} in stack {stack} on board {board}" : "{user} 已对面板 {board} 上的任务 {stack} 中的卡片 {card} 存档", + "You have unarchived card {card} in stack {stack} on board {board}" : "您已对面板 {board} 上的任务 {stack} 中的卡片 {card} 恢复存档", + "{user} has unarchived card {card} in stack {stack} on board {board}" : "{user} 已对面板 {board} 上的任务 {stack} 中的卡片 {card} 恢复存档", + "You have removed the due date of card {card}" : "您移除了到期的卡片 {card}", + "{user} has removed the due date of card {card}" : "{user} 移除了到期的卡片 {card}", + "You have set the due date of card {card} to {after}" : "您设置到期的卡片 {card} 为 {after}", + "{user} has set the due date of card {card} to {after}" : "{user} 设置到期的卡片 {card} 为 {after}", + "You have updated the due date of card {card} to {after}" : "您更新到期的卡片 {card} 为 {after}", + "{user} has updated the due date of card {card} to {after}" : "{user} 更新到期的卡片 {card} 为 {after}", + "You have added the tag {label} to card {card} in stack {stack} on board {board}" : "您为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了标签 {label}", + "{user} has added the tag {label} to card {card} in stack {stack} on board {board}" : "{user} 为面板 {board} 上的任务 {stack} 中的卡片 {card} 添加了标签 {label}", + "You have removed the tag {label} from card {card} in stack {stack} on board {board}" : "您移除了面板 {board} 上的任务 {stack} 中的卡片 {card} 的标签 {label}", + "{user} has removed the tag {label} from card {card} in stack {stack} on board {board}" : "{user} 移除了面板 {board} 上的任务 {stack} 中的卡片 {card} 的标签 {label}", + "You have assigned {assigneduser} to card {card} on board {board}" : "您将面板 {board} 上的卡片 {card} 指派给了 {assigneduser}", + "{user} has assigned {assigneduser} to card {card} on board {board}" : "{user} 将面板 {board} 上的卡片 {card} 指派给了 {assigneduser}", + "You have unassigned {assigneduser} from card {card} on board {board}" : "您对 {assigneduser} 取消了面板 {board} 上的卡片 {card} 指派", + "{user} has unassigned {assigneduser} from card {card} on board {board}" : "{user} 对 {assigneduser} 取消了面板 {board} 上的卡片 {card} 指派", + "You have moved the card {card} from stack {stackBefore} to {stack}" : "您将卡片 {card} 从任务 {stackBefore} 移到任务 {stack}", + "{user} has moved the card {card} from stack {stackBefore} to {stack}" : "{user} 将卡片 {card} 从任务 {stackBefore} 移到任务 {stack}", + "You have added the attachment {attachment} to card {card}" : "您为卡片 {card} 添加了附件 {attachment}", + "{user} has added the attachment {attachment} to card {card}" : "{user} 为卡片 {card} 添加了附件 {attachment}", + "You have updated the attachment {attachment} on card {card}" : "您更新了卡片 {card} 中的附件 {attachment}", + "{user} has updated the attachment {attachment} to card {card}" : "{user} 更新了卡片 {card} 中的附件 {attachment}", + "You have deleted the attachment {attachment} from card {card}" : "您删除了卡片 {card} 中的附件 {attachment}", + "{user} has deleted the attachment {attachment} to card {card}" : "{user} 删除了卡片 {card} 中的附件 {attachment}", + "You have restored the attachment {attachment} to card {card}" : "您恢复了卡片 {card} 中的附件 {attachment}", + "{user} has restored the attachment {attachment} to card {card}" : "{user} 恢复了卡片 {card} 中的附件 {attachment}", + "You have commented on card {card}" : "您评论了卡片 {card}", + "{user} has commented on card {card}" : "{user} 评论了卡片 {card}", + "A card description inside the Deck app has been changed" : "看板应用中的 卡片描述 已改变", + "Deck" : "看板", + "Changes in the Deck app" : "看板应用中的改变", "Personal" : "个人", - "The card \"%s\" on \"%s\" has been assigned to you by %s." : "卡片 \"%s\" 在 \"%s\" 被%s指派给您。", - "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} 已指派卡片 \"%s\" 在 \"%s\" 给您。", - "The card \"%s\" on \"%s\" has reached its due date." : "卡片 \"%s\" 在 \"%s\" 已经到期。", - "%s has mentioned you in a comment on \"%s\"." : "%s 在 “%s” 的评论中提到了您", - "{user} has mentioned you in a comment on \"%s\"." : "{user} 在 “%s” 的评论中提到了您", - "The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给你。", - "{user} has shared the board %s with you." : "{user} 共享面板 %s 给你。", + "The card \"%s\" on \"%s\" has been assigned to you by %s." : "%s已给您指派\"%s\" 中的卡片\"%s\"。", + "{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} 已给您指派\"%s\" 中的卡片\"%s\"。", + "The card \"%s\" on \"%s\" has reached its due date." : "\"%s\"中的卡片 \"%s\" 已到期。", + "%s has mentioned you in a comment on \"%s\"." : "%s 在 “%s” 的评论中提到了您。", + "{user} has mentioned you in a comment on \"%s\"." : "{user} 在 “%s” 的评论中提到了您。", + "The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给您。", + "{user} has shared the board %s with you." : "{user} 共享面板 %s 给您。", "No data was provided to create an attachment." : "未能提供数据以创建附件", "Finished" : "完成", "To review" : "回顾", @@ -37,17 +102,27 @@ "Could not write file to disk" : "无法写入文件到磁盘", "A PHP extension stopped the file upload" : "PHP扩展停止了文件上传。", "No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s", - "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck 是集成于 Nextcloud 中的一个看板风格的筹划工具,用于帮助进行个人规划与团队的项目安排。\n\n\n- 📥 把您的任务添加到卡片上,并将它们有序排列\n- 📄 将您的补充说明用markdown写下来\n- 🔖 利用指派标签更好地进行筹划\n- 👥 与您的团队,朋友或家人共享\n- 📎 附加文件并将它们嵌入到您的markdown说明中\n- 💬 用评论与您的团队讨论\n- ⚡ 在活动流中紧跟变化\n- 🚀 使你的项目井井有条", - "Add a new stack" : "新增", + "A kanban style project and personal management tool for Nextcloud" : "一款用于 Nextcloud 的看板风格的项目和个人管理工具 ", + "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "看板是集成于 Nextcloud 中的一款看板风格的任务管理工具,用于帮助进行个人计划与项目安排。\n\n\n- 📥 把您的任务添加到卡片上,并将它们有序排列\n- 📄 将您的补充说明用markdown写下来\n- 🔖 利用指派标签更好地进行筹划\n- 👥 与您的团队,朋友或家人共享\n- 📎 附加文件并将它们嵌入到您的markdown说明中\n- 💬 用评论与您的团队讨论\n- ⚡ 在活动流中紧跟变化\n- 🚀 使您的项目井井有条", + "Select the board to link to a project" : "选择要链接到一个项目的面板", + "Select board" : "选择面板", + "Add a new stack" : "添加一个新任务", "Submit" : "提交", "Show archived cards" : "显示已存档的卡片", "Hide archived cards" : "隐藏已存档的卡片", "Toggle compact mode" : "切换简洁模式", + "Show board details" : "显示面板详情", "All Boards" : "全部面板", "Archived boards" : "已归档面板", "Share board" : "共享面板", + "Archived cards" : "已存档卡片", "Actions" : "操作", - "Drop your files here to upload it to the card" : "将你的文件放置至此以将之上传到该卡片", + "Drop your files here to upload it to the card" : "将您的文件放置至此以将之上传到该卡片", + "Assign card to me" : "对我指派卡片", + "Unassign card from me" : "取消指派给我的卡片", + "Archive card" : "存档卡片", + "Unarchive card" : "恢复卡片存档", + "Delete card" : "删除卡片", "Enter a card title" : "输入卡片标题", "Add card" : "添加卡片", "Close" : "关闭", @@ -56,16 +131,21 @@ "Deleted items" : "已删除项", "Timeline" : "时间线", "Select users or groups to share with" : "选择要共享的用户或组", - "Access for" : "可访问", + "Group" : "分组", + "Circle" : "圈子", "No matching user or group found." : "未找到匹配的用户或组。", "Loading" : "加载中", - "Share" : "共享", "Edit" : "编辑", + "Share" : "共享", "Manage" : "管理", "Discard share" : "取消共享", + "Sharing has been disabled for your account." : "您的账户已禁用分享", + "Update tag" : "更新标签", + "Edit tag" : "编辑标签", + "Delete tag" : "删除标签", "Create" : "创建", "Create a new tag" : "创建新标签", - "Deleted stacks" : "已删除堆", + "Deleted stacks" : "已删除的任务", "Deleted cards" : "已删除卡片", "Status" : "状态", "No archived boards to display" : "无归档面板可显示", @@ -77,15 +157,19 @@ "Archive board" : "归档面板", "Unarchive board" : "未归档面板", "Delete board" : "删除面板", - "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "取消删除面板 - 否则面板将在下一次定时任务运行时删除", + "Update board" : "更新面板", + "Reset board" : "重置面板", + "Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "取消删除面板 - 否则面板将在下一次定时任务运行时删除。", "Create new board" : "创建新面板", "New board title" : "新面板标题", + "Create board" : "创建面板", "Select an attachment" : "选择一个附件", "Cancel upload" : "取消上传", "by" : "由", "Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "取消删除文件 - 否则文件将在下一次定时任务运行时删除", "Undo file deletion" : "取消删除文件", "Insert the file into the description" : "将文件插入到说明中", + "Delete attachment" : "删除附件", "Modified:" : "修改于:", "Created:" : "创建于:", "Choose a tag" : "选择一个标签", @@ -107,6 +191,9 @@ "Add a card description…" : "添加卡片描述…", "Shared boards" : "已共享面板", "Move board to archive" : "移动面板到归档", - "Create a new board" : "创建一个新面板" + "Create a new board" : "创建一个新面板", + "Settings" : "设置", + "Limit deck to groups" : "对用户组限制看板", + "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "非面板创建用户组的用户将不能使用受限看板。但用户仍然能够使用已共享给他们的面板工作。" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/lib/Activity/ActivityManager.php b/lib/Activity/ActivityManager.php index c5a5ead10..efd2ea48e 100644 --- a/lib/Activity/ActivityManager.php +++ b/lib/Activity/ActivityManager.php @@ -147,9 +147,8 @@ class ActivityManager { case self::SUBJECT_BOARD_UNSHARE: $subject = $ownActivity ? $this->l10n->t('You have removed {acl} from the board {board}') : $this->l10n->t('{user} has removed {acl} from the board {board}'); break; - case self::SUBJECT_BOARD_UPDATE_TITLE: - $subject = $ownActivity ? $this->l10n->t('You have renamed the board {before} to {board}') : $this->l10n->t('{user} has has renamed the board {before} to {board}'); + $subject = $ownActivity ? $this->l10n->t('You have renamed the board {before} to {board}') : $this->l10n->t('{user} has renamed the board {before} to {board}'); break; case self::SUBJECT_BOARD_UPDATE_ARCHIVED: if (isset($subjectParams['after']) && $subjectParams['after']) { @@ -158,80 +157,79 @@ class ActivityManager { $subject = $ownActivity ? $this->l10n->t('You have unarchived the board {board}') : $this->l10n->t('{user} has unarchived the board {before}'); } break; - case self::SUBJECT_STACK_CREATE: - $subject = $ownActivity ? $this->l10n->t('You have created a new stack {stack} on {board}') : $this->l10n->t('{user} has created a new stack {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have created a new stack {stack} on board {board}') : $this->l10n->t('{user} has created a new stack {stack} on board {board}'); break; case self::SUBJECT_STACK_UPDATE: - $subject = $ownActivity ? $this->l10n->t('You have created a new stack {stack} on {board}') : $this->l10n->t('{user} has created a new stack {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have created a new stack {stack} on board {board}') : $this->l10n->t('{user} has created a new stack {stack} on board {board}'); break; case self::SUBJECT_STACK_UPDATE_TITLE: - $subject = $ownActivity ? $this->l10n->t('You have renamed a new stack {before} to {stack} on {board}') : $this->l10n->t('{user} has renamed a new stack {before} to {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have renamed stack {before} to {stack} on board {board}') : $this->l10n->t('{user} has renamed stack {before} to {stack} on board {board}'); break; case self::SUBJECT_STACK_DELETE: - $subject = $ownActivity ? $this->l10n->t('You have deleted {stack} on {board}') : $this->l10n->t('{user} has deleted {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have deleted stack {stack} on board {board}') : $this->l10n->t('{user} has deleted stack {stack} on board {board}'); break; case self::SUBJECT_CARD_CREATE: - $subject = $ownActivity ? $this->l10n->t('You have created {card} in {stack} on {board}') : $this->l10n->t('{user} has created {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have created card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has created card {card} in stack {stack} on board {board}'); break; case self::SUBJECT_CARD_DELETE: - $subject = $ownActivity ? $this->l10n->t('You have deleted {card} in {stack} on {board}') : $this->l10n->t('{user} has deleted {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have deleted card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has deleted card {card} in stack {stack} on board {board}'); break; case self::SUBJECT_CARD_UPDATE_TITLE: $subject = $ownActivity ? $this->l10n->t('You have renamed the card {before} to {card}') : $this->l10n->t('{user} has renamed the card {before} to {card}'); break; case self::SUBJECT_CARD_UPDATE_DESCRIPTION: if (!isset($subjectParams['before'])) { - $subject = $ownActivity ? $this->l10n->t('You have added a description to {card} in {stack} on {board}') : $this->l10n->t('{user} has added a description to {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have added a description to card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has added a description to card {card} in stack {stack} on board {board}'); } else { - $subject = $ownActivity ? $this->l10n->t('You have updated the description of {card} in {stack} on {board}') : $this->l10n->t('{user} has updated the description {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have updated the description of card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has updated the description of the card {card} in stack {stack} on board {board}'); } break; case self::SUBJECT_CARD_UPDATE_ARCHIVE: - $subject = $ownActivity ? $this->l10n->t('You have archived {card} in {stack} on {board}') : $this->l10n->t('{user} has archived {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have archived card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has archived card {card} in stack {stack} on board {board}'); break; case self::SUBJECT_CARD_UPDATE_UNARCHIVE: - $subject = $ownActivity ? $this->l10n->t('You have unarchived {card} in {stack} on {board}') : $this->l10n->t('{user} has unarchived {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have unarchived card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has unarchived card {card} in stack {stack} on board {board}'); break; case self::SUBJECT_CARD_UPDATE_DUEDATE: if (!isset($subjectParams['after'])) { - $subject = $ownActivity ? $this->l10n->t('You have removed the due date of {card}') : $this->l10n->t('{user} has removed the due date of {card}'); - } else if (isset($subjectParams['before']) && !isset($subjectParams['after'])) { - $subject = $ownActivity ? $this->l10n->t('You have set the due date of {card} to {after}') : $this->l10n->t('{user} has set the due date of {card} to {after}'); + $subject = $ownActivity ? $this->l10n->t('You have removed the due date of card {card}') : $this->l10n->t('{user} has removed the due date of card {card}'); + } else if (!isset($subjectParams['before']) && isset($subjectParams['after'])) { + $subject = $ownActivity ? $this->l10n->t('You have set the due date of card {card} to {after}') : $this->l10n->t('{user} has set the due date of card {card} to {after}'); } else { - $subject = $ownActivity ? $this->l10n->t('You have updated the due date of {card} to {after}') : $this->l10n->t('{user} has updated the due date of {card} to {after}'); + $subject = $ownActivity ? $this->l10n->t('You have updated the due date of card {card} to {after}') : $this->l10n->t('{user} has updated the due date of card {card} to {after}'); } break; case self::SUBJECT_LABEL_ASSIGN: - $subject = $ownActivity ? $this->l10n->t('You have added the label {label} to {card} in {stack} on {board}') : $this->l10n->t('{user} has added the label {label} to {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have added the tag {label} to card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has added the tag {label} to card {card} in stack {stack} on board {board}'); break; case self::SUBJECT_LABEL_UNASSING: - $subject = $ownActivity ? $this->l10n->t('You have removed the label {label} from {card} in {stack} on {board}') : $this->l10n->t('{user} has removed the label {label} from {card} in {stack} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have removed the tag {label} from card {card} in stack {stack} on board {board}') : $this->l10n->t('{user} has removed the tag {label} from card {card} in stack {stack} on board {board}'); break; case self::SUBJECT_CARD_USER_ASSIGN: - $subject = $ownActivity ? $this->l10n->t('You have assigned {assigneduser} to {card} on {board}') : $this->l10n->t('{user} has assigned {assigneduser} to {card} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have assigned {assigneduser} to card {card} on board {board}') : $this->l10n->t('{user} has assigned {assigneduser} to card {card} on board {board}'); break; case self::SUBJECT_CARD_USER_UNASSIGN: - $subject = $ownActivity ? $this->l10n->t('You have unassigned {assigneduser} from {card} on {board}') : $this->l10n->t('{user} has unassigned {assigneduser} from {card} on {board}'); + $subject = $ownActivity ? $this->l10n->t('You have unassigned {assigneduser} from card {card} on board {board}') : $this->l10n->t('{user} has unassigned {assigneduser} from card {card} on board {board}'); break; case self::SUBJECT_CARD_UPDATE_STACKID: - $subject = $ownActivity ? $this->l10n->t('You have moved the card {card} from {stackBefore} to {stack}') : $this->l10n->t('{user} has moved the card {card} from {stackBefore} to {stack}'); + $subject = $ownActivity ? $this->l10n->t('You have moved the card {card} from stack {stackBefore} to {stack}') : $this->l10n->t('{user} has moved the card {card} from stack {stackBefore} to {stack}'); break; case self::SUBJECT_ATTACHMENT_CREATE: - $subject = $ownActivity ? $this->l10n->t('You have added the attachment {attachment} to {card}') : $this->l10n->t('{user} has added the attachment {attachment} to {card}'); + $subject = $ownActivity ? $this->l10n->t('You have added the attachment {attachment} to card {card}') : $this->l10n->t('{user} has added the attachment {attachment} to card {card}'); break; case self::SUBJECT_ATTACHMENT_UPDATE: - $subject = $ownActivity ? $this->l10n->t('You have updated the attachment {attachment} on {card}') : $this->l10n->t('{user} has updated the attachment {attachment} to {card}'); + $subject = $ownActivity ? $this->l10n->t('You have updated the attachment {attachment} on card {card}') : $this->l10n->t('{user} has updated the attachment {attachment} to card {card}'); break; case self::SUBJECT_ATTACHMENT_DELETE: - $subject = $ownActivity ? $this->l10n->t('You have deleted the attachment {attachment} from {card}') : $this->l10n->t('{user} has deleted the attachment {attachment} to {card}'); + $subject = $ownActivity ? $this->l10n->t('You have deleted the attachment {attachment} from card {card}') : $this->l10n->t('{user} has deleted the attachment {attachment} to card {card}'); break; case self::SUBJECT_ATTACHMENT_RESTORE: - $subject = $ownActivity ? $this->l10n->t('You have restored the attachment {attachment} to {card}') : $this->l10n->t('{user} has restored the attachment {attachment} to {card}'); + $subject = $ownActivity ? $this->l10n->t('You have restored the attachment {attachment} to card {card}') : $this->l10n->t('{user} has restored the attachment {attachment} to card {card}'); break; case self::SUBJECT_CARD_COMMENT_CREATE: - $subject = $ownActivity ? $this->l10n->t('You have commented on {card}') : $this->l10n->t('{user} has commented on {card}'); + $subject = $ownActivity ? $this->l10n->t('You have commented on card {card}') : $this->l10n->t('{user} has commented on card {card}'); break; default: break; @@ -239,10 +237,12 @@ class ActivityManager { return $subject; } - public function triggerEvent($objectType, $entity, $subject, $additionalParams = []) { + public function triggerEvent($objectType, $entity, $subject, $additionalParams = [], $author = null) { try { - $event = $this->createEvent($objectType, $entity, $subject, $additionalParams); - $this->sendToUsers($event); + $event = $this->createEvent($objectType, $entity, $subject, $additionalParams, $author); + if ($event !== null) { + $this->sendToUsers($event); + } } catch (\Exception $e) { // Ignore exception for undefined activities on update events } @@ -262,15 +262,17 @@ class ActivityManager { if ($previousEntity !== null) { foreach ($entity->getUpdatedFields() as $field => $value) { $getter = 'get' . ucfirst($field); - $subject = $subject . '_' . $field; + $subjectComplete = $subject . '_' . $field; $changes = [ 'before' => $previousEntity->$getter(), 'after' => $entity->$getter() ]; if ($changes['before'] !== $changes['after']) { try { - $event = $this->createEvent($objectType, $entity, $subject, $changes); - $events[] = $event; + $event = $this->createEvent($objectType, $entity, $subjectComplete, $changes); + if ($event !== null) { + $events[] = $event; + } } catch (\Exception $e) { // Ignore exception for undefined activities on update events } @@ -278,7 +280,7 @@ class ActivityManager { } } else { try { - $events = [$this->createEvent($objectType, $entity, $subject)]; + $events = [$this->createEvent($objectType, $entity, $subject, $author)]; } catch (\Exception $e) { // Ignore exception for undefined activities on update events } @@ -293,13 +295,15 @@ class ActivityManager { * @param $entity * @param $subject * @param array $additionalParams - * @return IEvent + * @return IEvent|null * @throws \Exception */ - private function createEvent($objectType, $entity, $subject, $additionalParams = []) { + private function createEvent($objectType, $entity, $subject, $additionalParams = [], $author = null) { try { $object = $this->findObjectForEntity($objectType, $entity); } catch (DoesNotExistException $e) { + \OC::$server->getLogger()->error('Could not create activity entry for ' . $subject . '. Entity not found.', $entity); + return null; } catch (MultipleObjectsReturnedException $e) { \OC::$server->getLogger()->error('Could not create activity entry for ' . $subject . '. Entity not found.', $entity); return null; @@ -309,6 +313,7 @@ class ActivityManager { * Automatically fetch related details for subject parameters * depending on the subject */ + $eventType = 'deck'; $subjectParams = []; $message = null; switch ($subject) { @@ -322,11 +327,13 @@ class ActivityManager { // case self::SUBJECT_BOARD_UPDATE_COLOR break; case self::SUBJECT_CARD_COMMENT_CREATE: - /** @var IComment $entity */ - $subjectParams = [ - 'comment' => $entity->getMessage() - ]; - $message = '{comment}'; + $subjectParams = $this->findDetailsForCard($entity->getId()); + if (array_key_exists('comment', $additionalParams)) { + /** @var IComment $entity */ + $comment = $additionalParams['comment']; + $subjectParams['comment'] = $comment->getId(); + unset($additionalParams['comment']); + } break; case self::SUBJECT_STACK_CREATE: @@ -369,16 +376,24 @@ class ActivityManager { } if ($subject === self::SUBJECT_CARD_UPDATE_DESCRIPTION){ + $card = $subjectParams['card']; + if ($card->getLastEditor() === $this->userId) { + return null; + } $subjectParams['diff'] = true; + $eventType = 'deck_card_description'; } if ($subject === self::SUBJECT_CARD_UPDATE_STACKID) { $subjectParams['stackBefore'] = $this->stackMapper->find($additionalParams['before']); } + $subjectParams['author'] = $this->userId; + + $event = $this->manager->generateEvent(); $event->setApp('deck') - ->setType('deck') - ->setAuthor($this->userId) + ->setType($eventType) + ->setAuthor($author === null ? $this->userId : $author) ->setObject($objectType, (int)$object->getId(), $object->getTitle()) ->setSubject($subject, array_merge($subjectParams, $additionalParams)) ->setTimestamp(time()); diff --git a/lib/Activity/CommentEventHandler.php b/lib/Activity/CommentEventHandler.php index 460bbab3a..7a6981a7f 100644 --- a/lib/Activity/CommentEventHandler.php +++ b/lib/Activity/CommentEventHandler.php @@ -23,8 +23,10 @@ namespace OCA\Deck\Activity; +use OCA\Deck\Db\CardMapper; use OCA\Deck\Notification\NotificationHelper; use OCP\Comments\CommentsEvent; +use OCP\Comments\IComment; use \OCP\Comments\ICommentsEventHandler; class CommentEventHandler implements ICommentsEventHandler { @@ -35,9 +37,13 @@ class CommentEventHandler implements ICommentsEventHandler { /** @var NotificationHelper */ private $notificationHelper; - public function __construct(ActivityManager $activityManager, NotificationHelper $notificationHelper) { + /** @var CardMapper */ + private $cardMapper; + + public function __construct(ActivityManager $activityManager, NotificationHelper $notificationHelper, CardMapper $cardMapper) { $this->notificationHelper = $notificationHelper; $this->activityManager = $activityManager; + $this->cardMapper = $cardMapper; } /** @@ -57,9 +63,7 @@ class CommentEventHandler implements ICommentsEventHandler { } $applicableEvents = [ - CommentsEvent::EVENT_PRE_UPDATE, - CommentsEvent::EVENT_UPDATE, - CommentsEvent::EVENT_DELETE, + CommentsEvent::EVENT_UPDATE ]; if(in_array($eventType, $applicableEvents)) { $this->notificationHandler($event); @@ -71,8 +75,10 @@ class CommentEventHandler implements ICommentsEventHandler { * @param CommentsEvent $event */ private function activityHandler(CommentsEvent $event) { + /** @var IComment $comment */ $comment = $event->getComment(); - $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $comment, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment->getId()]); + $card = $this->cardMapper->find($comment->getObjectId()); + $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment]); } diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php index 83f689955..87a7832a7 100644 --- a/lib/Activity/DeckProvider.php +++ b/lib/Activity/DeckProvider.php @@ -31,8 +31,10 @@ use OCP\Activity\IProvider; use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; +use OCP\IConfig; use OCP\IURLGenerator; use OCP\IUserManager; +use OCP\L10N\IFactory; class DeckProvider implements IProvider { @@ -46,13 +48,19 @@ class DeckProvider implements IProvider { private $userManager; /** @var ICommentsManager */ private $commentsManager; + /** @var IFactory */ + private $l10nFactory; + /** @var IConfig */ + private $config; - public function __construct(IURLGenerator $urlGenerator, ActivityManager $activityManager, IUserManager $userManager, ICommentsManager $commentsManager, $userId) { + public function __construct(IURLGenerator $urlGenerator, ActivityManager $activityManager, IUserManager $userManager, ICommentsManager $commentsManager, IFactory $l10n, IConfig $config, $userId) { $this->userId = $userId; $this->urlGenerator = $urlGenerator; $this->activityManager = $activityManager; $this->commentsManager = $commentsManager; $this->userManager = $userManager; + $this->l10nFactory = $l10n; + $this->config = $config; } /** @@ -81,15 +89,26 @@ class DeckProvider implements IProvider { */ $author = $event->getAuthor(); + // get author if + if ($author === '' && array_key_exists('author', $subjectParams)) { + $author = $subjectParams['author']; + unset($subjectParams['author']); + } $user = $this->userManager->get($author); - $params = [ - 'user' => [ - 'type' => 'user', - 'id' => $author, - 'name' => $user !== null ? $user->getDisplayName() : $author - ], - ]; + if ($user !== null) { + $params = [ + 'user' => [ + 'type' => 'user', + 'id' => $author, + 'name' => $user !== null ? $user->getDisplayName() : $author + ], + ]; + $event->setAuthor($author); + } if ($event->getObjectType() === ActivityManager::DECK_OBJECT_BOARD) { + if (isset($subjectParams['board']) && $event->getObjectName() === '') { + $event->setObject($event->getObjectType(), $event->getObjectId(), $subjectParams['board']['title']); + } $board = [ 'type' => 'highlight', 'id' => $event->getObjectId(), @@ -99,7 +118,10 @@ class DeckProvider implements IProvider { $params['board'] = $board; } - if ($event->getObjectType() === ActivityManager::DECK_OBJECT_CARD) { + if (isset($subjectParams['card']) && $event->getObjectType() === ActivityManager::DECK_OBJECT_CARD) { + if ($event->getObjectName() === '') { + $event->setObject($event->getObjectType(), $event->getObjectId(), $subjectParams['card']['title']); + } $card = [ 'type' => 'highlight', 'id' => $event->getObjectId(), @@ -122,6 +144,7 @@ class DeckProvider implements IProvider { $params = $this->parseParamForAcl($subjectParams, $params); $params = $this->parseParamForChanges($subjectParams, $params, $event); $params = $this->parseParamForComment($subjectParams, $params, $event); + $params = $this->parseParamForDuedate($subjectParams, $params, $event); try { $subject = $this->activityManager->getActivityFormat($subjectIdentifier, $subjectParams, $ownActivity); @@ -137,18 +160,20 @@ class DeckProvider implements IProvider { * @param array $parameters */ protected function setSubjects(IEvent $event, $subject, array $parameters) { - $placeholders = $replacements = []; + $placeholders = $replacements = $richParameters = []; foreach ($parameters as $placeholder => $parameter) { $placeholders[] = '{' . $placeholder . '}'; if (is_array($parameter) && array_key_exists('name', $parameter)) { $replacements[] = $parameter['name']; + $richParameters[$placeholder] = $parameter; } else { $replacements[] = ''; } } $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) - ->setRichSubject($subject, $parameters); + ->setRichSubject($subject, $richParameters); + $event->setSubject($subject, $parameters); } private function getIcon(IEvent $event) { @@ -260,9 +285,29 @@ class DeckProvider implements IProvider { try { $comment = $this->commentsManager->get((int)$subjectParams['comment']); $event->setParsedMessage($comment->getMessage()); + $params['comment'] =[ + 'type' => 'highlight', + 'id' => $subjectParams['comment'], + 'name' => $comment->getMessage() + ]; } catch (NotFoundException $e) { } - $params['comment'] = $subjectParams['comment']; + } + return $params; + } + + private function parseParamForDuedate($subjectParams, $params, IEvent $event) { + if (array_key_exists('after', $subjectParams) && $event->getSubject() === ActivityManager::SUBJECT_CARD_UPDATE_DUEDATE) { + $userLanguage = $this->config->getUserValue($event->getAuthor(), 'core', 'lang', $this->l10nFactory->findLanguage()); + $userLocale = $this->config->getUserValue($event->getAuthor(), 'core', 'locale', $this->l10nFactory->findLocale()); + $l10n = $this->l10nFactory->get('deck', $userLanguage, $userLocale); + $date = new \DateTime($subjectParams['after']); + $date->setTimezone(new \DateTimeZone(\date_default_timezone_get())); + $params['after'] = [ + 'type' => 'highlight', + 'id' => 'dt:' . $subjectParams['after'], + 'name' => $l10n->l('datetime', $date) + ]; } return $params; } @@ -301,6 +346,6 @@ class DeckProvider implements IProvider { } public function deckUrl($endpoint) { - return $this->urlGenerator->linkToRoute('deck.page.index') . '#!' . $endpoint; + return $this->urlGenerator->linkToRouteAbsolute('deck.page.index') . '#!' . $endpoint; } } diff --git a/lib/Activity/DescriptionSetting.php b/lib/Activity/DescriptionSetting.php new file mode 100644 index 000000000..787647ffa --- /dev/null +++ b/lib/Activity/DescriptionSetting.php @@ -0,0 +1,45 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\Activity; + + +class DescriptionSetting extends Setting { + + /** + * @return string Lowercase a-z and underscore only identifier + * @since 11.0.0 + */ + public function getIdentifier() { + return 'deck_card_description'; + } + + /** + * @return string A translated string + * @since 11.0.0 + */ + public function getName() { + return $this->l->t('A card description inside the Deck app has been changed'); + } + +} diff --git a/lib/Activity/Setting.php b/lib/Activity/Setting.php index 12080f263..9da38530c 100644 --- a/lib/Activity/Setting.php +++ b/lib/Activity/Setting.php @@ -24,8 +24,20 @@ namespace OCA\Deck\Activity; +use OCP\IL10N; + class Setting implements \OCP\Activity\ISetting { + /** @var IL10N */ + protected $l; + + /** + * @param IL10N $l + */ + public function __construct(IL10N $l) { + $this->l = $l; + } + /** * @return string Lowercase a-z and underscore only identifier * @since 11.0.0 @@ -39,7 +51,7 @@ class Setting implements \OCP\Activity\ISetting { * @since 11.0.0 */ public function getName() { - return 'Deck'; + return $this->l->t('Changes in the Deck app'); } /** diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 62fbb19a7..1b28c5e42 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -23,27 +23,43 @@ namespace OCA\Deck\AppInfo; +use Exception; use OCA\Deck\Activity\CommentEventHandler; use OCA\Deck\Db\Acl; use OCA\Deck\Db\AclMapper; use OCA\Deck\Db\AssignedUsersMapper; use OCA\Deck\Db\CardMapper; +use OCA\Deck\Middleware\ExceptionMiddleware; use OCA\Deck\Notification\Notifier; +use OCA\Deck\Service\FullTextSearchService; use OCP\AppFramework\App; use OCA\Deck\Middleware\SharingMiddleware; +use OCP\Collaboration\Resources\IManager; use OCP\Comments\CommentsEntityEvent; +use OCP\FullTextSearch\IFullTextSearchManager; use OCP\IGroup; use OCP\IUser; use OCP\IUserManager; use OCP\IURLGenerator; use OCP\INavigationManager; +use OCP\Util; +use Symfony\Component\EventDispatcher\GenericEvent; class Application extends App { + + /** @var FullTextSearchService */ + private $fullTextSearchService; + + /** @var IFullTextSearchManager */ + private $fullTextSearchManager; + + /** * Application constructor. * * @param array $urlParams + * * @throws \OCP\AppFramework\QueryException */ public function __construct(array $urlParams = array()) { @@ -52,13 +68,13 @@ class Application extends App { $container = $this->getContainer(); $server = $container->getServer(); - $container->registerService('SharingMiddleware', function() use ($server) { - return new SharingMiddleware( + $container->registerService('ExceptionMiddleware', function() use ($server) { + return new ExceptionMiddleware( $server->getLogger(), $server->getConfig() ); }); - $container->registerMiddleWare('SharingMiddleware'); + $container->registerMiddleWare('ExceptionMiddleware'); $container->registerService('databaseType', function($container) { return $container->getServer()->getConfig()->getSystemValue('dbtype', 'sqlite'); @@ -99,8 +115,13 @@ class Application extends App { } }); + $this->registerCollaborationResources(); + } + /** + * @throws \OCP\AppFramework\QueryException + */ public function registerNavigationEntry() { $container = $this->getContainer(); $container->query(INavigationManager::class)->add(function() use ($container) { @@ -125,6 +146,9 @@ class Application extends App { }); } + /** + * @throws \OCP\AppFramework\QueryException + */ public function registerCommentsEntity() { $this->getContainer()->getServer()->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function(CommentsEntityEvent $event) { $event->addEntityCollection('deckCard', function($name) { @@ -141,9 +165,83 @@ class Application extends App { $this->registerCommentsEventHandler(); } + /** + * @throws \OCP\AppFramework\QueryException + */ protected function registerCommentsEventHandler() { $this->getContainer()->getServer()->getCommentsManager()->registerEventHandler(function () { return $this->getContainer()->query(CommentEventHandler::class); }); } + + /** + * @throws \OCP\AppFramework\QueryException + */ + protected function registerCollaborationResources() { + $version = \OC_Util::getVersion()[0]; + if ($version < 16) { + return; + } + + /** + * Register Collaboration ResourceProvider + */ + /** @var IManager $resourceManager */ + $resourceManager = $this->getContainer()->query(IManager::class); + $resourceManager->registerResourceProvider(\OCA\Deck\Collaboration\Resources\ResourceProvider::class); + \OC::$server->getEventDispatcher()->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', function () { + \OCP\Util::addScript('deck', 'build/collections'); + }); + } + + public function registerFullTextSearch() { + if (Util::getVersion()[0] < 16) { + return; + } + + $c = $this->getContainer(); + try { + $this->fullTextSearchService = $c->query(FullTextSearchService::class); + $this->fullTextSearchManager = $c->query(IFullTextSearchManager::class); + } catch (Exception $e) { + return; + } + + if (!$this->fullTextSearchManager->isAvailable()) { + return; + } + + $eventDispatcher = \OC::$server->getEventDispatcher(); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onCreate', function(GenericEvent $e) { + $this->fullTextSearchService->onCardCreated($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onUpdate', function(GenericEvent $e) { + $this->fullTextSearchService->onCardUpdated($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Card::onDelete', function(GenericEvent $e) { + $this->fullTextSearchService->onCardDeleted($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareNew', function(GenericEvent $e) { + $this->fullTextSearchService->onBoardShares($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareEdit', function(GenericEvent $e) { + $this->fullTextSearchService->onBoardShares($e); + } + ); + $eventDispatcher->addListener( + '\OCA\Deck\Board::onShareDelete', function(GenericEvent $e) { + $this->fullTextSearchService->onBoardShares($e); + } + ); + } + } diff --git a/lib/Collaboration/Resources/ResourceProvider.php b/lib/Collaboration/Resources/ResourceProvider.php new file mode 100644 index 000000000..afaa28a4e --- /dev/null +++ b/lib/Collaboration/Resources/ResourceProvider.php @@ -0,0 +1,133 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\Collaboration\Resources; + + +use OCA\Deck\Db\Acl; +use OCA\Deck\Db\Board; +use OCA\Deck\Db\BoardMapper; +use OCA\Deck\Service\PermissionService; +use OCP\AppFramework\Db\DoesNotExistException; +use OCP\AppFramework\Db\MultipleObjectsReturnedException; +use OCP\AppFramework\QueryException; +use OCP\Collaboration\Resources\IManager; +use OCP\Collaboration\Resources\IProvider; +use OCP\Collaboration\Resources\IResource; +use OCP\Collaboration\Resources\ResourceException; +use OCP\IUser; + +class ResourceProvider implements IProvider { + + const RESOURCE_TYPE = 'deck'; + + private $boardMapper; + private $permissionService; + + /** @var array */ + protected $nodes = []; + + public function __construct(BoardMapper $boardMapper, PermissionService $permissionService) { + $this->boardMapper = $boardMapper; + $this->permissionService = $permissionService; + } + + /** + * Get the type of a resource + * + * @param IResource $resource + * @return string + * @since 15.0.0 + */ + public function getType(): string { + return self::RESOURCE_TYPE; + } + + /** + * Get the rich object data of a resource + * + * @param IResource $resource + * @return array + * @throws \OCP\AppFramework\Db\DoesNotExistException + * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException + * @since 16.0.0 + */ + public function getResourceRichObject(IResource $resource): array { + $board = $this->getBoard($resource); + $link = \OC::$server->getURLGenerator()->linkToRoute('deck.page.index') . '#!/board/' . $resource->getId(); + + return [ + 'type' => self::RESOURCE_TYPE, + 'id' => $resource->getId(), + 'name' => $board->getTitle(), + 'link' => $link, + 'iconUrl' => \OC::$server->getURLGenerator()->imagePath('deck', 'deck-dark.svg') + ]; + + } + + /** + * Can a user/guest access the collection + * + * @param IResource $resource + * @param IUser|null $user + * @return bool + * @since 16.0.0 + */ + public function canAccessResource(IResource $resource, ?IUser $user): bool { + if ($resource->getType() !== self::RESOURCE_TYPE || !$user instanceof IUser) { + return false; + } + $board = $this->getBoard($resource); + if ($board === null) { + return false; + } + if ($board->getOwner() === $user->getUID()) { + return true; + } + return $this->permissionService->userCan($board->getAcl(), Acl::PERMISSION_READ, $user->getUID()); + } + + private function getBoard(IResource $resource) { + try { + return $this->boardMapper->find($resource->getId(), false, true); + } catch (DoesNotExistException $e) { + } catch (MultipleObjectsReturnedException $e) { + return null; + } + } + + public function invalidateAccessCache($boardId = null) { + try { + /** @var IManager $resourceManager */ + $resourceManager = \OC::$server->query(IManager::class); + } catch (QueryException $e) { + } + if ($boardId !== null) { + $resource = $resourceManager->getResourceForUser(self::RESOURCE_TYPE, (string)$boardId, null); + $resourceManager->invalidateAccessCacheForResource($resource); + } else { + $resourceManager->invalidateAccessCacheForProvider($this); + } + } +} diff --git a/lib/Controller/BoardApiController.php b/lib/Controller/BoardApiController.php index c4f6ca223..0fc00f322 100644 --- a/lib/Controller/BoardApiController.php +++ b/lib/Controller/BoardApiController.php @@ -24,12 +24,14 @@ namespace OCA\Deck\Controller; +use OCA\Deck\StatusException; use OCP\AppFramework\ApiController; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; use OCA\Deck\Service\BoardService; +use Sabre\HTTP\Util; /** * Class BoardApiController @@ -38,7 +40,7 @@ use OCA\Deck\Service\BoardService; */ class BoardApiController extends ApiController { - private $service; + private $boardService; /** * @param string $appName @@ -48,7 +50,7 @@ class BoardApiController extends ApiController { */ public function __construct($appName, IRequest $request, BoardService $service, $userId) { parent::__construct($appName, $request); - $this->service = $service; + $this->boardService = $service; $this->userId = $userId; } @@ -58,13 +60,18 @@ class BoardApiController extends ApiController { * @NoCSRFRequired * * Return all of the boards that the current user has access to. + * @throws StatusException */ - public function index() { + public function index($details = null) { $modified = $this->request->getHeader('If-Modified-Since'); - if ($modified === '') { - $boards = $this->service->findAll(); + if ($modified === null || $modified === '') { + $boards = $this->boardService->findAll(0, $details); } else { - $boards = $this->service->findAll(strtotime($modified)); + $date = Util::parseHTTPDate($modified); + if (!$date) { + throw new StatusException('Invalid If-Modified-Since header provided.'); + } + $boards = $this->boardService->findAll($date->getTimestamp(), $details); } return new DataResponse($boards, HTTP::STATUS_OK); } @@ -78,7 +85,7 @@ class BoardApiController extends ApiController { * Return the board specified by $this->request->getParam('boardId'). */ public function get() { - $board = $this->service->find($this->request->getParam('boardId')); + $board = $this->boardService->find($this->request->getParam('boardId')); return new DataResponse($board, HTTP::STATUS_OK); } @@ -93,7 +100,7 @@ class BoardApiController extends ApiController { * Create a board with the specified title and color. */ public function create($title, $color) { - $board = $this->service->create($title, $this->userId, $color); + $board = $this->boardService->create($title, $this->userId, $color); return new DataResponse($board, HTTP::STATUS_OK); } @@ -109,7 +116,7 @@ class BoardApiController extends ApiController { * Update a board with the specified boardId, title and color, and archived state. */ public function update($title, $color, $archived = false) { - $board = $this->service->update($this->request->getParam('boardId'), $title, $color, $archived); + $board = $this->boardService->update($this->request->getParam('boardId'), $title, $color, $archived); return new DataResponse($board, HTTP::STATUS_OK); } @@ -122,7 +129,7 @@ class BoardApiController extends ApiController { * Delete the board specified by $boardId. Return the board that was deleted. */ public function delete() { - $board = $this->service->delete($this->request->getParam('boardId')); + $board = $this->boardService->delete($this->request->getParam('boardId')); return new DataResponse($board, HTTP::STATUS_OK); } @@ -135,8 +142,38 @@ class BoardApiController extends ApiController { * Undo the deletion of the board specified by $boardId. */ public function undoDelete() { - $board = $this->service->deleteUndo($this->request->getParam('boardId')); + $board = $this->boardService->deleteUndo($this->request->getParam('boardId')); return new DataResponse($board, HTTP::STATUS_OK); } + /** + * @NoAdminRequired + * @CORS + * @NoCSRFRequired + */ + public function addAcl($boardId, $type, $participant, $permissionEdit, $permissionShare, $permissionManage) { + $acl = $this->boardService->addAcl($boardId, $type, $participant, $permissionEdit, $permissionShare, $permissionManage); + return new DataResponse($acl, HTTP::STATUS_OK); + } + + /** + * @NoAdminRequired + * @CORS + * @NoCSRFRequired + */ + public function updateAcl($aclId, $permissionEdit, $permissionShare, $permissionManage) { + $acl = $this->boardService->updateAcl($aclId, $permissionEdit, $permissionShare, $permissionManage); + return new DataResponse($acl, HTTP::STATUS_OK); + } + + /** + * @NoAdminRequired + * @CORS + * @NoCSRFRequired + */ + public function deleteAcl($aclId) { + $acl = $this->boardService->deleteAcl($aclId); + return new DataResponse($acl, HTTP::STATUS_OK); + } + } diff --git a/lib/Controller/CardApiController.php b/lib/Controller/CardApiController.php index be68dc45f..2c8702745 100644 --- a/lib/Controller/CardApiController.php +++ b/lib/Controller/CardApiController.php @@ -132,13 +132,20 @@ class CardApiController extends ApiController { * @CORS * @NoCSRFRequired * - * Unassign a label to a card. + * Unassign a user from a card */ public function unassignUser($userId) { $card = $this->cardService->unassignUser($this->request->getParam('cardId'), $userId); return new DataResponse($card, HTTP::STATUS_OK); } + /** + * @NoAdminRequired + * @CORS + * @NoCSRFRequired + * + * Assign a user to a card + */ public function assignUser($userId) { $card = $this->cardService->assignUser($this->request->getParam('cardId'), $userId);; return new DataResponse($card, HTTP::STATUS_OK); @@ -149,7 +156,7 @@ class CardApiController extends ApiController { * @CORS * @NoCSRFRequired * - * Unassign a label to a card. + * Reorder cards */ public function reorder($stackId, $order) { $card = $this->cardService->reorder($this->request->getParam('cardId'), $stackId, $order); diff --git a/lib/Controller/ConfigController.php b/lib/Controller/ConfigController.php new file mode 100644 index 000000000..539c19e79 --- /dev/null +++ b/lib/Controller/ConfigController.php @@ -0,0 +1,114 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\Controller; + +use OCA\Deck\Service\DefaultBoardService; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\Http\NotFoundResponse; +use OCP\IConfig; +use OCP\IGroup; +use OCP\IGroupManager; +use OCP\IRequest; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Controller; +use OCP\IL10N; + +class ConfigController extends Controller { + + private $config; + private $userId; + private $groupManager; + + public function __construct( + $AppName, + IRequest $request, + IConfig $config, + IGroupManager $groupManager, + $userId + ) { + parent::__construct($AppName, $request); + + $this->userId = $userId; + $this->groupManager = $groupManager; + $this->config = $config; + } + + /** + * @NoCSRFRequired + */ + public function get() { + $data = [ + 'groupLimit' => $this->getGroupLimit(), + ]; + return new DataResponse($data); + } + + /** + * @NoCSRFRequired + */ + public function setValue($key, $value) { + switch ($key) { + case 'groupLimit': + $result = $this->setGroupLimit($value); + break; + } + if ($result === null) { + return new NotFoundResponse(); + } + return new DataResponse($result); + } + + private function setGroupLimit($value) { + $groups = []; + foreach ($value as $group) { + $groups[] = $group['id']; + } + $data = implode(',', $groups); + $this->config->setAppValue($this->appName, 'groupLimit', $data); + return $groups; + } + + private function getGroupLimitList() { + $value = $this->config->getAppValue($this->appName, 'groupLimit', ''); + $groups = explode(',', $value); + if ($value === '') { + return []; + } + return $groups; + } + + private function getGroupLimit() { + $groups = $this->getGroupLimitList(); + $groups = array_map(function($groupId) { + /** @var IGroup $groups */ + $group = $this->groupManager->get($groupId); + return [ + 'id' => $group->getGID(), + 'displayname' => $group->getDisplayName(), + ]; + }, $groups); + return $groups; + } + +} diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index e457c154f..0842ef14b 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -24,6 +24,7 @@ namespace OCA\Deck\Controller; use OCA\Deck\Service\DefaultBoardService; +use OCA\Deck\Service\PermissionService; use OCP\IRequest; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Controller; @@ -32,13 +33,15 @@ use OCP\IL10N; class PageController extends Controller { private $defaultBoardService; + private $permissionService; private $userId; private $l10n; public function __construct( - $AppName, - IRequest $request, + $AppName, + IRequest $request, DefaultBoardService $defaultBoardService, + PermissionService $permissionService, IL10N $l10n, $userId ) { @@ -46,6 +49,7 @@ class PageController extends Controller { $this->userId = $userId; $this->defaultBoardService = $defaultBoardService; + $this->permissionService = $permissionService; $this->l10n = $l10n; } @@ -60,10 +64,13 @@ class PageController extends Controller { $params = [ 'user' => $this->userId, 'maxUploadSize' => (int)\OCP\Util::uploadLimit(), + 'canCreate' => $this->permissionService->canCreate() ]; - + if ($this->defaultBoardService->checkFirstRun($this->userId, $this->appName)) { - $this->defaultBoardService->createDefaultBoard($this->l10n->t('Personal'), $this->userId, '000000'); + if ($this->permissionService->canCreate()) { + $this->defaultBoardService->createDefaultBoard($this->l10n->t('Personal'), $this->userId, '000000'); + } } return new TemplateResponse('deck', 'main', $params); diff --git a/lib/Controller/StackApiController.php b/lib/Controller/StackApiController.php index 021fae9c2..a9cec08cb 100644 --- a/lib/Controller/StackApiController.php +++ b/lib/Controller/StackApiController.php @@ -24,12 +24,14 @@ namespace OCA\Deck\Controller; +use OCA\Deck\StatusException; use OCP\AppFramework\ApiController; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; use OCA\Deck\Service\StackService; use OCA\Deck\Service\BoardService; +use Sabre\HTTP\Util; /** * Class StackApiController @@ -62,8 +64,12 @@ class StackApiController extends ApiController { public function index() { $since = 0; $modified = $this->request->getHeader('If-Modified-Since'); - if ($modified !== '') { - $since = strtotime($modified); + if ($modified !== null && $modified !== '') { + $date = Util::parseHTTPDate($modified); + if (!$date) { + throw new StatusException('Invalid If-Modified-Since header provided.'); + } + $since = $date->getTimestamp(); } $stacks = $this->stackService->findAll($this->request->getParam('boardId'), $since); return new DataResponse($stacks, HTTP::STATUS_OK); diff --git a/lib/Cron/CardDescriptionActivity.php b/lib/Cron/CardDescriptionActivity.php new file mode 100644 index 000000000..bdd4226f1 --- /dev/null +++ b/lib/Cron/CardDescriptionActivity.php @@ -0,0 +1,74 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + + +namespace OCA\Deck\Cron; + +use OC\BackgroundJob\Job; +use OCA\Deck\Activity\ActivityManager; +use OCA\Deck\Activity\ChangeSet; +use OCA\Deck\Db\AttachmentMapper; +use OCA\Deck\Db\BoardMapper; +use OCA\Deck\Db\Card; +use OCA\Deck\Db\CardMapper; +use OCA\Deck\InvalidAttachmentType; +use OCA\Deck\Service\AttachmentService; +use OCA\Deck\Service\CardService; + +class CardDescriptionActivity extends Job { + + /** @var ActivityManager */ + private $activityManager; + /** @var CardMapper */ + private $cardMapper; + + public function __construct(ActivityManager $activityManager, CardMapper $cardMapper) { + $this->activityManager = $activityManager; + $this->cardMapper = $cardMapper; + } + + /** + * @param $argument + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function run($argument) { + $cards = $this->cardMapper->findUnexposedDescriptionChances(); + foreach ($cards as $card) { + $this->activityManager->triggerEvent( + ActivityManager::DECK_OBJECT_CARD, + $card, + ActivityManager::SUBJECT_CARD_UPDATE_DESCRIPTION, + [ + 'before' => $card->getDescriptionPrev(), + 'after' => $card->getDescription() + ], + $card->getLastEditor() + ); + + $card->setDescriptionPrev(null); + $card->setLastEditor(null); + $this->cardMapper->update($card, false); + } + } + +} diff --git a/lib/Db/Acl.php b/lib/Db/Acl.php index b0b8cfc07..1aeea0e92 100644 --- a/lib/Db/Acl.php +++ b/lib/Db/Acl.php @@ -32,6 +32,7 @@ class Acl extends RelationalEntity { const PERMISSION_TYPE_USER = 0; const PERMISSION_TYPE_GROUP = 1; + const PERMISSION_TYPE_CIRCLE = 7; protected $participant; protected $type; diff --git a/lib/Db/AssignedUsers.php b/lib/Db/AssignedUsers.php index 425f2f184..69be2ec4e 100644 --- a/lib/Db/AssignedUsers.php +++ b/lib/Db/AssignedUsers.php @@ -33,8 +33,8 @@ class AssignedUsers extends RelationalEntity implements JsonSerializable { public function __construct() { $this->addType('id', 'integer'); - $this->addType('card_id', 'integer'); + $this->addType('cardId', 'integer'); $this->addResolvable('participant'); } -} \ No newline at end of file +} diff --git a/lib/Db/Board.php b/lib/Db/Board.php index fabf39061..ae26fe3ca 100644 --- a/lib/Db/Board.php +++ b/lib/Db/Board.php @@ -34,6 +34,7 @@ class Board extends RelationalEntity { protected $permissions = []; protected $users = []; protected $shared; + protected $stacks = []; protected $deletedAt = 0; protected $lastModified = 0; @@ -48,6 +49,7 @@ class Board extends RelationalEntity { $this->addRelation('shared'); $this->addRelation('users'); $this->addRelation('permissions'); + $this->addRelation('stacks'); $this->addResolvable('owner'); $this->shared = -1; } diff --git a/lib/Db/BoardMapper.php b/lib/Db/BoardMapper.php index fddff1ac6..363916172 100644 --- a/lib/Db/BoardMapper.php +++ b/lib/Db/BoardMapper.php @@ -24,6 +24,7 @@ namespace OCA\Deck\Db; use OCP\AppFramework\Db\DoesNotExistException; +use OCP\AppFramework\QueryException; use OCP\IDBConnection; use OCP\IUserManager; use OCP\IGroupManager; @@ -36,6 +37,8 @@ class BoardMapper extends DeckMapper implements IPermissionMapper { private $userManager; private $groupManager; + private $circlesEnabled; + public function __construct( IDBConnection $db, LabelMapper $labelMapper, @@ -50,6 +53,8 @@ class BoardMapper extends DeckMapper implements IPermissionMapper { $this->stackMapper = $stackMapper; $this->userManager = $userManager; $this->groupManager = $groupManager; + + $this->circlesEnabled = \OC::$server->getAppManager()->isEnabledForUser('circles'); } @@ -136,6 +141,35 @@ class BoardMapper extends DeckMapper implements IPermissionMapper { return $entries; } + public function findAllByCircles($userId, $limit = null, $offset = null) { + if (!$this->circlesEnabled) { + return []; + } + $circles = array_map(function($circle) { + return $circle->getUniqueId(); + }, \OCA\Circles\Api\v1\Circles::joinedCircles('', true)); + if (count($circles) === 0) { + return []; + } + + $sql = 'SELECT boards.id, title, owner, color, archived, deleted_at, 2 as shared, last_modified FROM `*PREFIX*deck_boards` as boards ' . + 'INNER JOIN `*PREFIX*deck_board_acl` as acl ON boards.id=acl.board_id WHERE owner != ? AND type=? AND ('; + for ($i = 0, $iMax = count($circles); $i < $iMax; $i++) { + $sql .= 'acl.participant = ? '; + if (count($circles) > 1 && $i < count($circles) - 1) { + $sql .= ' OR '; + } + } + $sql .= ');'; + $entries = $this->findEntities($sql, array_merge([$userId, Acl::PERMISSION_TYPE_CIRCLE], $circles), $limit, $offset); + /* @var Board $entry */ + foreach ($entries as $entry) { + $acl = $this->aclMapper->findAll($entry->id); + $entry->setAcl($acl); + } + return $entries; + } + public function findAll() { $sql = 'SELECT id from *PREFIX*deck_boards;'; return $this->findEntities($sql); @@ -200,6 +234,16 @@ class BoardMapper extends DeckMapper implements IPermissionMapper { \OC::$server->getLogger()->debug('Group ' . $acl->getId() . ' not found when mapping acl ' . $acl->getParticipant()); return null; } + if ($acl->getType() === Acl::PERMISSION_TYPE_CIRCLE) { + try { + $circle = \OCA\Circles\Api\v1\Circles::detailsCircle($acl->getParticipant(), true); + if ($circle) { + return new Circle($circle); + } + } catch (\Exception $e) { + } + return null; + } throw new \Exception('Unknown permission type for mapping Acl'); }); } diff --git a/lib/Db/Card.php b/lib/Db/Card.php index 91b580ada..7dbf22738 100644 --- a/lib/Db/Card.php +++ b/lib/Db/Card.php @@ -29,9 +29,11 @@ class Card extends RelationalEntity { protected $title; protected $description; + protected $descriptionPrev; protected $stackId; protected $type; protected $lastModified; + protected $lastEditor; protected $createdAt; protected $labels; protected $assignedUsers; @@ -113,6 +115,7 @@ class Card extends RelationalEntity { } $json['duedate'] = $this->getDuedate(true); unset($json['notified']); + unset($json['descriptionPrev']); return $json; } diff --git a/lib/Db/CardMapper.php b/lib/Db/CardMapper.php index 9cbcc49b6..554dee465 100644 --- a/lib/Db/CardMapper.php +++ b/lib/Db/CardMapper.php @@ -147,6 +147,11 @@ class CardMapper extends DeckMapper implements IPermissionMapper { return $this->findEntities($sql); } + public function findUnexposedDescriptionChances() { + $sql = 'SELECT id,title,duedate,notified,description_prev,last_editor,description from `*PREFIX*deck_cards` WHERE last_editor IS NOT NULL AND description_prev IS NOT NULL'; + return $this->findEntities($sql); + } + public function delete(Entity $entity) { // delete assigned labels $this->labelMapper->deleteLabelAssignmentsForCard($entity->getId()); diff --git a/lib/Db/ChangeHelper.php b/lib/Db/ChangeHelper.php index f90545ebe..4bcc6b4b1 100644 --- a/lib/Db/ChangeHelper.php +++ b/lib/Db/ChangeHelper.php @@ -41,11 +41,13 @@ class ChangeHelper { public function __construct( IDBConnection $db, ICacheFactory $cacheFactory, - IRequest $request + IRequest $request, + $userId ) { $this->db = $db; $this->cache = $cacheFactory->createDistributed('deck_changes'); $this->request = $request; + $this->userId = $userId; } public function boardChanged($boardId) { @@ -61,8 +63,8 @@ class ChangeHelper { $etag = md5($time . microtime()); $this->cache->set(self::TYPE_CARD . '-' .$cardId, $etag); if ($updateCard) { - $sql = 'UPDATE `*PREFIX*deck_cards` SET `last_modified` = ? WHERE `id` = ?'; - $this->db->executeUpdate($sql, [time(), $cardId]); + $sql = 'UPDATE `*PREFIX*deck_cards` SET `last_modified` = ?, `last_editor` = ? WHERE `id` = ?'; + $this->db->executeUpdate($sql, [time(), $this->userId, $cardId]); } $sql = 'SELECT s.board_id as id, c.stack_id as stack_id FROM `*PREFIX*deck_stacks` as s inner join `*PREFIX*deck_cards` as c ON c.stack_id = s.id WHERE c.id = ?'; diff --git a/lib/Db/Circle.php b/lib/Db/Circle.php new file mode 100644 index 000000000..6ea1e39eb --- /dev/null +++ b/lib/Db/Circle.php @@ -0,0 +1,45 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\Db; + + +class Circle extends RelationalObject { + + /** @var \OCA\Circles\Model\Circle */ + protected $object; + + public function __construct(\OCA\Circles\Model\Circle $circle) { + $primaryKey = $circle->getUniqueId(); + parent::__construct($primaryKey, $circle); + } + + public function getObjectSerialization() { + return [ + 'uid' => $this->object->getUniqueId(), + 'displayname' => $this->object->getName(), + 'typeString' => $this->object->getTypeString(), + 'circleOwner' => $this->object->getOwner() + ]; + } +} \ No newline at end of file diff --git a/lib/Db/Label.php b/lib/Db/Label.php index 650af4162..deeba32f9 100644 --- a/lib/Db/Label.php +++ b/lib/Db/Label.php @@ -5,20 +5,20 @@ * @author Julius Härtl * * @license GNU AGPL version 3 or any later version - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * + * */ namespace OCA\Deck\Db; @@ -29,8 +29,12 @@ class Label extends RelationalEntity { protected $color; protected $boardId; protected $cardId; - + protected $lastModified; + public function __construct() { $this->addType('id', 'integer'); + $this->addType('boardId', 'integer'); + $this->addType('cardId', 'integer'); + $this->addType('lastModified', 'integer'); } -} \ No newline at end of file +} diff --git a/lib/Db/LabelMapper.php b/lib/Db/LabelMapper.php index 3107b4310..f147d02e3 100644 --- a/lib/Db/LabelMapper.php +++ b/lib/Db/LabelMapper.php @@ -23,6 +23,7 @@ namespace OCA\Deck\Db; +use OCP\AppFramework\Db\Entity; use OCP\IDBConnection; @@ -45,7 +46,7 @@ class LabelMapper extends DeckMapper implements IPermissionMapper { } public function findAssignedLabelsForCard($cardId, $limit = null, $offset = null) { - $sql = 'SELECT l.* FROM `*PREFIX*deck_assigned_labels` as al INNER JOIN *PREFIX*deck_labels as l ON l.id = al.label_id WHERE `card_id` = ? ORDER BY l.id'; + $sql = 'SELECT l.*,card_id FROM `*PREFIX*deck_assigned_labels` as al INNER JOIN *PREFIX*deck_labels as l ON l.id = al.label_id WHERE `card_id` = ? ORDER BY l.id'; return $this->findEntities($sql, [$cardId], $limit, $offset); } public function findAssignedLabelsForBoard($boardId, $limit = null, $offset = null) { @@ -54,6 +55,19 @@ class LabelMapper extends DeckMapper implements IPermissionMapper { return $this->findEntities($sql, [$boardId], $limit, $offset); } + public function insert(Entity $entity) { + $entity->setLastModified(time()); + return parent::insert($entity); + } + + public function update(Entity $entity, $updateModified = true) { + if ($updateModified) { + $entity->setLastModified(time()); + } + return parent::update($entity); + } + + public function getAssignedLabelsForBoard($boardId) { $labels = $this->findAssignedLabelsForBoard($boardId); $result = array(); diff --git a/lib/Middleware/SharingMiddleware.php b/lib/Middleware/ExceptionMiddleware.php similarity index 81% rename from lib/Middleware/SharingMiddleware.php rename to lib/Middleware/ExceptionMiddleware.php index ec6eb81f1..96d2a1b65 100644 --- a/lib/Middleware/SharingMiddleware.php +++ b/lib/Middleware/ExceptionMiddleware.php @@ -23,8 +23,8 @@ namespace OCA\Deck\Middleware; +use OCA\Deck\Controller\PageController; use OCA\Deck\StatusException; -use OCA\Deck\BadRequestException; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Middleware; use OCP\AppFramework\Http\JSONResponse; @@ -33,7 +33,7 @@ use OCP\Util; use OCP\IConfig; -class SharingMiddleware extends Middleware { +class ExceptionMiddleware extends Middleware { /** @var ILogger */ private $logger; @@ -71,6 +71,20 @@ class SharingMiddleware extends Middleware { ], $exception->getStatus()); } + if (strpos(get_class($controller), 'OCA\\Deck\\Controller\\') === 0) { + $response = [ + 'status' => 500, + 'message' => $exception->getMessage() + ]; + if ($this->config->getSystemValue('loglevel', Util::WARN) === Util::DEBUG) { + $this->logger->logException($exception); + } + if ($this->config->getSystemValue('debug', true) === true) { + $response['exception'] = (array) $exception; + } + return new JSONResponse($response, 500); + } + // uncatched DoesNotExistExceptions will be thrown when the main entity is not found // we return a 403 so we don't leak information over existing entries // TODO: At some point those should properly be catched in the service classes @@ -84,4 +98,4 @@ class SharingMiddleware extends Middleware { throw $exception; } -} \ No newline at end of file +} diff --git a/lib/Notification/NotificationHelper.php b/lib/Notification/NotificationHelper.php index 5de17fe1f..b47c02832 100644 --- a/lib/Notification/NotificationHelper.php +++ b/lib/Notification/NotificationHelper.php @@ -95,6 +95,15 @@ class NotificationHelper { $this->cardMapper->markNotified($card); } + public function markDuedateAsRead($card) { + $notification = $this->notificationManager->createNotification(); + $notification + ->setApp('deck') + ->setObject('card', $card->getId()) + ->setSubject('card-overdue', []); + $this->notificationManager->markProcessed($notification); + } + public function sendCardAssigned($card, $userId) { $boardId = $this->cardMapper->findBoardId($card->getId()); $board = $this->getBoard($boardId); diff --git a/lib/Provider/DeckProvider.php b/lib/Provider/DeckProvider.php new file mode 100644 index 000000000..fcec2b456 --- /dev/null +++ b/lib/Provider/DeckProvider.php @@ -0,0 +1,281 @@ + + * @copyright 2019 + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + + +namespace OCA\Deck\Provider; + + +use OC\FullTextSearch\Model\IndexDocument; +use OC\FullTextSearch\Model\SearchTemplate; +use OCA\Deck\Service\FullTextSearchService; +use OCP\AppFramework\Db\DoesNotExistException; +use OCP\AppFramework\Db\MultipleObjectsReturnedException; +use OCP\FullTextSearch\IFullTextSearchPlatform; +use OCP\FullTextSearch\IFullTextSearchProvider; +use OCP\FullTextSearch\Model\IIndex; +use OCP\FullTextSearch\Model\IIndexDocument; +use OCP\FullTextSearch\Model\IIndexOptions; +use OCP\FullTextSearch\Model\IRunner; +use OCP\FullTextSearch\Model\ISearchRequest; +use OCP\FullTextSearch\Model\ISearchResult; +use OCP\FullTextSearch\Model\ISearchTemplate; +use OCP\IL10N; +use OCP\IURLGenerator; + + +/** + * Class DeckProvider + * + * @package OCA\Deck\Provider + */ +class DeckProvider implements IFullTextSearchProvider { + + + const DECK_PROVIDER_ID = 'deck'; + + + /** @var IL10N */ + private $l10n; + + /** @var IUrlGenerator */ + private $urlGenerator; + + /** @var FullTextSearchService */ + private $fullTextSearchService; + + + /** @var IRunner */ + private $runner; + + /** @var IIndexOptions */ + private $indexOptions = []; + + + /** + * DeckProvider constructor. + * + * @param IL10N $l10n + * @param IUrlGenerator $urlGenerator + * @param FullTextSearchService $fullTextSearchService + */ + public function __construct( + IL10N $l10n, IUrlGenerator $urlGenerator, FullTextSearchService $fullTextSearchService + ) { + $this->l10n = $l10n; + $this->urlGenerator = $urlGenerator; + $this->fullTextSearchService = $fullTextSearchService; + } + + + /** + * return unique id of the provider + */ + public function getId(): string { + return self::DECK_PROVIDER_ID; + } + + + /** + * return name of the provider + */ + public function getName(): string { + return 'Deck'; + } + + + /** + * @return array + */ + public function getConfiguration(): array { + return []; + } + + + /** + * @param IRunner $runner + */ + public function setRunner(IRunner $runner) { + $this->runner = $runner; + } + + + /** + * @param IIndexOptions $options + */ + public function setIndexOptions(IIndexOptions $options) { + $this->indexOptions = $options; + } + + + /** + * @return ISearchTemplate + */ + public function getSearchTemplate(): ISearchTemplate { + $template = new SearchTemplate('icon-deck', 'icons'); + + return $template; + } + + + /** + * + */ + public function loadProvider() { + } + + + + /** + * @param string $userId + * + * @return string[] + */ + public function generateChunks(string $userId): array { + return []; + } + + + /** + * @param string $userId + * @param string $chunk + * + * @return IIndexDocument[] + */ + public function generateIndexableDocuments(string $userId, string $chunk): array { + $cards = $this->fullTextSearchService->getCardsFromUser($userId); + + $documents = []; + foreach ($cards as $card) { + $documents[] = $this->fullTextSearchService->generateIndexDocumentFromCard($card); + } + + return $documents; + } + + + /** + * @param IIndexDocument $document + * + * @throws DoesNotExistException + * @throws MultipleObjectsReturnedException + */ + public function fillIndexDocument(IIndexDocument $document) { + $this->fullTextSearchService->fillIndexDocument($document); + $this->updateRunnerInfo('info', $document->getTitle()); + } + + + /** + * @param IIndexDocument $document + * + * @return bool + */ + public function isDocumentUpToDate(IIndexDocument $document): bool { + return false; + } + + + /** + * @param IIndex $index + * + * @return IIndexDocument + * @throws DoesNotExistException + * @throws MultipleObjectsReturnedException + */ + public function updateDocument(IIndex $index): IIndexDocument { + $document = new IndexDocument(DeckProvider::DECK_PROVIDER_ID, $index->getDocumentId()); + $document->setIndex($index); + + $this->fullTextSearchService->fillIndexDocument($document); + + return $document; + } + + + /** + * @param IFullTextSearchPlatform $platform + */ + public function onInitializingIndex(IFullTextSearchPlatform $platform) { + } + + + /** + * @param IFullTextSearchPlatform $platform + */ + public function onResettingIndex(IFullTextSearchPlatform $platform) { + } + + + /** + * not used yet + */ + public function unloadProvider() { + } + + + /** + * before a search, improve the request + * + * @param ISearchRequest $request + */ + public function improveSearchRequest(ISearchRequest $request) { + } + + + /** + * after a search, improve results + * + * @param ISearchResult $searchResult + */ + public function improveSearchResult(ISearchResult $searchResult) { + foreach ($searchResult->getDocuments() as $document) { + try { + $board = + $this->fullTextSearchService->getBoardFromCardId((int)$document->getId()); + $path = '#!/board/' . $board->getId() . '//card/' . $document->getId(); + $document->setLink($this->urlGenerator->linkToRoute('deck.page.index') . $path); + } catch (DoesNotExistException $e) { + } catch (MultipleObjectsReturnedException $e) { + } + } + } + + + /** + * @param string $info + * @param string $value + */ + private function updateRunnerInfo(string $info, string $value) { + if ($this->runner === null) { + return; + } + + $this->runner->setInfo($info, $value); + } + +} + diff --git a/lib/Service/BoardService.php b/lib/Service/BoardService.php index 3eba4ece6..bfd1cd128 100644 --- a/lib/Service/BoardService.php +++ b/lib/Service/BoardService.php @@ -3,6 +3,7 @@ * @copyright Copyright (c) 2016 Julius Härtl * * @author Julius Härtl + * @author Maxence Lange * * @license GNU AGPL version 3 or any later version * @@ -25,12 +26,15 @@ namespace OCA\Deck\Service; use OCA\Deck\Activity\ActivityManager; use OCA\Deck\Activity\ChangeSet; +use OCA\Deck\Collaboration\Resources\ResourceProvider; use OCA\Deck\Db\Acl; use OCA\Deck\Db\AclMapper; use OCA\Deck\Db\AssignedUsersMapper; use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\IPermissionMapper; use OCA\Deck\Db\Label; +use OCA\Deck\Db\StackMapper; +use OCA\Deck\NoPermissionException; use OCA\Deck\Notification\NotificationHelper; use OCP\AppFramework\Db\DoesNotExistException; use OCP\IGroupManager; @@ -40,11 +44,14 @@ use OCA\Deck\Db\BoardMapper; use OCA\Deck\Db\LabelMapper; use OCP\IUserManager; use OCA\Deck\BadRequestException; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\GenericEvent; class BoardService { private $boardMapper; + private $stackMapper; private $labelMapper; private $aclMapper; private $l10n; @@ -55,10 +62,13 @@ class BoardService { private $groupManager; private $userId; private $activityManager; + /** @var EventDispatcherInterface */ + private $eventDispatcher; private $changeHelper; public function __construct( BoardMapper $boardMapper, + StackMapper $stackMapper, IL10N $l10n, LabelMapper $labelMapper, AclMapper $aclMapper, @@ -68,10 +78,12 @@ class BoardService { IUserManager $userManager, IGroupManager $groupManager, ActivityManager $activityManager, + EventDispatcherInterface $eventDispatcher, ChangeHelper $changeHelper, $userId ) { $this->boardMapper = $boardMapper; + $this->stackMapper = $stackMapper; $this->labelMapper = $labelMapper; $this->aclMapper = $aclMapper; $this->l10n = $l10n; @@ -81,6 +93,7 @@ class BoardService { $this->userManager = $userManager; $this->groupManager = $groupManager; $this->activityManager = $activityManager; + $this->eventDispatcher = $eventDispatcher; $this->changeHelper = $changeHelper; $this->userId = $userId; } @@ -88,12 +101,14 @@ class BoardService { /** * @return array */ - public function findAll($since = -1) { + public function findAll($since = 0, $details = null) { $userInfo = $this->getBoardPrerequisites(); $userBoards = $this->boardMapper->findAllByUser($userInfo['user'], null, null, $since); $groupBoards = $this->boardMapper->findAllByGroups($userInfo['user'], $userInfo['groups'],null, null, $since); - $complete = array_merge($userBoards, $groupBoards); + $circleBoards = $this->boardMapper->findAllByCircles($userInfo['user'], null, null, $since); + $complete = array_merge($userBoards, $groupBoards, $circleBoards); $result = []; + /** @var Board $item */ foreach ($complete as &$item) { if (!array_key_exists($item->getId(), $result)) { $this->boardMapper->mapOwner($item); @@ -102,6 +117,11 @@ class BoardService { $this->boardMapper->mapAcl($acl); } } + if ($details !== null) { + $this->enrichWithStacks($item); + $this->enrichWithLabels($item); + $this->enrichWithUsers($item); + } $permissions = $this->permissionService->matchPermissions($item); $item->setPermissions([ 'PERMISSION_READ' => $permissions[Acl::PERMISSION_READ], @@ -145,8 +165,7 @@ class BoardService { 'PERMISSION_MANAGE' => $permissions[Acl::PERMISSION_MANAGE], 'PERMISSION_SHARE' => $permissions[Acl::PERMISSION_SHARE] ]); - $boardUsers = $this->permissionService->findUsers($boardId); - $board->setUsers(array_values($boardUsers)); + $this->enrichWithUsers($board); return $board; } @@ -249,6 +268,10 @@ class BoardService { throw new BadRequestException('color must be provided'); } + if (!$this->permissionService->canCreate()) { + throw new NoPermissionException('Creating boards has been disabled for your account.'); + } + $board = new Board(); $board->setTitle($title); $board->setOwner($userId); @@ -281,8 +304,15 @@ class BoardService { ]); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $new_board, ActivityManager::SUBJECT_BOARD_CREATE); $this->changeHelper->boardChanged($new_board->getId()); - return $new_board; + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onCreate', + new GenericEvent( + null, ['id' => $new_board->getId(), 'userId' => $userId, 'board' => $new_board] + ) + ); + + return $new_board; } /** @@ -301,10 +331,18 @@ class BoardService { $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ); $board = $this->find($id); + if ($board->getDeletedAt() > 0) { + throw new BadRequestException('This board has already been deleted'); + } $board->setDeletedAt(time()); $board = $this->boardMapper->update($board); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $board, ActivityManager::SUBJECT_BOARD_DELETE); $this->changeHelper->boardChanged($board->getId()); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onDelete', new GenericEvent(null, ['id' => $id]) + ); + return $board; } @@ -327,6 +365,11 @@ class BoardService { $board = $this->boardMapper->update($board); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $board, ActivityManager::SUBJECT_BOARD_RESTORE); $this->changeHelper->boardChanged($board->getId()); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onUpdate', new GenericEvent(null, ['id' => $id, 'board' => $board]) + ); + return $board; } @@ -345,7 +388,13 @@ class BoardService { $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ); $board = $this->find($id); - return $this->boardMapper->delete($board); + $delete = $this->boardMapper->delete($board); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onDelete', new GenericEvent(null, ['id' => $id]) + ); + + return $delete; } /** @@ -388,6 +437,11 @@ class BoardService { $this->boardMapper->mapOwner($board); $this->activityManager->triggerUpdateEvents(ActivityManager::DECK_OBJECT_BOARD, $changes, ActivityManager::SUBJECT_BOARD_UPDATE); $this->changeHelper->boardChanged($board->getId()); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onUpdate', new GenericEvent(null, ['id' => $id, 'board' => $board]) + ); + return $board; } @@ -417,15 +471,15 @@ class BoardService { throw new BadRequestException('participant must be provided'); } - if ($edit === false || $edit === null) { + if ($edit === null) { throw new BadRequestException('edit must be provided'); } - if ($share === false || $share === null) { + if ($share === null) { throw new BadRequestException('share must be provided'); } - if ($manage === false || $manage === null) { + if ($manage === null) { throw new BadRequestException('manage must be provided'); } @@ -445,6 +499,20 @@ class BoardService { $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $newAcl, ActivityManager::SUBJECT_BOARD_SHARE); $this->boardMapper->mapAcl($newAcl); $this->changeHelper->boardChanged($boardId); + + // TODO: use the dispatched event for this + $version = \OC_Util::getVersion()[0]; + if ($version >= 16) { + try { + $resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class); + $resourceProvider->invalidateAccessCache($boardId); + } catch (\Exception $e) {} + } + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onShareNew', new GenericEvent(null, ['id' => $newAcl->getId(), 'acl' => $newAcl, 'boardId' => $boardId]) + ); + return $newAcl; } @@ -486,6 +554,11 @@ class BoardService { $this->boardMapper->mapAcl($acl); $board = $this->aclMapper->update($acl); $this->changeHelper->boardChanged($acl->getBoardId()); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onShareEdit', new GenericEvent(null, ['id' => $id, 'boardId' => $acl->getBoardId(), 'acl' => $acl]) + ); + return $board; } @@ -515,7 +588,49 @@ class BoardService { } $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $acl, ActivityManager::SUBJECT_BOARD_UNSHARE); $this->changeHelper->boardChanged($acl->getBoardId()); - return $this->aclMapper->delete($acl); + + $version = \OC_Util::getVersion()[0]; + if ($version >= 16) { + try { + $resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class); + $resourceProvider->invalidateAccessCache($acl->getBoardId()); + } catch (\Exception $e) {} + } + $delete = $this->aclMapper->delete($acl); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Board::onShareDelete', new GenericEvent(null, ['id' => $id, 'boardId' => $acl->getBoardId(), 'acl' => $acl]) + ); + + return $delete; + } + + private function enrichWithStacks($board, $since = -1) { + $stacks = $this->stackMapper->findAll($board->getId(), null, null, $since); + + if(\count($stacks) === 0) { + return; + } + + $board->setStacks($stacks); + } + + private function enrichWithLabels($board, $since = -1) { + $labels = $this->labelMapper->findAll($board->getId(), null, null, $since); + + if(\count($labels) === 0) { + return; + } + + $board->setLabels($labels); + } + + private function enrichWithUsers($board, $since = -1) { + $boardUsers = $this->permissionService->findUsers($board->getId()); + if(\count($boardUsers) === 0) { + return; + } + $board->setUsers(array_values($boardUsers)); } } diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php index 0d7e7928e..58b8fc2ba 100644 --- a/lib/Service/CardService.php +++ b/lib/Service/CardService.php @@ -3,6 +3,7 @@ * @copyright Copyright (c) 2016 Julius Härtl * * @author Julius Härtl + * @author Maxence Lange * * @license GNU AGPL version 3 or any later version * @@ -40,6 +41,8 @@ use OCA\Deck\StatusException; use OCA\Deck\BadRequestException; use OCP\Comments\ICommentsManager; use OCP\IUserManager; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\GenericEvent; class CardService { @@ -56,6 +59,8 @@ class CardService { private $activityManager; private $commentsManager; private $changeHelper; + /** @var EventDispatcherInterface */ + private $eventDispatcher; private $userManager; public function __construct( @@ -72,6 +77,7 @@ class CardService { ICommentsManager $commentsManager, IUserManager $userManager, ChangeHelper $changeHelper, + EventDispatcherInterface $eventDispatcher, $userId ) { $this->cardMapper = $cardMapper; @@ -87,11 +93,13 @@ class CardService { $this->commentsManager = $commentsManager; $this->userManager = $userManager; $this->changeHelper = $changeHelper; + $this->eventDispatcher = $eventDispatcher; $this->currentUser = $userId; } public function enrich($card) { $cardId = $card->getId(); + $this->cardMapper->mapOwner($card); $card->setAssignedUsers($this->assignedUsersMapper->find($cardId)); $card->setLabels($this->labelMapper->findAssignedLabelsForCard($cardId)); $card->setAttachmentCount($this->attachmentService->count($cardId)); @@ -182,6 +190,14 @@ class CardService { $card = $this->cardMapper->insert($card); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_CREATE); $this->changeHelper->cardChanged($card->getId(), false); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onCreate', + new GenericEvent( + null, ['id' => $card->getId(), 'card' => $card, 'userId' => $owner, 'stackId' => $stackId] + ) + ); + return $card; } @@ -209,6 +225,11 @@ class CardService { $this->cardMapper->update($card); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_DELETE); $this->changeHelper->cardChanged($card->getId(), false); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onDelete', new GenericEvent(null, ['id' => $id, 'card' => $card]) + ); + return $card; } @@ -259,18 +280,46 @@ class CardService { throw new StatusException('Operation not allowed. This card is archived.'); } $changes = new ChangeSet($card); + if ($card->getLastEditor() !== $this->currentUser && $card->getLastEditor() !== null) { + $this->activityManager->triggerEvent( + ActivityManager::DECK_OBJECT_CARD, + $card, + ActivityManager::SUBJECT_CARD_UPDATE_DESCRIPTION, + [ + 'before' => $card->getDescriptionPrev(), + 'after' => $card->getDescription() + ], + $card->getLastEditor() + ); + + $card->setDescriptionPrev($card->getDescription()); + $card->setLastEditor($this->currentUser); + } $card->setTitle($title); $card->setStackId($stackId); $card->setType($type); $card->setOrder($order); $card->setOwner($owner); - $card->setDescription($description); $card->setDuedate($duedate); $card->setDeletedAt($deletedAt); + + // Trigger update events before setting description as it is handled separately $changes->setAfter($card); - $card = $this->cardMapper->update($card); $this->activityManager->triggerUpdateEvents(ActivityManager::DECK_OBJECT_CARD, $changes, ActivityManager::SUBJECT_CARD_UPDATE); - $this->changeHelper->cardChanged($card->getId(), false); + + if ($card->getDescriptionPrev() === null) { + $card->setDescriptionPrev($card->getDescription()); + } + $card->setDescription($description); + + + $card = $this->cardMapper->update($card); + $this->changeHelper->cardChanged($card->getId(), true); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $id, 'card' => $card]) + ); + return $card; } @@ -304,7 +353,13 @@ class CardService { } $card->setTitle($title); $this->changeHelper->cardChanged($card->getId(), false); - return $this->cardMapper->update($card); + $update = $this->cardMapper->update($card); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $id, 'card' => $card]) + ); + + return $update; } /** @@ -384,8 +439,14 @@ class CardService { $card = $this->cardMapper->find($id); $card->setArchived(true); $newCard = $this->cardMapper->update($card); + $this->notificationHelper->markDuedateAsRead($card); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_ARCHIVE); $this->changeHelper->cardChanged($id, false); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $id, 'card' => $card]) + ); + return $newCard; } @@ -413,6 +474,11 @@ class CardService { $newCard = $this->cardMapper->update($card); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_UNARCHIVE); $this->changeHelper->cardChanged($id, false); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $id, 'card' => $card]) + ); + return $newCard; } @@ -447,6 +513,10 @@ class CardService { $this->cardMapper->assignLabel($cardId, $labelId); $this->changeHelper->cardChanged($cardId, false); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_LABEL_ASSIGN, ['label' => $label]); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $cardId, 'card' => $card]) + ); } /** @@ -480,6 +550,10 @@ class CardService { $this->cardMapper->removeLabel($cardId, $labelId); $this->changeHelper->cardChanged($cardId, false); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_LABEL_UNASSING, ['label' => $label]); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $cardId, 'card' => $card]) + ); } /** @@ -521,6 +595,11 @@ class CardService { $assignment = $this->assignedUsersMapper->insert($assignment); $this->changeHelper->cardChanged($cardId, false); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_USER_ASSIGN, ['assigneduser' => $userId]); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $cardId, 'card' => $card]) + ); + return $assignment; } @@ -552,6 +631,11 @@ class CardService { $card = $this->cardMapper->find($cardId); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_USER_UNASSIGN, ['assigneduser' => $userId]); $this->changeHelper->cardChanged($cardId, false); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Card::onUpdate', new GenericEvent(null, ['id' => $cardId, 'card' => $card]) + ); + return $assignment; } } diff --git a/lib/Service/FullTextSearchService.php b/lib/Service/FullTextSearchService.php new file mode 100644 index 000000000..4d8e0e150 --- /dev/null +++ b/lib/Service/FullTextSearchService.php @@ -0,0 +1,284 @@ + + * @copyright 2019 + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + + +namespace OCA\Deck\Service; + + +use OC\FullTextSearch\Model\DocumentAccess; +use OC\FullTextSearch\Model\IndexDocument; +use OCA\Deck\Db\Board; +use OCA\Deck\Db\BoardMapper; +use OCA\Deck\Db\Card; +use OCA\Deck\Db\CardMapper; +use OCA\Deck\Db\Stack; +use OCA\Deck\Db\StackMapper; +use OCA\Deck\Provider\DeckProvider; +use OCP\AppFramework\Db\DoesNotExistException; +use OCP\AppFramework\Db\MultipleObjectsReturnedException; +use OCP\FullTextSearch\Exceptions\FullTextSearchAppNotAvailableException; +use OCP\FullTextSearch\IFullTextSearchManager; +use OCP\FullTextSearch\Model\IDocumentAccess; +use OCP\FullTextSearch\Model\IIndex; +use OCP\FullTextSearch\Model\IIndexDocument; +use Symfony\Component\EventDispatcher\GenericEvent; + + +/** + * Class FullTextSearchService + * + * @package OCA\Deck\Service + */ +class FullTextSearchService { + + + /** @var BoardMapper */ + private $boardMapper; + + /** @var StackMapper */ + private $stackMapper; + + /** @var CardMapper */ + private $cardMapper; + + /** @var IFullTextSearchManager */ + private $fullTextSearchManager; + + + /** + * FullTextSearchService constructor. + * + * @param BoardMapper $boardMapper + * @param StackMapper $stackMapper + * @param CardMapper $cardMapper + * @param IFullTextSearchManager $fullTextSearchManager + */ + public function __construct( + BoardMapper $boardMapper, StackMapper $stackMapper, CardMapper $cardMapper, + IFullTextSearchManager $fullTextSearchManager + ) { + $this->boardMapper = $boardMapper; + $this->stackMapper = $stackMapper; + $this->cardMapper = $cardMapper; + + $this->fullTextSearchManager = $fullTextSearchManager; + } + + + /** + * @param GenericEvent $e + */ + public function onCardCreated(GenericEvent $e) { + $cardId = $e->getArgument('id'); + $userId = $e->getArgument('userId'); + + try { + $this->fullTextSearchManager->createIndex( + DeckProvider::DECK_PROVIDER_ID, (string)$cardId, $userId, IIndex::INDEX_FULL + ); + } catch (FullTextSearchAppNotAvailableException $e) { + } + } + + + /** + * @param GenericEvent $e + */ + public function onCardUpdated(GenericEvent $e) { + $cardId = $e->getArgument('id'); + + try { + $this->fullTextSearchManager->updateIndexStatus( + DeckProvider::DECK_PROVIDER_ID, (string)$cardId, IIndex::INDEX_CONTENT + ); + } catch (FullTextSearchAppNotAvailableException $e) { + } + } + + + /** + * @param GenericEvent $e + */ + public function onCardDeleted(GenericEvent $e) { + $cardId = $e->getArgument('id'); + + try { + $this->fullTextSearchManager->updateIndexStatus( + DeckProvider::DECK_PROVIDER_ID, (string)$cardId, IIndex::INDEX_REMOVE + ); + } catch (FullTextSearchAppNotAvailableException $e) { + } + } + + + /** + * @param GenericEvent $e + */ + public function onBoardShares(GenericEvent $e) { + $boardId = (int)$e->getArgument('boardId'); + + $cards = array_map( + function(Card $item) { + return $item->getId(); + }, + $this->getCardsFromBoard($boardId) + ); + try { + $this->fullTextSearchManager->updateIndexesStatus( + DeckProvider::DECK_PROVIDER_ID, $cards, IIndex::INDEX_META + ); + } catch (FullTextSearchAppNotAvailableException $e) { + } + } + + + /** + * @param Card $card + * + * @return IIndexDocument + */ + public function generateIndexDocumentFromCard(Card $card): IIndexDocument { + $document = new IndexDocument(DeckProvider::DECK_PROVIDER_ID, (string)$card->getId()); + + return $document; + } + + + /** + * @param IIndexDocument $document + * + * @throws DoesNotExistException + * @throws MultipleObjectsReturnedException + */ + public function fillIndexDocument(IIndexDocument $document) { + /** @var Card $card */ + $card = $this->cardMapper->find((int)$document->getId()); + + $document->setTitle($card->getTitle()); + $document->setContent($card->getDescription()); + $document->setAccess($this->generateDocumentAccessFromCardId((int)$card->getId())); + } + + + /** + * @param int $cardId + * + * @return IDocumentAccess + * @throws DoesNotExistException + * @throws MultipleObjectsReturnedException + */ + public function generateDocumentAccessFromCardId(int $cardId): IDocumentAccess { + $board = $this->getBoardFromCardId($cardId); + + return new DocumentAccess($board->getOwner()); + } + + + /** + * @param string $userId + * + * @return Card[] + */ + public function getCardsFromUser(string $userId): array { + $cards = []; + $boards = $this->getBoardsFromUser($userId); + foreach ($boards as $board) { + $stacks = $this->getStacksFromBoard($board->getId()); + foreach ($stacks as $stack) { + $cards = array_merge($cards, $this->getCardsFromStack($stack->getId())); + } + } + + return $cards; + } + + + /** + * @param int $boardId + * + * @return Card[] + */ + public function getCardsFromBoard(int $boardId): array { + $cards = []; + $stacks = $this->getStacksFromBoard($boardId); + foreach ($stacks as $stack) { + $cards = array_merge($cards, $this->getCardsFromStack($stack->getId())); + } + + return $cards; + } + + + /** + * @param int $cardId + * + * @return Board + * @throws DoesNotExistException + * @throws MultipleObjectsReturnedException + */ + public function getBoardFromCardId(int $cardId): Board { + $boardId = (int)$this->cardMapper->findBoardId($cardId); + /** @var Board $board */ + $board = $this->boardMapper->find($boardId); + + return $board; + } + + + /** + * @param int $stackId + * + * @return Card[] + */ + private function getCardsFromStack(int $stackId): array { + return $this->cardMapper->findAll($stackId, null, null); + } + + + /** + * @param int $boardId + * + * @return Stack[] + */ + private function getStacksFromBoard(int $boardId): array { + return $this->stackMapper->findAll($boardId, null, null); + + } + + + /** + * @param string $userId + * + * @return Board[] + */ + private function getBoardsFromUser(string $userId): array { + return $this->boardMapper->findAllByUser($userId, null, null, -1); + } + + +} + diff --git a/lib/Service/LabelService.php b/lib/Service/LabelService.php index e46ee39ab..f596b19a2 100644 --- a/lib/Service/LabelService.php +++ b/lib/Service/LabelService.php @@ -91,6 +91,17 @@ class LabelService { } $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_MANAGE); + + $boardLabels = $this->labelMapper->findAll($boardId); + if (\is_array($boardLabels)) { + foreach($boardLabels as $boardLabel) { + if ($boardLabel->getTitle() === $title) { + throw new BadRequestException('title must be unique'); + break; + } + } + } + if ($this->boardService->isArchived(null, $boardId)) { throw new StatusException('Operation not allowed. This board is archived.'); } @@ -143,7 +154,7 @@ class LabelService { throw new BadRequestException('label id must be a number'); } - if ($title === false || $title === null) { + if ($title === false || $title === null || $title === "") { throw new BadRequestException('title must be provided'); } @@ -152,10 +163,26 @@ class LabelService { } $this->permissionService->checkPermission($this->labelMapper, $id, Acl::PERMISSION_MANAGE); + + $label = $this->find($id); + + $boardLabels = $this->labelMapper->findAll($label->getBoardId()); + if (\is_array($boardLabels)) { + foreach($boardLabels as $boardLabel) { + if ($boardLabel->getId() === $label->getId()) { + continue; + } + if ($boardLabel->getTitle() === $title) { + throw new BadRequestException('title must be unique'); + break; + } + } + } + if ($this->boardService->isArchived($this->labelMapper, $id)) { throw new StatusException('Operation not allowed. This board is archived.'); } - $label = $this->find($id); + $label->setTitle($title); $label->setColor($color); $this->changeHelper->boardChanged($label->getBoardId()); diff --git a/lib/Service/PermissionService.php b/lib/Service/PermissionService.php index 8bd0623aa..2a815fe01 100644 --- a/lib/Service/PermissionService.php +++ b/lib/Service/PermissionService.php @@ -33,9 +33,12 @@ use OCA\Deck\NoPermissionException; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\Entity; use OCP\AppFramework\Db\MultipleObjectsReturnedException; +use OCP\AppFramework\QueryException; +use OCP\IConfig; use OCP\IGroupManager; use OCP\ILogger; use OCP\IUserManager; +use OCP\Share\IManager; class PermissionService { @@ -50,17 +53,25 @@ class PermissionService { private $userManager; /** @var IGroupManager */ private $groupManager; + /** @var IConfig */ + private $config; + /** @var IManager */ + private $shareManager; /** @var string */ private $userId; /** @var array */ private $users = []; + private $circlesEnabled = false; + public function __construct( ILogger $logger, AclMapper $aclMapper, BoardMapper $boardMapper, IUserManager $userManager, IGroupManager $groupManager, + IManager $shareManager, + IConfig $config, $userId ) { $this->aclMapper = $aclMapper; @@ -68,7 +79,12 @@ class PermissionService { $this->logger = $logger; $this->userManager = $userManager; $this->groupManager = $groupManager; + $this->shareManager = $shareManager; + $this->config = $config; $this->userId = $userId; + + $this->circlesEnabled = \OC::$server->getAppManager()->isEnabledForUser('circles') && + (version_compare(\OC::$server->getAppManager()->getAppVersion('circles'), '0.17.1') >= 0); } /** @@ -84,7 +100,8 @@ class PermissionService { Acl::PERMISSION_READ => $owner || $this->userCan($acls, Acl::PERMISSION_READ), Acl::PERMISSION_EDIT => $owner || $this->userCan($acls, Acl::PERMISSION_EDIT), Acl::PERMISSION_MANAGE => $owner || $this->userCan($acls, Acl::PERMISSION_MANAGE), - Acl::PERMISSION_SHARE => $owner || $this->userCan($acls, Acl::PERMISSION_SHARE), + Acl::PERMISSION_SHARE => ($owner || $this->userCan($acls, Acl::PERMISSION_SHARE)) + && (!$this->shareManager->sharingDisabledForUser($this->userId)) ]; } @@ -102,7 +119,8 @@ class PermissionService { Acl::PERMISSION_READ => $owner || $this->userCan($acls, Acl::PERMISSION_READ), Acl::PERMISSION_EDIT => $owner || $this->userCan($acls, Acl::PERMISSION_EDIT), Acl::PERMISSION_MANAGE => $owner || $this->userCan($acls, Acl::PERMISSION_MANAGE), - Acl::PERMISSION_SHARE => $owner || $this->userCan($acls, Acl::PERMISSION_SHARE), + Acl::PERMISSION_SHARE => ($owner || $this->userCan($acls, Acl::PERMISSION_SHARE)) + && (!$this->shareManager->sharingDisabledForUser($this->userId)) ]; } @@ -115,7 +133,7 @@ class PermissionService { * @return bool * @throws NoPermissionException */ - public function checkPermission($mapper, $id, $permission) { + public function checkPermission($mapper, $id, $permission, $userId = null) { $boardId = $id; if ($mapper instanceof IPermissionMapper) { $boardId = $mapper->findBoardId($id); @@ -125,12 +143,16 @@ class PermissionService { throw new NoPermissionException('Permission denied'); } - if ($this->userIsBoardOwner($boardId)) { + if ($permission === Acl::PERMISSION_SHARE && $this->shareManager->sharingDisabledForUser($this->userId)) { + return false; + } + + if ($this->userIsBoardOwner($boardId, $userId)) { return true; } $acls = $this->aclMapper->findAll($boardId); - $result = $this->userCan($acls, $permission); + $result = $this->userCan($acls, $permission, $userId); if ($result) { return true; } @@ -143,14 +165,17 @@ class PermissionService { * @param $boardId * @return bool */ - public function userIsBoardOwner($boardId) { + public function userIsBoardOwner($boardId, $userId = null) { + if ($userId === null) { + $userId = $this->userId; + } try { $board = $this->boardMapper->find($boardId); - return $board && $this->userId === $board->getOwner(); + return $board && $userId === $board->getOwner(); } catch (DoesNotExistException $e) { } catch (MultipleObjectsReturnedException $e) { return false; - } + } } /** @@ -160,17 +185,29 @@ class PermissionService { * @param $permission * @return bool */ - public function userCan(array $acls, $permission) { + public function userCan(array $acls, $permission, $userId = null) { + if ($userId === null) { + $userId = $this->userId; + } // check for users foreach ($acls as $acl) { - if ($acl->getType() === Acl::PERMISSION_TYPE_USER && $acl->getParticipant() === $this->userId) { + if ($acl->getType() === Acl::PERMISSION_TYPE_USER && $acl->getParticipant() === $userId) { return $acl->getPermission($permission); } + + if ($this->circlesEnabled && $acl->getType() === Acl::PERMISSION_TYPE_CIRCLE) { + try { + \OCA\Circles\Api\v1\Circles::getMember($acl->getParticipant(), $this->userId, 1, true); + return $acl->getPermission($permission); + } catch (\Exception $e) { + $this->logger->info('Member not found in circle that was accessed. This should not happen.'); + } + } } // check for groups $hasGroupPermission = false; foreach ($acls as $acl) { - if (!$hasGroupPermission && $acl->getType() === Acl::PERMISSION_TYPE_GROUP && $this->groupManager->isInGroup($this->userId, $acl->getParticipant())) { + if (!$hasGroupPermission && $acl->getType() === Acl::PERMISSION_TYPE_GROUP && $this->groupManager->isInGroup($userId, $acl->getParticipant())) { $hasGroupPermission = $acl->getPermission($permission); } } @@ -229,4 +266,26 @@ class PermissionService { $this->users[(string) $boardId] = $users; return $this->users[(string) $boardId]; } -} \ No newline at end of file + + public function canCreate() { + $groups = $this->getGroupLimitList(); + if (count($groups) === 0) { + return true; + } + foreach ($groups as $group) { + if ($this->groupManager->isInGroup($this->userId, $group)) { + return true; + } + } + return false; + } + + private function getGroupLimitList() { + $value = $this->config->getAppValue('deck', 'groupLimit', ''); + $groups = explode(',', $value); + if ($value === '') { + return []; + } + return $groups; + } +} diff --git a/lib/Service/StackService.php b/lib/Service/StackService.php index 2e6b27e47..c8953ece1 100644 --- a/lib/Service/StackService.php +++ b/lib/Service/StackService.php @@ -3,6 +3,7 @@ * @copyright Copyright (c) 2016 Julius Härtl * * @author Julius Härtl + * @author Maxence Lange * * @license GNU AGPL version 3 or any later version * @@ -25,17 +26,18 @@ namespace OCA\Deck\Service; use OCA\Deck\Activity\ActivityManager; use OCA\Deck\Activity\ChangeSet; +use OCA\Deck\BadRequestException; use OCA\Deck\Db\Acl; -use OCA\Deck\Db\CardMapper; +use OCA\Deck\Db\AssignedUsersMapper; use OCA\Deck\Db\BoardMapper; +use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\LabelMapper; -use OCA\Deck\Db\AssignedUsersMapper; use OCA\Deck\Db\Stack; use OCA\Deck\Db\StackMapper; use OCA\Deck\StatusException; -use OCA\Deck\BadRequestException; -use OCP\Comments\ICommentsManager; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\GenericEvent; class StackService { @@ -50,6 +52,8 @@ class StackService { private $assignedUsersMapper; private $attachmentService; private $activityManager; + /** @var EventDispatcherInterface */ + private $eventDispatcher; private $changeHelper; public function __construct( @@ -63,6 +67,7 @@ class StackService { AssignedUsersMapper $assignedUsersMapper, AttachmentService $attachmentService, ActivityManager $activityManager, + EventDispatcherInterface $eventDispatcher, ChangeHelper $changeHelper ) { $this->stackMapper = $stackMapper; @@ -75,13 +80,14 @@ class StackService { $this->assignedUsersMapper = $assignedUsersMapper; $this->attachmentService = $attachmentService; $this->activityManager = $activityManager; + $this->eventDispatcher = $eventDispatcher; $this->changeHelper = $changeHelper; } private function enrichStackWithCards($stack, $since = -1) { $cards = $this->cardMapper->findAll($stack->getId(), null, null, $since); - if(\count($cards) === 0) { + if (\count($cards) === 0) { return; } @@ -100,6 +106,7 @@ class StackService { /** * @param $stackId + * * @return \OCP\AppFramework\Db\Entity * @throws \OCP\AppFramework\Db\DoesNotExistException * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException @@ -118,11 +125,13 @@ class StackService { $card->setAttachmentCount($this->attachmentService->count($card->getId())); } $stack->setCards($cards); + return $stack; } /** * @param $boardId + * * @return array * @throws \OCA\Deck\NoPermissionException * @throws BadRequestException @@ -135,18 +144,23 @@ class StackService { $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ); $stacks = $this->stackMapper->findAll($boardId); $this->enrichStacksWithCards($stacks, $since); + return $stacks; } public function fetchDeleted($boardId) { - $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ); + $this->permissionService->checkPermission( + $this->boardMapper, $boardId, Acl::PERMISSION_READ + ); $stacks = $this->stackMapper->findDeleted($boardId); $this->enrichStacksWithCards($stacks); + return $stacks; } /** * @param $boardId + * * @return array * @throws \OCA\Deck\NoPermissionException * @throws BadRequestException @@ -169,6 +183,7 @@ class StackService { } $stacks[$stackIndex]->setCards($cards); } + return $stacks; } @@ -176,6 +191,7 @@ class StackService { * @param $title * @param $boardId * @param integer $order + * * @return \OCP\AppFramework\Db\Entity * @throws StatusException * @throws \OCA\Deck\NoPermissionException @@ -206,13 +222,22 @@ class StackService { $stack->setBoardId($boardId); $stack->setOrder($order); $stack = $this->stackMapper->insert($stack); - $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $stack, ActivityManager::SUBJECT_STACK_CREATE); + $this->activityManager->triggerEvent( + ActivityManager::DECK_OBJECT_BOARD, $stack, ActivityManager::SUBJECT_STACK_CREATE + ); $this->changeHelper->boardChanged($boardId); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Stack::onCreate', + new GenericEvent(null, ['id' => $stack->getId(), 'stack' => $stack]) + ); + return $stack; } /** * @param $id + * * @return \OCP\AppFramework\Db\Entity * @throws \OCA\Deck\NoPermissionException * @throws \OCP\AppFramework\Db\DoesNotExistException @@ -221,7 +246,7 @@ class StackService { */ public function delete($id) { - if ( is_numeric($id) === false ) { + if (is_numeric($id) === false) { throw new BadRequestException('stack id must be a number'); } @@ -231,9 +256,16 @@ class StackService { $stack->setDeletedAt(time()); $stack = $this->stackMapper->update($stack); - $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $stack, ActivityManager::SUBJECT_STACK_DELETE); + $this->activityManager->triggerEvent( + ActivityManager::DECK_OBJECT_BOARD, $stack, ActivityManager::SUBJECT_STACK_DELETE + ); $this->changeHelper->boardChanged($stack->getBoardId()); $this->enrichStackWithCards($stack); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Stack::onDelete', new GenericEvent(null, ['id' => $id, 'stack' => $stack]) + ); + return $stack; } @@ -243,6 +275,7 @@ class StackService { * @param $boardId * @param $order * @param $deletedAt + * * @return \OCP\AppFramework\Db\Entity * @throws StatusException * @throws \OCA\Deck\NoPermissionException @@ -280,14 +313,22 @@ class StackService { $stack->setDeletedAt($deletedAt); $changes->setAfter($stack); $stack = $this->stackMapper->update($stack); - $this->activityManager->triggerUpdateEvents(ActivityManager::DECK_OBJECT_BOARD, $changes, ActivityManager::SUBJECT_STACK_UPDATE); + $this->activityManager->triggerUpdateEvents( + ActivityManager::DECK_OBJECT_BOARD, $changes, ActivityManager::SUBJECT_STACK_UPDATE + ); $this->changeHelper->boardChanged($stack->getBoardId()); + + $this->eventDispatcher->dispatch( + '\OCA\Deck\Stack::onUpdate', new GenericEvent(null, ['id' => $id, 'stack' => $stack]) + ); + return $stack; } /** * @param $id * @param $order + * * @return array * @throws \OCA\Deck\NoPermissionException * @throws \OCP\AppFramework\Db\DoesNotExistException @@ -325,6 +366,7 @@ class StackService { $result[$stack->getOrder()] = $stack; } $this->changeHelper->boardChanged($stackToSort->getBoardId()); + return $result; } } diff --git a/mkdocs.yml b/mkdocs.yml index 62132f05f..c80c417be 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -4,8 +4,8 @@ theme: extra_css: [extra.css] pages: - Home: index.md - - User documentation: - - Markdown composing: Markdown.md + - User documentation: User_documentation_en.md + - Markdown composing: Markdown.md - API documentation: - REST API: API.md - Nextcloud API: API-Nextcloud.md diff --git a/templates/main.php b/templates/main.php index c293f74e2..41a20c9ec 100644 --- a/templates/main.php +++ b/templates/main.php @@ -20,8 +20,13 @@ * along with this program. If not, see . * */ + +use OCP\Util; + style('deck', 'style'); script('deck', 'deck'); + +\OC::$server->getEventDispatcher()->dispatch('\OCP\Collaboration\Resources::loadAdditionalScripts'); ?> - \ No newline at end of file + diff --git a/templates/part.board.headerControls.php b/templates/part.board.headerControls.php index efa5e2620..fa39c5855 100644 --- a/templates/part.board.headerControls.php +++ b/templates/part.board.headerControls.php @@ -13,19 +13,19 @@ - - - - diff --git a/templates/part.board.mainView.php b/templates/part.board.mainView.php index 980ac74e4..f72dcedae 100644 --- a/templates/part.board.mainView.php +++ b/templates/part.board.mainView.php @@ -20,7 +20,7 @@ t('Update tag')); ?> - t('Edit tag')); ?> + t('Edit tag')); ?> t('Delete tag')); ?>
  • diff --git a/templates/part.boardlist.php b/templates/part.boardlist.php index fcffd0c79..8411706e7 100644 --- a/templates/part.boardlist.php +++ b/templates/part.boardlist.php @@ -95,7 +95,7 @@ - + {{ $ctrl.currentUser.displayName }} -
    +
    @@ -20,7 +20,7 @@ {{ activity.timestamp/1000 | relativeDateFilter }} -
    +
  • -
  • +
  • - t('Delete board')); ?> - + t('Delete board')); ?> +
  • @@ -52,7 +52,7 @@
  • -
  • +
  • t('Create a new board')); ?> diff --git a/templates/part.settings.php b/templates/part.settings.php index b86b4f3ef..e746ac8d2 100644 --- a/templates/part.settings.php +++ b/templates/part.settings.php @@ -1,8 +1,21 @@ -
    +
    - +
    -
    - +
    diff --git a/tests/integration/composer.json b/tests/integration/composer.json index 0d3700061..6cd10678e 100644 --- a/tests/integration/composer.json +++ b/tests/integration/composer.json @@ -11,8 +11,8 @@ "../../../../build/integration/features/bootstrap/Auth.php", "../../../../build/integration/features/bootstrap/Provisioning.php", "../../../../build/integration/features/bootstrap/Sharing.php", - "../../../../build/integration/features/bootstrap/Trashbin.php", - "../../../../build/integration/features/bootstrap/WebDav.php" + "../../../../build/integration/features/bootstrap/WebDav.php", + "../../../../build/integration/features/bootstrap/Trashbin.php" ], "psr-0": { "": [ diff --git a/tests/integration/config/behat.yml b/tests/integration/config/behat.yml index 37aaed8f4..f557adde8 100644 --- a/tests/integration/config/behat.yml +++ b/tests/integration/config/behat.yml @@ -2,7 +2,7 @@ default: suites: test: paths: - - %paths.base%/../features/ + - '%paths.base%/../features/' contexts: - FeatureContext: baseUrl: http://localhost:8080/index.php/ocs/ diff --git a/tests/unit/Activity/CommentEventHandlerTest.php b/tests/unit/Activity/CommentEventHandlerTest.php index 1e149f528..5a0b3902a 100644 --- a/tests/unit/Activity/CommentEventHandlerTest.php +++ b/tests/unit/Activity/CommentEventHandlerTest.php @@ -53,13 +53,17 @@ class CommentEventHandlerTest extends TestCase { private $activityManager; /** @var NotificationHelper */ private $notificationHelper; + /** @var CardMapper */ + private $cardMapper; public function setUp() { $this->activityManager = $this->createMock(ActivityManager::class); $this->notificationHelper = $this->createMock(NotificationHelper::class); + $this->cardMapper = $this->createMock(CardMapper::class); $this->commentEventHandler = new CommentEventHandler( $this->activityManager, - $this->notificationHelper + $this->notificationHelper, + $this->cardMapper ); } @@ -67,10 +71,15 @@ class CommentEventHandlerTest extends TestCase { $comment = $this->createMock(IComment::class); $comment->expects($this->any())->method('getId')->willReturn(1); $comment->expects($this->any())->method('getObjectType')->willReturn('deckCard'); + $comment->expects($this->any())->method('getMessage')->willReturn('Hello world'); + $card = $this->createMock(Card::class); + $this->cardMapper->expects($this->once()) + ->method('find') + ->willReturn($card); $commentsEvent = new CommentsEvent(CommentsEvent::EVENT_ADD, $comment); $this->activityManager->expects($this->once()) ->method('triggerEvent') - ->with(ActivityManager::DECK_OBJECT_CARD, $comment, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => 1]); + ->with(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment]); $this->notificationHelper->expects($this->once()) ->method('sendMention') ->with($comment); diff --git a/tests/unit/Activity/DeckProviderTest.php b/tests/unit/Activity/DeckProviderTest.php index 657dd01d5..c500e3fb9 100644 --- a/tests/unit/Activity/DeckProviderTest.php +++ b/tests/unit/Activity/DeckProviderTest.php @@ -25,13 +25,16 @@ namespace OCA\Deck\Activity; use OC\Activity\Event; use OCA\Deck\Db\Acl; +use OCA\Deck\Db\Card; use OCP\Activity\IEvent; use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; +use OCP\IConfig; use OCP\IL10N; use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; +use OCP\L10N\IFactory; use OCP\RichObjectStrings\IValidator; use PHPUnit\Framework\TestCase; use PHPUnit_Framework_MockObject_MockObject as MockObject; @@ -62,7 +65,9 @@ class DeckProviderTest extends TestCase { $this->activityManager = $this->createMock(ActivityManager::class); $this->userManager = $this->createMock(IUserManager::class); $this->commentsManager = $this->createMock(ICommentsManager::class); - $this->provider = new DeckProvider($this->urlGenerator, $this->activityManager, $this->userManager, $this->commentsManager, $this->userId); + $this->l10nFactory = $this->createMock(IFactory::class); + $this->config = $this->createMock(IConfig::class); + $this->provider = new DeckProvider($this->urlGenerator, $this->activityManager, $this->userManager, $this->commentsManager, $this->l10nFactory, $this->config, $this->userId); } private function mockEvent($objectType, $objectId, $objectName, $subject, $subjectParameters = []) { @@ -139,7 +144,7 @@ class DeckProviderTest extends TestCase { public function testDeckUrl() { $this->urlGenerator->expects($this->once()) - ->method('linkToRoute') + ->method('linkToRouteAbsolute') ->with('deck.page.index') ->willReturn('http://localhost/index.php/apps/deck/'); $this->assertEquals( @@ -208,7 +213,7 @@ class DeckProviderTest extends TestCase { $event = new Event($richValidator); $event->setApp('deck'); - $event->setSubject(ActivityManager::SUBJECT_CARD_CREATE); + $event->setSubject(ActivityManager::SUBJECT_CARD_CREATE, ['card' => new Card()]); $event->setAffectedUser($this->userId); $event->setAuthor($this->userId); $event->setObject(ActivityManager::DECK_OBJECT_CARD, 1, 'Card'); @@ -256,6 +261,7 @@ class DeckProviderTest extends TestCase { 'before' => 'ABC', 'after' => 'BCD', 'diff' => true, + 'card' => new Card() ]); $event->setAffectedUser($this->userId); $event->setAuthor($this->userId); @@ -461,7 +467,7 @@ class DeckProviderTest extends TestCase { public function testParseParamForComment() { $comment = $this->createMock(IComment::class); - $comment->expects($this->once()) + $comment->expects($this->any()) ->method('getMessage') ->willReturn('Comment content'); $this->commentsManager->expects($this->once()) @@ -477,7 +483,11 @@ class DeckProviderTest extends TestCase { 'comment' => 123 ]; $expected = [ - 'comment' => 123, + 'comment' => [ + 'type' => 'highlight', + 'id' => 123, + 'name' => 'Comment content' + ] ]; $actual = $this->invokePrivate($this->provider, 'parseParamForComment', [$subjectParams, $params, $event]); $this->assertEquals($expected, $actual); diff --git a/tests/unit/Activity/SettingTest.php b/tests/unit/Activity/SettingTest.php index 956d5c1d5..5b64df442 100644 --- a/tests/unit/Activity/SettingTest.php +++ b/tests/unit/Activity/SettingTest.php @@ -23,15 +23,20 @@ namespace OCA\Deck\Activity; +use OCP\IL10N; use PHPUnit\Framework\TestCase; class SettingTest extends TestCase { + /** @var IL10N */ + private $l10n; /** @var Setting */ private $setting; public function setUp() { - $this->setting = new Setting(); + $this->l10n = $this->createMock(IL10N::class); + $this->l10n->expects($this->any())->method('t')->will($this->returnCallback(function ($s) { return $s; })); + $this->setting = new Setting($this->l10n); } public function testGetIdentifier() { @@ -39,7 +44,7 @@ class SettingTest extends TestCase { } public function testGetName() { - $this->assertEquals('Deck', $this->setting->getName()); + $this->assertEquals('Changes in the Deck app', $this->setting->getName()); } public function testGetPriority() { diff --git a/tests/unit/Db/BoardTest.php b/tests/unit/Db/BoardTest.php index a151efc7e..2f06a4172 100644 --- a/tests/unit/Db/BoardTest.php +++ b/tests/unit/Db/BoardTest.php @@ -25,6 +25,7 @@ class BoardTest extends TestCase { 'color' => "000000", 'labels' => array(), 'permissions' => [], + 'stacks' => [], 'deletedAt' => 0, 'lastModified' => 0, 'acl' => array(), @@ -43,6 +44,7 @@ class BoardTest extends TestCase { 'color' => "000000", 'labels' => array("foo", "bar"), 'permissions' => [], + 'stacks' => [], 'deletedAt' => 0, 'lastModified' => 0, 'acl' => array(), @@ -68,6 +70,7 @@ class BoardTest extends TestCase { 'color' => "000000", 'labels' => array(), 'permissions' => [], + 'stacks' => [], 'deletedAt' => 0, 'lastModified' => 0, 'acl' => array(), diff --git a/tests/unit/Db/CardTest.php b/tests/unit/Db/CardTest.php index 0fc3c4b6d..ff8aeab39 100644 --- a/tests/unit/Db/CardTest.php +++ b/tests/unit/Db/CardTest.php @@ -83,6 +83,7 @@ class CardTest extends TestCase { 'assignedUsers' => null, 'deletedAt' => 0, 'commentsUnread' => 0, + 'lastEditor' => null, ], $card->jsonSerialize()); } public function testJsonSerializeLabels() { @@ -107,6 +108,7 @@ class CardTest extends TestCase { 'assignedUsers' => null, 'deletedAt' => 0, 'commentsUnread' => 0, + 'lastEditor' => null, ], $card->jsonSerialize()); } @@ -141,6 +143,7 @@ class CardTest extends TestCase { 'assignedUsers' => ['user1'], 'deletedAt' => 0, 'commentsUnread' => 0, + 'lastEditor' => null, ], $card->jsonSerialize()); } diff --git a/tests/unit/Db/LabelTest.php b/tests/unit/Db/LabelTest.php index 15c67f216..f74c74e1d 100644 --- a/tests/unit/Db/LabelTest.php +++ b/tests/unit/Db/LabelTest.php @@ -41,6 +41,7 @@ class LabelTest extends TestCase { 'title' => 'My Label', 'boardId' => 123, 'cardId' => null, + 'lastModified' => null, 'color' => '000000' ], $label->jsonSerialize()); @@ -53,10 +54,11 @@ class LabelTest extends TestCase { 'title' => 'My Label', 'boardId' => null, 'cardId' => 123, + 'lastModified' => null, 'color' => '000000' ], $label->jsonSerialize()); } -} \ No newline at end of file +} diff --git a/tests/unit/Middleware/SharingMiddlewareTest.php b/tests/unit/Middleware/ExceptionMiddlewareTest.php similarity index 56% rename from tests/unit/Middleware/SharingMiddlewareTest.php rename to tests/unit/Middleware/ExceptionMiddlewareTest.php index 9757197d9..da21ce622 100644 --- a/tests/unit/Middleware/SharingMiddlewareTest.php +++ b/tests/unit/Middleware/ExceptionMiddlewareTest.php @@ -5,43 +5,51 @@ * @author Julius Härtl * * @license GNU AGPL version 3 or any later version - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * + * */ namespace OCA\Deck\Middleware; +use OCA\Deck\Controller\BoardController; +use OCA\Deck\Controller\PageController; use OCA\Deck\NoPermissionException; use OCA\Deck\NotFoundException; +use OCA\Deck\Service\BoardService; +use OCA\Deck\Service\PermissionService; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\JSONResponse; use OCP\ILogger; use OCP\IConfig; +use OCP\IRequest; -class SharingMiddlewareTest extends \Test\TestCase { +class ExceptionMiddlewareTest extends \Test\TestCase { /** @var ILogger */ private $logger; /** @var IConfig */ private $config; - private $sharingMiddleware; + private $controller; + private $exceptionMiddleware; public function setUp() { $this->logger = $this->createMock(ILogger::class); $this->config = $this->createMock(IConfig::class); - $this->sharingMiddleware = new SharingMiddleware( + $this->controller = $this->createMock(Controller::class); + $this->exceptionMiddleware = new ExceptionMiddleware( $this->logger, $this->config ); @@ -58,7 +66,7 @@ class SharingMiddlewareTest extends \Test\TestCase { * @dataProvider dataAfterException */ public function testAfterException($exception, $status, $message) { - $result = $this->sharingMiddleware->afterException('Foo', 'bar', $exception); + $result = $this->exceptionMiddleware->afterException($this->controller, 'bar', $exception); $expected = new JSONResponse([ "status" => $status, "message" => $message @@ -66,12 +74,22 @@ class SharingMiddlewareTest extends \Test\TestCase { $this->assertEquals($expected, $result); } - public function testAfterExceptionFail() { - try { - $result = $this->sharingMiddleware->afterException('Foo', 'bar', new \Exception('failed hard')); - } catch (\Exception $e) { - $this->assertEquals('failed hard', $e->getMessage()); - } + /** + * @expectedException \Exception + * @expectedExceptionMessage failed hard + */ + public function testAfterExceptionNoController() { + $pageController = $this->createMock(PageController::class); + $result = $this->exceptionMiddleware->afterException($pageController, 'bar', new \Exception('failed hard')); } -} \ No newline at end of file + public function testAfterExceptionFail() { + // BoardService $boardService, PermissionService $permissionService, $userId + $boardController = new BoardController('deck', $this->createMock(IRequest::class), $this->createMock(BoardService::class), $this->createMock(PermissionService::class), 'admin'); + $result = $this->exceptionMiddleware->afterException($boardController, 'bar', new \Exception('failed hard')); + $this->assertEquals('failed hard', $result->getData()['message']); + $this->assertEquals(500, $result->getData()['status']); + + } + +} diff --git a/tests/unit/Service/BoardServiceTest.php b/tests/unit/Service/BoardServiceTest.php index 5fa9fdc17..bc2c72adb 100644 --- a/tests/unit/Service/BoardServiceTest.php +++ b/tests/unit/Service/BoardServiceTest.php @@ -33,10 +33,12 @@ use OCA\Deck\Db\Board; use OCA\Deck\Db\BoardMapper; use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\LabelMapper; +use OCA\Deck\Db\StackMapper; use OCA\Deck\Notification\NotificationHelper; use OCP\IUser; use OCP\IUserManager; use OCP\IGroupManager; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use \Test\TestCase; class BoardServiceTest extends TestCase { @@ -51,6 +53,8 @@ class BoardServiceTest extends TestCase { private $aclMapper; /** @var BoardMapper */ private $boardMapper; + /** @var StackMapper */ + private $stackMapper; /** @var PermissionService */ private $permissionService; /** @var NotificationHelper */ @@ -65,6 +69,8 @@ class BoardServiceTest extends TestCase { private $activityManager; /** @var ChangeHelper */ private $changeHelper; + /** @var EventDispatcherInterface */ + private $eventDispatcher; private $userId = 'admin'; public function setUp() { @@ -72,6 +78,7 @@ class BoardServiceTest extends TestCase { $this->l10n = $this->createMock(L10N::class); $this->aclMapper = $this->createMock(AclMapper::class); $this->boardMapper = $this->createMock(BoardMapper::class); + $this->stackMapper = $this->createMock(StackMapper::class); $this->labelMapper = $this->createMock(LabelMapper::class); $this->permissionService = $this->createMock(PermissionService::class); $this->notificationHelper = $this->createMock(NotificationHelper::class); @@ -80,9 +87,11 @@ class BoardServiceTest extends TestCase { $this->groupManager = $this->createMock(IGroupManager::class); $this->activityManager = $this->createMock(ActivityManager::class); $this->changeHelper = $this->createMock(ChangeHelper::class); + $this->eventDispatcher = $this->createMock(EventDispatcherInterface::class); $this->service = new BoardService( $this->boardMapper, + $this->stackMapper, $this->l10n, $this->labelMapper, $this->aclMapper, @@ -92,6 +101,7 @@ class BoardServiceTest extends TestCase { $this->userManager, $this->groupManager, $this->activityManager, + $this->eventDispatcher, $this->changeHelper, $this->userId ); @@ -111,10 +121,17 @@ class BoardServiceTest extends TestCase { ->method('findAllByUser') ->with('admin') ->willReturn([$b1, $b2]); + $this->stackMapper->expects($this->any()) + ->method('findAll') + ->willReturn([]); $this->boardMapper->expects($this->once()) ->method('findAllByGroups') ->with('admin', ['a', 'b', 'c']) ->willReturn([$b2, $b3]); + $this->boardMapper->expects($this->once()) + ->method('findAllByCircles') + ->with('admin') + ->willReturn([]); $user = $this->createMock(IUser::class); $this->groupManager->method('getUserGroupIds') ->willReturn(['a', 'b', 'c']); @@ -150,6 +167,9 @@ class BoardServiceTest extends TestCase { $this->boardMapper->expects($this->once()) ->method('insert') ->willReturn($board); + $this->permissionService->expects($this->once()) + ->method('canCreate') + ->willReturn(true); $b = $this->service->create('MyBoard', 'admin', '00ff00'); $this->assertEquals($b->getTitle(), 'MyBoard'); @@ -158,6 +178,20 @@ class BoardServiceTest extends TestCase { $this->assertCount(4, $b->getLabels()); } + /** + * @expectedException \OCA\Deck\NoPermissionException + */ + public function testCreateDenied() { + $board = new Board(); + $board->setTitle('MyBoard'); + $board->setOwner('admin'); + $board->setColor('00ff00'); + $this->permissionService->expects($this->once()) + ->method('canCreate') + ->willReturn(false); + $b = $this->service->create('MyBoard', 'admin', '00ff00'); + } + public function testUpdate() { $board = new Board(); $board->setTitle('MyBoard'); @@ -187,6 +221,7 @@ class BoardServiceTest extends TestCase { public function testDelete() { $board = new Board(); $board->setOwner('admin'); + $board->setDeletedAt(0); $this->boardMapper->expects($this->once()) ->method('find') ->willReturn($board); @@ -196,7 +231,7 @@ class BoardServiceTest extends TestCase { 'admin' => 'admin', ]); $boardDeleted = clone $board; - $board->setDeletedAt(1); + $boardDeleted->setDeletedAt(1); $this->boardMapper->expects($this->once()) ->method('update') ->willReturn($boardDeleted); diff --git a/tests/unit/Service/CardServiceTest.php b/tests/unit/Service/CardServiceTest.php index cee77be97..ab73ebcd6 100644 --- a/tests/unit/Service/CardServiceTest.php +++ b/tests/unit/Service/CardServiceTest.php @@ -41,6 +41,7 @@ use OCP\Comments\ICommentsManager; use OCP\IUser; use OCP\IUserManager; use PHPUnit\Framework\MockObject\MockObject; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Test\TestCase; class CardServiceTest extends TestCase { @@ -70,6 +71,8 @@ class CardServiceTest extends TestCase { private $commentsManager; /** @var ICommentsManager|MockObject */ private $userManager; + /** @var EventDispatcherInterface */ + private $eventDispatcher; /** @var ChangeHelper|MockObject */ private $changeHelper; @@ -87,6 +90,7 @@ class CardServiceTest extends TestCase { $this->activityManager = $this->createMock(ActivityManager::class); $this->commentsManager = $this->createMock(ICommentsManager::class); $this->userManager = $this->createMock(IUserManager::class); + $this->eventDispatcher = $this->createMock(EventDispatcherInterface::class); $this->changeHelper = $this->createMock(ChangeHelper::class); $this->cardService = new CardService( $this->cardMapper, @@ -102,6 +106,7 @@ class CardServiceTest extends TestCase { $this->commentsManager, $this->userManager, $this->changeHelper, + $this->eventDispatcher, 'user1' ); } diff --git a/tests/unit/Service/PermissionServiceTest.php b/tests/unit/Service/PermissionServiceTest.php index 432c794aa..3d5f3118c 100644 --- a/tests/unit/Service/PermissionServiceTest.php +++ b/tests/unit/Service/PermissionServiceTest.php @@ -31,11 +31,13 @@ use OCA\Deck\Db\IPermissionMapper; use OCA\Deck\Db\User; use OCA\Deck\NoPermissionException; use OCP\AppFramework\Db\DoesNotExistException; +use OCP\IConfig; use OCP\IGroup; use OCP\IGroupManager; use OCP\ILogger; use OCP\IUser; use OCP\IUserManager; +use OCP\Share\IManager; class PermissionServiceTest extends \Test\TestCase { @@ -51,21 +53,22 @@ class PermissionServiceTest extends \Test\TestCase { private $userManager; /** @var IGroupManager */ private $groupManager; + /** @var IManager */ + private $shareManager; + /** @var IConfig */ + private $config; /** @var string */ private $userId = 'admin'; public function setUp() { parent::setUp(); - $this->logger = $this->request = $this->getMockBuilder(ILogger::class) - ->disableOriginalConstructor() - ->getMock(); - $this->aclMapper = $this->getMockBuilder(AclMapper::class) - ->disableOriginalConstructor()->getMock(); - $this->boardMapper = $this->getMockBuilder(BoardMapper::class) - ->disableOriginalConstructor()->getMock(); + $this->logger = $this->request = $this->createMock(ILogger::class); + $this->aclMapper = $this->createMock(AclMapper::class); + $this->boardMapper = $this->createMock(BoardMapper::class); $this->userManager = $this->createMock(IUserManager::class); - $this->groupManager = $this->getMockBuilder(IGroupManager::class) - ->disableOriginalConstructor()->getMock(); + $this->groupManager = $this->createMock(IGroupManager::class); + $this->shareManager = $this->createMock(IManager::class); + $this->config = $this->createMock(IConfig::class); $this->service = new PermissionService( $this->logger, @@ -73,6 +76,8 @@ class PermissionServiceTest extends \Test\TestCase { $this->boardMapper, $this->userManager, $this->groupManager, + $this->shareManager, + $this->config, 'admin' ); } @@ -226,6 +231,9 @@ class PermissionServiceTest extends \Test\TestCase { $acls = $this->getAcls($boardId); $this->aclMapper->expects($this->any())->method('findAll')->willReturn($acls); + $this->shareManager->expects($this->any()) + ->method('sharingDisabledForUser') + ->willReturn(false); if($result) { $actual = $this->service->checkPermission($mapper, 1234, $permission); @@ -251,6 +259,7 @@ class PermissionServiceTest extends \Test\TestCase { $acls = $this->getAcls($boardId); $this->aclMapper->expects($this->any())->method('findAll')->willReturn($acls); + if($result) { $actual = $this->service->checkPermission($mapper, 1234, $permission); $this->assertTrue($actual); @@ -263,7 +272,7 @@ class PermissionServiceTest extends \Test\TestCase { public function testCheckPermissionNotFound() { $mapper = $this->getMockBuilder(IPermissionMapper::class)->getMock(); - $mapper->expects($this->once())->method('findBoardId')->willThrowException(new NoPermissionException(null)); + $mapper->expects($this->once())->method('findBoardId')->willThrowException(new NoPermissionException(null)); $this->expectException(NoPermissionException::class); $this->service->checkPermission($mapper, 1234, Acl::PERMISSION_READ); } diff --git a/tests/unit/Service/StackServiceTest.php b/tests/unit/Service/StackServiceTest.php index 367f4e281..6e8f02748 100644 --- a/tests/unit/Service/StackServiceTest.php +++ b/tests/unit/Service/StackServiceTest.php @@ -35,6 +35,7 @@ use OCA\Deck\Db\Label; use OCA\Deck\Db\LabelMapper; use OCA\Deck\Db\Stack; use OCA\Deck\Db\StackMapper; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use \Test\TestCase; /** @@ -69,6 +70,8 @@ class StackServiceTest extends TestCase { private $activityManager; /** @var ChangeHelper|\PHPUnit\Framework\MockObject\MockObject */ private $changeHelper; + /** @var EventDispatcherInterface */ + private $eventDispatcher; public function setUp() { parent::setUp(); @@ -83,6 +86,7 @@ class StackServiceTest extends TestCase { $this->labelMapper = $this->createMock(LabelMapper::class); $this->activityManager = $this->createMock(ActivityManager::class); $this->changeHelper = $this->createMock(ChangeHelper::class); + $this->eventDispatcher = $this->createMock(EventDispatcherInterface::class); $this->stackService = new StackService( $this->stackMapper, @@ -95,6 +99,7 @@ class StackServiceTest extends TestCase { $this->assignedUsersMapper, $this->attachmentService, $this->activityManager, + $this->eventDispatcher, $this->changeHelper ); } diff --git a/tests/unit/controller/PageControllerTest.php b/tests/unit/controller/PageControllerTest.php index f4aa70e08..8f6d1c47c 100644 --- a/tests/unit/controller/PageControllerTest.php +++ b/tests/unit/controller/PageControllerTest.php @@ -6,24 +6,27 @@ * @author Ryan Fletcher * * @license GNU AGPL version 3 or any later version - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . - * + * */ namespace OCA\Deck\Controller; +use OCA\Deck\Service\PermissionService; +use OCP\IL10N; +use OCP\IRequest; use PHPUnit_Framework_TestCase; use OCA\Deck\Service\DefaultBoardService; use OCA\Deck\Db\Board; @@ -36,26 +39,21 @@ class PageControllerTest extends \Test\TestCase { private $l10n; private $userId = 'john'; private $defaultBoardService; + private $permissionService; private $config; public function setUp() { - $this->l10n = $this->request = $this->getMockBuilder( - '\OCP\IL10n') - ->disableOriginalConstructor() - ->getMock(); - $this->request = $this->getMockBuilder( - '\OCP\IRequest') - ->disableOriginalConstructor() - ->getMock(); - + $this->l10n = $this->createMock(IL10N::class); + $this->request = $this->createMock(IRequest::class); $this->defaultBoardService = $this->createMock(DefaultBoardService::class); + $this->permissionService = $this->createMock(PermissionService::class); $this->config = $this->createMock(IConfig::class); $this->controller = new PageController( - 'deck', $this->request, $this->defaultBoardService, $this->l10n, $this->userId + 'deck', $this->request, $this->defaultBoardService, $this->permissionService, $this->l10n, $this->userId ); } - + public function testIndexOnFirstRun() { $board = new Board(); @@ -67,12 +65,39 @@ class PageControllerTest extends \Test\TestCase { ->method('checkFirstRun') ->willReturn(true); + $this->permissionService->expects($this->any()) + ->method('canCreate') + ->willReturn(true); + $this->defaultBoardService->expects($this->once()) ->method('createDefaultBoard') ->willReturn($board); $response = $this->controller->index(); - $this->assertEquals('main', $response->getTemplateName()); + $this->assertEquals('main', $response->getTemplateName()); + } + + public function testIndexOnFirstRunNoCreate() { + + $board = new Board(); + $board->setTitle('Personal'); + $board->setOwner($this->userId); + $board->setColor('000000'); + + $this->defaultBoardService->expects($this->once()) + ->method('checkFirstRun') + ->willReturn(true); + + $this->permissionService->expects($this->any()) + ->method('canCreate') + ->willReturn(false); + + $this->defaultBoardService->expects($this->never()) + ->method('createDefaultBoard') + ->willReturn($board); + + $response = $this->controller->index(); + $this->assertEquals('main', $response->getTemplateName()); } public function testIndexOnSecondRun() { @@ -87,4 +112,4 @@ class PageControllerTest extends \Test\TestCase { $this->assertEquals('main', $response->getTemplateName()); } -} \ No newline at end of file +}