Compare commits

..

14 Commits

Author SHA1 Message Date
grnd-alt
981d1cbd38 fix: remove deprecated ToolTip
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-14 09:54:43 +02:00
grnd-alt
85af54cd6f fix: do not clean webpack-stats.json from build files
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:38:28 +02:00
grnd-alt
f3a8de2c48 fix: stabilize cypress
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:38:22 +02:00
grnd-alt
1d7bf30e8f bump @nextcloud/dialogs to 7.0.0-rc.1
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:12:31 +02:00
grnd-alt
ee10097c24 fix: adapt NcButtons to nextcloud-vue 9
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:12:31 +02:00
grnd-alt
03d2bd945c fix: remove extra component for NcAction entries
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:12:29 +02:00
grnd-alt
1110a4f125 use correct prop name for nextcloud/vue vue3
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:39 +02:00
grnd-alt
f4acf38035 replace Vue.set with direct setting
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:39 +02:00
grnd-alt
30e74a7919 fix: rename parameter names deprecated in vue3
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:39 +02:00
grnd-alt
b59b2edb37 use v-model instead of value:sync
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:39 +02:00
grnd-alt
8e805dbec3 fix: use vue3 slot syntax
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:39 +02:00
grnd-alt
0f1d1181e3 fix: correct syntax for scss variables
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:39 +02:00
grnd-alt
c32115dea6 vue3-with non-local dependencies and part of the functionality
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:39 +02:00
grnd-alt
452dc5f230 get deck to build with vue3 with broken functionality
Signed-off-by: grnd-alt <github@belakkaf.net>
2025-07-09 14:10:38 +02:00
359 changed files with 12564 additions and 13211 deletions

2
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,2 @@
# App maintainers
* @luka-nextcloud @grnd-alt @elzody

120
.github/ISSUE_TEMPLATE/Bug_report.md vendored Normal file
View File

@@ -0,0 +1,120 @@
---
name: Bug report
about: Create a report to help us improve
---
<!--
Thanks for reporting issues back!
Guidelines for submitting issues:
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
* SECURITY: Report any potential security bug to us via our HackerOne page (https://hackerone.com/nextcloud) following our security policy (https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
* The issues in other components should be reported in their respective repositories: You will find them in our GitHub Organization (https://github.com/nextcloud/)
* You can also use the Issue Template app to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
-->
<!--- Please keep this note for other contributors -->
### How to use GitHub
* Please use the 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to show that you are affected by the same issue.
* Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
* Subscribe to receive notifications on status change and new comments.
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Client details:**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
- Device: [e.g. iPhone6, desktop]
<details>
<summary>Server details</summary>
<!--
You can use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
-->
**Operating system**:
**Web server:**
**Database:**
**PHP version:**
**Nextcloud version:** (see Nextcloud admin page)
**Where did you install Nextcloud from:**
**Signing status:**
```
Login as admin user into your Nextcloud and access
http://example.com/index.php/settings/integrity/failed
paste the results here.
```
**List of activated apps:**
```
If you have access to your command line run e.g.:
sudo -u www-data php occ app:list
from within your Nextcloud installation folder
```
**Nextcloud configuration:**
```
If you have access to your command line run e.g.:
sudo -u www-data php occ config:list system
from within your Nextcloud installation folder
or
Insert your config.php content here
Make sure to remove all sensitive content such as passwords. (e.g. database password, passwordsalt, secret, smtp password, …)
```
**Are you using an external user-backend, if yes which one:** LDAP/ActiveDirectory/Webdav/...
</details>
<details>
<summary>Logs</summary>
#### Nextcloud log (data/nextcloud.log)
```
Insert your Nextcloud log here
```
#### Browser log
```
Insert your browser log here, this could for example include:
a) The javascript console log
b) The network log
c) ...
```
</details>

View File

@@ -0,0 +1,39 @@
---
name: Feature request
about: Suggest an idea for this project
---
<!--
Thanks for reporting issues back!
Guidelines for submitting issues:
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
* SECURITY: Report any potential security bug to us via our HackerOne page (https://hackerone.com/nextcloud) following our security policy (https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
* The issues in other components should be reported in their respective repositories: You will find them in our GitHub Organization (https://github.com/nextcloud/)
* You can also use the Issue Template app to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
-->
<!--- Please keep this note for other contributors -->
### How to use GitHub
* Please use the 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to show that you are affected by the same issue.
* Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
* Subscribe to receive notifications on status change and new comments.
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

84
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,84 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/"
target-branch: "main"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
open-pull-requests-limit: 10
reviewers:
- juliushaertl
- luka-nextcloud
- package-ecosystem: npm
target-branch: stable31
versioning-strategy: lockfile-only
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:15"
timezone: Europe/Paris
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 30
labels:
- 3. to review
- dependencies
- package-ecosystem: npm
target-branch: stable30
versioning-strategy: lockfile-only
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:30"
timezone: Europe/Paris
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 30
labels:
- 3. to review
- dependencies
- package-ecosystem: composer
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:45"
timezone: Europe/Paris
open-pull-requests-limit: 10
reviewers:
- juliushaertl
- luka-nextcloud
- package-ecosystem: composer
directory: "/tests/integration"
schedule:
interval: weekly
day: saturday
time: "04:00"
timezone: Europe/Paris
open-pull-requests-limit: 10
reviewers:
- juliushaertl
- luka-nextcloud
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
day: saturday
time: "04:15"
timezone: Europe/Paris
open-pull-requests-limit: 10
reviewers:
- juliushaertl
- luka-nextcloud

17
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,17 @@
* Resolves: # <!-- related github issue -->
* Target version: main
### Summary
### TODO
- [ ] ...
### Checklist
- [ ] Code is properly formatted
- [ ] Sign-off message is added to all commits
- [ ] Tests (unit, integration, api and/or acceptance) are included
- [ ] Documentation (manuals or wiki) has been updated or is not required

View File

@@ -3,7 +3,9 @@ name: Package build
on:
push:
branches:
- draggable
- main
- master
- stable*
jobs:
build:
@@ -28,14 +30,14 @@ jobs:
tools: composer
- name: install dependencies
run: |
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.13.3/krankerl_0.13.3_amd64.deb
sudo dpkg -i krankerl_0.13.3_amd64.deb
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
sudo dpkg -i krankerl_0.14.0_amd64.deb
- name: package
run: |
uname -a
RUST_BACKTRACE=1 krankerl --version
RUST_BACKTRACE=1 krankerl package
- uses: https://data.forgejo.org/forgejo/upload-artifact@v4
- uses: actions/upload-artifact@v4
with:
name: Deck app tarball
path: build/artifacts/deck.tar.gz

View File

@@ -0,0 +1,191 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Build and publish app release
on:
release:
types: [published]
permissions:
contents: write
jobs:
build_and_publish:
runs-on: ubuntu-latest
# Only allowed to be run on nextcloud-releases repositories
if: ${{ github.repository_owner == 'nextcloud-releases' }}
steps:
- name: Check actor permission
uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0
with:
require: write
- name: Set app env
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: ${{ env.APP_NAME }}
- name: Get app version number
id: app-version
uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # master
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
expression: "//info//version/text()"
- name: Validate app version against tag
run: |
[ "${{ env.APP_VERSION }}" = "v${{ fromJSON(steps.app-version.outputs.result).version }}" ]
- name: Get appinfo data
id: appinfo
uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # master
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
expression: "//info//dependencies//nextcloud/@min-version"
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
# Continue if no package.json
continue-on-error: true
with:
path: ${{ env.APP_NAME }}
fallbackNode: '^20'
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
- name: Get php version
id: php-versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
- name: Set up php ${{ steps.php-versions.outputs.php-min }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: ${{ steps.php-versions.outputs.php-min }}
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check composer.json
id: check_composer
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: "${{ env.APP_NAME }}/composer.json"
- name: Install composer dependencies
if: steps.check_composer.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
composer install --no-dev
- name: Build ${{ env.APP_NAME }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
env:
CYPRESS_INSTALL_BINARY: 0
run: |
cd ${{ env.APP_NAME }}
npm ci
npm run build --if-present
- name: Check Krankerl config
id: krankerl
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: ${{ env.APP_NAME }}/krankerl.toml
- name: Install Krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
sudo dpkg -i krankerl_0.14.0_amd64.deb
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
krankerl package
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
if: steps.krankerl.outputs.files_exists != 'true'
run: |
cd ${{ env.APP_NAME }}
make appstore
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
continue-on-error: true
id: server-checkout
run: |
NCVERSION='${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}'
wget --quiet https://download.nextcloud.com/server/releases/latest-$NCVERSION.zip
unzip latest-$NCVERSION.zip
- name: Checkout server master fallback
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
if: ${{ steps.server-checkout.outcome != 'success' }}
with:
persist-credentials: false
submodules: true
repository: nextcloud/server
path: nextcloud
- name: Sign app
run: |
# Extracting release
cd ${{ env.APP_NAME }}/build/artifacts
tar -xvf ${{ env.APP_NAME }}.tar.gz
cd ../../../
# Setting up keys
echo '${{ secrets.APP_PRIVATE_KEY }}' > ${{ env.APP_NAME }}.key
wget --quiet "https://github.com/nextcloud/app-certificate-requests/raw/master/${{ env.APP_NAME }}/${{ env.APP_NAME }}.crt"
# Signing
php nextcloud/occ integrity:sign-app --privateKey=../${{ env.APP_NAME }}.key --certificate=../${{ env.APP_NAME }}.crt --path=../${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}
# Rebuilding archive
cd ${{ env.APP_NAME }}/build/artifacts
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
- name: Attach tarball to github release
uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # v2
id: attach_to_release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}.tar.gz
asset_name: ${{ env.APP_NAME }}-${{ env.APP_VERSION }}.tar.gz
tag: ${{ github.ref }}
overwrite: true
- name: Upload app to Nextcloud appstore
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
download_url: ${{ steps.attach_to_release.outputs.browser_download_url }}
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}

153
.github/workflows/cypress-e2e.yml vendored Normal file
View File

@@ -0,0 +1,153 @@
name: Cypress
on:
pull_request:
push:
branches:
- main
- stable*
env:
APP_NAME: deck
CYPRESS_baseUrl: http://localhost:8081/index.php
jobs:
cypress:
runs-on: 'ubuntu-latest'
strategy:
fail-fast: false
matrix:
node-version: [20.x]
# containers: [1, 2, 3]
php-versions: [ '8.2' ]
server-versions: [ 'master' ]
env:
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
key: cache-v1
services:
postgres:
image: ghcr.io/nextcloud/continuous-integration-postgres-14:latest
ports:
- 4444:5432/tcp
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.4.0
with:
node-version: ${{ matrix.node-version }}
- name: Register text Git reference
run: |
text_app_ref="$(if [ "${{ matrix.server-versions }}" = "master" ]; then echo -n "main"; else echo -n "${{ matrix.server-versions }}"; fi)"
echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@v4.2.2
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Checkout ${{ env.APP_NAME }}
uses: actions/checkout@v4.2.2
with:
path: apps/${{ env.APP_NAME }}
- name: Checkout text
uses: actions/checkout@v4.2.2
with:
repository: nextcloud/text
ref: ${{ env.text_app_ref }}
path: apps/text
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
key: ${{ env.key }}
- name: Cache extensions
uses: actions/cache@v4
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.34.1
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
ini-values:
apc.enable_cli=on
coverage: none
- name: Install composer dependencies
working-directory: apps/${{ env.APP_NAME }}
run: |
composer install --no-dev
- name: Set up Nextcloud
env:
DB_PORT: 4444
PHP_CLI_SERVER_WORKERS: 20
run: |
mkdir data
echo '<?php $CONFIG=["memcache.local"=>"\OC\Memcache\APCu","hashing_default_password"=>true];' > config/config.php
php occ maintenance:install --verbose --database=pgsql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
php occ background:cron
php -f index.php
php -S 0.0.0.0:8081 &
export OC_PASS=1234561
php occ user:add --password-from-env user1
php occ user:add --password-from-env user2
php occ app:enable deck
php occ app:list
curl -v http://localhost:8081/index.php/login
- name: Cypress run
uses: cypress-io/github-action@v6
with:
build: npm run dev
record: false
parallel: false
browser: chrome
wait-on: '${{ env.CYPRESS_baseUrl }}'
working-directory: 'apps/${{ env.APP_NAME }}'
config: defaultCommandTimeout=10000,video=false
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
npm_package_name: ${{ env.APP_NAME }}
- name: Upload test failure screenshots
uses: actions/upload-artifact@v4
if: failure()
with:
name: Upload screenshots
path: apps/${{ env.APP_NAME }}/cypress/screenshots/
retention-days: 5
- name: Upload nextcloud logs
uses: actions/upload-artifact@v4
if: failure()
with:
name: Upload nextcloud log
path: data/nextcloud.log
retention-days: 5

View File

@@ -0,0 +1,49 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Dependabot
on:
pull_request_target: # zizmor: ignore[dangerous-triggers]
branches:
- main
- master
- stable*
permissions:
contents: read
concurrency:
group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
auto-approve-merge:
if: github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'renovate[bot]'
runs-on: ubuntu-latest-low
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write
steps:
- name: Disabled on forks
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
run: |
echo 'Can not approve PRs from forks'
exit 1
# GitHub actions bot approve
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# Nextcloud bot approve and merge request
- uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2
with:
target: minor
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}

36
.github/workflows/fixup.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Block fixup and squash commits
on:
pull_request:
types: [opened, ready_for_review, reopened, synchronize]
permissions:
contents: read
concurrency:
group: fixup-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
commit-message-check:
if: github.event.pull_request.draft == false
permissions:
pull-requests: write
name: Block fixup and squash commits
runs-on: ubuntu-latest-low
steps:
- name: Run check
uses: skjnldsv/block-fixup-merge-action@c138ea99e45e186567b64cf065ce90f7158c236a # v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

165
.github/workflows/integration.yml vendored Normal file
View File

@@ -0,0 +1,165 @@
name: Integration tests
on:
pull_request:
paths:
- '.github/workflows/integration.yml'
- 'appinfo/**'
- 'lib/**'
- 'templates/**'
- 'tests/**'
- 'composer.json'
- 'composer.lock'
push:
branches:
- main
- master
- stable*
env:
APP_NAME: deck
jobs:
integration:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-versions: ['8.1']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['master']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
services:
postgres:
image: postgres:14
ports:
- 4445:5432/tcp
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
mysql:
image: mariadb:10.5
ports:
- 4444:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
steps:
- name: Checkout server
uses: actions/checkout@v4.2.2
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
cd build/integration && composer require --dev phpunit/phpunit:~9
- name: Checkout app
uses: actions/checkout@v4.2.2
with:
path: apps/${{ env.APP_NAME }}
- name: Checkout activity
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: nextcloud/activity
ref: ${{ matrix.server-versions }}
path: apps/activity
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.34.1
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu, gd
ini-values:
apc.enable_cli=on
coverage: none
- name: Set up dependencies
working-directory: apps/${{ env.APP_NAME }}
run: composer i --no-dev
- name: Set up Nextcloud
run: |
if [ "${{ matrix.databases }}" = "mysql" ]; then
export DB_PORT=4444
elif [ "${{ matrix.databases }}" = "pgsql" ]; then
export DB_PORT=4445
fi
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
./occ config:system:set hashing_default_password --value=true --type=boolean
./occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
./occ config:system:set memcache.distributed --value="\\OC\\Memcache\\APCu"
cat config/config.php
./occ user:list
./occ app:enable --force ${{ env.APP_NAME }}
./occ config:system:set query_log_file --value "$PWD/query.log"
php -S localhost:8080 &
- name: Run behat
working-directory: apps/${{ env.APP_NAME }}/tests/integration
run: ./run.sh
- name: Print log
if: always()
run: cat data/nextcloud.log
- name: Query count
if: ${{ matrix.databases == 'mysql' }}
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
let myOutput = ''
let myError = ''
const options = {}
options.listeners = {
stdout: (data) => {
myOutput += data.toString()
},
stderr: (data) => {
myError += data.toString()
}
}
await exec.exec(`/bin/bash -c "cat query.log | wc -l"`, [], options)
msg = myOutput
const queryCount = parseInt(myOutput, 10)
myOutput = ''
await exec.exec('cat', ['apps/${{ env.APP_NAME }}/tests/integration/base-query-count.txt'], options)
const baseCount = parseInt(myOutput, 10)
const absoluteIncrease = queryCount - baseCount
const relativeIncrease = baseCount <= 0 ? 100 : (parseInt((absoluteIncrease / baseCount * 10000), 10) / 100)
if (absoluteIncrease >= 100 || relativeIncrease > 5) {
const comment = `🐢 Performance warning.\nIt looks like the query count of the integration tests increased with this PR.\nDatabase query count is now ` + queryCount + ' was ' + baseCount + ' (+' + relativeIncrease + '%)\nPlease check your code again. If you added a new test this can be expected and the base value in tests/integration/base-query-count.txt can be increased.'
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
})
}
if (queryCount < 100) {
const comment = `🐈 Performance messuring seems broken. Failed to get query count.`
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
})
}

100
.github/workflows/lint-eslint.yml vendored Normal file
View File

@@ -0,0 +1,100 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Lint eslint
on: pull_request
permissions:
contents: read
concurrency:
group: lint-eslint-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-latest-low
permissions:
contents: read
pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'
lint:
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.src != 'false'
name: NPM lint
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
with:
fallbackNode: '^20'
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: npm ci
- name: Lint
run: npm run lint
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, lint]
if: always()
# This is the summary, we just avoid to rename it so that branch protection rules still match
name: eslint
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi

52
.github/workflows/lint-php-cs.yml vendored Normal file
View File

@@ -0,0 +1,52 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Lint php-cs
on: pull_request
permissions:
contents: read
concurrency:
group: lint-php-cs-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
name: php-cs
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Get php version
id: versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
- name: Set up php${{ steps.versions.outputs.php-min }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: ${{ steps.versions.outputs.php-min }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install dependencies
run: |
composer remove nextcloud/ocp --dev
composer i
- name: Lint
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )

75
.github/workflows/lint-php.yml vendored Normal file
View File

@@ -0,0 +1,75 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Lint php
on: pull_request
permissions:
contents: read
concurrency:
group: lint-php-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
matrix:
runs-on: ubuntu-latest-low
outputs:
php-versions: ${{ steps.versions.outputs.php-versions }}
steps:
- name: Checkout app
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Get version matrix
id: versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0
php-lint:
runs-on: ubuntu-latest
needs: matrix
strategy:
matrix:
php-versions: ${{fromJson(needs.matrix.outputs.php-versions)}}
name: php-lint
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Lint
run: composer run lint
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: php-lint
if: always()
name: php-lint-summary
steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi

53
.github/workflows/lint-stylelint.yml vendored Normal file
View File

@@ -0,0 +1,53 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Lint stylelint
on: pull_request
permissions:
contents: read
concurrency:
group: lint-stylelint-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
name: stylelint
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
with:
fallbackNode: '^20'
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
run: npm ci
- name: Lint
run: npm run stylelint

34
.github/workflows/nodejs.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
steps:
- uses: actions/checkout@v4.2.2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.4.0
with:
node-version: ${{ matrix.node-version }}
- name: Set up npm7
run: npm i -g npm@7
- name: install dependencies
run: |
npm ci
- name: build
env:
RELATIVE_CI_KEY: ${{ secrets.RELATIVE_CI_KEY }}
RELATIVE_CI_SLUG: nextcloud/deck
run: |
mkdir -p js
npm run build --if-present -- --profile --json | tail -n +6 > js/webpack-stats.json
npx relative-ci-agent

81
.github/workflows/npm-audit-fix.yml vendored Normal file
View File

@@ -0,0 +1,81 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Npm audit fix and compile
on:
workflow_dispatch:
schedule:
# At 2:30 on Sundays
- cron: '30 2 * * 0'
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
branches: ['main', 'master', 'stable31', 'stable30', 'stable29']
name: npm-audit-fix-${{ matrix.branches }}
steps:
- name: Checkout
id: checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
ref: ${{ matrix.branches }}
continue-on-error: true
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
with:
fallbackNode: '^20'
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.1.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
- name: Fix npm audit
id: npm-audit
uses: nextcloud-libraries/npm-audit-action@1b1728b2b4a7a78d69de65608efcf4db0e3e42d0 # v0.2.0
- name: Run npm ci and npm run build
if: steps.checkout.outcome == 'success'
env:
CYPRESS_INSTALL_BINARY: 0
run: |
npm ci
npm run build --if-present
- name: Create Pull Request
if: steps.checkout.outcome == 'success'
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'fix(deps): Fix npm audit'
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
signoff: true
branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
title: '[${{ matrix.branches }}] Fix npm audit'
body: ${{ steps.npm-audit.outputs.markdown }}
labels: |
dependencies
3. to review

200
.github/workflows/phpunit-mysql.yml vendored Normal file
View File

@@ -0,0 +1,200 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: PHPUnit MySQL
on: pull_request
permissions:
contents: read
concurrency:
group: phpunit-mysql-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
matrix:
runs-on: ubuntu-latest-low
outputs:
matrix: ${{ steps.versions.outputs.sparse-matrix }}
steps:
- name: Checkout app
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Get version matrix
id: versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
with:
matrix: '{"mysql-versions": ["8.4"]}'
changes:
runs-on: ubuntu-latest-low
permissions:
contents: read
pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'appinfo/**'
- 'lib/**'
- 'templates/**'
- 'tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
phpunit-mysql:
runs-on: ubuntu-latest
needs: [changes, matrix]
if: needs.changes.outputs.src != 'false'
strategy:
matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
name: MySQL ${{ matrix.mysql-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
services:
mysql:
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
ports:
- 4444:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
steps:
- name: Set app env
if: ${{ env.APP_NAME == '' }}
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql
coverage: none
ini-file: development
# Temporary workaround for missing pcntl_* in PHP 8.3
ini-values: disable_functions=
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Enable ONLY_FULL_GROUP_BY MySQL option
run: |
echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
echo 'SELECT @@sql_mode;' | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
- name: Check composer file existence
id: check_composer
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: apps/${{ env.APP_NAME }}/composer.json
- name: Set up dependencies
# Only run if phpunit config file exists
if: steps.check_composer.outputs.files_exists == 'true'
working-directory: apps/${{ env.APP_NAME }}
run: |
composer remove nextcloud/ocp --dev
composer i
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
./occ app:enable --force ${{ env.APP_NAME }}
- name: Check PHPUnit script is defined
id: check_phpunit
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep '^ test:unit ' | wc -l | grep 1
- name: PHPUnit
# Only run if phpunit config file exists
if: steps.check_phpunit.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:unit
- name: Check PHPUnit integration script is defined
id: check_integration
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep '^ test:integration ' | wc -l | grep 1
- name: Run Nextcloud
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
run: php -S localhost:8080 &
- name: PHPUnit integration
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:integration
- name: Print logs
if: always()
run: |
cat data/nextcloud.log
- name: Skipped
# Fail the action when neither unit nor integration tests ran
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
run: |
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
exit 1
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, phpunit-mysql]
if: always()
name: phpunit-mysql-summary
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi

198
.github/workflows/phpunit-pgsql.yml vendored Normal file
View File

@@ -0,0 +1,198 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: PHPUnit PostgreSQL
on: pull_request
permissions:
contents: read
concurrency:
group: phpunit-pgsql-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
matrix:
runs-on: ubuntu-latest-low
outputs:
php-version: ${{ steps.versions.outputs.php-available-list }}
server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- name: Checkout app
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Get version matrix
id: versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
changes:
runs-on: ubuntu-latest-low
permissions:
contents: read
pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src }}
steps:
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'appinfo/**'
- 'lib/**'
- 'templates/**'
- 'tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
phpunit-pgsql:
runs-on: ubuntu-latest
needs: [changes, matrix]
if: needs.changes.outputs.src != 'false'
strategy:
matrix:
php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }}
server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
name: PostgreSQL PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
services:
postgres:
image: ghcr.io/nextcloud/continuous-integration-postgres-14:latest
ports:
- 4444:5432/tcp
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
steps:
- name: Set app env
if: ${{ env.APP_NAME == '' }}
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql
coverage: none
ini-file: development
# Temporary workaround for missing pcntl_* in PHP 8.3
ini-values: disable_functions=
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check composer file existence
id: check_composer
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: apps/${{ env.APP_NAME }}/composer.json
- name: Set up dependencies
# Only run if phpunit config file exists
if: steps.check_composer.outputs.files_exists == 'true'
working-directory: apps/${{ env.APP_NAME }}
run: |
composer remove nextcloud/ocp --dev
composer i
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=pgsql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
./occ app:enable --force ${{ env.APP_NAME }}
- name: Check PHPUnit script is defined
id: check_phpunit
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep '^ test:unit ' | wc -l | grep 1
- name: PHPUnit
# Only run if phpunit config file exists
if: steps.check_phpunit.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:unit
- name: Check PHPUnit integration script is defined
id: check_integration
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep '^ test:integration ' | wc -l | grep 1
- name: Run Nextcloud
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
run: php -S localhost:8080 &
- name: PHPUnit integration
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:integration
- name: Print logs
if: always()
run: |
cat data/nextcloud.log
- name: Skipped
# Fail the action when neither unit nor integration tests ran
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
run: |
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
exit 1
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, phpunit-pgsql]
if: always()
name: phpunit-pgsql-summary
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi

187
.github/workflows/phpunit-sqlite.yml vendored Normal file
View File

@@ -0,0 +1,187 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: PHPUnit SQLite
on: pull_request
permissions:
contents: read
concurrency:
group: phpunit-sqlite-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
matrix:
runs-on: ubuntu-latest-low
outputs:
php-version: ${{ steps.versions.outputs.php-available-list }}
server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- name: Checkout app
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Get version matrix
id: versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
changes:
runs-on: ubuntu-latest-low
permissions:
contents: read
pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src}}
steps:
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'appinfo/**'
- 'lib/**'
- 'templates/**'
- 'tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
phpunit-sqlite:
runs-on: ubuntu-latest
needs: [changes, matrix]
if: needs.changes.outputs.src != 'false'
strategy:
matrix:
php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }}
server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
name: SQLite PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
steps:
- name: Set app env
if: ${{ env.APP_NAME == '' }}
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
# Temporary workaround for missing pcntl_* in PHP 8.3
ini-values: disable_functions=
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check composer file existence
id: check_composer
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: apps/${{ env.APP_NAME }}/composer.json
- name: Set up dependencies
# Only run if phpunit config file exists
if: steps.check_composer.outputs.files_exists == 'true'
working-directory: apps/${{ env.APP_NAME }}
run: |
composer remove nextcloud/ocp --dev
composer i
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
./occ app:enable --force ${{ env.APP_NAME }}
- name: Check PHPUnit script is defined
id: check_phpunit
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep '^ test:unit ' | wc -l | grep 1
- name: PHPUnit
# Only run if phpunit config file exists
if: steps.check_phpunit.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:unit
- name: Check PHPUnit integration script is defined
id: check_integration
continue-on-error: true
working-directory: apps/${{ env.APP_NAME }}
run: |
composer run --list | grep '^ test:integration ' | wc -l | grep 1
- name: Run Nextcloud
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
run: php -S localhost:8080 &
- name: PHPUnit integration
# Only run if phpunit integration config file exists
if: steps.check_integration.outcome == 'success'
working-directory: apps/${{ env.APP_NAME }}
run: composer run test:integration
- name: Print logs
if: always()
run: |
cat data/nextcloud.log
- name: Skipped
# Fail the action when neither unit nor integration tests ran
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
run: |
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
exit 1
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, phpunit-sqlite]
if: always()
name: phpunit-sqlite-summary
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi

55
.github/workflows/pr-feedback.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-FileCopyrightText: 2023 Marcel Klehr <mklehr@gmx.net>
# SPDX-FileCopyrightText: 2023 Joas Schilling <213943+nickvergessen@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Daniel Kesselberg <mail@danielkesselberg.de>
# SPDX-FileCopyrightText: 2023 Florian Steffens <florian.steffens@nextcloud.com>
# SPDX-License-Identifier: MIT
name: 'Ask for feedback on PRs'
on:
schedule:
- cron: '30 1 * * *'
permissions:
contents: read
pull-requests: write
jobs:
pr-feedback:
if: ${{ github.repository_owner == 'nextcloud' }}
runs-on: ubuntu-latest
steps:
- name: The get-github-handles-from-website action
uses: marcelklehr/get-github-handles-from-website-action@06b2239db0a48fe1484ba0bfd966a3ab81a08308 # v1.0.1
id: scrape
with:
website: 'https://nextcloud.com/team/'
- name: Get blocklist
id: blocklist
run: |
blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -)
echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT"
- uses: nextcloud/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4 # main
with:
feedback-message: |
Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.
We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.
Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6
Thank you for contributing to Nextcloud and we hope to hear from you soon!
(If you believe you should not receive this message, you can add yourself to the [blocklist](https://github.com/nextcloud/.github/blob/master/non-community-usernames.txt).)
days-before-feedback: 14
start-date: '2024-04-30'
exempt-authors: '${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }}'
exempt-bots: true

59
.github/workflows/psalm.yml vendored Normal file
View File

@@ -0,0 +1,59 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Static analysis
on: pull_request
concurrency:
group: psalm-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
static-analysis:
runs-on: ubuntu-latest
name: static-psalm-analysis
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Get php version
id: versions
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
- name: Check enforcement of minimum PHP version ${{ steps.versions.outputs.php-min }} in psalm.xml
run: grep 'phpVersion="${{ steps.versions.outputs.php-min }}' psalm.xml
- name: Set up php${{ steps.versions.outputs.php-min }}
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: ${{ steps.versions.outputs.php-min }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
# Temporary workaround for missing pcntl_* in PHP 8.3
ini-values: disable_functions=
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install dependencies
run: |
composer remove nextcloud/ocp --dev
composer i
- name: Install nextcloud/ocp
run: composer require --dev nextcloud/ocp:dev-${{ steps.versions.outputs.branches-max }} --ignore-platform-reqs --with-dependencies
- name: Run coding standards check
run: composer run psalm -- --threads=1 --monochrome --no-progress --output-format=github

27
.github/workflows/reuse.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
# SPDX-FileCopyrightText: 2022 Free Software Foundation Europe e.V. <https://fsfe.org>
#
# SPDX-License-Identifier: CC0-1.0
name: REUSE Compliance Check
on: [pull_request]
permissions:
contents: read
jobs:
reuse-compliance-check:
runs-on: ubuntu-latest-low
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: REUSE Compliance Check
uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0

View File

@@ -0,0 +1,58 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Auto approve nextcloud/ocp
on:
pull_request_target: # zizmor: ignore[dangerous-triggers]
branches:
- main
- master
- stable*
permissions:
contents: read
concurrency:
group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
auto-approve-merge:
if: github.actor == 'nextcloud-command'
runs-on: ubuntu-latest-low
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write
# for alexwilson/enable-github-automerge-action to approve PRs
contents: write
steps:
- name: Disabled on forks
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
run: |
echo 'Can not approve PRs from forks'
exit 1
- uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
id: branchname
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# GitHub actions bot approve
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# Enable GitHub auto merge
- name: Auto merge
uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # v2.0.0
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,123 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Update nextcloud/ocp
on:
workflow_dispatch:
schedule:
- cron: "5 2 * * 0"
permissions:
contents: read
jobs:
update-nextcloud-ocp:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
branches: ['main', 'master', 'stable31', 'stable30', 'stable29']
name: update-nextcloud-ocp-${{ matrix.branches }}
steps:
- id: checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
ref: ${{ matrix.branches }}
submodules: true
continue-on-error: true
- name: Set up php8.2
if: steps.checkout.outcome == 'success'
uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1
with:
php-version: 8.2
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Read codeowners
if: steps.checkout.outcome == 'success'
id: codeowners
run: |
grep '/appinfo/info.xml' .github/CODEOWNERS | cut -f 2- -d ' ' | xargs | awk '{ print "codeowners="$0 }' >> $GITHUB_OUTPUT
continue-on-error: true
- name: Composer install
if: steps.checkout.outcome == 'success'
run: composer install
- name: Composer update nextcloud/ocp
id: update_branch
if: ${{ steps.checkout.outcome == 'success' && matrix.branches != 'main' }}
run: composer require --dev 'nextcloud/ocp:dev-${{ matrix.branches }}'
- name: Raise on issue on failure
uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_branch.conclusion == 'failure' }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
title: 'Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}'
body: 'Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}'
- name: Composer update nextcloud/ocp
id: update_main
if: ${{ steps.checkout.outcome == 'success' && matrix.branches == 'main' }}
run: composer require --dev nextcloud/ocp:dev-master
- name: Raise on issue on failure
uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_main.conclusion == 'failure' }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
title: 'Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}'
body: 'Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}'
- name: Reset checkout 3rdparty
if: steps.checkout.outcome == 'success'
run: |
git clean -f 3rdparty
git checkout 3rdparty
continue-on-error: true
- name: Reset checkout vendor
if: steps.checkout.outcome == 'success'
run: |
git clean -f vendor
git checkout vendor
continue-on-error: true
- name: Reset checkout vendor-bin
if: steps.checkout.outcome == 'success'
run: |
git clean -f vendor-bin
git checkout vendor-bin
continue-on-error: true
- name: Create Pull Request
if: steps.checkout.outcome == 'success'
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'chore(dev-deps): Bump nextcloud/ocp package'
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
signoff: true
branch: 'automated/noid/${{ matrix.branches }}-update-nextcloud-ocp'
title: '[${{ matrix.branches }}] Update nextcloud/ocp dependency'
body: |
Auto-generated update of [nextcloud/ocp](https://github.com/nextcloud-deps/ocp/) dependency
labels: |
dependencies
3. to review

View File

@@ -6,7 +6,6 @@
- Adrian Missy <adrian.missy@onewavestudios.com>
- Alexandru Puiu <alexpuiu20@yahoo.com>
- Arne Bartelt <arne.bartelt@gmail.com>
- Chandi Langecker <git@chandi.it>
- Christoph Wurst <christoph@winzerhof-wurst.at>
- Gary Kim <gary@garykim.dev>

View File

@@ -5,17 +5,6 @@
# Changelog
All notable changes to this project will be documented in this file.
## 1.16.0-beta.1
### Added
- feat: update default content @luka-nextcloud [#6740](https://github.com/nextcloud/deck/pull/6740)
- feat: add board import and export @luka-nextcloud [#6872](https://github.com/nextcloud/deck/pull/6872)
- feat: use outline icons @luka-nextcloud [#7114](https://github.com/nextcloud/deck/pull/7114)
- Add OCC commands for global calendar feature opt-in and opt-out in Deck @Fledermaus-20 [#7080](https://github.com/nextcloud/deck/pull/7080)
### Fixed
- CSV export fixes @gidan80 [#6800](https://github.com/nextcloud/deck/pull/6800)
## 1.15.0-beta.1
### Fixed
- fix: Catch not found card @juliusknorr [#6646](https://github.com/nextcloud/deck/pull/6646)

View File

@@ -24,7 +24,7 @@ Deck is a kanban style organization tool aimed at personal planning and project
### Mobile apps
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
- Nextcloud Deck app for iOS - It is available in [Apple App store](https://apps.apple.com/de/app/next-deck/id6752478755)
- [Nextcloud Deck app for iOS](https://github.com/StCyr/deck-react-native) - It is available in [Apple App store](https://apps.apple.com/ml/app/nextcloud-deck/id1570892788)
### 3rd-Party Integrations

View File

@@ -42,7 +42,7 @@
<database min-version="9.4">pgsql</database>
<database>sqlite</database>
<database min-version="8.0">mysql</database>
<nextcloud min-version="33" max-version="33"/>
<nextcloud min-version="32" max-version="32"/>
</dependencies>
<background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job>
@@ -62,7 +62,6 @@
<command>OCA\Deck\Command\UserExport</command>
<command>OCA\Deck\Command\BoardImport</command>
<command>OCA\Deck\Command\TransferOwnership</command>
<command>OCA\Deck\Command\CalendarToggle</command>
</commands>
<activity>
<settings>

View File

@@ -9,35 +9,31 @@
}
],
"require": {
"justinrainbow/json-schema": "^6.0",
"bamarni/composer-bin-plugin": "^1.8"
"justinrainbow/json-schema": "^6.0"
},
"require-dev": {
"roave/security-advisories": "dev-master",
"phpunit/phpunit": "^9",
"nextcloud/coding-standard": "^1.1",
"nextcloud/ocp": "dev-master"
"nextcloud/ocp": "dev-master",
"psalm/phar": "^5.13"
},
"config": {
"optimize-autoloader": true,
"allow-plugins": {
"composer/package-versions-deprecated": true,
"bamarni/composer-bin-plugin": true
"composer/package-versions-deprecated": true
},
"platform": {
"php": "8.1"
}
},
"scripts": {
"post-install-cmd": [
"@composer bin all install --ansi"
],
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
"cs:check": "php-cs-fixer fix --dry-run --diff",
"cs:fix": "php-cs-fixer fix",
"psalm": "psalm",
"psalm:update-baseline": "psalm --threads=$(nproc) --no-cache --update-baseline",
"psalm:fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
"psalm": "psalm.phar",
"psalm:update-baseline": "psalm.phar --update-baseline",
"psalm:fix": "psalm.phar --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
"test": [
"@test:unit",
"@test:integration"

116
composer.lock generated
View File

@@ -4,77 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "263f9ff9e6a13d50ab09bc9f4e06b749",
"content-hash": "6950663d9d213151028e780637480220",
"packages": [
{
"name": "bamarni/composer-bin-plugin",
"version": "1.8.2",
"source": {
"type": "git",
"url": "https://github.com/bamarni/composer-bin-plugin.git",
"reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
"reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
"shasum": ""
},
"require": {
"composer-plugin-api": "^2.0",
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
"composer/composer": "^2.0",
"ext-json": "*",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
"phpunit/phpunit": "^8.5 || ^9.5",
"symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0"
},
"type": "composer-plugin",
"extra": {
"class": "Bamarni\\Composer\\Bin\\BamarniBinPlugin"
},
"autoload": {
"psr-4": {
"Bamarni\\Composer\\Bin\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "No conflicts for your bin dependencies",
"keywords": [
"composer",
"conflict",
"dependency",
"executable",
"isolation",
"tool"
],
"support": {
"issues": "https://github.com/bamarni/composer-bin-plugin/issues",
"source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2"
},
"time": "2022-10-31T08:38:03+00:00"
},
{
"name": "justinrainbow/json-schema",
"version": "6.4.2",
"version": "6.4.1",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02"
"reference": "35d262c94959571e8736db1e5c9bc36ab94ae900"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/ce1fd2d47799bb60668643bc6220f6278a4c1d02",
"reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/35d262c94959571e8736db1e5c9bc36ab94ae900",
"reference": "35d262c94959571e8736db1e5c9bc36ab94ae900",
"shasum": ""
},
"require": {
@@ -134,9 +77,9 @@
],
"support": {
"issues": "https://github.com/jsonrainbow/json-schema/issues",
"source": "https://github.com/jsonrainbow/json-schema/tree/6.4.2"
"source": "https://github.com/jsonrainbow/json-schema/tree/6.4.1"
},
"time": "2025-06-03T18:27:04+00:00"
"time": "2025-04-04T13:08:07+00:00"
},
{
"name": "marc-mabe/php-enum",
@@ -437,12 +380,12 @@
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "9a2e6c0bf6f2d87e1db8d18063a5bedf85040bb2"
"reference": "97d7aa6e535670437a178084eea91a42998fef5c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/9a2e6c0bf6f2d87e1db8d18063a5bedf85040bb2",
"reference": "9a2e6c0bf6f2d87e1db8d18063a5bedf85040bb2",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/97d7aa6e535670437a178084eea91a42998fef5c",
"reference": "97d7aa6e535670437a178084eea91a42998fef5c",
"shasum": ""
},
"require": {
@@ -456,7 +399,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "33.0.0-dev"
"dev-master": "32.0.0-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -478,7 +421,7 @@
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/master"
},
"time": "2025-09-27T00:45:05+00:00"
"time": "2025-06-13T00:53:13+00:00"
},
{
"name": "nikic/php-parser",
@@ -1130,6 +1073,41 @@
],
"time": "2024-12-05T13:48:26+00:00"
},
{
"name": "psalm/phar",
"version": "5.26.1",
"source": {
"type": "git",
"url": "https://github.com/psalm/phar.git",
"reference": "8a38e7ad04499a0ccd2c506fd1da6fc01fff4547"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/psalm/phar/zipball/8a38e7ad04499a0ccd2c506fd1da6fc01fff4547",
"reference": "8a38e7ad04499a0ccd2c506fd1da6fc01fff4547",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"vimeo/psalm": "*"
},
"bin": [
"psalm.phar"
],
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Composer-based Psalm Phar",
"support": {
"issues": "https://github.com/psalm/phar/issues",
"source": "https://github.com/psalm/phar/tree/5.26.1"
},
"time": "2024-09-09T16:22:43+00:00"
},
{
"name": "psr/clock",
"version": "1.0.0",

View File

@@ -14,7 +14,6 @@
input[type=submit].icon-confirm {
border-color: var(--color-border-maxcontrast) !important;
border-style: solid;
border-left: none;
}

View File

@@ -84,7 +84,7 @@ describe('Card', function () {
cy.get('.modal-mask.card-selector .multiselect-list').should('be.visible').click()
cy.get('.vs__dropdown-menu span[title="TestList"]').should('be.visible').click()
cy.get('.modal-mask.card-selector button.button-vue--vue-primary').should('be.visible').click()
cy.get('.modal-mask.card-selector button.button-vue--primary').contains('Create card').should('be.visible').click()
cy.wait('@save', { timeout: 7000 })
cy.reload()
@@ -187,7 +187,7 @@ describe('Card', function () {
cy.get('.file-picker__main').should('be.visible')
cy.get('.file-picker__main [data-filename="welcome.txt"]', { timeout: 30000 }).should('be.visible')
.click()
cy.get('.dialog__actions button.button-vue--vue-primary').click()
cy.get('.dialog__actions button.button-vue--primary').click()
cy.get('.attachment-list .filename').contains('welcome')
cy.get('.attachment-list .filename .extension').contains('txt')
})
@@ -302,11 +302,10 @@ describe('Card', function () {
.first().click()
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
// Add delay to ensure the events are bound
cy.wait(1000)
cy.get('#app-sidebar-vue [data-test="tag-selector"] .vs__dropdown-toggle').should('be.visible').click()
cy.get('#app-sidebar-vue [data-test="tag-selector"] .vs__dropdown-toggle .vs__actions').should('be.visible').click()
cy.get('.vs__dropdown-menu .tag:contains("Action needed")').should('be.visible').click()
cy.get('.vs__dropdown-menu .tag:contains("Later")').should('not.exist')
cy.get('#app-sidebar-vue [data-test="tag-selector"] .vs__dropdown-toggle .vs__actions').should('be.visible').click()
cy.get('.vs__dropdown-menu .tag:contains("Later")').should('be.visible').click()
cy.get('.vs__selected .tag:contains("Action needed")').should('be.visible')

View File

@@ -27,7 +27,7 @@ describe('Deck dashboard', function() {
const defaultBoard = 'Welcome to Nextcloud Deck!'
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
cy.get('#deck-navigation-all')
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + defaultBoard + ')')
.first()
.contains(defaultBoard)

View File

@@ -93,7 +93,7 @@ Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
})
Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
return cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
return cy.get('#deck-navigation-all')
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + boardTitle + ')')
.find('a.app-navigation-entry-link')
})
@@ -102,11 +102,7 @@ Cypress.Commands.add('shareBoardWithUi', (query, userId=query) => {
cy.intercept({ method: 'GET', url: `**/ocs/v2.php/apps/files_sharing/api/v1/sharees?search=${query}*` }).as('fetchRecipients')
cy.get('[aria-label="Open details"]').click()
cy.get('.app-sidebar').should('be.visible')
// Add delay to ensure the events are bound
cy.wait(1000)
cy.get('.select input').click().type(`${query}`)
cy.get('.select input').type(`${query}`)
cy.wait('@fetchRecipients', { timeout: 7000 })
cy.get('.vs__dropdown-menu .option').first().contains(query)

View File

@@ -6,7 +6,7 @@ The REST API provides access for authenticated users to their data inside the De
# Prerequisites
- All requests require a `OCS-APIRequest` HTTP header to be set to `true` and a `Content-Type` of `application/json`. This does not apply to the endpoint for uploading attachments, which consumes `multipart/form-data`.
- All requests require a `OCS-APIRequest` HTTP header to be set to `true` and a `Content-Type` of `application/json`.
- The API is located at https://nextcloud.local/index.php/apps/deck/api/v1.0
- All request parameters are required, unless otherwise specified
@@ -733,7 +733,6 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------- |
| labelId | Integer | The label id to assign to the card |
#### Response
##### 200 Success
@@ -998,12 +997,10 @@ The request can fail with a bad request response for the following reasons:
#### Request data
The request is performed as `multipart/form-data`.
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------------------------------------------------------------- |
| type | String | The type of the attachement. Use `file` or `deck_file`. |
| file | Binary | File data to add as an attachment together with the `filename` parameter according to RFC 7578. |
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| type | String | The type of the attachement |
| file | Binary | File data to add as an attachment |
- Prior to Deck version v1.3.0 (API v1.0), attachments were stored within deck. For this type of attachments `deck_file` was used as the default type of attachments
- Starting with Deck version 1.3.0 (API v1.1) files are stored within the users regular Nextcloud files and the type `file` has been introduced for that
@@ -1025,13 +1022,12 @@ The request is performed as `multipart/form-data`.
#### Request data
The request is performed as `multipart/form-data`.
| Parameter | Type | Description |
| --------- | ------- | ----------------------------------------------------------------------------------------------- |
| type | String | The type of the attachement. For now only `deck_file` is supported as an attachment type. |
| file | Binary | File data to add as an attachment together with the `filename` parameter according to RFC 7578. |
| Parameter | Type | Description |
| --------- | ------- | --------------------------------------------- |
| type | String | The type of the attachement |
| file | Binary | File data to add as an attachment |
For now only `deck_file` is supported as an attachment type.
#### Response

View File

@@ -45,10 +45,10 @@ OC.L10N.register(
"No notifications" : "Geen kennisgewings",
"Advanced options" : "Gevorderde opsies",
"Export" : "Voer uit",
"Today" : "Vandag",
"Tomorrow" : "Môre",
"Due date" : "Sperdatum",
"Share" : "Deel",
"Personal" : "Persoonlik",
"Today" : "Vandag",
"Tomorrow" : "Môre"
"Personal" : "Persoonlik"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -43,10 +43,10 @@
"No notifications" : "Geen kennisgewings",
"Advanced options" : "Gevorderde opsies",
"Export" : "Voer uit",
"Today" : "Vandag",
"Tomorrow" : "Môre",
"Due date" : "Sperdatum",
"Share" : "Deel",
"Personal" : "Persoonlik",
"Today" : "Vandag",
"Tomorrow" : "Môre"
"Personal" : "Persoonlik"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -360,6 +360,9 @@ OC.L10N.register(
"Export as CSV" : "صدِّر كـ CSV",
"Export" : "تصدير",
"Loading filtered view" : "جارِ تحميل التصفية ",
"Today" : "اليوم",
"Tomorrow" : "غدا",
"No due" : "غير محدد",
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
"No results found" : "لا يتم العثور على أي نتائج ",
"Deck board {name}\n* Last modified on {lastMod}" : "اسم اللوحة {name} \n* آخر تعديل لها في {lastMod}",
@@ -399,9 +402,6 @@ OC.L10N.register(
"Example Task 3" : "مثال المهمة 3",
"Example Task 2" : "مثال المهمة 2",
"Example Task 1" : "مثال المهمة 1",
"Move card to another board" : "حرك البطاقة الى لوح اخر",
"Today" : "اليوم",
"Tomorrow" : "غدا",
"No due" : "غير محدد"
"Move card to another board" : "حرك البطاقة الى لوح اخر"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");

View File

@@ -358,6 +358,9 @@
"Export as CSV" : "صدِّر كـ CSV",
"Export" : "تصدير",
"Loading filtered view" : "جارِ تحميل التصفية ",
"Today" : "اليوم",
"Tomorrow" : "غدا",
"No due" : "غير محدد",
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
"No results found" : "لا يتم العثور على أي نتائج ",
"Deck board {name}\n* Last modified on {lastMod}" : "اسم اللوحة {name} \n* آخر تعديل لها في {lastMod}",
@@ -397,9 +400,6 @@
"Example Task 3" : "مثال المهمة 3",
"Example Task 2" : "مثال المهمة 2",
"Example Task 1" : "مثال المهمة 1",
"Move card to another board" : "حرك البطاقة الى لوح اخر",
"Today" : "اليوم",
"Tomorrow" : "غدا",
"No due" : "غير محدد"
"Move card to another board" : "حرك البطاقة الى لوح اخر"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
}

View File

@@ -102,6 +102,8 @@ OC.L10N.register(
"Clone cards" : "Clonar les tarxetes",
"Advanced options" : "Opciones avanzaes",
"Export" : "Esportar",
"Today" : "Güei",
"Tomorrow" : "Mañana",
"No results found" : "Nun s'atopó nengún resultáu",
"Close" : "Zarrar",
"Message from {author} in {conversationName}" : "Mensaxe de {author} en {conversationName}",
@@ -112,8 +114,6 @@ OC.L10N.register(
"To do" : "Xera pendiente",
"Example Task 3" : "Xera d'exemplu 3",
"Example Task 2" : "Xera d'exemplu 2",
"Example Task 1" : "Xera d'exemplu 1",
"Today" : "Güei",
"Tomorrow" : "Mañana"
"Example Task 1" : "Xera d'exemplu 1"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -100,6 +100,8 @@
"Clone cards" : "Clonar les tarxetes",
"Advanced options" : "Opciones avanzaes",
"Export" : "Esportar",
"Today" : "Güei",
"Tomorrow" : "Mañana",
"No results found" : "Nun s'atopó nengún resultáu",
"Close" : "Zarrar",
"Message from {author} in {conversationName}" : "Mensaxe de {author} en {conversationName}",
@@ -110,8 +112,6 @@
"To do" : "Xera pendiente",
"Example Task 3" : "Xera d'exemplu 3",
"Example Task 2" : "Xera d'exemplu 2",
"Example Task 1" : "Xera d'exemplu 1",
"Today" : "Güei",
"Tomorrow" : "Mañana"
"Example Task 1" : "Xera d'exemplu 1"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -35,10 +35,10 @@ OC.L10N.register(
"Search" : "Axtarış",
"Shared with you" : "Shared with you",
"Export" : ıxarış",
"Today" : "Bu gün",
"Tomorrow" : "Sabah",
"Close" : "Bağla",
"Share" : "Paylaş",
"Personal" : "Şəxsi",
"Today" : "Bu gün",
"Tomorrow" : "Sabah"
"Personal" : "Şəxsi"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -33,10 +33,10 @@
"Search" : "Axtarış",
"Shared with you" : "Shared with you",
"Export" : ıxarış",
"Today" : "Bu gün",
"Tomorrow" : "Sabah",
"Close" : "Bağla",
"Share" : "Paylaş",
"Personal" : "Şəxsi",
"Today" : "Bu gün",
"Tomorrow" : "Sabah"
"Personal" : "Şəxsi"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,93 +0,0 @@
OC.L10N.register(
"deck",
{
"The file was uploaded" : "Файл быў запампаваны.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Памер запампаванага файла перавышае значэнне дырэктывы upload_max_filesize у php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Памер запампаванага файла перавышае значэнне дырэктывы MAX_FILE_SIZE у HTML форме",
"The file was only partially uploaded" : "Файл быў запампаваны толькі часткова",
"No file was uploaded" : "Ніводзін файл не быў запампаваны",
"Missing a temporary folder" : "Адсутнічае часовая папка",
"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",
"copy" : "копія",
"Done" : "Гатова",
"File" : "Файл",
"Invalid date, date format must be YYYY-MM-DD" : "Памылковая дата, дата павінна быць у фармаце ГГГГ-ММ-ДД",
"Cancel" : "Скасаваць",
"Drop your files to upload" : "Перацягніце файлы для запампоўвання",
"File already exists" : "Файл ужо існуе",
"A file with the name {filename} already exists." : "Файл з назвай {filename} ужо існуе.",
"Do you want to overwrite it?" : "Хочаце перазапісаць яго?",
"Overwrite file" : "Перазапісаць файл",
"Keep existing file" : "Пакінуць існуючы файл",
"Active filters" : "Актыўныя фільтры",
"Apply filter" : "Ужыць фільтр",
"Open" : "Адкрыць",
"Clear filter" : "Ачысціць фільтр",
"Open details" : "Адкрыць падрабязнасці",
"Details" : "Падрабязнасці",
"Sharing" : "Абагульванне",
"Tags" : "Тэгі",
"Activity" : "Актыўнасць",
"Undo" : "Адрабіць",
"Transfer" : "Перадаць",
"(Group)" : "(Група)",
"Can edit" : "Можа рэдагаваць",
"Can share" : "Можа абагульваць",
"Owner" : "Уладальнік",
"Delete" : "Выдаліць",
"Edit" : "Рэдагаваць",
"Members" : "Удзельнікі",
"File to share" : "Файл для абагульвання",
"Invalid path selected" : "Выбраны памылковы шлях",
"Share from Files" : "Абагуліць з Файлаў",
"Show in Files" : "Паказаць у Файлах",
"Download" : "Спампаваць",
"Modified" : "Зменены",
"Comments" : "Каментарыі",
"Save" : "Захаваць",
"Created:" : "Створана:",
"Cancel reply" : "Скасаваць адказ",
"Reply" : "Адказаць",
"Update" : "Абнавіць",
"Description" : "Апісанне",
"Formatting help" : "Даведка па фармаціраванні",
"Later today {timeLocale}" : "Пазней сёння {timeLocale}",
"Set due date for later today" : "Задаць дату выканання на пазней сёння",
"Tomorrow {timeLocale}" : "Заўтра {timeLocale}",
"This weekend {timeLocale}" : "У гэты ўік-энд {timeLocale}",
"Set due date for this weekend" : "Задаць дату выканання на гэты ўік-энд",
"Next week {timeLocale}" : "На наступным тыдні {timeLocale}",
"Set due date for next week" : "Задаць дату выканання на наступны тыдзень",
"Create a new tag:" : "Стварыць новы тэг:",
"(group)" : "(група)",
"Open link" : "Адкрыць спасылку",
"Edit title" : "Рэдагаваць загаловак",
"seconds ago" : "с таму",
"Keyboard shortcuts" : "Спалучэнні клавіш",
"Keyboard shortcut" : "Спалучэнне клавіш",
"Action" : "Дзеянне",
"Shift" : "Shift",
"Ctrl" : "Ctrl",
"Search" : "Пошук",
"Enter" : "Enter",
"Shared with you" : "Абагулена з вамі",
"Cancel edit" : "Скасаваць рэдагаванне",
"An error occurred" : "Узнікла памылка",
"No notifications" : "Няма апавяшчэнняў",
"Export" : "Экспарт",
"No results found" : "Вынікаў не знойдзена",
"{stack} in {board}" : "{stack} у {board}",
"Close" : "Закрыць",
"Message from {author} in {conversationName}" : "Паведамленне ад {author} у {conversationName}",
"Failed to upload {name}" : "Не ўдалося запампаваць {name}",
"Share" : "Абагуліць",
"Personal" : "Асабістыя",
"Example Task 3" : "Прыклад задання 3",
"Example Task 2" : "Прыклад задання 2",
"Example Task 1" : "Прыклад задання 1",
"Today" : "Сёння",
"Tomorrow" : "Заўтра"
},
"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);");

View File

@@ -1,91 +0,0 @@
{ "translations": {
"The file was uploaded" : "Файл быў запампаваны.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Памер запампаванага файла перавышае значэнне дырэктывы upload_max_filesize у php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Памер запампаванага файла перавышае значэнне дырэктывы MAX_FILE_SIZE у HTML форме",
"The file was only partially uploaded" : "Файл быў запампаваны толькі часткова",
"No file was uploaded" : "Ніводзін файл не быў запампаваны",
"Missing a temporary folder" : "Адсутнічае часовая папка",
"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",
"copy" : "копія",
"Done" : "Гатова",
"File" : "Файл",
"Invalid date, date format must be YYYY-MM-DD" : "Памылковая дата, дата павінна быць у фармаце ГГГГ-ММ-ДД",
"Cancel" : "Скасаваць",
"Drop your files to upload" : "Перацягніце файлы для запампоўвання",
"File already exists" : "Файл ужо існуе",
"A file with the name {filename} already exists." : "Файл з назвай {filename} ужо існуе.",
"Do you want to overwrite it?" : "Хочаце перазапісаць яго?",
"Overwrite file" : "Перазапісаць файл",
"Keep existing file" : "Пакінуць існуючы файл",
"Active filters" : "Актыўныя фільтры",
"Apply filter" : "Ужыць фільтр",
"Open" : "Адкрыць",
"Clear filter" : "Ачысціць фільтр",
"Open details" : "Адкрыць падрабязнасці",
"Details" : "Падрабязнасці",
"Sharing" : "Абагульванне",
"Tags" : "Тэгі",
"Activity" : "Актыўнасць",
"Undo" : "Адрабіць",
"Transfer" : "Перадаць",
"(Group)" : "(Група)",
"Can edit" : "Можа рэдагаваць",
"Can share" : "Можа абагульваць",
"Owner" : "Уладальнік",
"Delete" : "Выдаліць",
"Edit" : "Рэдагаваць",
"Members" : "Удзельнікі",
"File to share" : "Файл для абагульвання",
"Invalid path selected" : "Выбраны памылковы шлях",
"Share from Files" : "Абагуліць з Файлаў",
"Show in Files" : "Паказаць у Файлах",
"Download" : "Спампаваць",
"Modified" : "Зменены",
"Comments" : "Каментарыі",
"Save" : "Захаваць",
"Created:" : "Створана:",
"Cancel reply" : "Скасаваць адказ",
"Reply" : "Адказаць",
"Update" : "Абнавіць",
"Description" : "Апісанне",
"Formatting help" : "Даведка па фармаціраванні",
"Later today {timeLocale}" : "Пазней сёння {timeLocale}",
"Set due date for later today" : "Задаць дату выканання на пазней сёння",
"Tomorrow {timeLocale}" : "Заўтра {timeLocale}",
"This weekend {timeLocale}" : "У гэты ўік-энд {timeLocale}",
"Set due date for this weekend" : "Задаць дату выканання на гэты ўік-энд",
"Next week {timeLocale}" : "На наступным тыдні {timeLocale}",
"Set due date for next week" : "Задаць дату выканання на наступны тыдзень",
"Create a new tag:" : "Стварыць новы тэг:",
"(group)" : "(група)",
"Open link" : "Адкрыць спасылку",
"Edit title" : "Рэдагаваць загаловак",
"seconds ago" : "с таму",
"Keyboard shortcuts" : "Спалучэнні клавіш",
"Keyboard shortcut" : "Спалучэнне клавіш",
"Action" : "Дзеянне",
"Shift" : "Shift",
"Ctrl" : "Ctrl",
"Search" : "Пошук",
"Enter" : "Enter",
"Shared with you" : "Абагулена з вамі",
"Cancel edit" : "Скасаваць рэдагаванне",
"An error occurred" : "Узнікла памылка",
"No notifications" : "Няма апавяшчэнняў",
"Export" : "Экспарт",
"No results found" : "Вынікаў не знойдзена",
"{stack} in {board}" : "{stack} у {board}",
"Close" : "Закрыць",
"Message from {author} in {conversationName}" : "Паведамленне ад {author} у {conversationName}",
"Failed to upload {name}" : "Не ўдалося запампаваць {name}",
"Share" : "Абагуліць",
"Personal" : "Асабістыя",
"Example Task 3" : "Прыклад задання 3",
"Example Task 2" : "Прыклад задання 2",
"Example Task 1" : "Прыклад задання 1",
"Today" : "Сёння",
"Tomorrow" : "Заўтра"
},"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);"
}

View File

@@ -293,6 +293,9 @@ OC.L10N.register(
"Export as CSV" : "Експортиране като CSV файл",
"Export" : "Експорт /изнасям/",
"Loading filtered view" : "Зареждане на филтриран изглед",
"Today" : "Днес",
"Tomorrow" : "Утре",
"No due" : "Не се дължи",
"Search for {searchQuery} in all boards" : "Търсене на {searchQuery} във всички табла",
"No results found" : "Няма намерени резултати",
"Deck board {name}\n* Last modified on {lastMod}" : "Табло {name}\n* Последна промяна на {lastMod}",
@@ -330,9 +333,6 @@ OC.L10N.register(
"Example Task 3" : "Примерна задача 3",
"Example Task 2" : "Примерна задача 2",
"Example Task 1" : "Примерна задача 1",
"Move card to another board" : "Преместване на картата на друго табло",
"Today" : "Днес",
"Tomorrow" : "Утре",
"No due" : "Не се дължи"
"Move card to another board" : "Преместване на картата на друго табло"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -291,6 +291,9 @@
"Export as CSV" : "Експортиране като CSV файл",
"Export" : "Експорт /изнасям/",
"Loading filtered view" : "Зареждане на филтриран изглед",
"Today" : "Днес",
"Tomorrow" : "Утре",
"No due" : "Не се дължи",
"Search for {searchQuery} in all boards" : "Търсене на {searchQuery} във всички табла",
"No results found" : "Няма намерени резултати",
"Deck board {name}\n* Last modified on {lastMod}" : "Табло {name}\n* Последна промяна на {lastMod}",
@@ -328,9 +331,6 @@
"Example Task 3" : "Примерна задача 3",
"Example Task 2" : "Примерна задача 2",
"Example Task 1" : "Примерна задача 1",
"Move card to another board" : "Преместване на картата на друго табло",
"Today" : "Днес",
"Tomorrow" : "Утре",
"No due" : "Не се дължи"
"Move card to another board" : "Преместване на картата на друго табло"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -29,10 +29,10 @@ OC.L10N.register(
"Search" : "Search",
"Shared with you" : "Shared with you",
"Export" : "রপ্তানি",
"Today" : "আজ",
"Tomorrow" : "আগামীকাল",
"Close" : "বন্ধ",
"Share" : "ভাগাভাগি কর",
"Personal" : "ব্যক্তিগত",
"Today" : "আজ",
"Tomorrow" : "আগামীকাল"
"Personal" : "ব্যক্তিগত"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -27,10 +27,10 @@
"Search" : "Search",
"Shared with you" : "Shared with you",
"Export" : "রপ্তানি",
"Today" : "আজ",
"Tomorrow" : "আগামীকাল",
"Close" : "বন্ধ",
"Share" : "ভাগাভাগি কর",
"Personal" : "ব্যক্তিগত",
"Today" : "আজ",
"Tomorrow" : "আগামীকাল"
"Personal" : "ব্যক্তিগত"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -41,10 +41,10 @@ OC.L10N.register(
"Search" : "Klask",
"Shared with you" : "Rannet ganeoc'h",
"No notifications" : "Kemennadenn ebet",
"Today" : "Hiziv",
"Tomorrow" : "Warc'hoaz",
"Close" : "Serriñ",
"Share" : "Rannan",
"Personal" : "Personel",
"Today" : "Hiziv",
"Tomorrow" : "Warc'hoaz"
"Personal" : "Personel"
},
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");

View File

@@ -39,10 +39,10 @@
"Search" : "Klask",
"Shared with you" : "Rannet ganeoc'h",
"No notifications" : "Kemennadenn ebet",
"Today" : "Hiziv",
"Tomorrow" : "Warc'hoaz",
"Close" : "Serriñ",
"Share" : "Rannan",
"Personal" : "Personel",
"Today" : "Hiziv",
"Tomorrow" : "Warc'hoaz"
"Personal" : "Personel"
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
}

View File

@@ -25,11 +25,11 @@ OC.L10N.register(
"Search" : "Search",
"Shared with you" : "Shared with you",
"Export" : "Izvezi",
"Today" : "Danas",
"Tomorrow" : "Sutra",
"Close" : "Zatvori",
"Maximum file size of {size} exceeded" : "Maksimalna veličina datoteke prekoračena",
"Share" : "Podjeli",
"Personal" : "Osobno",
"Today" : "Danas",
"Tomorrow" : "Sutra"
"Personal" : "Osobno"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");

View File

@@ -23,11 +23,11 @@
"Search" : "Search",
"Shared with you" : "Shared with you",
"Export" : "Izvezi",
"Today" : "Danas",
"Tomorrow" : "Sutra",
"Close" : "Zatvori",
"Maximum file size of {size} exceeded" : "Maksimalna veličina datoteke prekoračena",
"Share" : "Podjeli",
"Personal" : "Osobno",
"Today" : "Danas",
"Tomorrow" : "Sutra"
"Personal" : "Osobno"
},"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);"
}

View File

@@ -360,6 +360,9 @@ OC.L10N.register(
"Export as CSV" : "Exporta a CSV",
"Export" : "Exporta",
"Loading filtered view" : "S'està carregant la visualització filtrada",
"Today" : "Avui",
"Tomorrow" : "Demà",
"No due" : "Sense venciment",
"Search for {searchQuery} in all boards" : "Busca {searchQuery} a tots els taulers",
"No results found" : "No s'han trobat resultats",
"Deck board {name}\n* Last modified on {lastMod}" : "Tauler de piles {name}\n* Última modificació el dia {lastMod}",
@@ -399,9 +402,6 @@ OC.L10N.register(
"Example Task 3" : "Tasca d'exemple 3",
"Example Task 2" : "Tasca d'exemple 2",
"Example Task 1" : "Tasca d'exemple 1",
"Move card to another board" : "Mou la targeta a un altre tauler",
"Today" : "Avui",
"Tomorrow" : "Demà",
"No due" : "Sense venciment"
"Move card to another board" : "Mou la targeta a un altre tauler"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -358,6 +358,9 @@
"Export as CSV" : "Exporta a CSV",
"Export" : "Exporta",
"Loading filtered view" : "S'està carregant la visualització filtrada",
"Today" : "Avui",
"Tomorrow" : "Demà",
"No due" : "Sense venciment",
"Search for {searchQuery} in all boards" : "Busca {searchQuery} a tots els taulers",
"No results found" : "No s'han trobat resultats",
"Deck board {name}\n* Last modified on {lastMod}" : "Tauler de piles {name}\n* Última modificació el dia {lastMod}",
@@ -397,9 +400,6 @@
"Example Task 3" : "Tasca d'exemple 3",
"Example Task 2" : "Tasca d'exemple 2",
"Example Task 1" : "Tasca d'exemple 1",
"Move card to another board" : "Mou la targeta a un altre tauler",
"Today" : "Avui",
"Tomorrow" : "Demà",
"No due" : "Sense venciment"
"Move card to another board" : "Mou la targeta a un altre tauler"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -373,7 +373,9 @@ OC.L10N.register(
"Note: Only the JSON format is supported for importing back into the Deck app." : "Pozn.: Pro import zpět do aplikace Deck je podporován pouze formát JSON.",
"Export" : "Exportovat",
"Loading filtered view" : "Načítání filtrovaného pohledu",
"Search for {searchQuery} in other boards" : "Hledat {searchQuery} v ostatních tabulích",
"Today" : "Dnes",
"Tomorrow" : "Zítra",
"No due" : "Žádný termín",
"Search for {searchQuery} in all boards" : "Hledat {searchQuery} na všech tabulích",
"No results found" : "Nenalezeny žádné výsledky",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck karta {name}\n* Naposledy změněno {lastMod}",
@@ -414,9 +416,6 @@ OC.L10N.register(
"Example Task 3" : "Třetí úkol pro ukázku",
"Example Task 2" : "Druhý úkol pro ukázku",
"Example Task 1" : "První úkol pro ukázku",
"Move card to another board" : "Přesunout kartu na jinou tabuli",
"Today" : "Dnes",
"Tomorrow" : "Zítra",
"No due" : "Žádný termín"
"Move card to another board" : "Přesunout kartu na jinou tabuli"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");

View File

@@ -371,7 +371,9 @@
"Note: Only the JSON format is supported for importing back into the Deck app." : "Pozn.: Pro import zpět do aplikace Deck je podporován pouze formát JSON.",
"Export" : "Exportovat",
"Loading filtered view" : "Načítání filtrovaného pohledu",
"Search for {searchQuery} in other boards" : "Hledat {searchQuery} v ostatních tabulích",
"Today" : "Dnes",
"Tomorrow" : "Zítra",
"No due" : "Žádný termín",
"Search for {searchQuery} in all boards" : "Hledat {searchQuery} na všech tabulích",
"No results found" : "Nenalezeny žádné výsledky",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck karta {name}\n* Naposledy změněno {lastMod}",
@@ -412,9 +414,6 @@
"Example Task 3" : "Třetí úkol pro ukázku",
"Example Task 2" : "Druhý úkol pro ukázku",
"Example Task 1" : "První úkol pro ukázku",
"Move card to another board" : "Přesunout kartu na jinou tabuli",
"Today" : "Dnes",
"Tomorrow" : "Zítra",
"No due" : "Žádný termín"
"Move card to another board" : "Přesunout kartu na jinou tabuli"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}

View File

@@ -31,9 +31,9 @@ OC.L10N.register(
"No reminder" : "Dim nodyn atgoffa",
"An error occurred" : "Digwyddodd gwall",
"Export" : "Allforio",
"Today" : "Heddiw",
"Close" : "Cau",
"Share" : "Rhannu",
"Personal" : "Personol",
"Today" : "Heddiw"
"Personal" : "Personol"
},
"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");

View File

@@ -29,9 +29,9 @@
"No reminder" : "Dim nodyn atgoffa",
"An error occurred" : "Digwyddodd gwall",
"Export" : "Allforio",
"Today" : "Heddiw",
"Close" : "Cau",
"Share" : "Rhannu",
"Personal" : "Personol",
"Today" : "Heddiw"
"Personal" : "Personol"
},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
}

View File

@@ -29,11 +29,6 @@ OC.L10N.register(
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} har slettet kortet {card} i listen {stack} på tavlen {board}",
"You have renamed the card {before} to {card}" : "Du har omdøbt kortet {before} til {card}",
"{user} has renamed the card {before} to {card}" : "{user} har omdøbt kortet {before} til {card}",
"You have added a description to card {card} in list {stack} on board {board}" : "Du har tilføjet en beskrivelse til kortet {card} i listen {stack} på tavlen {board}",
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} har tilføjet en beskrivelse til kortet {card} i listen {stack} på tavlen {board}",
"You have updated the description of card {card} in list {stack} on board {board}" : "Du har opdateret beskrivelsen for kortet {card} i listen {stack} på tavlen {board}",
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} har opdateret beskrivelsen for kortet {card} i listen {stack} på tavlen {board}",
"You have archived card {card} in list {stack} on board {board}" : "Du har arkiveret kortet {card} i listen {stack} på tavlen {board}",
"Deck" : "Opslag",
"Changes in the <strong>Deck app</strong>" : "Ændringer i <strong>Opslags app'en</strong>",
"The file was uploaded" : "Filen blev uploadet",
@@ -51,14 +46,13 @@ OC.L10N.register(
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} har tilknyttet kortet {deck-card} på {deck-board} til dig.",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin forfaldsdato.",
"The card {deck-card} on {deck-board} has reached its due date." : "Kortet {deck-card} på {deck-board} har nået sin forfaldsdato.",
"%s has mentioned you in a comment on \"%s\"." : " %s har omtalt dig i en kommentar på \"%s\".",
"{user} has mentioned you in a comment on {deck-card}." : "{user} har omtalt dig i en kommentar på {deck-card}.",
"%s has mentioned you in a comment on \"%s\"." : " %s har nævnt dig i en kommentar på \"%s\".",
"{user} has mentioned you in a comment on {deck-card}." : "{user} har nævnt dig i en kommentar på {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "Tavlen \"%s\" er blevet delt med dig af %s.",
"{user} has shared {deck-board} with you." : "{user} har delt {deck-board} med dig.",
"Deck board" : "Opslagstavle",
"Deck boards, cards and comments" : "Opslagstavler, kort og kommentarer",
"Create a new deck card" : "Opret et nyt opslagskort",
"Card comments" : "Kommentarer på kort",
"%s on %s" : "%s på %s",
"Deck boards and cards" : "Opslagstavler og -kort",
"No data was provided to create an attachment." : "Ingen data blev givet som kunne vedhæftes",
@@ -70,7 +64,6 @@ OC.L10N.register(
"To Do" : "To-do liste",
"In Progress" : "I gang",
"Done" : "Afsluttet",
"Create your first card!" : "Opret dit første kort!",
"Attachments" : "Vedhæftede filer",
"File" : "Fil",
"Card not found" : "Kort ikke fundet.",
@@ -82,12 +75,10 @@ OC.L10N.register(
"Select the board to link to a project" : "Vælg tavlen der skal linkes til et projekt",
"Search by board title" : "Søg efter tavletitel",
"Select board" : "Vælg tavle",
"Move/copy card" : "Flyt/kopiér kort",
"Select a board" : "Vælg en tavle",
"No lists available" : "Ingen lister tilgængelige",
"Select a list" : "Vælg en liste",
"Move card" : "Flyt kort",
"Copy card" : "Kopiér kort",
"Select the card to link to a project" : "Vælg kortet der skal linkes til et projekt",
"Link to card" : "Link til kort",
"Select a card" : "Vælg et kort",
@@ -149,7 +140,7 @@ OC.L10N.register(
"Add a new card" : "Tilføj et nyt kort",
"Card name" : "Kortnavn",
"title and color value must be provided" : "Titel- og farveværdi skal angives.",
"Edit" : "Redigér",
"Edit" : "Rediger",
"Add a new tag" : "Opret et nyt tag",
"Board name" : "Tavlenavn",
"Members" : "Medlemmer",
@@ -177,21 +168,17 @@ OC.L10N.register(
"In reply to" : "Som svar til",
"Cancel reply" : "Annuller svar",
"Reply" : "Besvar",
"Update" : "Opdatér",
"Update" : "Opdater",
"Write a description …" : "Skriv en beskrivelse...",
"Description" : "Beskrivelse",
"(Unsaved)" : "(Ikke gemt)",
"(Saving…)" : "(Gemmer...)",
"Formatting help" : "Hjælp til formatering",
"Edit description" : "Redigér beskrivelse",
"Edit description" : "Rediger beskrivelse",
"View description" : "Se beskrivelse",
"Add Attachment" : "Tilføj vedhæftning",
"Choose attachment" : "Vælg en vedhæftning",
"Select Date" : "Vælg dato",
"Later today {timeLocale}" : "Senere i dag {timeLocale}",
"Tomorrow {timeLocale}" : "I morgen {timeLocale}",
"This weekend {timeLocale}" : "Denne weekend {timeLocale}",
"Next week {timeLocale}" : "Næste uge {timeLocale}",
"Set a due date" : "Angiv en forfaldsdato",
"Remove due date" : "Fjern forfaldsdato",
"Mark as done" : "Marker som færdig",
@@ -201,10 +188,9 @@ OC.L10N.register(
"Assign a tag to this card…" : "Tilføj et Tag til dette kort ...",
"Create a new tag:" : "Opret et nyt tag:",
"(group)" : "(gruppe)",
"Edit card title" : "Redigér titel på kort",
"Open link" : "Åben link",
"Card deleted" : "Kort slettet",
"Edit title" : "Redigér titel",
"Edit title" : "Rediger titel",
"Assign to me" : "Tildel til mig",
"Unassign myself" : "Fjern mig selv",
"Delete card" : "Slet kort",
@@ -214,24 +200,16 @@ OC.L10N.register(
"Keyboard shortcut" : "Tastaturgenvej",
"Action" : "Handling",
"Shift" : "Shift",
"Navigate between cards" : "Naviger mellem kort",
"Close card details" : "Luk detaljer for kort",
"Ctrl" : "Ctrl",
"Search" : "Søg",
"Show card filters" : "Vis kort filtre",
"Clear card filters" : "Ryd kort filtre",
"Card actions" : "Kort handlinger",
"Enter" : "Indtast",
"Open card details" : "Åbn detaljer for kort",
"Edit the card title" : "Redigér titel på kort",
"Assign yourself to the current card" : "Tilknyt dig selv til det aktuelle kort",
"All boards" : "Alle tavler",
"Archived boards" : "Arkiverede lister",
"Shared with you" : "Delt med dig",
"Deck settings" : "Opslagsindstillinger",
"Use bigger card view" : "Brug større kort visning",
"Show boards in calendar/tasks" : "Vis tavler i kalender/opgaver",
"Cancel edit" : "Annullér redigering",
"Cancel edit" : "Annuller redigering",
"Board {0} deleted" : "Tavle {0} er slettet",
"All cards" : "Alle kort",
"Only assigned cards" : "Kun tildelte kort",
@@ -239,7 +217,7 @@ OC.L10N.register(
"An error occurred" : "Der opstod en fejl",
"Delete the board?" : "Slet tavlen?",
"Board details" : "Tavledetaljer",
"Edit board" : "Redigér liste",
"Edit board" : "Rediger liste",
"Clone board" : "Klon tavle",
"Unarchive board" : "Genaktiver tavle",
"Archive board" : "Arkiver tavle",
@@ -259,11 +237,14 @@ OC.L10N.register(
"Export as CSV" : "Eksportér som CSV",
"Export" : "Eksportér",
"Loading filtered view" : "Indlæser filtreret visning",
"Today" : "I dag",
"Tomorrow" : "I morgen",
"No due" : "Ikke forfalden",
"No results found" : "Ingen resultater fundet",
"Deck board {name}\n* Last modified on {lastMod}" : "Opslagstavle {name}\n* Senest ændret den {lastMod}",
"Create card" : "Opret kort",
"Create a new card" : "Opret et nyt kort",
"Creating the new card …" : "Opretter det nye kort ...",
"Creating the new card …" : "Oprette det nye kort ...",
"Close" : "Luk",
"No upcoming cards" : "Ingen kommende kort",
"upcoming cards" : "kommende kort",
@@ -285,9 +266,6 @@ OC.L10N.register(
"Example Task 3" : "Eksempel opgave 3",
"Example Task 2" : "Eksempel opgave 2",
"Example Task 1" : "Eksempel opgave 1",
"Move card to another board" : "Flyt kort til en anden tavle",
"Today" : "I dag",
"Tomorrow" : "I morgen",
"No due" : "Ikke forfalden"
"Move card to another board" : "Flyt kort til en anden tavle"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -27,11 +27,6 @@
"{user} has deleted card {card} in list {stack} on board {board}" : "{user} har slettet kortet {card} i listen {stack} på tavlen {board}",
"You have renamed the card {before} to {card}" : "Du har omdøbt kortet {before} til {card}",
"{user} has renamed the card {before} to {card}" : "{user} har omdøbt kortet {before} til {card}",
"You have added a description to card {card} in list {stack} on board {board}" : "Du har tilføjet en beskrivelse til kortet {card} i listen {stack} på tavlen {board}",
"{user} has added a description to card {card} in list {stack} on board {board}" : "{user} har tilføjet en beskrivelse til kortet {card} i listen {stack} på tavlen {board}",
"You have updated the description of card {card} in list {stack} on board {board}" : "Du har opdateret beskrivelsen for kortet {card} i listen {stack} på tavlen {board}",
"{user} has updated the description of the card {card} in list {stack} on board {board}" : "{user} har opdateret beskrivelsen for kortet {card} i listen {stack} på tavlen {board}",
"You have archived card {card} in list {stack} on board {board}" : "Du har arkiveret kortet {card} i listen {stack} på tavlen {board}",
"Deck" : "Opslag",
"Changes in the <strong>Deck app</strong>" : "Ændringer i <strong>Opslags app'en</strong>",
"The file was uploaded" : "Filen blev uploadet",
@@ -49,14 +44,13 @@
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} har tilknyttet kortet {deck-card} på {deck-board} til dig.",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin forfaldsdato.",
"The card {deck-card} on {deck-board} has reached its due date." : "Kortet {deck-card} på {deck-board} har nået sin forfaldsdato.",
"%s has mentioned you in a comment on \"%s\"." : " %s har omtalt dig i en kommentar på \"%s\".",
"{user} has mentioned you in a comment on {deck-card}." : "{user} har omtalt dig i en kommentar på {deck-card}.",
"%s has mentioned you in a comment on \"%s\"." : " %s har nævnt dig i en kommentar på \"%s\".",
"{user} has mentioned you in a comment on {deck-card}." : "{user} har nævnt dig i en kommentar på {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "Tavlen \"%s\" er blevet delt med dig af %s.",
"{user} has shared {deck-board} with you." : "{user} har delt {deck-board} med dig.",
"Deck board" : "Opslagstavle",
"Deck boards, cards and comments" : "Opslagstavler, kort og kommentarer",
"Create a new deck card" : "Opret et nyt opslagskort",
"Card comments" : "Kommentarer på kort",
"%s on %s" : "%s på %s",
"Deck boards and cards" : "Opslagstavler og -kort",
"No data was provided to create an attachment." : "Ingen data blev givet som kunne vedhæftes",
@@ -68,7 +62,6 @@
"To Do" : "To-do liste",
"In Progress" : "I gang",
"Done" : "Afsluttet",
"Create your first card!" : "Opret dit første kort!",
"Attachments" : "Vedhæftede filer",
"File" : "Fil",
"Card not found" : "Kort ikke fundet.",
@@ -80,12 +73,10 @@
"Select the board to link to a project" : "Vælg tavlen der skal linkes til et projekt",
"Search by board title" : "Søg efter tavletitel",
"Select board" : "Vælg tavle",
"Move/copy card" : "Flyt/kopiér kort",
"Select a board" : "Vælg en tavle",
"No lists available" : "Ingen lister tilgængelige",
"Select a list" : "Vælg en liste",
"Move card" : "Flyt kort",
"Copy card" : "Kopiér kort",
"Select the card to link to a project" : "Vælg kortet der skal linkes til et projekt",
"Link to card" : "Link til kort",
"Select a card" : "Vælg et kort",
@@ -147,7 +138,7 @@
"Add a new card" : "Tilføj et nyt kort",
"Card name" : "Kortnavn",
"title and color value must be provided" : "Titel- og farveværdi skal angives.",
"Edit" : "Redigér",
"Edit" : "Rediger",
"Add a new tag" : "Opret et nyt tag",
"Board name" : "Tavlenavn",
"Members" : "Medlemmer",
@@ -175,21 +166,17 @@
"In reply to" : "Som svar til",
"Cancel reply" : "Annuller svar",
"Reply" : "Besvar",
"Update" : "Opdatér",
"Update" : "Opdater",
"Write a description …" : "Skriv en beskrivelse...",
"Description" : "Beskrivelse",
"(Unsaved)" : "(Ikke gemt)",
"(Saving…)" : "(Gemmer...)",
"Formatting help" : "Hjælp til formatering",
"Edit description" : "Redigér beskrivelse",
"Edit description" : "Rediger beskrivelse",
"View description" : "Se beskrivelse",
"Add Attachment" : "Tilføj vedhæftning",
"Choose attachment" : "Vælg en vedhæftning",
"Select Date" : "Vælg dato",
"Later today {timeLocale}" : "Senere i dag {timeLocale}",
"Tomorrow {timeLocale}" : "I morgen {timeLocale}",
"This weekend {timeLocale}" : "Denne weekend {timeLocale}",
"Next week {timeLocale}" : "Næste uge {timeLocale}",
"Set a due date" : "Angiv en forfaldsdato",
"Remove due date" : "Fjern forfaldsdato",
"Mark as done" : "Marker som færdig",
@@ -199,10 +186,9 @@
"Assign a tag to this card…" : "Tilføj et Tag til dette kort ...",
"Create a new tag:" : "Opret et nyt tag:",
"(group)" : "(gruppe)",
"Edit card title" : "Redigér titel på kort",
"Open link" : "Åben link",
"Card deleted" : "Kort slettet",
"Edit title" : "Redigér titel",
"Edit title" : "Rediger titel",
"Assign to me" : "Tildel til mig",
"Unassign myself" : "Fjern mig selv",
"Delete card" : "Slet kort",
@@ -212,24 +198,16 @@
"Keyboard shortcut" : "Tastaturgenvej",
"Action" : "Handling",
"Shift" : "Shift",
"Navigate between cards" : "Naviger mellem kort",
"Close card details" : "Luk detaljer for kort",
"Ctrl" : "Ctrl",
"Search" : "Søg",
"Show card filters" : "Vis kort filtre",
"Clear card filters" : "Ryd kort filtre",
"Card actions" : "Kort handlinger",
"Enter" : "Indtast",
"Open card details" : "Åbn detaljer for kort",
"Edit the card title" : "Redigér titel på kort",
"Assign yourself to the current card" : "Tilknyt dig selv til det aktuelle kort",
"All boards" : "Alle tavler",
"Archived boards" : "Arkiverede lister",
"Shared with you" : "Delt med dig",
"Deck settings" : "Opslagsindstillinger",
"Use bigger card view" : "Brug større kort visning",
"Show boards in calendar/tasks" : "Vis tavler i kalender/opgaver",
"Cancel edit" : "Annullér redigering",
"Cancel edit" : "Annuller redigering",
"Board {0} deleted" : "Tavle {0} er slettet",
"All cards" : "Alle kort",
"Only assigned cards" : "Kun tildelte kort",
@@ -237,7 +215,7 @@
"An error occurred" : "Der opstod en fejl",
"Delete the board?" : "Slet tavlen?",
"Board details" : "Tavledetaljer",
"Edit board" : "Redigér liste",
"Edit board" : "Rediger liste",
"Clone board" : "Klon tavle",
"Unarchive board" : "Genaktiver tavle",
"Archive board" : "Arkiver tavle",
@@ -257,11 +235,14 @@
"Export as CSV" : "Eksportér som CSV",
"Export" : "Eksportér",
"Loading filtered view" : "Indlæser filtreret visning",
"Today" : "I dag",
"Tomorrow" : "I morgen",
"No due" : "Ikke forfalden",
"No results found" : "Ingen resultater fundet",
"Deck board {name}\n* Last modified on {lastMod}" : "Opslagstavle {name}\n* Senest ændret den {lastMod}",
"Create card" : "Opret kort",
"Create a new card" : "Opret et nyt kort",
"Creating the new card …" : "Opretter det nye kort ...",
"Creating the new card …" : "Oprette det nye kort ...",
"Close" : "Luk",
"No upcoming cards" : "Ingen kommende kort",
"upcoming cards" : "kommende kort",
@@ -283,9 +264,6 @@
"Example Task 3" : "Eksempel opgave 3",
"Example Task 2" : "Eksempel opgave 2",
"Example Task 1" : "Eksempel opgave 1",
"Move card to another board" : "Flyt kort til en anden tavle",
"Today" : "I dag",
"Tomorrow" : "I morgen",
"No due" : "Ikke forfalden"
"Move card to another board" : "Flyt kort til en anden tavle"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -373,7 +373,9 @@ OC.L10N.register(
"Note: Only the JSON format is supported for importing back into the Deck app." : "Hinweis: Für den Rückimport in die Deck-App wird nur das JSON-Format unterstützt.",
"Export" : "Exportieren",
"Loading filtered view" : "Lade gefilterte Ansicht",
"Search for {searchQuery} in other boards" : "Suche nach {searchQuery} in anderen Boards",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum",
"Search for {searchQuery} in all boards" : "Suche nach {searchQuery} in allen Boards",
"No results found" : "Keine Ergebnisse gefunden",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck-Board {name}\n* Zuletzt geändert am {lastMod} ",
@@ -414,9 +416,6 @@ OC.L10N.register(
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"Move card to another board" : "Karte auf ein anderes Board verschieben",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum"
"Move card to another board" : "Karte auf ein anderes Board verschieben"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -371,7 +371,9 @@
"Note: Only the JSON format is supported for importing back into the Deck app." : "Hinweis: Für den Rückimport in die Deck-App wird nur das JSON-Format unterstützt.",
"Export" : "Exportieren",
"Loading filtered view" : "Lade gefilterte Ansicht",
"Search for {searchQuery} in other boards" : "Suche nach {searchQuery} in anderen Boards",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum",
"Search for {searchQuery} in all boards" : "Suche nach {searchQuery} in allen Boards",
"No results found" : "Keine Ergebnisse gefunden",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck-Board {name}\n* Zuletzt geändert am {lastMod} ",
@@ -412,9 +414,6 @@
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"Move card to another board" : "Karte auf ein anderes Board verschieben",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum"
"Move card to another board" : "Karte auf ein anderes Board verschieben"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -373,7 +373,9 @@ OC.L10N.register(
"Note: Only the JSON format is supported for importing back into the Deck app." : "Hinweis: Für den Rückimport in die Deck-App wird nur das JSON-Format unterstützt.",
"Export" : "Exportieren",
"Loading filtered view" : "Lade gefilterte Ansicht",
"Search for {searchQuery} in other boards" : "Suche nach {searchQuery} in anderen Boards",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum",
"Search for {searchQuery} in all boards" : "Suche nach {searchQuery} in allen Boards",
"No results found" : "Keine Ergebnisse gefunden",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck-Board {name}\n* Zuletzt geändert am {lastMod} ",
@@ -414,9 +416,6 @@ OC.L10N.register(
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"Move card to another board" : "Karte auf ein anderes Board verschieben",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum"
"Move card to another board" : "Karte auf ein anderes Board verschieben"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -371,7 +371,9 @@
"Note: Only the JSON format is supported for importing back into the Deck app." : "Hinweis: Für den Rückimport in die Deck-App wird nur das JSON-Format unterstützt.",
"Export" : "Exportieren",
"Loading filtered view" : "Lade gefilterte Ansicht",
"Search for {searchQuery} in other boards" : "Suche nach {searchQuery} in anderen Boards",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum",
"Search for {searchQuery} in all boards" : "Suche nach {searchQuery} in allen Boards",
"No results found" : "Keine Ergebnisse gefunden",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck-Board {name}\n* Zuletzt geändert am {lastMod} ",
@@ -412,9 +414,6 @@
"Example Task 3" : "Beispielaufgabe 3",
"Example Task 2" : "Beispielaufgabe 2",
"Example Task 1" : "Beispielaufgabe 1",
"Move card to another board" : "Karte auf ein anderes Board verschieben",
"Today" : "Heute",
"Tomorrow" : "Morgen",
"No due" : "Kein Fälligkeitsdatum"
"Move card to another board" : "Karte auf ein anderes Board verschieben"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -81,14 +81,10 @@ 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",
"Invalid file type. Only JSON files are allowed." : "Μη έγκυρος τύπος αρχείου. Επιτρέπονται μόνο αρχεία JSON.",
"Invalid JSON data" : "Μη έγκυρα δεδομένα JSON",
"Failed to import board" : "Αποτυχία εισαγωγής πίνακα",
"Cards due today" : "Κάρτες που λήγουν σήμερα",
"Cards due tomorrow" : "Κάρτες που λήγουν αύριο",
"Upcoming cards" : "Επερχόμενες καρτέλες",
"Load more" : "Φόρτωση περισσότερων",
"Welcome to Nextcloud Deck!" : "Καλώς ήρθατε στο Nextcloud Deck!",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Η καρτέλα \"%s\" του \"%s\" ανατέθηκε σε εσάς από τον %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "Ο/Η {user} έχει αναθέσει την καρτέλα {deck-card} του πίνακα {deck-board} σε εσάς.",
"The card \"%s\" on \"%s\" has reached its due date." : "Η καρτέλα \"%s\" στο \"%s\" έχει λήξει.",
@@ -100,7 +96,6 @@ OC.L10N.register(
"Deck board" : "Πίνακας του Deck",
"Owned by %1$s" : "Ανήκει στον/στην %1$s",
"Deck boards, cards and comments" : "Πίνακες, κάρτες και σχόλια Deck",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Από %1$s, στον %2$s/%3$s, που ανήκει στον %4$s",
"Create a new deck card" : "Δημιουργήστε μια νέα κάρτα",
"Card comments" : "Σχόλια καρτέλας",
"%s on %s" : "%s στο %s",
@@ -111,20 +106,11 @@ OC.L10N.register(
"Action needed" : "Απαιτείται ενέργεια",
"Later" : "Αργότερα",
"copy" : "Αντιγραφή",
"Read more inside" : "Διαβάστε περισσότερα εντός",
"Custom lists - click to rename!" : "Προσαρμοσμένες λίστες - κάντε κλικ για μετονομασία!",
"To Do" : "Προς Ενέργεια",
"In Progress" : "Σε Εξέλιξη",
"Done" : "Ολοκληρώθηκε",
"1. Open to learn more about boards and cards" : "1. Ανοίξτε για να μάθετε περισσότερα για τους πίνακες και τις κάρτες",
"2. Drag cards left and right, up and down" : "2. Σύρετε κάρτες αριστερά και δεξιά, πάνω και κάτω",
"3. Apply rich formatting and link content" : "3. Εφαρμόστε πλούσια μορφοποίηση και συνδέστε περιεχόμενο",
"4. Share, comment and collaborate!" : "4. Μοιραστείτε, σχολιάστε και συνεργαστείτε!",
"Create your first card!" : "Δημιουργήστε την πρώτη σας κάρτα!",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Αυτό το σχόλιο έχει περισσότερους από %s χαρακτήρες.\nΠροστέθηκε ως συνημμένο στην καρτέλα με όνομα %s .\nΠροσβάσιμο στη διεύθυνση URL: %s.",
"Attachments" : "Συνημμένα",
"File" : "Αρχείο",
"date" : "ημερομηνία",
"Card not found" : "Η καρτέλα δεν βρέθηκε",
"Path is already shared with this card" : "Η διαδρομή κοινοποιείται ήδη σε αυτήν την καρτέλα",
"Invalid date, date format must be YYYY-MM-DD" : "Μη έγκυρη ημερομηνία, η μορφή ημερομηνίας πρέπει να είναι ΕΕΕΕ-ΜΜ-ΗΗ",
@@ -135,12 +121,10 @@ OC.L10N.register(
"Select the board to link to a project" : "Επιλέξτε πίνακα και συνδέστε τον σε ένα έργο",
"Search by board title" : "Αναζήτηση με το όνομα πίνακα",
"Select board" : "Επιλογή πίνακα",
"Move/copy card" : "Μετακίνηση/αντιγραφή κάρτας",
"Select a board" : "Επιλογή ενός πίνακα",
"No lists available" : "Δεν υπάρχουν διαθέσιμες λίστες",
"Select a list" : "Επιλέξτε μια λίστα",
"Move card" : "Μετακίνηση καρτέλας",
"Copy card" : "Αντίγραφο κάρτας",
"Select the card to link to a project" : "Επιλογή καρτέλας για σύνδεση στο έργο",
"Link to card" : "Σύνδεσμος σε καρτέλα",
"Select a card" : "Επιλογή μιας καρτέλας",
@@ -228,7 +212,7 @@ OC.L10N.register(
"Select a user to assign to this card…" : "Επιλέξτε έναν χρήστη για να του αναθέσετε αυτή την κάρτα...",
"File to share" : "Αρχείο για κοινή χρήση",
"Invalid path selected" : "Επιλέχθηκε μη έγκυρη διαδρομή",
"Upload new files" : "Μεταφορτώστε νέα αρχεία",
"Upload new files" : "Ανεβάστε νέα αρχεία",
"Share from Files" : "Κοινή χρήση από Αρχεία",
"Pending share" : "Κοινή χρήση σε εκκρεμότητα",
"Add this attachment" : "Προσθήκη αυτού του συνημμένου",
@@ -240,7 +224,6 @@ OC.L10N.register(
"Modified" : "Τροποποιήθηκε",
"Created" : "Δημιουργήθηκε",
"The title cannot be empty." : "Ο τίτλος δεν μπορεί να είναι κενός.",
"Cannot close unsaved card!" : "Αδυναμία κλεισίματος της κάρτας που δεν έχει αποθηκευτεί!",
"Open in sidebar view" : "Άνοιγμα σε προβολή πλευρικής στήλης",
"Open in bigger view" : "Άνοιγμα σε μεγαλύτερη προβολή",
"Comments" : "Σχόλια",
@@ -255,7 +238,6 @@ OC.L10N.register(
"Reply" : "Απάντηση",
"Update" : "Ενημέρωση",
"Write a description …" : "Γράψτε μια περιγραφή…",
"Could not save description" : "Αδυναμία αποθήκευσης της περιγραφής",
"Description" : "Περιγραφή",
"(Unsaved)" : "(Δεν αποθηκεύτηκε)",
"(Saving…)" : "(Αποθήκευση...)",
@@ -290,7 +272,6 @@ OC.L10N.register(
"{count} comments, {unread} unread" : "{count} σχόλια, {unread} μη αναγνωσμένα",
"Todo items" : "Στοιχεία todo",
"Edit card title" : "Επεξεργασία τίτλου κάρτας",
"Open link" : "Άνοιγμα συνδέσμου",
"Card deleted" : "Η καρτέλα διαγράφηκε",
"Edit title" : "Επεξεργασία τίτλου",
"Assign to me" : "Ανάθεση σε εμένα",
@@ -334,7 +315,6 @@ OC.L10N.register(
"Limit board creation to some groups" : "Περιορισμός της δημιουργίας πινάκων σε ορισμένες ομάδες",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Οι χρήστες εκτός αυτών των ομάδων δεν θα μπορούν να δημιουργούν τους δικούς τους πίνακες, αλλά θα μπορούν να εργάζονται σε πίνακες που τους έχουν διαμοιραστεί.",
"Cancel edit" : "Ακύρωση επεξεργασίας",
"Save board" : "Αποθήκευση πίνακα",
"Board {0} deleted" : "Διαγράφηκε {0} πίνακας ",
"All cards" : "Όλες οι καρτέλες",
"Only assigned cards" : "Μόνο καρτέλες που έχουν ανατεθεί",
@@ -342,7 +322,6 @@ OC.L10N.register(
"An error occurred" : "Παρουσιάστηκε σφάλμα",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον πίνακα {title}; Αυτό θα διαγράψει όλα τα δεδομένα του πίνακα συμπεριλαμβανομένων και των αρχειοθετημένων καρτών.",
"Delete the board?" : "Διαγραφή του πίνακα;",
"Exporting board..." : "Εξαγωγή πίνακα...",
"Board details" : "Λεπτομέριες πίνακα",
"Edit board" : "Επεξεργασία πίνακα",
"Clone board" : "Κλώνος πίνακα",
@@ -355,25 +334,15 @@ OC.L10N.register(
"Assigned cards" : "Ανατεθειμένες καρτέλες",
"No notifications" : "Δεν υπάρχουν ειδοποιήσεις",
"Delete board" : "Διαγραφή πίνακα",
"Importing board..." : "Εισαγωγή πίνακα...",
"Board imported successfully" : "Ο πίνακας εισήχθη επιτυχώς",
"Import board" : "Εισαγωγή πίνακα",
"Clone {boardTitle}" : "Κλωνοποίηση {boardTitle}",
"Clone cards" : "Κλωνοποίηση καρτών",
"Clone assignments" : "Κλωνοποίηση αναθέσεων",
"Clone labels" : "Κλωνοποίηση ετικετών",
"Clone due dates" : "Κλωνοποίηση προθεσμιών",
"Advanced options" : "Προχωρημένες επιλογές",
"Move all cards to the first list" : "Μετακίνηση όλων των καρτών στην πρώτη λίστα",
"Restore archived cards" : "Επαναφορά αρχειοθετημένων καρτών",
"Clone" : "Κλωνοποίηση",
"Export {boardTitle}" : "Εξαγωγή {boardTitle}",
"Export as JSON" : "Εξαγωγή ως JSON",
"Export as CSV" : "Εξαγωγή ως CSV",
"Note: Only the JSON format is supported for importing back into the Deck app." : "Σημείωση: Μόνο η μορφή JSON υποστηρίζεται για εισαγωγή πίσω στην εφαρμογή Deck.",
"Clone cards" : "Κάρτες κλώνου",
"Advanced options" : "Επιλογές για προχωρημένους",
"Clone" : "Κλώνος",
"Export as CSV" : "Εξαγωγή σε CSV",
"Export" : "Εξαγωγή",
"Loading filtered view" : "Φόρτωση εμφάνισης με βάση το φίλτρο",
"Search for {searchQuery} in other boards" : "Αναζήτηση για {searchQuery} σε άλλους πίνακες",
"Today" : "Σήμερα",
"Tomorrow" : "Αύριο",
"No due" : "Χωρίς λήξη",
"Search for {searchQuery} in all boards" : "Αναζήτηση για {searchQuery} σε όλους τους πίνακες",
"No results found" : "Δεν βρέθηκαν αποτελέσματα",
"Deck board {name}\n* Last modified on {lastMod}" : "Πίνακας Deck {name}\n* Τελευταία τροποποίηση στις {lastMod}",
@@ -402,7 +371,6 @@ OC.L10N.register(
"Something went wrong" : "Κάτι πήγε στραβά",
"Failed to upload {name}" : "Αποτυχία μεταφόρτωσης {name}",
"Maximum file size of {size} exceeded" : "Υπέρβαση επιτρεπόμενου μεγέθους αρχείου {size}",
"Assigned users" : "Ανατεθειμένοι χρήστες",
"Due date" : "Προθεσμία",
"Error creating the share" : "Σφάλμα κατά τη δημιουργία της κοινοποίησης",
"Share with a Deck card" : "Μοιραστείτε με μια καρτέλα Deck",
@@ -414,9 +382,6 @@ OC.L10N.register(
"Example Task 3" : "Παράδειγμα Εργασίας 3",
"Example Task 2" : "Παράδειγμα Εργασίας 2",
"Example Task 1" : "Παράδειγμα Εργασίας 1",
"Move card to another board" : "Μετακίνηση καρτέλας σε άλλο πίνακα",
"Today" : "Σήμερα",
"Tomorrow" : "Αύριο",
"No due" : "Χωρίς λήξη"
"Move card to another board" : "Μετακίνηση καρτέλας σε άλλο πίνακα"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -79,14 +79,10 @@
"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",
"Invalid file type. Only JSON files are allowed." : "Μη έγκυρος τύπος αρχείου. Επιτρέπονται μόνο αρχεία JSON.",
"Invalid JSON data" : "Μη έγκυρα δεδομένα JSON",
"Failed to import board" : "Αποτυχία εισαγωγής πίνακα",
"Cards due today" : "Κάρτες που λήγουν σήμερα",
"Cards due tomorrow" : "Κάρτες που λήγουν αύριο",
"Upcoming cards" : "Επερχόμενες καρτέλες",
"Load more" : "Φόρτωση περισσότερων",
"Welcome to Nextcloud Deck!" : "Καλώς ήρθατε στο Nextcloud Deck!",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Η καρτέλα \"%s\" του \"%s\" ανατέθηκε σε εσάς από τον %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "Ο/Η {user} έχει αναθέσει την καρτέλα {deck-card} του πίνακα {deck-board} σε εσάς.",
"The card \"%s\" on \"%s\" has reached its due date." : "Η καρτέλα \"%s\" στο \"%s\" έχει λήξει.",
@@ -98,7 +94,6 @@
"Deck board" : "Πίνακας του Deck",
"Owned by %1$s" : "Ανήκει στον/στην %1$s",
"Deck boards, cards and comments" : "Πίνακες, κάρτες και σχόλια Deck",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "Από %1$s, στον %2$s/%3$s, που ανήκει στον %4$s",
"Create a new deck card" : "Δημιουργήστε μια νέα κάρτα",
"Card comments" : "Σχόλια καρτέλας",
"%s on %s" : "%s στο %s",
@@ -109,20 +104,11 @@
"Action needed" : "Απαιτείται ενέργεια",
"Later" : "Αργότερα",
"copy" : "Αντιγραφή",
"Read more inside" : "Διαβάστε περισσότερα εντός",
"Custom lists - click to rename!" : "Προσαρμοσμένες λίστες - κάντε κλικ για μετονομασία!",
"To Do" : "Προς Ενέργεια",
"In Progress" : "Σε Εξέλιξη",
"Done" : "Ολοκληρώθηκε",
"1. Open to learn more about boards and cards" : "1. Ανοίξτε για να μάθετε περισσότερα για τους πίνακες και τις κάρτες",
"2. Drag cards left and right, up and down" : "2. Σύρετε κάρτες αριστερά και δεξιά, πάνω και κάτω",
"3. Apply rich formatting and link content" : "3. Εφαρμόστε πλούσια μορφοποίηση και συνδέστε περιεχόμενο",
"4. Share, comment and collaborate!" : "4. Μοιραστείτε, σχολιάστε και συνεργαστείτε!",
"Create your first card!" : "Δημιουργήστε την πρώτη σας κάρτα!",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Αυτό το σχόλιο έχει περισσότερους από %s χαρακτήρες.\nΠροστέθηκε ως συνημμένο στην καρτέλα με όνομα %s .\nΠροσβάσιμο στη διεύθυνση URL: %s.",
"Attachments" : "Συνημμένα",
"File" : "Αρχείο",
"date" : "ημερομηνία",
"Card not found" : "Η καρτέλα δεν βρέθηκε",
"Path is already shared with this card" : "Η διαδρομή κοινοποιείται ήδη σε αυτήν την καρτέλα",
"Invalid date, date format must be YYYY-MM-DD" : "Μη έγκυρη ημερομηνία, η μορφή ημερομηνίας πρέπει να είναι ΕΕΕΕ-ΜΜ-ΗΗ",
@@ -133,12 +119,10 @@
"Select the board to link to a project" : "Επιλέξτε πίνακα και συνδέστε τον σε ένα έργο",
"Search by board title" : "Αναζήτηση με το όνομα πίνακα",
"Select board" : "Επιλογή πίνακα",
"Move/copy card" : "Μετακίνηση/αντιγραφή κάρτας",
"Select a board" : "Επιλογή ενός πίνακα",
"No lists available" : "Δεν υπάρχουν διαθέσιμες λίστες",
"Select a list" : "Επιλέξτε μια λίστα",
"Move card" : "Μετακίνηση καρτέλας",
"Copy card" : "Αντίγραφο κάρτας",
"Select the card to link to a project" : "Επιλογή καρτέλας για σύνδεση στο έργο",
"Link to card" : "Σύνδεσμος σε καρτέλα",
"Select a card" : "Επιλογή μιας καρτέλας",
@@ -226,7 +210,7 @@
"Select a user to assign to this card…" : "Επιλέξτε έναν χρήστη για να του αναθέσετε αυτή την κάρτα...",
"File to share" : "Αρχείο για κοινή χρήση",
"Invalid path selected" : "Επιλέχθηκε μη έγκυρη διαδρομή",
"Upload new files" : "Μεταφορτώστε νέα αρχεία",
"Upload new files" : "Ανεβάστε νέα αρχεία",
"Share from Files" : "Κοινή χρήση από Αρχεία",
"Pending share" : "Κοινή χρήση σε εκκρεμότητα",
"Add this attachment" : "Προσθήκη αυτού του συνημμένου",
@@ -238,7 +222,6 @@
"Modified" : "Τροποποιήθηκε",
"Created" : "Δημιουργήθηκε",
"The title cannot be empty." : "Ο τίτλος δεν μπορεί να είναι κενός.",
"Cannot close unsaved card!" : "Αδυναμία κλεισίματος της κάρτας που δεν έχει αποθηκευτεί!",
"Open in sidebar view" : "Άνοιγμα σε προβολή πλευρικής στήλης",
"Open in bigger view" : "Άνοιγμα σε μεγαλύτερη προβολή",
"Comments" : "Σχόλια",
@@ -253,7 +236,6 @@
"Reply" : "Απάντηση",
"Update" : "Ενημέρωση",
"Write a description …" : "Γράψτε μια περιγραφή…",
"Could not save description" : "Αδυναμία αποθήκευσης της περιγραφής",
"Description" : "Περιγραφή",
"(Unsaved)" : "(Δεν αποθηκεύτηκε)",
"(Saving…)" : "(Αποθήκευση...)",
@@ -288,7 +270,6 @@
"{count} comments, {unread} unread" : "{count} σχόλια, {unread} μη αναγνωσμένα",
"Todo items" : "Στοιχεία todo",
"Edit card title" : "Επεξεργασία τίτλου κάρτας",
"Open link" : "Άνοιγμα συνδέσμου",
"Card deleted" : "Η καρτέλα διαγράφηκε",
"Edit title" : "Επεξεργασία τίτλου",
"Assign to me" : "Ανάθεση σε εμένα",
@@ -332,7 +313,6 @@
"Limit board creation to some groups" : "Περιορισμός της δημιουργίας πινάκων σε ορισμένες ομάδες",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Οι χρήστες εκτός αυτών των ομάδων δεν θα μπορούν να δημιουργούν τους δικούς τους πίνακες, αλλά θα μπορούν να εργάζονται σε πίνακες που τους έχουν διαμοιραστεί.",
"Cancel edit" : "Ακύρωση επεξεργασίας",
"Save board" : "Αποθήκευση πίνακα",
"Board {0} deleted" : "Διαγράφηκε {0} πίνακας ",
"All cards" : "Όλες οι καρτέλες",
"Only assigned cards" : "Μόνο καρτέλες που έχουν ανατεθεί",
@@ -340,7 +320,6 @@
"An error occurred" : "Παρουσιάστηκε σφάλμα",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον πίνακα {title}; Αυτό θα διαγράψει όλα τα δεδομένα του πίνακα συμπεριλαμβανομένων και των αρχειοθετημένων καρτών.",
"Delete the board?" : "Διαγραφή του πίνακα;",
"Exporting board..." : "Εξαγωγή πίνακα...",
"Board details" : "Λεπτομέριες πίνακα",
"Edit board" : "Επεξεργασία πίνακα",
"Clone board" : "Κλώνος πίνακα",
@@ -353,25 +332,15 @@
"Assigned cards" : "Ανατεθειμένες καρτέλες",
"No notifications" : "Δεν υπάρχουν ειδοποιήσεις",
"Delete board" : "Διαγραφή πίνακα",
"Importing board..." : "Εισαγωγή πίνακα...",
"Board imported successfully" : "Ο πίνακας εισήχθη επιτυχώς",
"Import board" : "Εισαγωγή πίνακα",
"Clone {boardTitle}" : "Κλωνοποίηση {boardTitle}",
"Clone cards" : "Κλωνοποίηση καρτών",
"Clone assignments" : "Κλωνοποίηση αναθέσεων",
"Clone labels" : "Κλωνοποίηση ετικετών",
"Clone due dates" : "Κλωνοποίηση προθεσμιών",
"Advanced options" : "Προχωρημένες επιλογές",
"Move all cards to the first list" : "Μετακίνηση όλων των καρτών στην πρώτη λίστα",
"Restore archived cards" : "Επαναφορά αρχειοθετημένων καρτών",
"Clone" : "Κλωνοποίηση",
"Export {boardTitle}" : "Εξαγωγή {boardTitle}",
"Export as JSON" : "Εξαγωγή ως JSON",
"Export as CSV" : "Εξαγωγή ως CSV",
"Note: Only the JSON format is supported for importing back into the Deck app." : "Σημείωση: Μόνο η μορφή JSON υποστηρίζεται για εισαγωγή πίσω στην εφαρμογή Deck.",
"Clone cards" : "Κάρτες κλώνου",
"Advanced options" : "Επιλογές για προχωρημένους",
"Clone" : "Κλώνος",
"Export as CSV" : "Εξαγωγή σε CSV",
"Export" : "Εξαγωγή",
"Loading filtered view" : "Φόρτωση εμφάνισης με βάση το φίλτρο",
"Search for {searchQuery} in other boards" : "Αναζήτηση για {searchQuery} σε άλλους πίνακες",
"Today" : "Σήμερα",
"Tomorrow" : "Αύριο",
"No due" : "Χωρίς λήξη",
"Search for {searchQuery} in all boards" : "Αναζήτηση για {searchQuery} σε όλους τους πίνακες",
"No results found" : "Δεν βρέθηκαν αποτελέσματα",
"Deck board {name}\n* Last modified on {lastMod}" : "Πίνακας Deck {name}\n* Τελευταία τροποποίηση στις {lastMod}",
@@ -400,7 +369,6 @@
"Something went wrong" : "Κάτι πήγε στραβά",
"Failed to upload {name}" : "Αποτυχία μεταφόρτωσης {name}",
"Maximum file size of {size} exceeded" : "Υπέρβαση επιτρεπόμενου μεγέθους αρχείου {size}",
"Assigned users" : "Ανατεθειμένοι χρήστες",
"Due date" : "Προθεσμία",
"Error creating the share" : "Σφάλμα κατά τη δημιουργία της κοινοποίησης",
"Share with a Deck card" : "Μοιραστείτε με μια καρτέλα Deck",
@@ -412,9 +380,6 @@
"Example Task 3" : "Παράδειγμα Εργασίας 3",
"Example Task 2" : "Παράδειγμα Εργασίας 2",
"Example Task 1" : "Παράδειγμα Εργασίας 1",
"Move card to another board" : "Μετακίνηση καρτέλας σε άλλο πίνακα",
"Today" : "Σήμερα",
"Tomorrow" : "Αύριο",
"No due" : "Χωρίς λήξη"
"Move card to another board" : "Μετακίνηση καρτέλας σε άλλο πίνακα"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -128,8 +128,8 @@ OC.L10N.register(
"Card not found" : "Card not found",
"Path is already shared with this card" : "Path is already shared with this card",
"Invalid date, date format must be YYYY-MM-DD" : "Invalid date, date format must be YYYY-MM-DD",
"Personal planning and team project organization" : "Personal planning and team project organisation",
"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 is a kanban style organisation tool aimed at personal planning and project organisation 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 organisation\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 organised",
"Personal planning and team project organization" : "Personal planning and team project organization",
"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 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",
"Add board" : "Add board",
"Card details" : "Card details",
"Select the board to link to a project" : "Select the board to link to a project",
@@ -373,7 +373,9 @@ OC.L10N.register(
"Note: Only the JSON format is supported for importing back into the Deck app." : "Note: Only the JSON format is supported for importing back into the Deck app.",
"Export" : "Export",
"Loading filtered view" : "Loading filtered view",
"Search for {searchQuery} in other boards" : "Search for {searchQuery} in other boards",
"Today" : "Today",
"Tomorrow" : "Tomorrow",
"No due" : "No due",
"Search for {searchQuery} in all boards" : "Search for {searchQuery} in all boards",
"No results found" : "No results found",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck board {name}\n* Last modified on {lastMod}",
@@ -414,9 +416,6 @@ OC.L10N.register(
"Example Task 3" : "Example Task 3",
"Example Task 2" : "Example Task 2",
"Example Task 1" : "Example Task 1",
"Move card to another board" : "Move card to another board",
"Today" : "Today",
"Tomorrow" : "Tomorrow",
"No due" : "No due"
"Move card to another board" : "Move card to another board"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -126,8 +126,8 @@
"Card not found" : "Card not found",
"Path is already shared with this card" : "Path is already shared with this card",
"Invalid date, date format must be YYYY-MM-DD" : "Invalid date, date format must be YYYY-MM-DD",
"Personal planning and team project organization" : "Personal planning and team project organisation",
"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 is a kanban style organisation tool aimed at personal planning and project organisation 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 organisation\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 organised",
"Personal planning and team project organization" : "Personal planning and team project organization",
"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 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",
"Add board" : "Add board",
"Card details" : "Card details",
"Select the board to link to a project" : "Select the board to link to a project",
@@ -371,7 +371,9 @@
"Note: Only the JSON format is supported for importing back into the Deck app." : "Note: Only the JSON format is supported for importing back into the Deck app.",
"Export" : "Export",
"Loading filtered view" : "Loading filtered view",
"Search for {searchQuery} in other boards" : "Search for {searchQuery} in other boards",
"Today" : "Today",
"Tomorrow" : "Tomorrow",
"No due" : "No due",
"Search for {searchQuery} in all boards" : "Search for {searchQuery} in all boards",
"No results found" : "No results found",
"Deck board {name}\n* Last modified on {lastMod}" : "Deck board {name}\n* Last modified on {lastMod}",
@@ -412,9 +414,6 @@
"Example Task 3" : "Example Task 3",
"Example Task 2" : "Example Task 2",
"Example Task 1" : "Example Task 1",
"Move card to another board" : "Move card to another board",
"Today" : "Today",
"Tomorrow" : "Tomorrow",
"No due" : "No due"
"Move card to another board" : "Move card to another board"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -121,6 +121,8 @@ OC.L10N.register(
"Delete board" : "Forigi tabulon",
"Advanced options" : "Detalaj agordoj",
"Export" : "Eksporti",
"Today" : "Hodiaŭ",
"Tomorrow" : "Morgaŭ",
"Close" : "Malfermi",
"Link to a board" : "Ligilo al tabulo",
"Maximum file size of {size} exceeded" : "Maksimuma dosiergrando {size} transpasita",
@@ -132,8 +134,6 @@ OC.L10N.register(
"Doing" : "Farata",
"Example Task 3" : "Ekzempla tasko 3",
"Example Task 2" : "Ekzempla tasko 2",
"Example Task 1" : "Ekzempla tasko 1",
"Today" : "Hodiaŭ",
"Tomorrow" : "Morgaŭ"
"Example Task 1" : "Ekzempla tasko 1"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -119,6 +119,8 @@
"Delete board" : "Forigi tabulon",
"Advanced options" : "Detalaj agordoj",
"Export" : "Eksporti",
"Today" : "Hodiaŭ",
"Tomorrow" : "Morgaŭ",
"Close" : "Malfermi",
"Link to a board" : "Ligilo al tabulo",
"Maximum file size of {size} exceeded" : "Maksimuma dosiergrando {size} transpasita",
@@ -130,8 +132,6 @@
"Doing" : "Farata",
"Example Task 3" : "Ekzempla tasko 3",
"Example Task 2" : "Ekzempla tasko 2",
"Example Task 1" : "Ekzempla tasko 1",
"Today" : "Hodiaŭ",
"Tomorrow" : "Morgaŭ"
"Example Task 1" : "Ekzempla tasko 1"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -37,9 +37,9 @@ OC.L10N.register(
"{user} has archived card {card} in list {stack} on board {board}" : "{user} ha archivado la tarjeta {card} en la lista {stack} del tablero {board}",
"You have unarchived card {card} in list {stack} on board {board}" : "Has desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} ha desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
"You have marked the card {card} as done in list {stack} on board {board}" : "Ud. ha marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
"You have marked the card {card} as done in list {stack} on board {board}" : "Has marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
"You have marked the card {card} as undone in list {stack} on board {board}" : "Ud. ha marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
"You have marked the card {card} as undone in list {stack} on board {board}" : "Has marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como no completada en la lista {stack} del tablero {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}",
@@ -81,14 +81,10 @@ OC.L10N.register(
"Could not write file to disk" : "No se ha podido escribir el archivo al disco",
"A PHP extension stopped the file upload" : "Una extensión de PHP ha detenido la subida del archivo",
"No file uploaded or file size exceeds maximum of %s" : "No se ha subido ningún archivo, o el tamaño del archivo excede el máximo de %s",
"Invalid file type. Only JSON files are allowed." : "Tipo de archivo inválido. Solo se permiten archivos JSON",
"Invalid JSON data" : "Datos JSON inválidos",
"Failed to import board" : "Fallo al importar tablero",
"Cards due today" : "Tarjetas que vencen hoy",
"Cards due tomorrow" : "Tarjetas que vencen mañana",
"Upcoming cards" : "Próximas tarjetas",
"Load more" : "Cargar más",
"Welcome to Nextcloud Deck!" : "¡Bienvenido a Nextcloud Deck!",
"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 {deck-card} on {deck-board} to you." : "{user} te ha asigando la tarjeta {deck-card} de {deck-board} a ti.",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
@@ -98,7 +94,7 @@ OC.L10N.register(
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared {deck-board} with you." : "{user} ha compartido {deck-board} contigo.",
"Deck board" : "Tablero Deck",
"Owned by %1$s" : "Propiedad de %1$s",
"Owned by %1$s" : "Apropiado por %1$s",
"Deck boards, cards and comments" : "Tableros Deck, tarjetas y comentarios",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, en %2$s/%3$s, propiedad de %4$s",
"Create a new deck card" : "Crear una nueva tarjeta de tablero",
@@ -111,25 +107,17 @@ OC.L10N.register(
"Action needed" : "Acción necesaria",
"Later" : "Después",
"copy" : "copiar",
"Read more inside" : "Lea más, adentro",
"Custom lists - click to rename!" : "Listas personalizadas - ¡Haga clic para renombrar!",
"To Do" : "Por hacer",
"In Progress" : "En progreso",
"Done" : "Hecho",
"1. Open to learn more about boards and cards" : "1. Abra aquí para aprender más sobre los tableros y las tarjetas",
"2. Drag cards left and right, up and down" : "2. Arrastre las tarjetas a la izquierda y derecha, arriba y abajo",
"3. Apply rich formatting and link content" : "3. Aplique formato enriquecido y contenido a los enlaces",
"4. Share, comment and collaborate!" : "4. ¡Comparta, comente y colabore!",
"Create your first card!" : "¡Cree su primera tarjeta!",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario tiene más de %s caracteres.\nSe ha añadido como adjunto a la tarjeta con el nombre %s.\nAccesible en la URL: %s.",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario tiene más de %s caracteres.\nAñadido como adjunto a la tarjeta con el nombre %s.\nAccesible en la URL: %s.",
"Attachments" : "Adjuntos",
"File" : "Archivo",
"date" : "fecha",
"Card not found" : "Tarjeta no encontrada",
"Path is already shared with this card" : "La ruta ya se ha compartido con esta tarjeta",
"Invalid date, date format must be YYYY-MM-DD" : "Fecha no válida, el formato de las fechas debe ser AAAA-MM-DD",
"Personal planning and team project organization" : "Planificación personal y organización de proyecto de equipo",
"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 es una herramienta de organización de estilo kanban dirigida a la planificación personal y la organización de proyectos para equipos, integrada a Nextcloud.\n\n\n- 📥 Agregue sus tareas a las tarjetas y póngalas en orden.\n- 📄 Escriba notas adicionales en Markdown\n- 🔖 Asigne etiquetas para una organización mejor\n- 👥 Comparta con su equipo, amigos o familia.\n- 📎 Adjunte archivos e incruste los mismos en su descripción Markdown\n- 💬 Discuta con su equipo usando comentarios.\n- ⚡ Mantenga un registro de los cambios en el flujo de actividad\n- 🚀 Organice su proyecto",
"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 es una herramienta de organización de estilo kanban dirigida a la planificación personal y la organización de proyectos para equipos integrados con Nextcloud.\n\n\n- 📥 Agrega tus tareas a las tarjetas y ordénalas.\n- 📄 Escriba notas adicionales\n- 🔖 Asignar etiquetas para una organización mejor\n- 👥 Comparte con tu equipo, amigos o familia.\n- 📎 Adjuntar archivos e incrustarlos en su descripción\n- 💬 Discuta con su equipo usando comentarios.\n- ⚡ Mantenga un registro de los cambios en el flujo de actividad\n- 🚀 Organiza tu proyecto",
"Add board" : "Añadir tablero",
"Card details" : "Detalles de la tarjeta",
"Select the board to link to a project" : "Selecciona el tablero que enlazar a un proyecto",
@@ -177,8 +165,8 @@ OC.L10N.register(
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
"Hide card cover images" : "Ocultar la imagen de portada de las tarjetas",
"Show card cover images" : "Mostrar la imagen de portada de las tarjetas",
"Hide card cover images" : "Ocultar la imagen principal de las tarjetas",
"Show card cover images" : "Mostrar la imagen principal de las tarjetas",
"Open details" : "Abrir detalles",
"Details" : "Detalles",
"Currently present people" : "Personas presentes actualmente",
@@ -193,11 +181,11 @@ OC.L10N.register(
"Undo" : "Deshacer",
"Deleted cards" : "Cartas eliminadas",
"Failed to create share with {displayName}" : "Fallo al crear el recurso compartido denominado {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "¿Está seguro de que quiere transferir el tablero {title} a {user}?",
"Transfer the board." : "Transfiera el tablero.",
"Are you sure you want to transfer the board {title} to {user}?" : "¿Estás seguro de que quieres transferir el tablero {título} a {usuario}?",
"Transfer the board." : "Transfiere el tablero.",
"Transfer" : "Transferir",
"The board has been transferred to {user}" : "El tablero ha sido transferido a {user}",
"Failed to transfer the board to {user}" : "Fallo al transferir el tablero a {user}",
"The board has been transferred to {user}" : "El tablero ha sido transferido a {usuario}",
"Failed to transfer the board to {user}" : "Failed to transfer the board to {user}",
"Share board with a user, group or team …" : "Compartir tablero con un usuario, grupo o equipo …",
"Searching for users, groups and teams …" : "Buscando usuarios, grupos y equipos …",
"No participants found" : "No se encontraron participantes",
@@ -230,7 +218,7 @@ OC.L10N.register(
"Invalid path selected" : "Ruta seleccionada no válida",
"Upload new files" : "Subir nuevos archivos",
"Share from Files" : "Compartir desde Archivos",
"Pending share" : "Recurso compartido pendiente",
"Pending share" : "Pendiente de compartir",
"Add this attachment" : "Añadir este adjunto",
"Show in Files" : "Mostrar en Archivos",
"Download" : "Descargar",
@@ -240,7 +228,6 @@ OC.L10N.register(
"Modified" : "Modificado",
"Created" : "Creado",
"The title cannot be empty." : "El título no puede estar vacío.",
"Cannot close unsaved card!" : "¡No se puede cerrar esta tarjeta no guardada!",
"Open in sidebar view" : "Abrir en vista de barra lateral",
"Open in bigger view" : "Abrir en vista más grande",
"Comments" : "Comentarios",
@@ -255,7 +242,6 @@ OC.L10N.register(
"Reply" : "Responder",
"Update" : "Actualizar",
"Write a description …" : "Escribe una descripción...",
"Could not save description" : "No se pudo guardar la descripción",
"Description" : "Descripción",
"(Unsaved)" : "(Sin salvar)",
"(Saving…)" : "(Guardando...)",
@@ -273,12 +259,12 @@ OC.L10N.register(
"Set due date for this weekend" : "Establecer este fin de semana como fecha de vencimiento",
"Next week {timeLocale}" : "Próxima semana {timeLocale}",
"Set due date for next week" : "Establecer la próxima semana como fecha de vencimiento",
"Assign a due date to this card…" : "Asignar una fecha de vencimiento a esta tarjeta…",
"Assign a due date to this card…" : "Asignar una fecha de caducidad a esta tarjeta…",
"Set a due date" : "Fijar una fecha límite",
"Add due date" : "Añadir fecha de vencimiento",
"Choose a date" : "Elija una fecha",
"Remove due date" : "Eliminar fecha límite",
"Mark as done" : "Marcar como completado",
"Mark as done" : "Marcar como hecho",
"Due at:" : "Vence el:",
"Not done" : "No está finalizado",
"Unarchive card" : "Desarchivar tarjeta",
@@ -342,7 +328,6 @@ OC.L10N.register(
"An error occurred" : "Ocurrió un error",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "¿Está seguro de querer eliminar el tablero {title}? Esto eliminará todos los datos del tablero incluyendo las tarjetas archivadas.",
"Delete the board?" : "¿Borrar el tablero?",
"Exporting board..." : "Exportando tablero...",
"Board details" : "Detalles del tablero",
"Edit board" : "Editar tablero",
"Clone board" : "Clonar tablero",
@@ -355,38 +340,34 @@ OC.L10N.register(
"Assigned cards" : "Tarjetas asignadas",
"No notifications" : "No hay notificaciones",
"Delete board" : "Eliminar tablero",
"Importing board..." : "Importando tablero...",
"Board imported successfully" : "Se importó el tablero exitosamente",
"Import board" : "Importar tablero",
"Clone {boardTitle}" : "Clonar {boardTitle}",
"Clone cards" : "Clonar tarjetas",
"Clone assignments" : "Clonar asignaciones",
"Clone labels" : "Clonar etiquetas",
"Clone due dates" : "Clonar fechas de vencimiento",
"Clone due dates" : "Clonar fechas límite",
"Advanced options" : "Opciones avanzadas",
"Move all cards to the first list" : "Mover todas las tarjetas a la primera lista",
"Restore archived cards" : "Restaurar tarjetas archivadas",
"Clone" : "Clonar",
"Export {boardTitle}" : "Exportar {boardTitle}",
"Export as JSON" : "Exportar como JSON",
"Export as CSV" : "Exportar como CSV",
"Note: Only the JSON format is supported for importing back into the Deck app." : "Nota: Solo el formato JSON es soportar al importar de vuelta en la app Deck.",
"Export" : "Exportar",
"Loading filtered view" : "Cargando vista filtrada",
"Search for {searchQuery} in other boards" : "Buscar {searchQuery} en otros tableros",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar",
"Search for {searchQuery} in all boards" : "Buscar {searchQuery} en todos los tableros",
"No results found" : "No se encontraron resultados",
"Deck board {name}\n* Last modified on {lastMod}" : "Tablero Deck {name}\n* Se modificó por última vez el {lastMod}",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creado en {created}\n* Se modificó por última vez el {lastMod}\n* {nbAttachments} adjuntos\n* {nbComments} comentarios",
"Deck board {name}\n* Last modified on {lastMod}" : "Tablero Deck {name}\n* Última modificación en {lastMod}",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creada en {created}\n* Ultima moficiación en {lastMod}\n* {nbAttachments} adjuntos\n* {nbComments} comentarios",
"{nbCards} cards" : "{nbCards} tarjetas",
"Due on {date}" : "Vence en {date}",
"{stack} in {board}" : "{stack} en {board}",
"Click to expand description" : "Haga clic para expandir la descripción",
"Click to expand comment" : "Haga clic para expandir el comentario",
"Click to expand description" : "Pulse para expandir la descripción",
"Click to expand comment" : "Pulse para expandir el comentario",
"Create card" : "Crear tarjeta",
"Create a new card" : "Crear una tarjeta nueva",
"Create a new card" : "Crear una nueva tarjeta",
"Card title" : "Título de la tarjeta",
"Creating the new card …" : "Creando una tarjeta nueva …",
"Creating the new card …" : "Creando una nueva tarjeta …",
"Card \"{card}\" was added to \"{board}\"" : "La tarjeta \"{card}\" fue añadida a \"{board}\"",
"Open card" : "Abrir tarjeta",
"Close" : "Cerrar",
@@ -402,8 +383,7 @@ OC.L10N.register(
"Something went wrong" : "Algo ha ido mal",
"Failed to upload {name}" : "Error al subir {name}",
"Maximum file size of {size} exceeded" : "Tamaño máximo de archivo de {size} excedido",
"Assigned users" : "Usuarios asignados",
"Due date" : "Fecha de vencimiento",
"Due date" : "Fecha de fin",
"Error creating the share" : "Error creando el recurso compartido",
"Share with a Deck card" : "Compartir con una tarjeta de Deck",
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta de Deck",
@@ -414,9 +394,6 @@ OC.L10N.register(
"Example Task 3" : "Tarea de ejemplo 3",
"Example Task 2" : "Tarea de ejemplo 2",
"Example Task 1" : "Tarea de ejemplo 1",
"Move card to another board" : "Mover la tarjeta a otro tablero",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar"
"Move card to another board" : "Mover la tarjeta a otro tablero"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -35,9 +35,9 @@
"{user} has archived card {card} in list {stack} on board {board}" : "{user} ha archivado la tarjeta {card} en la lista {stack} del tablero {board}",
"You have unarchived card {card} in list {stack} on board {board}" : "Has desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} ha desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
"You have marked the card {card} as done in list {stack} on board {board}" : "Ud. ha marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
"You have marked the card {card} as done in list {stack} on board {board}" : "Has marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
"You have marked the card {card} as undone in list {stack} on board {board}" : "Ud. ha marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
"You have marked the card {card} as undone in list {stack} on board {board}" : "Has marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como no completada en la lista {stack} del tablero {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}",
@@ -79,14 +79,10 @@
"Could not write file to disk" : "No se ha podido escribir el archivo al disco",
"A PHP extension stopped the file upload" : "Una extensión de PHP ha detenido la subida del archivo",
"No file uploaded or file size exceeds maximum of %s" : "No se ha subido ningún archivo, o el tamaño del archivo excede el máximo de %s",
"Invalid file type. Only JSON files are allowed." : "Tipo de archivo inválido. Solo se permiten archivos JSON",
"Invalid JSON data" : "Datos JSON inválidos",
"Failed to import board" : "Fallo al importar tablero",
"Cards due today" : "Tarjetas que vencen hoy",
"Cards due tomorrow" : "Tarjetas que vencen mañana",
"Upcoming cards" : "Próximas tarjetas",
"Load more" : "Cargar más",
"Welcome to Nextcloud Deck!" : "¡Bienvenido a Nextcloud Deck!",
"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 {deck-card} on {deck-board} to you." : "{user} te ha asigando la tarjeta {deck-card} de {deck-board} a ti.",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
@@ -96,7 +92,7 @@
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared {deck-board} with you." : "{user} ha compartido {deck-board} contigo.",
"Deck board" : "Tablero Deck",
"Owned by %1$s" : "Propiedad de %1$s",
"Owned by %1$s" : "Apropiado por %1$s",
"Deck boards, cards and comments" : "Tableros Deck, tarjetas y comentarios",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, en %2$s/%3$s, propiedad de %4$s",
"Create a new deck card" : "Crear una nueva tarjeta de tablero",
@@ -109,25 +105,17 @@
"Action needed" : "Acción necesaria",
"Later" : "Después",
"copy" : "copiar",
"Read more inside" : "Lea más, adentro",
"Custom lists - click to rename!" : "Listas personalizadas - ¡Haga clic para renombrar!",
"To Do" : "Por hacer",
"In Progress" : "En progreso",
"Done" : "Hecho",
"1. Open to learn more about boards and cards" : "1. Abra aquí para aprender más sobre los tableros y las tarjetas",
"2. Drag cards left and right, up and down" : "2. Arrastre las tarjetas a la izquierda y derecha, arriba y abajo",
"3. Apply rich formatting and link content" : "3. Aplique formato enriquecido y contenido a los enlaces",
"4. Share, comment and collaborate!" : "4. ¡Comparta, comente y colabore!",
"Create your first card!" : "¡Cree su primera tarjeta!",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario tiene más de %s caracteres.\nSe ha añadido como adjunto a la tarjeta con el nombre %s.\nAccesible en la URL: %s.",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario tiene más de %s caracteres.\nAñadido como adjunto a la tarjeta con el nombre %s.\nAccesible en la URL: %s.",
"Attachments" : "Adjuntos",
"File" : "Archivo",
"date" : "fecha",
"Card not found" : "Tarjeta no encontrada",
"Path is already shared with this card" : "La ruta ya se ha compartido con esta tarjeta",
"Invalid date, date format must be YYYY-MM-DD" : "Fecha no válida, el formato de las fechas debe ser AAAA-MM-DD",
"Personal planning and team project organization" : "Planificación personal y organización de proyecto de equipo",
"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 es una herramienta de organización de estilo kanban dirigida a la planificación personal y la organización de proyectos para equipos, integrada a Nextcloud.\n\n\n- 📥 Agregue sus tareas a las tarjetas y póngalas en orden.\n- 📄 Escriba notas adicionales en Markdown\n- 🔖 Asigne etiquetas para una organización mejor\n- 👥 Comparta con su equipo, amigos o familia.\n- 📎 Adjunte archivos e incruste los mismos en su descripción Markdown\n- 💬 Discuta con su equipo usando comentarios.\n- ⚡ Mantenga un registro de los cambios en el flujo de actividad\n- 🚀 Organice su proyecto",
"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 es una herramienta de organización de estilo kanban dirigida a la planificación personal y la organización de proyectos para equipos integrados con Nextcloud.\n\n\n- 📥 Agrega tus tareas a las tarjetas y ordénalas.\n- 📄 Escriba notas adicionales\n- 🔖 Asignar etiquetas para una organización mejor\n- 👥 Comparte con tu equipo, amigos o familia.\n- 📎 Adjuntar archivos e incrustarlos en su descripción\n- 💬 Discuta con su equipo usando comentarios.\n- ⚡ Mantenga un registro de los cambios en el flujo de actividad\n- 🚀 Organiza tu proyecto",
"Add board" : "Añadir tablero",
"Card details" : "Detalles de la tarjeta",
"Select the board to link to a project" : "Selecciona el tablero que enlazar a un proyecto",
@@ -175,8 +163,8 @@
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
"Hide card cover images" : "Ocultar la imagen de portada de las tarjetas",
"Show card cover images" : "Mostrar la imagen de portada de las tarjetas",
"Hide card cover images" : "Ocultar la imagen principal de las tarjetas",
"Show card cover images" : "Mostrar la imagen principal de las tarjetas",
"Open details" : "Abrir detalles",
"Details" : "Detalles",
"Currently present people" : "Personas presentes actualmente",
@@ -191,11 +179,11 @@
"Undo" : "Deshacer",
"Deleted cards" : "Cartas eliminadas",
"Failed to create share with {displayName}" : "Fallo al crear el recurso compartido denominado {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "¿Está seguro de que quiere transferir el tablero {title} a {user}?",
"Transfer the board." : "Transfiera el tablero.",
"Are you sure you want to transfer the board {title} to {user}?" : "¿Estás seguro de que quieres transferir el tablero {título} a {usuario}?",
"Transfer the board." : "Transfiere el tablero.",
"Transfer" : "Transferir",
"The board has been transferred to {user}" : "El tablero ha sido transferido a {user}",
"Failed to transfer the board to {user}" : "Fallo al transferir el tablero a {user}",
"The board has been transferred to {user}" : "El tablero ha sido transferido a {usuario}",
"Failed to transfer the board to {user}" : "Failed to transfer the board to {user}",
"Share board with a user, group or team …" : "Compartir tablero con un usuario, grupo o equipo …",
"Searching for users, groups and teams …" : "Buscando usuarios, grupos y equipos …",
"No participants found" : "No se encontraron participantes",
@@ -228,7 +216,7 @@
"Invalid path selected" : "Ruta seleccionada no válida",
"Upload new files" : "Subir nuevos archivos",
"Share from Files" : "Compartir desde Archivos",
"Pending share" : "Recurso compartido pendiente",
"Pending share" : "Pendiente de compartir",
"Add this attachment" : "Añadir este adjunto",
"Show in Files" : "Mostrar en Archivos",
"Download" : "Descargar",
@@ -238,7 +226,6 @@
"Modified" : "Modificado",
"Created" : "Creado",
"The title cannot be empty." : "El título no puede estar vacío.",
"Cannot close unsaved card!" : "¡No se puede cerrar esta tarjeta no guardada!",
"Open in sidebar view" : "Abrir en vista de barra lateral",
"Open in bigger view" : "Abrir en vista más grande",
"Comments" : "Comentarios",
@@ -253,7 +240,6 @@
"Reply" : "Responder",
"Update" : "Actualizar",
"Write a description …" : "Escribe una descripción...",
"Could not save description" : "No se pudo guardar la descripción",
"Description" : "Descripción",
"(Unsaved)" : "(Sin salvar)",
"(Saving…)" : "(Guardando...)",
@@ -271,12 +257,12 @@
"Set due date for this weekend" : "Establecer este fin de semana como fecha de vencimiento",
"Next week {timeLocale}" : "Próxima semana {timeLocale}",
"Set due date for next week" : "Establecer la próxima semana como fecha de vencimiento",
"Assign a due date to this card…" : "Asignar una fecha de vencimiento a esta tarjeta…",
"Assign a due date to this card…" : "Asignar una fecha de caducidad a esta tarjeta…",
"Set a due date" : "Fijar una fecha límite",
"Add due date" : "Añadir fecha de vencimiento",
"Choose a date" : "Elija una fecha",
"Remove due date" : "Eliminar fecha límite",
"Mark as done" : "Marcar como completado",
"Mark as done" : "Marcar como hecho",
"Due at:" : "Vence el:",
"Not done" : "No está finalizado",
"Unarchive card" : "Desarchivar tarjeta",
@@ -340,7 +326,6 @@
"An error occurred" : "Ocurrió un error",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "¿Está seguro de querer eliminar el tablero {title}? Esto eliminará todos los datos del tablero incluyendo las tarjetas archivadas.",
"Delete the board?" : "¿Borrar el tablero?",
"Exporting board..." : "Exportando tablero...",
"Board details" : "Detalles del tablero",
"Edit board" : "Editar tablero",
"Clone board" : "Clonar tablero",
@@ -353,38 +338,34 @@
"Assigned cards" : "Tarjetas asignadas",
"No notifications" : "No hay notificaciones",
"Delete board" : "Eliminar tablero",
"Importing board..." : "Importando tablero...",
"Board imported successfully" : "Se importó el tablero exitosamente",
"Import board" : "Importar tablero",
"Clone {boardTitle}" : "Clonar {boardTitle}",
"Clone cards" : "Clonar tarjetas",
"Clone assignments" : "Clonar asignaciones",
"Clone labels" : "Clonar etiquetas",
"Clone due dates" : "Clonar fechas de vencimiento",
"Clone due dates" : "Clonar fechas límite",
"Advanced options" : "Opciones avanzadas",
"Move all cards to the first list" : "Mover todas las tarjetas a la primera lista",
"Restore archived cards" : "Restaurar tarjetas archivadas",
"Clone" : "Clonar",
"Export {boardTitle}" : "Exportar {boardTitle}",
"Export as JSON" : "Exportar como JSON",
"Export as CSV" : "Exportar como CSV",
"Note: Only the JSON format is supported for importing back into the Deck app." : "Nota: Solo el formato JSON es soportar al importar de vuelta en la app Deck.",
"Export" : "Exportar",
"Loading filtered view" : "Cargando vista filtrada",
"Search for {searchQuery} in other boards" : "Buscar {searchQuery} en otros tableros",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar",
"Search for {searchQuery} in all boards" : "Buscar {searchQuery} en todos los tableros",
"No results found" : "No se encontraron resultados",
"Deck board {name}\n* Last modified on {lastMod}" : "Tablero Deck {name}\n* Se modificó por última vez el {lastMod}",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creado en {created}\n* Se modificó por última vez el {lastMod}\n* {nbAttachments} adjuntos\n* {nbComments} comentarios",
"Deck board {name}\n* Last modified on {lastMod}" : "Tablero Deck {name}\n* Última modificación en {lastMod}",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creada en {created}\n* Ultima moficiación en {lastMod}\n* {nbAttachments} adjuntos\n* {nbComments} comentarios",
"{nbCards} cards" : "{nbCards} tarjetas",
"Due on {date}" : "Vence en {date}",
"{stack} in {board}" : "{stack} en {board}",
"Click to expand description" : "Haga clic para expandir la descripción",
"Click to expand comment" : "Haga clic para expandir el comentario",
"Click to expand description" : "Pulse para expandir la descripción",
"Click to expand comment" : "Pulse para expandir el comentario",
"Create card" : "Crear tarjeta",
"Create a new card" : "Crear una tarjeta nueva",
"Create a new card" : "Crear una nueva tarjeta",
"Card title" : "Título de la tarjeta",
"Creating the new card …" : "Creando una tarjeta nueva …",
"Creating the new card …" : "Creando una nueva tarjeta …",
"Card \"{card}\" was added to \"{board}\"" : "La tarjeta \"{card}\" fue añadida a \"{board}\"",
"Open card" : "Abrir tarjeta",
"Close" : "Cerrar",
@@ -400,8 +381,7 @@
"Something went wrong" : "Algo ha ido mal",
"Failed to upload {name}" : "Error al subir {name}",
"Maximum file size of {size} exceeded" : "Tamaño máximo de archivo de {size} excedido",
"Assigned users" : "Usuarios asignados",
"Due date" : "Fecha de vencimiento",
"Due date" : "Fecha de fin",
"Error creating the share" : "Error creando el recurso compartido",
"Share with a Deck card" : "Compartir con una tarjeta de Deck",
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta de Deck",
@@ -412,9 +392,6 @@
"Example Task 3" : "Tarea de ejemplo 3",
"Example Task 2" : "Tarea de ejemplo 2",
"Example Task 1" : "Tarea de ejemplo 1",
"Move card to another board" : "Mover la tarjeta a otro tablero",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar"
"Move card to another board" : "Mover la tarjeta a otro tablero"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -62,11 +62,11 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -60,11 +60,11 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -104,6 +104,9 @@ OC.L10N.register(
"Delete board" : "Eliminar Tablero",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar",
"Create card" : "Crear tarjeta",
"Create a new card" : "Crear una nueva tarjeta",
"Card title" : "Título de la tarjeta",
@@ -114,9 +117,6 @@ OC.L10N.register(
"Share with a Deck card" : "Compartir con una tarjeta del Tablero",
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta del Tablero",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -102,6 +102,9 @@
"Delete board" : "Eliminar Tablero",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar",
"Create card" : "Crear tarjeta",
"Create a new card" : "Crear una nueva tarjeta",
"Card title" : "Título de la tarjeta",
@@ -112,9 +115,6 @@
"Share with a Deck card" : "Compartir con una tarjeta del Tablero",
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta del Tablero",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin finalizar"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -66,10 +66,10 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -64,10 +64,10 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -33,7 +33,6 @@ OC.L10N.register(
"Tags" : "Etiquetas",
"Activity" : "Actividad",
"Undo" : "Deshacer",
"Transfer" : "Transferencia",
"Can edit" : "Puede editar",
"Can share" : "Puede compartir",
"Owner" : "Dueño",
@@ -59,7 +58,6 @@ OC.L10N.register(
"Search" : "Buscar",
"Archived boards" : "Tableros archivados",
"Shared with you" : "Compartido con usted",
"Cancel edit" : "Cancelar edición",
"Board details" : "Detalles del tablero",
"Edit board" : "Editar el tablero",
"Unarchive board" : "Desarchivar tablero",
@@ -68,11 +66,11 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -31,7 +31,6 @@
"Tags" : "Etiquetas",
"Activity" : "Actividad",
"Undo" : "Deshacer",
"Transfer" : "Transferencia",
"Can edit" : "Puede editar",
"Can share" : "Puede compartir",
"Owner" : "Dueño",
@@ -57,7 +56,6 @@
"Search" : "Buscar",
"Archived boards" : "Tableros archivados",
"Shared with you" : "Compartido con usted",
"Cancel edit" : "Cancelar edición",
"Board details" : "Detalles del tablero",
"Edit board" : "Editar el tablero",
"Unarchive board" : "Desarchivar tablero",
@@ -66,11 +64,11 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -65,10 +65,10 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -63,10 +63,10 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -65,11 +65,11 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -63,11 +63,11 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -285,6 +285,9 @@ OC.L10N.register(
"Export as CSV" : "Exportar como CSV",
"Export" : "Exportar",
"Loading filtered view" : "Cargando vista filtrada",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin vencimiento",
"Search for {searchQuery} in all boards" : "Buscar {searchQuery} en todos los tableros",
"No results found" : "No se encontraron resultados",
"Deck board {name}\n* Last modified on {lastMod}" : "Tablero de Deck {name}\n * Última modificación el {lastMod}",
@@ -322,9 +325,6 @@ OC.L10N.register(
"Example Task 3" : "Tarea de ejemplo 3",
"Example Task 2" : "Tarea de ejemplo 2",
"Example Task 1" : "Tarea de ejemplo 1",
"Move card to another board" : "Mover tarjeta a otro tablero",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin vencimiento"
"Move card to another board" : "Mover tarjeta a otro tablero"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -283,6 +283,9 @@
"Export as CSV" : "Exportar como CSV",
"Export" : "Exportar",
"Loading filtered view" : "Cargando vista filtrada",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin vencimiento",
"Search for {searchQuery} in all boards" : "Buscar {searchQuery} en todos los tableros",
"No results found" : "No se encontraron resultados",
"Deck board {name}\n* Last modified on {lastMod}" : "Tablero de Deck {name}\n * Última modificación el {lastMod}",
@@ -320,9 +323,6 @@
"Example Task 3" : "Tarea de ejemplo 3",
"Example Task 2" : "Tarea de ejemplo 2",
"Example Task 1" : "Tarea de ejemplo 1",
"Move card to another board" : "Mover tarjeta a otro tablero",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"No due" : "Sin vencimiento"
"Move card to another board" : "Mover tarjeta a otro tablero"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -66,10 +66,10 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -64,10 +64,10 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -61,11 +61,11 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -59,11 +59,11 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -187,12 +187,12 @@ OC.L10N.register(
"Advanced options" : "Opciones avanzadas",
"Clone" : "Clonar",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Error creating the share" : "Error creando el recurso compartido",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -185,12 +185,12 @@
"Advanced options" : "Opciones avanzadas",
"Clone" : "Clonar",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Error creating the share" : "Error creando el recurso compartido",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -61,11 +61,11 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -59,11 +59,11 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -61,11 +61,11 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -59,11 +59,11 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@@ -63,11 +63,11 @@ OC.L10N.register(
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@@ -61,11 +61,11 @@
"Delete board" : "Borrar tableros",
"Advanced options" : "Opciones avanzadas",
"Export" : "Exportar",
"Today" : "Hoy",
"Tomorrow" : "Mañana",
"Close" : "Cerrar",
"Due date" : "Fecha de vencimiento",
"Share" : "Compartir",
"Personal" : "Personal",
"Today" : "Hoy",
"Tomorrow" : "Mañana"
"Personal" : "Personal"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

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