Compare commits

..

2 Commits

Author SHA1 Message Date
Josh 0de4631714 chore: normalize trailing slash handling
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-10 12:13:46 -05:00
Josh ff6d2fc353 refactor(Filesystem): use PathHelper for canonical normalization
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-09 22:22:53 -05:00
2974 changed files with 65380 additions and 66885 deletions
+2 -2
View File
@@ -71,8 +71,9 @@ body:
Select Nextcloud Server version.
_Versions not listed here are not maintained and not supported anymore_
options:
- "30"
- "31"
- "32"
- "33"
- "master"
validations:
required: true
@@ -95,7 +96,6 @@ body:
Select PHP engine version serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "PHP 8.5"
- "PHP 8.4"
- "PHP 8.3"
- "PHP 8.2"
+6 -62
View File
@@ -21,7 +21,7 @@ updates:
- package-ecosystem: composer
directories:
- "/"
- "/vendor-bin/behat"
- "/build/integration"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
@@ -64,65 +64,6 @@ updates:
- "@vitest/*"
# Latest stable release
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable33
directories:
- "/"
- "/vendor-bin/behat"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
- "/vendor-bin/rector"
schedule:
interval: weekly
day: saturday
time: "03:30"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
ignore:
# only patch updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# frontend dependencies
- package-ecosystem: npm
target-branch: stable33
directories:
- "/"
- "/build/frontend"
- "/build/frontend-legacy"
schedule:
interval: weekly
day: saturday
time: "03:30"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
- "3. to review"
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
groups:
vite:
patterns:
- "vite"
- "@nextcloud/vite-config"
vitest:
patterns:
- "vitest"
- "@vitest/*"
ignore:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
# Older stable releases
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable32
@@ -136,7 +77,7 @@ updates:
schedule:
interval: weekly
day: saturday
time: "04:30"
time: "03:30"
timezone: Europe/Paris
labels:
- "3. to review"
@@ -146,6 +87,7 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Latest stable branch
# frontend dependencies
- package-ecosystem: npm
target-branch: stable32
@@ -153,7 +95,7 @@ updates:
schedule:
interval: weekly
day: saturday
time: "04:30"
time: "03:30"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
@@ -166,6 +108,8 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
# Older stable releases
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable31
+4 -6
View File
@@ -52,14 +52,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
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
@@ -82,14 +81,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
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
@@ -31,7 +31,7 @@ jobs:
- 'version.php'
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
@@ -27,10 +27,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
- uses: webiny/action-conventional-commits@faccb24fc2550dd15c0390d944379d2d8ed9690e # v1.3.1
- uses: webiny/action-conventional-commits@8bc41ff4e7d423d56fa4905f6ff79209a78776c7 # v1.3.0
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+3 -3
View File
@@ -32,18 +32,18 @@ jobs:
build-mode: none
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql-config.yml
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
with:
category: "/language:${{matrix.language}}"
+2 -2
View File
@@ -103,7 +103,7 @@ jobs:
key: git-repo
- name: Checkout ${{ needs.init.outputs.head_ref }}
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
# Needed to allow force push later
persist-credentials: true
@@ -124,7 +124,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
cache: npm
+1 -1
View File
@@ -38,7 +38,7 @@ jobs:
id: comment-branch
- name: Checkout ${{ steps.comment-branch.outputs.head_ref }}
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
fetch-depth: 0
+10 -10
View File
@@ -48,7 +48,7 @@ jobs:
exit 1
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
# We need to checkout submodules for 3rdparty
@@ -72,7 +72,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -107,7 +107,7 @@ jobs:
services:
mysql:
# Only start mysql if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-mysql-8.4:latest' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-mysql-8.4:latest' || ''}}
ports:
- '3306/tcp'
env:
@@ -119,7 +119,7 @@ jobs:
mariadb:
# Only start mariadb if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'mariadb:11.4' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'mariadb:11.4' || ''}}
ports:
- '3306/tcp'
env:
@@ -131,7 +131,7 @@ jobs:
postgres:
# Only start postgres if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-postgres-17:latest' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-postgres-17:latest' || ''}}
ports:
- '5432/tcp'
env:
@@ -142,7 +142,7 @@ jobs:
oracle:
# Only start oracle if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/gvenzl/oracle-free:23' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'ghcr.io/gvenzl/oracle-free:23' || ''}}
ports:
- '1521'
env:
@@ -160,7 +160,7 @@ jobs:
path: ./
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ needs.init.outputs.nodeVersion }}
@@ -171,7 +171,7 @@ jobs:
run: ./node_modules/cypress/bin/cypress install
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
uses: cypress-io/github-action@dca986193e4336cb32820819b07e9ecacacaaaf6 # v7.0.0
uses: cypress-io/github-action@7ef72e250a9e564efb4ed4c2433971ada4cc38b4 # v6.10.4
with:
# We already installed the dependencies in the init job
install: false
@@ -195,7 +195,7 @@ jobs:
SETUP_TESTING: ${{ matrix.containers == 'setup' && 'true' || '' }}
- name: Upload snapshots and videos
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: snapshots_${{ matrix.containers }}
@@ -218,7 +218,7 @@ jobs:
run: docker exec nextcloud-e2e-test-server_${{ env.APP_NAME }} tar -cvjf - data > data.tar
- name: Upload data archive
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: failure() && matrix.containers != 'component'
with:
name: nc_data_${{ matrix.containers }}
+6 -17
View File
@@ -29,22 +29,12 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'apps/files_external/**'
- 'vendor/**'
- 'vendor-bin/**'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
files-external-ftp:
runs-on: ubuntu-latest
@@ -65,7 +55,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
@@ -81,8 +71,7 @@ jobs:
if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -115,14 +104,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-files-external-ftp
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-files-external-ftp
+10 -22
View File
@@ -29,22 +29,12 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'apps/files_external/**'
- 'vendor/**'
- 'vendor-bin/**'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
files-external-s3-minio:
runs-on: ubuntu-latest
@@ -74,14 +64,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -115,14 +104,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-files-external-s3
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-files-external-s3
@@ -163,14 +152,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -197,14 +185,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-files-external-s3
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-files-external-s3
+6 -17
View File
@@ -29,22 +29,12 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'apps/files_external/**'
- 'vendor/**'
- 'vendor-bin/**'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
files-external-sftp:
runs-on: ubuntu-latest
@@ -65,7 +55,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
@@ -77,8 +67,7 @@ jobs:
if [[ '${{ matrix.sftpd }}' == 'openssh' ]]; then docker run -p 2222:22 --name sftp -d -v /tmp/sftp:/home/test atmoz/sftp 'test:test:::data'; fi
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -104,14 +93,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-files-external-sftp
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-files-external-sftp
@@ -29,22 +29,12 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'apps/files_external/**'
- 'vendor/**'
- 'vendor-bin/**'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
files-external-smb-kerberos:
runs-on: ubuntu-latest
@@ -56,13 +46,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Checkout user_saml
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
repository: nextcloud/user_saml
@@ -117,7 +107,7 @@ jobs:
echo "$FILEPATH:"
docker exec --user 33 apache cat $FILEPATH
smb-kerberos-sso-summary:
sftp-summary:
runs-on: ubuntu-latest-low
needs: [changes, files-external-smb-kerberos]
+7 -24
View File
@@ -29,22 +29,12 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'apps/files_external/**'
- 'vendor/**'
- 'vendor-bin/**'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
files-external-smb:
runs-on: ubuntu-latest
@@ -63,26 +53,19 @@ jobs:
services:
samba:
image: ghcr.io/servercontainers/samba:smbd-only-a3.18.0-s4.18.2-r0
env:
ACCOUNT_test: test
UID_test: 1000
SAMBA_VOLUME_CONFIG_test: "[public]; path=/tmp; valid users = test; guest ok = no; read only = no; browseable = yes"
options: >-
--health-cmd=true
image: ghcr.io/nextcloud/continuous-integration-samba:latest # zizmor: ignore[unpinned-images]
ports:
- 445:445
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -116,14 +99,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-files-external-smb
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-files-external-smb
+6 -17
View File
@@ -29,22 +29,12 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'apps/files_external/**'
- 'vendor/**'
- 'vendor-bin/**'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
files-external-webdav-apache:
runs-on: ubuntu-latest
@@ -70,14 +60,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -108,14 +97,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-files-external-webdav
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-files-external-webdav
+5 -17
View File
@@ -29,22 +29,11 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'apps/files_external/**'
- 'vendor/**'
- 'vendor-bin/**'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
files-external-generic:
runs-on: ubuntu-latest
@@ -64,14 +53,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -97,14 +85,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-files-external-generic
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-files-external-generic
@@ -24,14 +24,14 @@ jobs:
require: write
- name: Checkout github_helper
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
repository: nextcloud/github_helper
path: github_helper
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
path: server
@@ -73,8 +73,7 @@ jobs:
fi
- name: Set up php 8.2
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: 8.2
coverage: none
+3 -4
View File
@@ -53,14 +53,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -71,7 +70,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: LizardByte/actions/actions/setup_python@e6bc045033a5614035b66daafc38ff86faecb23a # v2026.116.208
uses: LizardByte/actions/actions/setup_python@329b1bcefe1cbe1ef289177471c9f2b2af98e6ca # v2025.1028.23217
with:
python-version: '2.7'
+2 -3
View File
@@ -52,14 +52,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+8 -18
View File
@@ -27,23 +27,14 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- 'vendor/**'
- 'vendor-bin/**'
- '**/*.php'
- '**/lib/**'
- '**/tests/**'
- '**/vendor-bin/**'
- 'build/integration/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- 'build/integration/**'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
integration-s3-primary:
runs-on: ubuntu-latest
@@ -76,14 +67,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+4 -5
View File
@@ -97,14 +97,14 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Checkout Talk app
if: ${{ matrix.test-suite == 'videoverification_features' }}
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
repository: nextcloud/spreed
@@ -113,7 +113,7 @@ jobs:
- name: Checkout Activity app
if: ${{ matrix.test-suite == 'sharing_features' }}
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
repository: nextcloud/activity
@@ -121,8 +121,7 @@ jobs:
ref: ${{ matrix.activity-versions }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+2 -2
View File
@@ -56,7 +56,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
@@ -68,7 +68,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+2 -3
View File
@@ -48,13 +48,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
- name: Set up php
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: 8.2
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
+2 -3
View File
@@ -53,13 +53,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
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
+2 -2
View File
@@ -25,7 +25,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
@@ -37,7 +37,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+2 -2
View File
@@ -59,7 +59,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
@@ -71,7 +71,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+3 -3
View File
@@ -58,7 +58,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
@@ -70,7 +70,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -90,7 +90,7 @@ jobs:
run: npm run test:coverage
- name: Collect coverage
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./coverage/lcov.info,./coverage/legacy/lcov.info
+2 -2
View File
@@ -56,7 +56,7 @@ jobs:
name: NPM build
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
@@ -68,7 +68,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+3 -4
View File
@@ -26,7 +26,6 @@ jobs:
matrix:
branches:
- ${{ github.event.repository.default_branch }}
- 'stable33'
- 'stable32'
- 'stable31'
@@ -35,7 +34,7 @@ jobs:
steps:
- name: Checkout
id: checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
ref: ${{ matrix.branches }}
@@ -49,7 +48,7 @@ jobs:
fallbackNpm: '^11.3'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -70,7 +69,7 @@ jobs:
- name: Create Pull Request
if: steps.checkout.outcome == 'success'
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'fix(deps): Fix npm audit'
+11 -18
View File
@@ -29,22 +29,16 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/appinfo/**'
- '**/lib/**'
- '**/templates/**'
- '**/tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
azure-primary-tests:
runs-on: ubuntu-latest
@@ -58,7 +52,7 @@ jobs:
php-versions: ['8.2', '8.3']
include:
- php-versions: '8.4'
coverage: ${{ github.event_name != 'pull_request' }}
coverage: true
name: php${{ matrix.php-versions }}-azure
@@ -79,14 +73,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -117,14 +110,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-azure
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-azure
+11 -18
View File
@@ -29,22 +29,16 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/appinfo/**'
- '**/lib/**'
- '**/templates/**'
- '**/tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
s3-primary-tests-minio:
runs-on: ubuntu-latest
@@ -58,7 +52,7 @@ jobs:
php-versions: ['8.2']
include:
- php-versions: '8.3'
coverage: ${{ github.event_name != 'pull_request' }}
coverage: true
name: php${{ matrix.php-versions }}-s3
@@ -80,14 +74,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -123,14 +116,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-s3
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-s3
+11 -18
View File
@@ -29,22 +29,16 @@ jobs:
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/appinfo/**'
- '**/lib/**'
- '**/templates/**'
- '**/tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- 'apps/files/lib/**'
- 'apps/files/tests/**'
- 'apps/files_external/**'
- 'apps/files_sharing/lib/**'
- 'apps/files_sharing/tests/**'
- 'apps/files_trashbin/lib/**'
- 'apps/files_trashbin/tests/**'
- 'apps/files_versions/lib/**'
- 'apps/files_versions/tests/**'
- 'lib/private/Files/**'
- 'lib/public/Files/**'
- 'tests/lib/Files/**'
- '**.php'
swift-primary-tests:
runs-on: ubuntu-latest
@@ -58,7 +52,7 @@ jobs:
php-versions: ['8.2']
include:
- php-versions: '8.3'
coverage: ${{ github.event_name != 'pull_request' }}
coverage: true
name: php${{ matrix.php-versions }}-swift
@@ -77,14 +71,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -113,14 +106,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-swift
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-swift
+2 -3
View File
@@ -26,13 +26,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
- name: Set up php
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: '8.2'
extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
+3 -4
View File
@@ -35,15 +35,14 @@ jobs:
exit 1
- name: Checkout server before PR
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
ref: ${{ github.event.pull_request.base.ref }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
@@ -99,7 +98,7 @@ jobs:
- name: Upload profiles
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
with:
name: profiles
path: |
+1 -1
View File
@@ -33,7 +33,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
+6 -7
View File
@@ -60,13 +60,13 @@ jobs:
fail-fast: false
matrix:
php-versions: ['8.2']
mariadb-versions: ['10.6']
mariadb-versions: ['10.6', '10.11', '11.4', '11.8']
include:
- php-versions: '8.3'
mariadb-versions: '10.11'
coverage: ${{ github.event_name != 'pull_request' }}
- php-versions: '8.4'
mariadb-versions: '11.4'
mariadb-versions: '11.8'
- php-versions: '8.5'
mariadb-versions: '11.8'
@@ -92,14 +92,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -132,14 +131,14 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.db.xml
flags: phpunit-mariadb
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-mariadb
+4 -5
View File
@@ -72,14 +72,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -104,14 +103,14 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.xml
flags: phpunit-memcached
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-memcached
+4 -5
View File
@@ -121,14 +121,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -162,14 +161,14 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.db.xml
flags: phpunit-mysql
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-mysql
+5 -6
View File
@@ -60,7 +60,7 @@ jobs:
fail-fast: false
matrix:
php-versions: ['8.2']
mysql-versions: ['8.0']
mysql-versions: ['8.0', '8.4']
include:
- mysql-versions: '8.0'
php-versions: '8.3'
@@ -92,14 +92,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -132,14 +131,14 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.db.xml
flags: phpunit-mysql
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-mysql
+4 -5
View File
@@ -75,14 +75,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -110,14 +109,14 @@ jobs:
- name: Upload nodb code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.nodb.xml
flags: phpunit-nodb
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-nodb
@@ -72,14 +72,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
+6 -5
View File
@@ -64,6 +64,8 @@ jobs:
php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
- oracle-versions: '21'
php-versions: '8.2'
- oracle-versions: '23'
php-versions: '8.3'
- oracle-versions: '23'
php-versions: '8.4'
@@ -99,14 +101,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -132,14 +133,14 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.db.xml
flags: phpunit-oci
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-oci
+5 -6
View File
@@ -61,7 +61,7 @@ jobs:
matrix:
php-versions: ['8.2']
# To keep the matrix smaller we ignore PostgreSQL versions in between as we already test the minimum and the maximum
postgres-versions: ['14']
postgres-versions: ['14', '18']
include:
- php-versions: '8.3'
postgres-versions: '18'
@@ -92,14 +92,13 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -127,14 +126,14 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.db.xml
flags: phpunit-postgres
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-postgres
+7 -13
View File
@@ -75,28 +75,24 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
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, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up dependencies
run: |
sudo apt-get update
sudo apt-get install -y ghostscript
composer i
run: composer i
- name: Set up Nextcloud
run: |
@@ -110,26 +106,24 @@ jobs:
run: ./occ app:list && echo "======= System config =======" && ./occ config:list system
- name: PHPUnit database tests
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} tests/lib/Preview/PostscriptTest.php
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
files: ./clover.db.xml
flags: phpunit-sqlite
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1.2.1
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
flags: phpunit-sqlite
- name: Print logs
if: always()
run: |
gs --version
cat /etc/ImageMagick-6/policy.xml
cat data/nextcloud.log
summary:
-45
View File
@@ -1,45 +0,0 @@
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
name: Rector
on:
pull_request:
permissions:
contents: read
concurrency:
group: rector-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
strict:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
submodules: true
- name: Set up php
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
with:
php-version: '8.2'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Composer install
run: composer i
- name: Rector
run: composer run rector:strict
- name: Show changes
if: always()
run: git diff --exit-code -- . ':!lib/composer'
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest-low
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
issues: write
steps:
- uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v9
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v9
with:
repo-token: ${{ secrets.COMMAND_BOT_PAT }}
stale-issue-message: >
+10 -43
View File
@@ -15,6 +15,7 @@ on:
permissions:
contents: read
security-events: write
concurrency:
group: static-code-analysis-${{ github.head_ref || github.run_id }}
@@ -28,14 +29,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
with:
persist-credentials: false
submodules: true
- name: Set up php
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: '8.2'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -58,19 +58,15 @@ jobs:
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
permissions:
security-events: write
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
with:
persist-credentials: false
submodules: true
- name: Set up php
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: '8.2'
extensions: ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -88,7 +84,7 @@ jobs:
- name: Upload Security Analysis results to GitHub
if: always()
uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v3
uses: github/codeql-action/upload-sarif@fdbfb4d2750291e159f0156def62b853c2798ca2 # v3
with:
sarif_file: results.sarif
@@ -99,14 +95,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
with:
persist-credentials: false
submodules: true
- name: Set up php
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: '8.2'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -131,14 +126,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
with:
persist-credentials: false
submodules: true
- name: Set up php
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
timeout-minutes: 5
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: '8.2'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -151,30 +145,3 @@ jobs:
- name: Psalm
run: composer run psalm:ncu -- --threads=1 --monochrome --no-progress --output-format=github
static-code-analysis-strict:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
with:
persist-credentials: false
submodules: true
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 #v2.35.4
with:
php-version: '8.2'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Composer install
run: composer i
- name: Psalm
run: composer run psalm:strict -- --threads=1 --monochrome --no-progress --output-format=github
+3 -3
View File
@@ -17,12 +17,12 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable33', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-ca-certificate-bundle-${{ matrix.branches }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
ref: ${{ matrix.branches }}
@@ -32,7 +32,7 @@ jobs:
run: curl --etag-compare build/ca-bundle-etag.txt --etag-save build/ca-bundle-etag.txt --output resources/config/ca-bundle.crt https://curl.se/ca/cacert.pem
- name: Create Pull Request
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'fix(security): Update CA certificate bundle'
@@ -17,12 +17,12 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable33', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-code-signing-crl-${{ matrix.branches }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
ref: ${{ matrix.branches }}
@@ -35,7 +35,7 @@ jobs:
run: openssl crl -verify -in resources/codesigning/root.crl -CAfile resources/codesigning/root.crt -noout
- name: Create Pull Request
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'fix(security): Update code signing revocation list'
@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest-low
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
submodules: true
@@ -107,7 +107,7 @@ jobs:
fi
- name: Create Pull Request
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412
if: steps.update-files.outputs.CHANGES_MADE == 'true'
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
-29
View File
@@ -1,29 +0,0 @@
# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-only
# Files removed at build time
# Global exclude
.editorconfig
.git
.git-blame-ignore-revs
.gitattributes
.github
.gitignore
.gitmodules
.idea
.l10nignore
.nextcloudignore
.noopenapi
.tx
cypress
tests
# Server specific
/.devcontainer
/__mocks__
/__tests__
/autotest*.sh
/build
/config/config.php
/contribute
/data
+2 -2
View File
@@ -11,7 +11,7 @@
**A safe home for all your data.**
![](https://raw.githubusercontent.com/nextcloud/screenshots/master/nextcloud-hub-25-files.png)
![](https://raw.githubusercontent.com/nextcloud/screenshots/master/nextcloud-hub-files-25-preview.png)
## Why is this so awesome? 🤩
@@ -35,8 +35,8 @@ Enterprise? Public Sector or Education user? You may want to have a look into [*
## Get in touch 💬
* [📋 Forum](https://help.nextcloud.com)
* [🦋 Bluesky](https://bsky.app/profile/nextcloud.bsky.social)
* [👥 Facebook](https://www.facebook.com/nextclouders)
* [🐣 Twitter](https://twitter.com/Nextclouders)
* [🐘 Mastodon](https://mastodon.xyz/@nextcloud)
You can also [get support for Nextcloud](https://nextcloud.com/support)!
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Auditing / Logging</name>
<summary>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</summary>
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<version>1.24.0</version>
<version>1.23.0</version>
<licence>agpl</licence>
<author>Nextcloud</author>
<namespace>AdminAudit</namespace>
@@ -20,7 +20,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="34" max-version="34"/>
<nextcloud min-version="33" max-version="33"/>
</dependencies>
<background-jobs>
<job>OCA\AdminAudit\BackgroundJobs\Rotate</job>
+2 -2
View File
@@ -9,7 +9,7 @@
<name>Cloud Federation API</name>
<summary>Enable clouds to communicate with each other and exchange data</summary>
<description>The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.</description>
<version>1.18.0</version>
<version>1.17.0</version>
<licence>agpl</licence>
<author>Bjoern Schiessle</author>
<namespace>CloudFederationAPI</namespace>
@@ -19,6 +19,6 @@
<category>integration</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="34" max-version="34"/>
<nextcloud min-version="33" max-version="33"/>
</dependencies>
</info>
-8
View File
@@ -1,8 +0,0 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "API Federasi Cloud",
"Enable clouds to communicate with each other and exchange data" : "Memungkinkan cloud untuk saling berkomunikasi dan bertukar data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API Federasi Cloud memungkinkan berbagai instans Nextcloud untuk saling berkomunikasi dan bertukar data."
},
"nplurals=1; plural=0;");
-6
View File
@@ -1,6 +0,0 @@
{ "translations": {
"Cloud Federation API" : "API Federasi Cloud",
"Enable clouds to communicate with each other and exchange data" : "Memungkinkan cloud untuk saling berkomunikasi dan bertukar data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API Federasi Cloud memungkinkan berbagai instans Nextcloud untuk saling berkomunikasi dan bertukar data."
},"pluralForm" :"nplurals=1; plural=0;"
}
+1 -1
View File
@@ -3,6 +3,6 @@ OC.L10N.register(
{
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "Увімкніть хмари аби спілкуватися один з одним і обмінюватися даними",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API дозволяє різним примірникам сервера хмари Nextcloud спілкуватися між собою та обмінюватися даними."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API дозволяє різним примірникам серверу хмари Nextcloud спілкуватися між собою та обмінюватися даними."
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
+1 -1
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "Увімкніть хмари аби спілкуватися один з одним і обмінюватися даними",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API дозволяє різним примірникам сервера хмари Nextcloud спілкуватися між собою та обмінюватися даними."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API дозволяє різним примірникам серверу хмари Nextcloud спілкуватися між собою та обмінюватися даними."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
}
@@ -10,11 +10,13 @@ declare(strict_types=1);
namespace OCA\CloudFederationAPI\Controller;
use JsonException;
use NCU\Security\Signature\Exceptions\IncomingRequestException;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\BruteForceProtection;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\PublicPage;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\Response;
use OCP\EventDispatcher\IEventDispatcher;
@@ -22,7 +24,6 @@ use OCP\IRequest;
use OCP\OCM\Events\OCMEndpointRequestEvent;
use OCP\OCM\Exceptions\OCMArgumentException;
use OCP\OCM\IOCMDiscoveryService;
use OCP\Security\Signature\Exceptions\IncomingRequestException;
use Psr\Log\LoggerInterface;
class OCMRequestController extends Controller {
@@ -82,6 +83,6 @@ class OCMRequestController extends Controller {
);
$this->eventDispatcher->dispatchTyped($event);
return $event->getResponse() ?? new Response(Http::STATUS_NOT_FOUND);
return $event->getResponse() ?? new DataResponse('', Http::STATUS_NOT_FOUND);
}
}
@@ -7,6 +7,12 @@
namespace OCA\CloudFederationAPI\Controller;
use NCU\Federation\ISignedCloudFederationProvider;
use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
use NCU\Security\Signature\Exceptions\IncomingRequestException;
use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
use NCU\Security\Signature\IIncomingSignedRequest;
use NCU\Security\Signature\ISignatureManager;
use OC\OCM\OCMSignatoryManager;
use OCA\CloudFederationAPI\Config;
use OCA\CloudFederationAPI\Db\FederatedInviteMapper;
@@ -31,18 +37,12 @@ use OCP\Federation\Exceptions\ProviderDoesNotExistsException;
use OCP\Federation\ICloudFederationFactory;
use OCP\Federation\ICloudFederationProviderManager;
use OCP\Federation\ICloudIdManager;
use OCP\Federation\ISignedCloudFederationProvider;
use OCP\IAppConfig;
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\OCM\IOCMDiscoveryService;
use OCP\Security\Signature\Exceptions\IdentityNotFoundException;
use OCP\Security\Signature\Exceptions\IncomingRequestException;
use OCP\Security\Signature\Exceptions\SignatoryNotFoundException;
use OCP\Security\Signature\IIncomingSignedRequest;
use OCP\Security\Signature\ISignatureManager;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Util;
use Psr\Log\LoggerInterface;
@@ -9,6 +9,7 @@ declare(strict_types=1);
namespace OCA\CloudFederationApi\Tests;
use NCU\Security\Signature\ISignatureManager;
use OCA\CloudFederationAPI\Config;
use OCA\CloudFederationAPI\Controller\RequestHandlerController;
use OCA\CloudFederationAPI\Db\FederatedInvite;
@@ -28,7 +29,6 @@ use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\OCM\IOCMDiscoveryService;
use OCP\Security\Signature\ISignatureManager;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Comments</name>
<summary>Files app plugin to add comments to files</summary>
<description>Files app plugin to add comments to files</description>
<version>1.24.0</version>
<version>1.23.0</version>
<licence>agpl</licence>
<author>Arthur Schiwon</author>
<author>Vincent Petry</author>
@@ -21,7 +21,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="34" max-version="34"/>
<nextcloud min-version="33" max-version="33"/>
</dependencies>
<activity>
+1 -9
View File
@@ -10,18 +10,11 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} je komentirao {file}",
"<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke",
"Files" : "Datoteke",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Spomenuti ste u komentaru na „{file}” od računa koji je u međuvremenu izbrisan.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vas je spomenuo u komentaru na „{file}”",
"Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke",
"Edit comment" : "Uredi komentar",
"Delete comment" : "Izbriši komentar",
"Cancel edit" : "Otkaži uređivanje",
"New comment" : "Novi komentar",
"Write a comment …" : "Napiši komentar …",
"Post comment" : "Objavi komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ za spominjanje, : za emoji, / za pametni odabir",
"Could not reload comments" : "Nije moguće ponovno učitati komentare",
"Failed to mark comments as read" : "Nije uspjelo označavanje komentara kao pročitani",
"Unable to load the comments list" : "Nije moguće učitati popis komentara",
"No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!",
"No more messages" : "Nema više poruka",
@@ -31,7 +24,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara",
"Comment deleted" : "Komentar izbrisan",
"An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara",
"Write a comment …" : "Napiši komentar …"
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
+1 -9
View File
@@ -8,18 +8,11 @@
"{author} commented on {file}" : "{author} je komentirao {file}",
"<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke",
"Files" : "Datoteke",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Spomenuti ste u komentaru na „{file}” od računa koji je u međuvremenu izbrisan.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vas je spomenuo u komentaru na „{file}”",
"Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke",
"Edit comment" : "Uredi komentar",
"Delete comment" : "Izbriši komentar",
"Cancel edit" : "Otkaži uređivanje",
"New comment" : "Novi komentar",
"Write a comment …" : "Napiši komentar …",
"Post comment" : "Objavi komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ za spominjanje, : za emoji, / za pametni odabir",
"Could not reload comments" : "Nije moguće ponovno učitati komentare",
"Failed to mark comments as read" : "Nije uspjelo označavanje komentara kao pročitani",
"Unable to load the comments list" : "Nije moguće učitati popis komentara",
"No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!",
"No more messages" : "Nema više poruka",
@@ -29,7 +22,6 @@
"An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara",
"Comment deleted" : "Komentar izbrisan",
"An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara",
"Write a comment …" : "Napiši komentar …"
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara"
},"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;"
}
+3 -12
View File
@@ -5,33 +5,24 @@ OC.L10N.register(
"You commented" : "Anda berkomentar",
"{author} commented" : "{author} berkomentar",
"You commented on %1$s" : "Anda berkomentar pada %1$s",
"You commented on {file}" : "Anda berkomentar pada {file}",
"You commented on {file}" : "Anda berkomentar pada {file} ",
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
"{author} commented on {file}" : "{author} berkomentar pada {file}",
"<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
"Files" : "File",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Anda disebutkan pada \"{file}\", dalam sebuah komentar oleh akun yang sejak itu telah dihapus",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\"",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
"Edit comment" : "Sunting komentar",
"Delete comment" : "Hapus komentar",
"Cancel edit" : "Batal sunting",
"New comment" : "Komentar baru",
"Write a comment …" : "Tulis komentar …",
"Post comment" : "Posting komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ untuk penyebutan, : untuk emoji, / untuk pemilih cerdas",
"Could not reload comments" : "Tidak dapat memuat ulang komentar",
"Failed to mark comments as read" : "Gagal menandai komentar sebagai sudah dibaca",
"Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
"No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!",
"No more messages" : "Tidak ada pesan lagi",
"Retry" : "Ulangi",
"_1 new comment_::_{unread} new comments_" : ["{unread} komentar baru"],
"Comment" : "Komentar",
"An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
"Comment deleted" : "Komentar dihapus",
"An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar",
"Write a comment …" : "Tulis komentar …"
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar"
},
"nplurals=1; plural=0;");
+3 -12
View File
@@ -3,33 +3,24 @@
"You commented" : "Anda berkomentar",
"{author} commented" : "{author} berkomentar",
"You commented on %1$s" : "Anda berkomentar pada %1$s",
"You commented on {file}" : "Anda berkomentar pada {file}",
"You commented on {file}" : "Anda berkomentar pada {file} ",
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
"{author} commented on {file}" : "{author} berkomentar pada {file}",
"<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
"Files" : "File",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Anda disebutkan pada \"{file}\", dalam sebuah komentar oleh akun yang sejak itu telah dihapus",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\"",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
"Edit comment" : "Sunting komentar",
"Delete comment" : "Hapus komentar",
"Cancel edit" : "Batal sunting",
"New comment" : "Komentar baru",
"Write a comment …" : "Tulis komentar …",
"Post comment" : "Posting komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ untuk penyebutan, : untuk emoji, / untuk pemilih cerdas",
"Could not reload comments" : "Tidak dapat memuat ulang komentar",
"Failed to mark comments as read" : "Gagal menandai komentar sebagai sudah dibaca",
"Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
"No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!",
"No more messages" : "Tidak ada pesan lagi",
"Retry" : "Ulangi",
"_1 new comment_::_{unread} new comments_" : ["{unread} komentar baru"],
"Comment" : "Komentar",
"An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
"Comment deleted" : "Komentar dihapus",
"An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar",
"Write a comment …" : "Tulis komentar …"
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar"
},"pluralForm" :"nplurals=1; plural=0;"
}
-1
View File
@@ -17,7 +17,6 @@ OC.L10N.register(
"Delete comment" : "Reactie verwijderen",
"Cancel edit" : "Bewerking annuleren",
"New comment" : "Nieuwe reactie",
"Write a comment …" : "Schrijf een commentaar …",
"Post comment" : "Reactie plaatsen",
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
"Could not reload comments" : "Kon reactie niet opnieuw laden",
-1
View File
@@ -15,7 +15,6 @@
"Delete comment" : "Reactie verwijderen",
"Cancel edit" : "Bewerking annuleren",
"New comment" : "Nieuwe reactie",
"Write a comment …" : "Schrijf een commentaar …",
"Post comment" : "Reactie plaatsen",
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
"Could not reload comments" : "Kon reactie niet opnieuw laden",
+8 -16
View File
@@ -1,10 +1,8 @@
/*!
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { INode } from '@nextcloud/files'
import moment from '@nextcloud/moment'
import { createPinia, PiniaVuePlugin } from 'pinia'
import Vue, { type ComponentPublicInstance } from 'vue'
@@ -21,7 +19,7 @@ let ActivityTabPluginInstance
*/
export function registerCommentsPlugins() {
window.OCA.Activity.registerSidebarAction({
mount: async (el: HTMLElement, { node, reload }: { node: INode, reload: () => void }) => {
mount: async (el, { fileInfo, reload }) => {
const pinia = createPinia()
if (!ActivityTabPluginView) {
@@ -34,10 +32,10 @@ export function registerCommentsPlugins() {
pinia,
propsData: {
reloadCallback: reload,
resourceId: node.fileid,
resourceId: fileInfo.id,
},
})
logger.info('Comments plugin mounted in Activity sidebar action', { node })
logger.info('Comments plugin mounted in Activity sidebar action', { fileInfo })
},
unmount: () => {
// destroy previous instance if available
@@ -47,15 +45,9 @@ export function registerCommentsPlugins() {
},
})
window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }: { node: INode, limit?: number, offset?: number }) => {
const { data: comments } = await getComments(
{ resourceType: 'files', resourceId: node.fileid },
{
limit,
offset: offset ?? 0,
},
)
logger.debug('Loaded comments', { node, comments })
window.OCA.Activity.registerSidebarEntries(async ({ fileInfo, limit, offset }) => {
const { data: comments } = await getComments({ resourceType: 'files', resourceId: fileInfo.id }, { limit, offset })
logger.debug('Loaded comments', { fileInfo, comments })
const { default: CommentView } = await import('./views/ActivityCommentEntry.vue')
// @ts-expect-error Types are broken for Vue2
const CommentsViewObject = Vue.extend(CommentView)
@@ -70,7 +62,7 @@ export function registerCommentsPlugins() {
el: element,
propsData: {
comment,
resourceId: node.fileid,
resourceId: fileInfo.id,
reloadCallback: reload,
},
})
+23 -14
View File
@@ -11,6 +11,7 @@ import { t } from '@nextcloud/l10n'
import wrap from '@vue/web-component-wrapper'
import { createPinia, PiniaVuePlugin } from 'pinia'
import Vue from 'vue'
import FilesSidebarTab from './views/FilesSidebarTab.vue'
import { registerCommentsPlugins } from './comments-activity-tab.ts'
__webpack_nonce__ = getCSPNonce()
@@ -29,20 +30,28 @@ if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSi
iconSvgInline: MessageReplyText,
order: 50,
tagName,
async onInit() {
const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue')
Vue.use(PiniaVuePlugin)
Vue.mixin({ pinia: createPinia() })
const webComponent = wrap(Vue, FilesSidebarTab)
// In Vue 2, wrap doesn't support disabling shadow. Disable with a hack
Object.defineProperty(webComponent.prototype, 'attachShadow', {
value() { return this },
})
Object.defineProperty(webComponent.prototype, 'shadowRoot', {
get() { return this },
})
window.customElements.define(tagName, webComponent)
enabled() {
if (!window.customElements.get(tagName)) {
setupSidebarTab()
}
return true
},
})
}
/**
* Setup the sidebar tab as a web component
*/
function setupSidebarTab() {
Vue.use(PiniaVuePlugin)
Vue.mixin({ pinia: createPinia() })
const webComponent = wrap(Vue, FilesSidebarTab)
// In Vue 2, wrap doesn't support disabling shadow. Disable with a hack
Object.defineProperty(webComponent.prototype, 'attachShadow', {
value() { return this },
})
Object.defineProperty(webComponent.prototype, 'shadowRoot', {
get() { return this },
})
window.customElements.define(tagName, webComponent)
}
+11 -3
View File
@@ -11,16 +11,24 @@ import Comments from './Comments.vue'
const props = defineProps<{
node?: INode
// eslint-disable-next-line vue/no-unused-properties -- Required on the web component interface
active?: boolean
// eslint-disable-next-line vue/no-unused-properties -- Required on the web component interface
folder?: IFolder
// eslint-disable-next-line vue/no-unused-properties -- Required on the web component interface
view?: IView
}>()
defineExpose({ setActive })
const resourceId = computed(() => props.node?.fileid)
/**
* Set this tab as active
*
* @param active - The active state
*/
function setActive(active: boolean) {
return active
}
</script>
<template>
@@ -26,7 +26,7 @@ use Test\TestCase;
*
* @package OCA\Comments\Tests\Unit\AppInfo
*/
#[\PHPUnit\Framework\Attributes\Group(name: 'DB')]
#[\PHPUnit\Framework\Attributes\Group('DB')]
class ApplicationTest extends TestCase {
protected function setUp(): void {
parent::setUp();
@@ -27,7 +27,7 @@ class CommentersSorterTest extends TestCase {
/**
* @param $data
*/
#[\PHPUnit\Framework\Attributes\DataProvider(methodName: 'sortDataProvider')]
#[\PHPUnit\Framework\Attributes\DataProvider('sortDataProvider')]
public function testSort($data): void {
$commentMocks = [];
foreach ($data['actors'] as $actorType => $actors) {
@@ -61,7 +61,7 @@ class EventHandlerTest extends TestCase {
];
}
#[\PHPUnit\Framework\Attributes\DataProvider(methodName: 'handledProvider')]
#[\PHPUnit\Framework\Attributes\DataProvider('handledProvider')]
public function testHandled(string $eventType): void {
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
@@ -51,7 +51,7 @@ class ListenerTest extends TestCase {
* @param string $eventType
* @param string $notificationMethod
*/
#[\PHPUnit\Framework\Attributes\DataProvider(methodName: 'eventProvider')]
#[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')]
public function testEvaluate(string $eventType, $notificationMethod): void {
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
@@ -111,7 +111,7 @@ class ListenerTest extends TestCase {
$this->listener->evaluate($event);
}
#[\PHPUnit\Framework\Attributes\DataProvider(methodName: 'eventProvider')]
#[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')]
public function testEvaluateNoMentions(string $eventType): void {
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
+2 -2
View File
@@ -9,7 +9,7 @@
<name>Contacts Interaction</name>
<summary>Manages interaction between accounts and contacts</summary>
<description>Collect data about accounts and contacts interactions and provide an address book for the data</description>
<version>1.15.0</version>
<version>1.14.1</version>
<licence>agpl</licence>
<author>Christoph Wurst</author>
<author homepage="https://github.com/nextcloud/groupware">Nextcloud Groupware Team</author>
@@ -21,7 +21,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="34" max-version="34"/>
<nextcloud min-version="33" max-version="33"/>
</dependencies>
<background-jobs>
<job>OCA\ContactsInteraction\BackgroundJob\CleanupJob</job>
+1 -3
View File
@@ -2,8 +2,6 @@ OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Nedavno kontaktiran",
"Contacts Interaction" : "Interakcija kontakata",
"Manages interaction between accounts and contacts" : "Upravlja interakcijom između računa i kontakata",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Prikuplja podatke o interakcijama između računa i kontakata te pruža adresar za te podatke"
"Contacts Interaction" : "Interakcija kontakata"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
+1 -3
View File
@@ -1,7 +1,5 @@
{ "translations": {
"Recently contacted" : "Nedavno kontaktiran",
"Contacts Interaction" : "Interakcija kontakata",
"Manages interaction between accounts and contacts" : "Upravlja interakcijom između računa i kontakata",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Prikuplja podatke o interakcijama između računa i kontakata te pruža adresar za te podatke"
"Contacts Interaction" : "Interakcija kontakata"
},"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;"
}
-9
View File
@@ -1,9 +0,0 @@
OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Baru-baru ini dihubungi",
"Contacts Interaction" : "Interaksi Kontak",
"Manages interaction between accounts and contacts" : "Mengelola interaksi antara akun dan kontak",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Mengumpulkan data tentang interaksi akun dan kontak serta menyediakan buku alamat untuk data tersebut"
},
"nplurals=1; plural=0;");
-7
View File
@@ -1,7 +0,0 @@
{ "translations": {
"Recently contacted" : "Baru-baru ini dihubungi",
"Contacts Interaction" : "Interaksi Kontak",
"Manages interaction between accounts and contacts" : "Mengelola interaksi antara akun dan kontak",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Mengumpulkan data tentang interaksi akun dan kontak serta menyediakan buku alamat untuk data tersebut"
},"pluralForm" :"nplurals=1; plural=0;"
}
@@ -17,7 +17,7 @@ use Sabre\VObject\Component\VCard;
use Sabre\VObject\UUIDUtil;
use Test\TestCase;
#[\PHPUnit\Framework\Attributes\Group(name: 'DB')]
#[\PHPUnit\Framework\Attributes\Group('DB')]
class RecentContactMapperTest extends TestCase {
private RecentContactMapper $recentContactMapper;
private ITimeFactory $time;
+2 -2
View File
@@ -12,7 +12,7 @@
The Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking.]]>
</description>
<version>7.14.0</version>
<version>7.13.0</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<namespace>Dashboard</namespace>
@@ -22,7 +22,7 @@ The Nextcloud Dashboard is your starting point of the day, giving you an overvie
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="34" max-version="34"/>
<nextcloud min-version="33" max-version="33"/>
</dependencies>
<navigations>
-4
View File
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Dashboard" : "Nadzorna ploča",
"Dashboard app" : "Nadzorna ploča aplikacije",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Započnite dan informirani\n\nNextcloud nadzorna ploča vaša je početna točka dana i pruža vam pregled nadolazećih termina, hitnih e-poruka, poruka u chatu, dolaznih tiketa, najnovijih tweetova i još mnogo toga! Korisnici mogu dodavati widgete koji im odgovaraju i prilagoditi pozadinu prema vlastitim željama.",
"Weather" : "Vrijeme",
"Status" : "Status",
"Good morning" : "Dobro jutro",
@@ -14,13 +13,10 @@ OC.L10N.register(
"Good evening, {name}" : "Dobar dan, {name}",
"Hello" : "Pozdrav",
"Hello, {name}" : "Pozdrav, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Sretan rođendan 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Sretan rođendan, {name} 🥳🤩🎂🎉",
"Customize" : "Uredi",
"Edit widgets" : "Uredi widgete",
"Get more widgets from the App Store" : "Nabavite više widgeta iz trgovine aplikacijama",
"Weather service" : "Davatelj vremenske prognoze",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Radi vaše privatnosti, podatke o vremenu u vaše ime dohvaća vaš {productName} poslužitelj, tako da vremenska usluga ne prima nikakve osobne podatke.",
"Weather data from Met.no" : "Podaci o vremenskoj prognozi iz Met.no",
"geocoding with Nominatim" : "geokodiranje uz Nominatim",
"elevation data from OpenTopoData" : "podaci o nadmorskoj visini iz OpenTopoData",
-4
View File
@@ -1,7 +1,6 @@
{ "translations": {
"Dashboard" : "Nadzorna ploča",
"Dashboard app" : "Nadzorna ploča aplikacije",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Započnite dan informirani\n\nNextcloud nadzorna ploča vaša je početna točka dana i pruža vam pregled nadolazećih termina, hitnih e-poruka, poruka u chatu, dolaznih tiketa, najnovijih tweetova i još mnogo toga! Korisnici mogu dodavati widgete koji im odgovaraju i prilagoditi pozadinu prema vlastitim željama.",
"Weather" : "Vrijeme",
"Status" : "Status",
"Good morning" : "Dobro jutro",
@@ -12,13 +11,10 @@
"Good evening, {name}" : "Dobar dan, {name}",
"Hello" : "Pozdrav",
"Hello, {name}" : "Pozdrav, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Sretan rođendan 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Sretan rođendan, {name} 🥳🤩🎂🎉",
"Customize" : "Uredi",
"Edit widgets" : "Uredi widgete",
"Get more widgets from the App Store" : "Nabavite više widgeta iz trgovine aplikacijama",
"Weather service" : "Davatelj vremenske prognoze",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Radi vaše privatnosti, podatke o vremenu u vaše ime dohvaća vaš {productName} poslužitelj, tako da vremenska usluga ne prima nikakve osobne podatke.",
"Weather data from Met.no" : "Podaci o vremenskoj prognozi iz Met.no",
"geocoding with Nominatim" : "geokodiranje uz Nominatim",
"elevation data from OpenTopoData" : "podaci o nadmorskoj visini iz OpenTopoData",
-4
View File
@@ -3,7 +3,6 @@ OC.L10N.register(
{
"Dashboard" : "Dasbor",
"Dashboard app" : "Aplikasi dasbor",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Mulai hari Anda dengan informasi\n\nDasbor Nextcloud adalah titik awal hari Anda, memberikan ikhtisar janji temu mendatang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan masih banyak lagi! Orang dapat menambahkan widget yang mereka sukai dan mengubah latar belakang sesuai keinginan mereka.",
"Weather" : "Cuaca",
"Status" : "Status",
"Good morning" : "Selamat pagi",
@@ -14,13 +13,10 @@ OC.L10N.register(
"Good evening, {name}" : "Selamat malam, {name}",
"Hello" : "Halo",
"Hello, {name}" : "Halo, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Selamat ulang tahun 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Selamat ulang tahun, {name} 🥳🤩🎂🎉",
"Customize" : "Sesuaikan",
"Edit widgets" : "Edit widget",
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
"Weather service" : "Layanan cuaca",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Demi privasi Anda, data cuaca diminta oleh server {productName} Anda atas nama Anda sehingga layanan cuaca tidak menerima informasi pribadi apa pun.",
"Weather data from Met.no" : "Data cuaca dari Met.no",
"geocoding with Nominatim" : "Secara khusus, dengan geocoding",
"elevation data from OpenTopoData" : "data ketinggian dari OpenTopoData",
-4
View File
@@ -1,7 +1,6 @@
{ "translations": {
"Dashboard" : "Dasbor",
"Dashboard app" : "Aplikasi dasbor",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Mulai hari Anda dengan informasi\n\nDasbor Nextcloud adalah titik awal hari Anda, memberikan ikhtisar janji temu mendatang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan masih banyak lagi! Orang dapat menambahkan widget yang mereka sukai dan mengubah latar belakang sesuai keinginan mereka.",
"Weather" : "Cuaca",
"Status" : "Status",
"Good morning" : "Selamat pagi",
@@ -12,13 +11,10 @@
"Good evening, {name}" : "Selamat malam, {name}",
"Hello" : "Halo",
"Hello, {name}" : "Halo, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Selamat ulang tahun 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Selamat ulang tahun, {name} 🥳🤩🎂🎉",
"Customize" : "Sesuaikan",
"Edit widgets" : "Edit widget",
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
"Weather service" : "Layanan cuaca",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Demi privasi Anda, data cuaca diminta oleh server {productName} Anda atas nama Anda sehingga layanan cuaca tidak menerima informasi pribadi apa pun.",
"Weather data from Met.no" : "Data cuaca dari Met.no",
"geocoding with Nominatim" : "Secara khusus, dengan geocoding",
"elevation data from OpenTopoData" : "data ketinggian dari OpenTopoData",
-1
View File
@@ -20,7 +20,6 @@ OC.L10N.register(
"Edit widgets" : "Widgets bewerken",
"Get more widgets from the App Store" : "Haal meer widgets op uit de App Store",
"Weather service" : "Weerberichten",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Voor je privacy worden de weergegevens namens jou opgevraagd door je {productName} server, zodat de weer dienst geen persoonlijke informatie ontvangt.",
"Weather data from Met.no" : "Weerbericht via Met.no",
"geocoding with Nominatim" : "geocoding met Nominatim",
"elevation data from OpenTopoData" : "hoogtedata via OpenTopoData",
-1
View File
@@ -18,7 +18,6 @@
"Edit widgets" : "Widgets bewerken",
"Get more widgets from the App Store" : "Haal meer widgets op uit de App Store",
"Weather service" : "Weerberichten",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Voor je privacy worden de weergegevens namens jou opgevraagd door je {productName} server, zodat de weer dienst geen persoonlijke informatie ontvangt.",
"Weather data from Met.no" : "Weerbericht via Met.no",
"geocoding with Nominatim" : "geocoding met Nominatim",
"elevation data from OpenTopoData" : "hoogtedata via OpenTopoData",
@@ -18,7 +18,6 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController;
use OCP\AppFramework\Services\IAppConfig;
use OCP\Config\IUserConfig;
use OCP\Dashboard\IAPIWidget;
use OCP\Dashboard\IAPIWidgetV2;
use OCP\Dashboard\IButtonWidget;
@@ -31,6 +30,7 @@ use OCP\Dashboard\Model\WidgetButton;
use OCP\Dashboard\Model\WidgetItem;
use OCP\Dashboard\Model\WidgetOptions;
use OCP\IConfig;
use OCP\IRequest;
/**
@@ -45,7 +45,7 @@ class DashboardApiController extends OCSController {
IRequest $request,
private IManager $dashboardManager,
private IAppConfig $appConfig,
private IUserConfig $userConfig,
private IConfig $config,
private ?string $userId,
private DashboardService $service,
) {
@@ -59,7 +59,7 @@ class DashboardApiController extends OCSController {
private function getShownWidgets(array $widgetIds): array {
if (empty($widgetIds)) {
$systemDefault = $this->appConfig->getAppValueString('layout', 'recommendations,spreed,mail,calendar');
$widgetIds = explode(',', $this->userConfig->getValueString($this->userId, 'dashboard', 'layout', $systemDefault));
$widgetIds = explode(',', $this->config->getUserValue($this->userId, 'dashboard', 'layout', $systemDefault));
}
return array_filter(
@@ -202,7 +202,7 @@ class DashboardApiController extends OCSController {
#[NoAdminRequired]
#[ApiRoute(verb: 'POST', url: '/api/v3/layout')]
public function updateLayout(array $layout): DataResponse {
$this->userConfig->setValueString($this->userId, 'dashboard', 'layout', implode(',', $layout));
$this->config->setUserValue($this->userId, 'dashboard', 'layout', implode(',', $layout));
return new DataResponse(['layout' => $layout]);
}
@@ -230,7 +230,7 @@ class DashboardApiController extends OCSController {
#[NoAdminRequired]
#[ApiRoute(verb: 'POST', url: '/api/v3/statuses')]
public function updateStatuses(array $statuses): DataResponse {
$this->userConfig->setValueString($this->userId, 'dashboard', 'statuses', implode(',', $statuses));
$this->config->setUserValue($this->userId, 'dashboard', 'statuses', implode(',', $statuses));
return new DataResponse(['statuses' => $statuses]);
}
}
@@ -17,10 +17,10 @@ use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\FeaturePolicy;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\Config\IUserConfig;
use OCP\Dashboard\IIconWidget;
use OCP\Dashboard\IManager;
use OCP\Dashboard\IWidget;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IRequest;
@@ -33,9 +33,9 @@ class DashboardController extends Controller {
string $appName,
IRequest $request,
private IInitialState $initialState,
private IEventDispatcher $eventDispatcher,
private IManager $dashboardManager,
private IConfig $config,
private IUserConfig $userConfig,
private IL10N $l10n,
private ?string $userId,
private DashboardService $service,
@@ -67,9 +67,9 @@ class DashboardController extends Controller {
$this->initialState->provideInitialState('statuses', $this->service->getStatuses());
$this->initialState->provideInitialState('layout', $this->service->getLayout());
$this->initialState->provideInitialState('appStoreEnabled', $this->config->getSystemValueBool('appstoreenabled', true));
$this->initialState->provideInitialState('firstRun', $this->userConfig->getValueBool($this->userId, 'dashboard', 'firstRun', true));
$this->initialState->provideInitialState('firstRun', $this->config->getUserValue($this->userId, 'dashboard', 'firstRun', '1') === '1');
$this->initialState->provideInitialState('birthdate', $this->service->getBirthdate());
$this->userConfig->setValueBool($this->userId, 'dashboard', 'firstRun', false);
$this->config->setUserValue($this->userId, 'dashboard', 'firstRun', '0');
$response = new TemplateResponse('dashboard', 'index', [
'id-app-content' => '#app-dashboard',
@@ -12,12 +12,12 @@ use JsonException;
use OCP\Accounts\IAccountManager;
use OCP\Accounts\PropertyDoesNotExistException;
use OCP\AppFramework\Services\IAppConfig;
use OCP\Config\IUserConfig;
use OCP\IConfig;
use OCP\IUserManager;
class DashboardService {
public function __construct(
private IUserConfig $userConfig,
private IConfig $config,
private IAppConfig $appConfig,
private ?string $userId,
private IUserManager $userManager,
@@ -31,24 +31,21 @@ class DashboardService {
*/
public function getLayout(): array {
$systemDefault = $this->appConfig->getAppValueString('layout', 'recommendations,spreed,mail,calendar');
return array_values(array_filter(
explode(',', $this->userConfig->getValueString($this->userId, 'dashboard', 'layout', $systemDefault)),
fn (string $value) => $value !== '')
);
return array_values(array_filter(explode(',', $this->config->getUserValue($this->userId, 'dashboard', 'layout', $systemDefault)), fn (string $value) => $value !== ''));
}
/**
* @return list<string>
*/
public function getStatuses(): array {
$configStatuses = $this->userConfig->getValueString($this->userId, 'dashboard', 'statuses');
public function getStatuses() {
$configStatuses = $this->config->getUserValue($this->userId, 'dashboard', 'statuses', '');
try {
// Parse the old format
/** @var array<string, bool> $statuses */
$statuses = json_decode($configStatuses, true, 512, JSON_THROW_ON_ERROR);
// We avoid getting an empty array as it will not produce an object in UI's JS
return array_keys(array_filter($statuses, static fn (bool $value) => $value));
} catch (JsonException) {
} catch (JsonException $e) {
return array_values(array_filter(explode(',', $configStatuses), fn (string $value) => $value !== ''));
}
}
@@ -13,7 +13,7 @@ use OC\Accounts\Account;
use OCA\Dashboard\Service\DashboardService;
use OCP\Accounts\IAccountManager;
use OCP\AppFramework\Services\IAppConfig;
use OCP\Config\IUserConfig;
use OCP\IConfig;
use OCP\IUser;
use OCP\IUserManager;
use PHPUnit\Framework\MockObject\MockObject;
@@ -21,7 +21,7 @@ use Test\TestCase;
class DashboardServiceTest extends TestCase {
private IUserConfig&MockObject $userConfig;
private IConfig&MockObject $config;
private IAppConfig&MockObject $appConfig;
private IUserManager&MockObject $userManager;
private IAccountManager&MockObject $accountManager;
@@ -30,13 +30,13 @@ class DashboardServiceTest extends TestCase {
protected function setUp(): void {
parent::setUp();
$this->userConfig = $this->createMock(IUserConfig::class);
$this->config = $this->createMock(IConfig::class);
$this->appConfig = $this->createMock(IAppConfig::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->accountManager = $this->createMock(IAccountManager::class);
$this->service = new DashboardService(
$this->userConfig,
$this->config,
$this->appConfig,
'alice',
$this->userManager,
@@ -90,7 +90,7 @@ class DashboardServiceTest extends TestCase {
public function testGetBirthdateNoUserId(): void {
$service = new DashboardService(
$this->userConfig,
$this->config,
$this->appConfig,
null,
$this->userManager,
+2 -2
View File
@@ -10,7 +10,7 @@
<name>WebDAV</name>
<summary>WebDAV endpoint</summary>
<description>WebDAV endpoint</description>
<version>1.37.0</version>
<version>1.36.0</version>
<licence>agpl</licence>
<author>owncloud.org</author>
<namespace>DAV</namespace>
@@ -20,7 +20,7 @@
<category>integration</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="34" max-version="34"/>
<nextcloud min-version="33" max-version="33"/>
</dependencies>
<background-jobs>
-2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Nedaří se zapsat přejmenovat částečný soubor na ten končený zrušeno háčkem (hook)",
"Could not rename part file to final file" : "Nedaří se přejmenovat částečný soubor na ten konečný",
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) zdá se, že soubor existuje",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) zdá se, že soubor neexistuje",
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
-2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "Nedaří se zapsat přejmenovat částečný soubor na ten končený zrušeno háčkem (hook)",
"Could not rename part file to final file" : "Nedaří se přejmenovat částečný soubor na ten konečný",
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) zdá se, že soubor existuje",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) zdá se, že soubor neexistuje",
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
-376
View File
@@ -1,376 +0,0 @@
OC.L10N.register(
"dav",
{
"Calendar" : "Kalendar",
"Tasks" : "Zadaci",
"Personal" : "Osobno",
"{actor} created calendar {calendar}" : "{actor} je stvorio kalendar {calendar}",
"You created calendar {calendar}" : "Stvorili ste kalendar {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} je izbrisao kalendar {calendar}",
"You deleted calendar {calendar}" : "Izbrisali ste kalendar {calendar}",
"{actor} updated calendar {calendar}" : "{actor} je ažurirao kalendar {calendar}",
"You updated calendar {calendar}" : "Ažurirali ste kalendar {calendar}",
"{actor} restored calendar {calendar}" : "{actor} je vratio kalendar {calendar}",
"You restored calendar {calendar}" : "Vratili ste kalendar {calendar}",
"You shared calendar {calendar} as public link" : "Podijelili ste kalendar {calendar} putem javne poveznice",
"You removed public link for calendar {calendar}" : "Uklonili ste javnu poveznicu na kalendar {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} dijeli kalendar {calendar} s vama",
"You shared calendar {calendar} with {user}" : "Podijelili ste kalendar {calendar} s {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} dijeli kalendar {calendar} s {user}",
"{actor} unshared calendar {calendar} from you" : "{actor} više ne dijeli kalendar {calendar} s vama",
"You unshared calendar {calendar} from {user}" : "Više ne dijelite kalendar {calendar} s {user}",
"{actor} unshared calendar {calendar} from {user}" : "{actor} više ne dijeli kalendar {calendar} s {user}",
"{actor} unshared calendar {calendar} from themselves" : "{actor} više ne dijeli kalendar {calendar} sam sa sobom",
"You shared calendar {calendar} with group {group}" : "Podijelili ste kalendar {calendar} s grupom {group}",
"{actor} shared calendar {calendar} with group {group}" : "{actor} dijeli kalendar {calendar} s grupom {group}",
"You unshared calendar {calendar} from group {group}" : "Više ne dijelite kalendar {calendar} s grupom {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} više ne dijeli kalendar {calendar} s grupom {group}",
"Untitled event" : "Događaj bez naslova",
"{actor} created event {event} in calendar {calendar}" : "{actor} je stvorio događaj {event} u kalendaru {calendar}",
"You created event {event} in calendar {calendar}" : "Stvorili ste događaj {event} u kalendaru {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} je izbrisao događaj {event} iz kalendara {calendar}",
"You deleted event {event} from calendar {calendar}" : "Izbrisali ste događaj {event} iz kalendara {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} je ažurirao događaj {event} u kalendaru {calendar}",
"You updated event {event} in calendar {calendar}" : "Ažurirali ste događaj {event} u kalendaru {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} je premjestio događaj {event} iz kalendara {sourceCalendar} u kalendar {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Premjestili ste događaj {event} iz kalendara {sourceCalendar} u kalendar {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} je vratio događaj {event} kalendara {calendar}",
"You restored event {event} of calendar {calendar}" : "Vratili ste događaj {event} kalendara {calendar}",
"Busy" : "Zauzeto",
"{actor} created to-do {todo} in list {calendar}" : "{actor} je stvorio zadatak {todo} u popisu {calendar}",
"You created to-do {todo} in list {calendar}" : "Stvorili ste zadatak {todo} u popisu {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} je izbrisao zadatak {todo} iz popisa {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Izbrisali ste zadatak {todo} iz popisa {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} je ažurirao zadatak {todo} u popisu {calendar}",
"You updated to-do {todo} in list {calendar}" : "Ažurirali ste zadatak {todo} u popisu {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} je riješio zadatak {todo} u popisu {calendar}",
"You solved to-do {todo} in list {calendar}" : "Riješili ste zadatak {todo} u popisu {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} je ponovno otvorio zadatak {todo} u popisu {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Ponovno ste otvorili zadatak {todo} u popisu {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} je premjestio zadatak {todo} iz popisa {sourceCalendar} u popis {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Premjestili ste zadatak {todo} iz popisa {sourceCalendar} u popis {targetCalendar}",
"Calendar, contacts and tasks" : "Kalendar, kontakti i zadaci",
"A <strong>calendar</strong> was modified" : "Izmijenjen je <strong>kalendar</strong>",
"A calendar <strong>event</strong> was modified" : "Izmijenjen je <strong>događaj</strong> u kalendaru",
"A calendar <strong>to-do</strong> was modified" : "Izmijenjen je <strong>zadatak</strong> u kalendaru",
"Contact birthdays" : "Rođendani kontakata",
"Death of %s" : "Smrt %s",
"Untitled calendar" : "Kalendar bez naslova",
"Calendar:" : "Kalendar:",
"Date:" : "Datum:",
"Where:" : "Gdje:",
"Description:" : "Opis:",
"_%n year_::_%n years_" : ["%n godina","%n godina","%n godina"],
"_%n month_::_%n months_" : ["%n mjesec","%n mjeseci","%n mjeseci"],
"_%n day_::_%n days_" : ["%n dan","%n dana","%n dana"],
"_%n hour_::_%n hours_" : ["%n sat","%n sati","%n sati"],
"_%n minute_::_%n minutes_" : ["%n minute/minuta","%n minuta","%n minuta"],
"%s (in %s)" : "%s (u %s)",
"%s (%s ago)" : "%s (prije %s)",
"Calendar: %s" : "Kalendar: %s",
"Date: %s" : "Datum: %s",
"Description: %s" : "Opis: %s",
"Where: %s" : "Gdje: %s",
"%1$s via %2$s" : "%1$s putem %2$s",
"In the past on %1$s for the entire day" : "U prošlosti, dana %1$s, tijekom cijelog dana",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Za %n minutu, dana %1$s, tijekom cijelog dana","Za %n minute, dana %1$s, tijekom cijelog dana","Za %n minuta, dana %1$s, tijekom cijelog dana"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Za %n sat, dana %1$s, tijekom cijelog dana","Za %n sata, dana %1$s, tijekom cijelog dana","Za %n sati, dana %1$s, tijekom cijelog dana"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Za %n dan, dana %1$s, tijekom cijelog dana","Za %n dana, dana %1$s, tijekom cijelog dana","Za %n dana, dana %1$s, tijekom cijelog dana"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Za %n tjedan, dana %1$s, tijekom cijelog dana","Za %n tjedna, dana %1$s, tijekom cijelog dana","Za %n tjedana, dana %1$s, tijekom cijelog dana"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Za %n mjesec, dana %1$s, tijekom cijelog dana","Za %n mjeseca, dana %1$s, tijekom cijelog dana","Za %n mjeseci, dana %1$s, tijekom cijelog dana"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Za %n godinu, dana %1$s, tijekom cijelog dana","Za %n godine, dana %1$s, tijekom cijelog dana","Za %n godina, dana %1$s, tijekom cijelog dana"],
"In the past on %1$s between %2$s - %3$s" : "U prošlosti, dana %1$s između %2$s %3$s",
"_In %n minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["Za %n minutu, dana %1$s između %2$s %3$s","Za %n minute, dana %1$s između %2$s %3$s","Za %n minuta, dana %1$s između %2$s %3$s"],
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["Za %n sat, dana %1$s između %2$s %3$s","Za %n sata, dana %1$s između %2$s %3$s","Za %n sati, dana %1$s između %2$s %3$s"],
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["Za %n dan, dana %1$s između %2$s %3$s","Za %n dana, dana %1$s između %2$s %3$s","Za %n dana, dana %1$s između %2$s %3$s"],
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Za %n tjedan, dana %1$s između %2$s %3$s","Za %n tjedna, dana %1$s između %2$s %3$s","Za %n tjedana, dana %1$s između %2$s %3$s"],
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Za %n mjesec, dana %1$s između %2$s %3$s","Za %n mjeseca, dana %1$s između %2$s %3$s","Za %n mjeseci, dana %1$s između %2$s %3$s"],
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Za %n godinu, dana %1$s između %2$s %3$s","Za %n godine, dana %1$s između %2$s %3$s","Za %n godina, dana %1$s između %2$s %3$s"],
"Could not generate when statement" : "Nije moguće generirati vremensku odrednicu",
"Every Day for the entire day" : "Svaki dan tijekom cijelog dana",
"Every Day for the entire day until %1$s" : "Svaki dan tijekom cijelog dana do %1$s",
"Every Day between %1$s - %2$s" : "Svaki dan između %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Svaki dan između %1$s - %2$s do %3$s",
"Every %1$d Days for the entire day" : "Svakih %1$d dana tijekom cijelog dana",
"Every %1$d Days for the entire day until %2$s" : "Svakih %1$d dana tijekom cijelog dana do %2$s",
"Every %1$d Days between %2$s - %3$s" : "Svakih%1$d dana između%2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Svakih %1$d dana između %2$s - %3$s do %4$s",
"Could not generate event recurrence statement" : "Nije moguće generirati izraz za ponavljanje događaja",
"Every Week on %1$s for the entire day" : "Svaki tjedan u %1$s tijekom cijelog dana",
"Every Week on %1$s for the entire day until %2$s" : "Svaki tjedan u %1$s tokom cijelog dana do %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Svaki tjedan u %1$s između %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Svaki tjedan u %1$s između %2$s - %3$s do %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Svakih %1$d tjedana od %2$s tijekom cijelog dana",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Svakih %1$d tjedana od %2$s tijekom cijelog dana do %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Svakih %1$d tjedana od %2$s između %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Svakih %1$d tjedana od %2$s između %3$s - %4$s do %5$s",
"Every Month on the %1$s for the entire day" : "%1$s svakog mjeseca tokom cijelog dana",
"Every Month on the %1$s for the entire day until %2$s" : "%1$s svakog mjeseca tokom cijelog dana do%2$s",
"Every Month on the %1$s between %2$s - %3$s" : "%1$s svakog mjeseca između %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "%1$s svakog mjeseca između %2$s - %3$s do %4$s",
"Every %1$d Months on the %2$s for the entire day" : "Svakih %1$d mjeseci, %2$s tokom cijelog dana",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Svakih %1$d mjeseci, %2$s tokom cijelog dana do %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Svakih %1$d mjeseci, %2$s između %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Svakih %1$d mjeseci, %2$s između %3$s - %4$s do %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Svake godine, %1$s, %2$s tokom cijelog dana",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Svake godine, %1$s, %2$s tokom cijelog dana do %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Svake godine, %1$s, %2$s između %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Svake godine, %1$s, %2$s, između %3$s - %4$s do %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Svakih %1$d godina, %2$s, na %3$s tokom cijelog dana",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Svakih %1$d godina, %2$s, na %3$s tokom cijelog dana do %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Svakih %1$d godina, %2$s, na %3$s između %4$s - %5$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Svakih %1$d godina, %2$s, na %3$s između %4$s - %5$s do %6$s",
"On specific dates for the entire day until %1$s" : "Na određene datume, tijekom cijelog dana do %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Na određene datume između %1$s - %2$s do %3$s",
"In the past on %1$s" : "U prošlosti, dana %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["U %n minutu, %1$s","U %n minute, %1$s","U %n minuta, %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["U %n sat, %1$s","U %n sata, %1$s","U %n sati, %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["U %n dan, %1$s","U %n dana, %1$s","U %n dana, %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["U %n tjedan, %1$s","U %n tjedna, %1$s","U %n tjedana, %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["U %n mjesec, %1$s","U %n mjeseca, %1$s","U %n mjeseci, %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["U %n godinu, %1$s","U %n godine, %1$s","U %n godina, %1$s"],
"In the past on %1$s then on %2$s" : "U prošlosti, dana %1$s, zatim dana %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["U %n minutu u %1$s, onda u %2$s","U %n minute u %1$s, onda u %2$s","U %n minuta u %1$s, onda u %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["U %n sat u %1$s, onda u %2$s","U %n sata u %1$s, onda u %2$s","U %n sati u %1$s, onda u %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["U %n dan u %1$s, onda u %2$s","U %n dana u %1$s, onda u %2$s","U %n dana u %1$s, onda u %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["U %n tjedan u %1$s, onda u %2$s","U %n tjedna u %1$s, onda u %2$s","U %n tjedana u %1$s, onda u %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["U %n mjesec u %1$s, onda u %2$s","U %n mjeseca u %1$s, onda u %2$s","U %n mjeseci u %1$s, onda u %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["U %n godinu u %1$s, onda u %2$s","U %n godine u %1$s, onda u %2$s","U %n godina u %1$s, onda u %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "U prošlosti, dana %1$s, zatim dana %2$s i %3$s",
"_In %n minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["u %n minutu dana %1$s onda dana %2$s i %3$s","u %n minute dana %1$s onda dana %2$s i %3$s","u %n minuta dana %1$s onda dana %2$s i %3$s"],
"_In %n hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["u %n sat dana %1$s onda dana %2$s i %3$s","u %n sata dana %1$s onda dana %2$s i %3$s","u %n sati dana %1$s onda dana %2$s i %3$s"],
"_In %n day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["u %n dan, dana %1$s onda dana %2$s i %3$s","u %n dana, dana %1$s onda dana %2$s i %3$s","u %n dana, dana %1$s onda dana %2$s i %3$s"],
"_In %n week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["u %n tjedan, dana %1$s onda dana %2$s i %3$s","u %n tjedna, dana %1$s onda dana %2$s i %3$s","u %n tjedana, dana %1$s onda dana %2$s i %3$s"],
"_In %n month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["u %n mjesec, dana %1$s onda dana %2$s i %3$s","u %n mjeseca, dana %1$s onda dana %2$s i %3$s","u %n mjeseci, dana %1$s onda dana %2$s i %3$s"],
"_In %n year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["u %n godinu, dana %1$s onda dana %2$s i %3$s","u %n godine, dana %1$s onda dana %2$s i %3$s","u %n godina, dana %1$s onda dana %2$s i %3$s"],
"Could not generate next recurrence statement" : "Nije moguće generirati sljedeći izraz ponavljanja",
"Cancelled: %1$s" : "Otkazano: %1$s",
"\"%1$s\" has been canceled" : "„%1$s” je otkazan",
"Re: %1$s" : "Odgovor: %1 $ s",
"%1$s has accepted your invitation" : "%1$s je prihvatio/la vašu pozivnicu",
"%1$s has tentatively accepted your invitation" : "%1$s je privremeno prihvatio/la vašu pozivnicu",
"%1$s has declined your invitation" : "%1$s je odbio/la vašu pozivnicu",
"%1$s has responded to your invitation" : "%1$s je odgovorio/la na vašu pozivnicu",
"Invitation updated: %1$s" : "Pozivnica ažurirana: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s je ažurirao/la događaj \"%2$s\"",
"Invitation: %1$s" : "Pozivnica: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s vas želi pozvati na „%2$s”",
"Organizer:" : "Organizator:",
"Attendees:" : "Polaznici:",
"Title:" : "Naslov:",
"When:" : "Kada:",
"Location:" : "Lokacija:",
"Link:" : "Poveznica:",
"Occurring:" : "Događa se:",
"Accept" : "Prihvati",
"Decline" : "Odbij",
"More options …" : "Više mogućnosti…",
"More options at %s" : "Više mogućnosti na %s",
"Monday" : "Ponedjeljak",
"Tuesday" : "Utorak",
"Wednesday" : "Srijeda",
"Thursday" : "Četvrtak",
"Friday" : "Petak",
"Saturday" : "Subota",
"Sunday" : "Nedjelja",
"January" : "Siječanj",
"February" : "Veljača",
"March" : "Ožujak",
"April" : "Travanj",
"May" : "Svibanj",
"June" : "Lipanj",
"July" : "Srpanj",
"August" : "Kolovoz",
"September" : "Rujan",
"October" : "Listopad",
"November" : "Studeni",
"December" : "Prosinac",
"First" : "Prvi",
"Second" : "Drugi",
"Third" : "Treći",
"Fourth" : "Četvrti",
"Fifth" : "Peti",
"Last" : "Zadnji",
"Second Last" : "Drugi od kraja",
"Third Last" : "Treći od kraja",
"Fourth Last" : "Četvrti od kraja",
"Fifth Last" : "Peti od kraja",
"Contacts" : "Kontakti",
"{actor} created address book {addressbook}" : "{actor} je stvorio adresar {addressbook}",
"You created address book {addressbook}" : "Stvorili ste adresar {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} je izbrisao adresar {addressbook}",
"You deleted address book {addressbook}" : "Izbrisali ste adresar {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} je ažurirao adresar {addressbook}",
"You updated address book {addressbook}" : "Ažurirali ste adresar {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} dijeli adresar {addressbook} s vama",
"You shared address book {addressbook} with {user}" : "Dijelite adresar {addressbook} s {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} dijeli adresar {addressbook} s {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} je prestao dijeliti adresar {addressbook} s vama",
"You unshared address book {addressbook} from {user}" : "Prestali ste dijeliti adresar {addressbook} s {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} je prestao dijeliti adresar {addressbook} s {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} je prestao dijeliti adresar {addressbook} sa sobom",
"You shared address book {addressbook} with group {group}" : "Dijelite adresar {addressbook} s grupom {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} dijeli adresar {addressbook} s grupom {group}",
"You unshared address book {addressbook} from group {group}" : "Prestali ste dijeliti adresar {addressbook} s grupom {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} je prestao dijeliti adresar {addressbook} s grupom {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} je stvorio kontakt {card} u adresaru {addressbook}",
"You created contact {card} in address book {addressbook}" : "Stvorili ste kontakt {card} u adresaru {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} je izbrisao kontakt {card} iz adresara {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Izbrisali ste kontakt {card} iz adresara {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} je ažurirao kontakt {card} u adresaru {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ažurirali ste kontakt {card} u adresaru {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Izmijenjen je <strong>kontakt</strong> ili <strong>adresar</strong>",
"System address book disabled" : "Adresar sustava je onemogućen",
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "Adresar sistemskih kontakata automatski je onemogućen tijekom nadogradnje. To znači da adresar više neće biti dostupan korisnicima u aplikaciji Kontakti niti u drugim klijentima. Adresar sistemskih kontakata onemogućen je jer je broj kontakata u adresaru premašio maksimalno preporučeni broj. Ovo ograničenje postavljeno je radi sprječavanja problema s performansama. Adresar sustava možete ponovno omogućiti sljedećom naredbom {command}.",
"Accounts" : "Korisnički računi",
"System address book which holds all accounts" : "Adresar sustava koji sadrži sve račune",
"File is not updatable: %1$s" : "Datoteku nije moguće ažurirati: %1$s",
"Failed to get storage for file" : "Neuspjelo dohvaćanje pohrane za datoteku",
"Could not write to final file, canceled by hook" : "Nije moguće zapisati u završnu datoteku, otkazano putem kuke",
"Could not write file contents" : "Nije moguće zapisati sadržaj datoteke",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajta","%n bajtova"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Pogreška pri kopiranju datoteke na odredišnu lokaciju (kopirano: %1$s, očekivana veličina datoteke: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Očekivana veličina datoteke je %1$s ali je pročitano (s Nextcloud klijenta) i zapisano (u Nextcloud pohranu) %2$s. To može biti problem s mrežom na strani slanja ili problem pri zapisivanju u pohranu na strani poslužitelja.",
"Could not rename part file to final file, canceled by hook" : "Nije moguće preimenovati djelomičnu datoteku u završnu datoteku, otkazano putem kuke",
"Could not rename part file to final file" : "Nije moguće preimenovati djelomičnu datoteku u završnu datoteku",
"Failed to check file size: %1$s" : "Neuspjela provjera veličine datoteke: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nije moguće otvoriti datoteku: %1$s (%2$d), čini se da datoteka postoji",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nije moguće otvoriti datoteku: %1$s (%2$d), čini se da datoteka ne postoji",
"Encryption not ready: %1$s" : "Šifriranje nije spremno: %1$s",
"Failed to open file: %1$s" : "Neuspjelo otvaranje datoteke: %1$s",
"Failed to unlink: %1$s" : "Neuspjelo uklanjanje veze: %1$s",
"Failed to write file contents: %1$s" : "Neuspjelo zapisivanje sadržaja datoteke: %1$s",
"File not found: %1$s" : "Datoteka nije pronađena: %1$s",
"Invalid target path" : "Nevažeća odredišna putanja",
"System is in maintenance mode." : "Sustav je u načinu održavanja.",
"Upgrade needed" : "Potrebno nadograditi",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Vaš %s treba konfigurirati za korištenje HTTPS-a kako bi se mogli upotrebljavati CalDAV i CardDAV s operacijskim sustavom iOS/macOS.",
"Configures a CalDAV account" : "Konfigurira CalDAV račun",
"Configures a CardDAV account" : "Konfigurira CardDAV račun",
"Events" : "Događaji",
"Untitled task" : "Zadatak bez naslova",
"Completed on %s" : "Završeno na %s",
"Due on %s by %s" : "%s treba završiti do %s",
"Due on %s" : "Treba završiti do %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Dobrodošli u Nextcloud Kalendar!\n\nOvo je primjer događaja istražite fleksibilnost planiranja s Nextcloud Kalendarom tako da napravite bilo kakve izmjene koje želite!\n\nUz Nextcloud Kalendar možete:\n- Jednostavno stvarati, uređivati i upravljati događajima..\n- Stvarati više kalendara i dijeliti ih s kolegama, prijateljima ili obitelji.\n- Provjeravati dostupnost i drugima prikazivati svoja zauzeta razdoblja.\n- Neprimjetno se integrirati s aplikacijama i uređajima putem CalDAV-a.\n- Prilagoditi svoje iskustvo: zakazivati ponavljajuće događaje, prilagođavati obavijesti i druge postavke.",
"Example event - open me!" : "Primjer događaja otvori me!",
"System Address Book" : "Adresar sustava",
"The system address book contains contact information for all users in your instance." : "Adresar sustava sadrži kontaktne podatke za sve korisnike u vašoj instanci.",
"Enable System Address Book" : "Omogući adresar sustava",
"DAV system address book" : "DAV adresar sustava",
"No outstanding DAV system address book sync." : "Nema neriješene sinkronizacije DAV adresara sustava.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Sinkronizacija DAV adresara sustava još nije pokrenuta jer vaša instanca ima više od 1000 korisnika ili je došlo do pogreške. Pokrenite je ručno pozivanjem naredbe „occ dav:sync-system-addressbook”.",
"DAV system address book size" : "Veličina DAV adresara sustava",
"The system address book is disabled" : "Adresar sustava je onemogućen",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Adresar sustava je omogućen, ali sadrži više od konfiguriranog ograničenja od %d kontakata",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Adresar sustava je omogućen i sadrži manje od konfiguriranog ograničenja od %d kontakata",
"WebDAV endpoint" : "WebDAV krajnja točka",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Nije moguće provjeriti je li vaš mrežni poslužitelj ispravno postavljen za omogućavanje sinkronizacije datoteka putem WebDAV-a. Molimo provjerite ručno.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Vaš mrežni poslužitelj nije pravilno podešen za sinkronizaciju podataka jer je sučelje protokola WebDAV neispravno.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Vaš mrežni poslužitelj je ispravno postavljen za omogućavanje sinkronizacije datoteka putem WebDAV-a.",
"Migrated calendar (%1$s)" : "Migriran kalendar (%1$s)",
"Calendars including events, details and attendees" : "Kalendari uključujući događaje, detalje i sudionike",
"Contacts and groups" : "Kontakti i grupe",
"WebDAV" : "WebDAV",
"Absence saved" : "Odsutnost je spremljena",
"Failed to save your absence settings" : "Neuspjelo spremanje postavki odsutnosti",
"Absence cleared" : "Odsutnost je uklonjena",
"Failed to clear your absence settings" : "Neuspjelo uklanjanje postavki odsutnosti",
"First day" : "Prvi dan",
"Last day (inclusive)" : "Zadnji dan (uključivo)",
"Out of office replacement (optional)" : "Zamjena za odsutnost iz ureda (neobavezno)",
"Name of the replacement" : "Ime zamjene",
"Short absence status" : "Kratki status odsutnosti",
"Long absence Message" : "Duga poruka o odsutnosti",
"Save" : "Spremi",
"Disable absence" : "Onemogući odsutnost",
"Failed to load availability" : "Neuspjelo učitavanje dostupnosti",
"Saved availability" : "Dostupnost je spremljena",
"Failed to save availability" : "Neuspjelo spremanje dostupnosti",
"to" : "do",
"Delete slot" : "Izbriši mjesto",
"No working hours set" : "Radno vrijeme nije postavljeno",
"Add slot" : "Dodaj mjesto",
"Weekdays" : "Dani u tjednu",
"Pick a start time for {dayName}" : "Odaberite početno vrijeme za {dayName}",
"Pick a end time for {dayName}" : "Odaberite završno vrijeme za {dayName}",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatski postavi korisnički status na „Ne ometaj” izvan vremena dostupnosti kako bi se utišale sve obavijesti.",
"Cancel" : "Odustani",
"Import" : "Uvezi",
"Error while saving settings" : "Greška pri spremanju postavki",
"Contact reset successfully" : "Kontakt je uspješno resetiran",
"Error while resetting contact" : "Greška pri resetiranju kontakta",
"Contact imported successfully" : "Kontakt je uspješno uvezen",
"Error while importing contact" : "Greška pri uvozu kontakta",
"Import contact" : "Uvezi kontakt",
"Reset to default" : "Vrati na zadanu postavku",
"Import contacts" : "Uvezi kontakte",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Uvoz nove .vcf datoteke izbrisat će postojeći zadani kontakt i zamijeniti ga novim. Želite li nastaviti?",
"Failed to save example event creation setting" : "Neuspjelo spremanje postavke stvaranja primjer-događaja",
"Failed to upload the example event" : "Neuspjelo učitavanje primjer-događaja",
"Custom example event was saved successfully" : "Prilagođeni primjer događaja uspješno je spremljen",
"Failed to delete the custom example event" : "Neuspjelo brisanje prilagođenog primjer-događaja",
"Custom example event was deleted successfully" : "Prilagođeni primjer događaja uspješno je izbrisan",
"Import calendar event" : "Uvezi događaj u kalendar",
"Uploading a new event will overwrite the existing one." : "Učitavanje novog događaja prebrisat će postojeći.",
"Upload event" : "Učitaj događaj",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Također instalirajte {calendarappstoreopen}aplikaciju Kalendar{linkclose} ili {calendardocopen}povežite računalo i mobilni uređaj radi sinkroniziranja ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Provjerite jeste li ispravno postavili {emailopen}poslužitelj e-pošte{linkclose}.",
"Calendar server" : "Poslužitelj kalendara",
"Send invitations to attendees" : "Pošaljite pozive sudionicima",
"Automatically generate a birthday calendar" : "Automatski generiraj kalendar rođendana",
"Birthday calendars will be generated by a background job." : "Kalendari rođendana generirat će se u pozadini.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Stoga neće biti dostupni odmah nakon omogućivanja, ali će se pojaviti nakon nekog vremena.",
"Send notifications for events" : "Šalji obavijesti o događajima",
"Notifications are sent via background jobs, so these must occur often enough." : "Obavijesti se šalju putem pozadinskih zadataka koji se moraju dovoljno često izvoditi.",
"Send reminder notifications to calendar sharees as well" : "Šalji podsjetnike i osobama s kojima je kalendar podijeljen",
"Reminders are always sent to organizers and attendees." : "Podsjetnici se uvijek šalju organizatorima i sudionicima.",
"Enable notifications for events via push" : "Omogući slanje obavijesti o događajima putem push obavijesti",
"Example content" : "Primjer sadržaja",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Primjer sadržaja služi za predstavljanje mogućnosti Nextclouda. Zadani sadržaj dolazi uz Nextcloud i može se zamijeniti prilagođenim sadržajem.",
"Availability" : "Raspoloživost",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Ako konfigurirate svoje radno vrijeme, drugi će vidjeti kada ste izvan ureda prilikom zakazivanja sastanka.",
"Absence" : "Odsutnost",
"Configure your next absence period." : "Konfigurirajte svoje sljedeće razdoblje odsutnosti.",
"There was an error updating your attendance status." : "Došlo je do pogreške prilikom ažuriranja statusa prisutnosti.",
"Please contact the organizer directly." : "Izravno se obratite organizatoru.",
"Are you accepting the invitation?" : "Prihvaćate li poziv?",
"Tentative" : "Uvjetno",
"Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana.",
"_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["U %n minutu, dana %1$s tokom cijelog dana","U %n minute, dana %1$s tokom cijelog dana","U %n minuta, dana %1$s tokom cijelog dana"],
"_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["U %n sat, dana %1$s tokom cijelog dana","U %n sata, dana %1$s tokom cijelog dana","U %n sati, dana %1$s tokom cijelog dana"],
"_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["U %n dan, dana %1$s tokom cijelog dana","U %n dana, dana %1$s tokom cijelog dana","U %n dana, dana %1$s tokom cijelog dana"],
"_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["U %n tjedana, dana %1$s tokom cijelog dana","U %n tjedna, dana %1$s tokom cijelog dana","U %n tjedana, dana %1$s tokom cijelog dana"],
"_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["U %n mjesec, dana %1$s tokom cijelog dana","U %n mjeseca, dana %1$s tokom cijelog dana","U %n mjeseci, dana %1$s tokom cijelog dana"],
"_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["U %n godini, dana %1$s tokom cijelog dana","U %n godine, dana %1$s tokom cijelog dana","U %n godina, dana %1$s tokom cijelog dana"],
"_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["U %n minutu, dana %1$s između %2$s - %3$s","U %n minute, dana %1$s između %2$s - %3$s","U %n minuta, dana %1$s između %2$s - %3$s"],
"_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["U %n sat, dana %1$s između %2$s - %3$s","U %n sata, dana %1$s između %2$s - %3$s","U %n sati, dana %1$s između %2$s - %3$s"],
"_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["U %n dan, dana %1$s između %2$s - %3$s","U %n dana, dana %1$s između %2$s - %3$s","U %n dana, dana %1$s između %2$s - %3$s"],
"_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["U %n tjedan, dana %1$s između %2$s - %3$s","U %n tjedna, dana %1$s između %2$s - %3$s","U %n tjedana, dana %1$s između %2$s - %3$s"],
"_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["U %n mjesec, dana %1$s između %2$s - %3$s","U %n mjeseca, dana %1$s između %2$s - %3$s","U %n mjeseci, dana %1$s između %2$s - %3$s"],
"_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["U %n godini, dana %1$s između %2$s - %3$s","U %n godine, dana %1$s između %2$s - %3$s","U %n godina, dana %1$s između %2$s - %3$s"],
"_In a minute on %1$s_::_In %n minutes on %1$s_" : ["U %n minuti, dana %1$s","U %n minute, dana %1$s","U %n minuta, dana %1$s"],
"_In a hour on %1$s_::_In %n hours on %1$s_" : ["U %n sat, dana %1$s","U %n sata, dana %1$s","U %n sati, dana %1$s"],
"_In a day on %1$s_::_In %n days on %1$s_" : ["U %n dan, dana %1$s","U %n dana, dana %1$s","U %n dana, dana %1$s"],
"_In a week on %1$s_::_In %n weeks on %1$s_" : ["U %n tjedan, dana %1$s","U %n tjedna, dana %1$s","U %n tjedana, dana %1$s"],
"_In a month on %1$s_::_In %n months on %1$s_" : ["U %n mjesec, dana %1$s","U %n mjeseca, dana %1$s","U %n mjeseci, dana %1$s"],
"_In a year on %1$s_::_In %n years on %1$s_" : ["U %n godini, dana %1$s","U %n godine, dana %1$s","U %n godina, dana %1$s"],
"_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["U %n minutu, dana %1$s onda dana %2$s","U %n minute, dana %1$s onda dana %2$s","U %n minuta, dana %1$s onda dana %2$s"],
"_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["U %n sat, dana %1$s onda dana %2$s","U %n sata, dana %1$s onda dana %2$s","U %n sati, dana %1$s onda dana %2$s"],
"_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["U %n dan, dana %1$s onda dana %2$s","U %n dana, dana %1$s onda dana %2$s","U %n dana, dana %1$s onda dana %2$s"],
"_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["U %n tjedan, dana %1$s onda dana %2$s","U %n tjedna, dana %1$s onda dana %2$s","U %n tjedana, dana %1$s onda dana %2$s"],
"_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["U %n mjesec, dana %1$s onda dana %2$s","U %n mjeseca, dana %1$s onda dana %2$s","U %n mjeseci, dana %1$s onda dana %2$s"],
"_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["U %n godini, dana %1$s onda dana %2$s","U %n godine, dana %1$s onda dana %2$s","U %n godina, dana %1$s onda dana %2$s"],
"_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["U %n minutu, dana %1$s onda dana %2$s i %3$s","U %n minute, dana %1$s onda dana %2$s i %3$s","U %n minuta, dana %1$s onda dana %2$s i %3$s"],
"_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["U %n sat, dana %1$s onda dana %2$s i %3$s","U %n sata, dana %1$s onda dana %2$s i %3$s","U %n sati, dana %1$s onda dana %2$s i %3$s"],
"_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["U %n dan, dana %1$s onda dana %2$s i %3$s","U %n dana, dana %1$s onda dana %2$s i %3$s","U %n dana, dana %1$s onda dana %2$s i %3$s"],
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["U %n tjedan, dana %1$s onda dana %2$s i %3$s","U %n tjedna, dana %1$s onda dana %2$s i %3$s","U %n tjedana, dana %1$s onda dana %2$s i %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["U %n mjesec, dana %1$s onda dana %2$s i %3$s","U %n mjeseca, dana %1$s onda dana %2$s i %3$s","U %n mjeseci, dana %1$s onda dana %2$s i %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["U %n godini, dana %1$s onda dana %2$s i %3$s","U %n godine, dana %1$s onda dana %2$s i %3$s","U %n godina, dana %1$s onda dana %2$s i %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nije moguće otvoriti datoteku: %1$s, čini se da datoteka postoji",
"Could not open file: %1$s, file doesn't seem to exist" : "Nije moguće otvoriti datoteku: %1$s, čini se da datoteka ne postoji",
"No results." : "Nema rezultata.",
"Start typing." : "Započnite s pisanjem.",
"Time zone:" : "Vremenska zona:"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
-374
View File
@@ -1,374 +0,0 @@
{ "translations": {
"Calendar" : "Kalendar",
"Tasks" : "Zadaci",
"Personal" : "Osobno",
"{actor} created calendar {calendar}" : "{actor} je stvorio kalendar {calendar}",
"You created calendar {calendar}" : "Stvorili ste kalendar {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} je izbrisao kalendar {calendar}",
"You deleted calendar {calendar}" : "Izbrisali ste kalendar {calendar}",
"{actor} updated calendar {calendar}" : "{actor} je ažurirao kalendar {calendar}",
"You updated calendar {calendar}" : "Ažurirali ste kalendar {calendar}",
"{actor} restored calendar {calendar}" : "{actor} je vratio kalendar {calendar}",
"You restored calendar {calendar}" : "Vratili ste kalendar {calendar}",
"You shared calendar {calendar} as public link" : "Podijelili ste kalendar {calendar} putem javne poveznice",
"You removed public link for calendar {calendar}" : "Uklonili ste javnu poveznicu na kalendar {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} dijeli kalendar {calendar} s vama",
"You shared calendar {calendar} with {user}" : "Podijelili ste kalendar {calendar} s {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} dijeli kalendar {calendar} s {user}",
"{actor} unshared calendar {calendar} from you" : "{actor} više ne dijeli kalendar {calendar} s vama",
"You unshared calendar {calendar} from {user}" : "Više ne dijelite kalendar {calendar} s {user}",
"{actor} unshared calendar {calendar} from {user}" : "{actor} više ne dijeli kalendar {calendar} s {user}",
"{actor} unshared calendar {calendar} from themselves" : "{actor} više ne dijeli kalendar {calendar} sam sa sobom",
"You shared calendar {calendar} with group {group}" : "Podijelili ste kalendar {calendar} s grupom {group}",
"{actor} shared calendar {calendar} with group {group}" : "{actor} dijeli kalendar {calendar} s grupom {group}",
"You unshared calendar {calendar} from group {group}" : "Više ne dijelite kalendar {calendar} s grupom {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} više ne dijeli kalendar {calendar} s grupom {group}",
"Untitled event" : "Događaj bez naslova",
"{actor} created event {event} in calendar {calendar}" : "{actor} je stvorio događaj {event} u kalendaru {calendar}",
"You created event {event} in calendar {calendar}" : "Stvorili ste događaj {event} u kalendaru {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} je izbrisao događaj {event} iz kalendara {calendar}",
"You deleted event {event} from calendar {calendar}" : "Izbrisali ste događaj {event} iz kalendara {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} je ažurirao događaj {event} u kalendaru {calendar}",
"You updated event {event} in calendar {calendar}" : "Ažurirali ste događaj {event} u kalendaru {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} je premjestio događaj {event} iz kalendara {sourceCalendar} u kalendar {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Premjestili ste događaj {event} iz kalendara {sourceCalendar} u kalendar {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} je vratio događaj {event} kalendara {calendar}",
"You restored event {event} of calendar {calendar}" : "Vratili ste događaj {event} kalendara {calendar}",
"Busy" : "Zauzeto",
"{actor} created to-do {todo} in list {calendar}" : "{actor} je stvorio zadatak {todo} u popisu {calendar}",
"You created to-do {todo} in list {calendar}" : "Stvorili ste zadatak {todo} u popisu {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} je izbrisao zadatak {todo} iz popisa {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Izbrisali ste zadatak {todo} iz popisa {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} je ažurirao zadatak {todo} u popisu {calendar}",
"You updated to-do {todo} in list {calendar}" : "Ažurirali ste zadatak {todo} u popisu {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} je riješio zadatak {todo} u popisu {calendar}",
"You solved to-do {todo} in list {calendar}" : "Riješili ste zadatak {todo} u popisu {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} je ponovno otvorio zadatak {todo} u popisu {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Ponovno ste otvorili zadatak {todo} u popisu {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} je premjestio zadatak {todo} iz popisa {sourceCalendar} u popis {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Premjestili ste zadatak {todo} iz popisa {sourceCalendar} u popis {targetCalendar}",
"Calendar, contacts and tasks" : "Kalendar, kontakti i zadaci",
"A <strong>calendar</strong> was modified" : "Izmijenjen je <strong>kalendar</strong>",
"A calendar <strong>event</strong> was modified" : "Izmijenjen je <strong>događaj</strong> u kalendaru",
"A calendar <strong>to-do</strong> was modified" : "Izmijenjen je <strong>zadatak</strong> u kalendaru",
"Contact birthdays" : "Rođendani kontakata",
"Death of %s" : "Smrt %s",
"Untitled calendar" : "Kalendar bez naslova",
"Calendar:" : "Kalendar:",
"Date:" : "Datum:",
"Where:" : "Gdje:",
"Description:" : "Opis:",
"_%n year_::_%n years_" : ["%n godina","%n godina","%n godina"],
"_%n month_::_%n months_" : ["%n mjesec","%n mjeseci","%n mjeseci"],
"_%n day_::_%n days_" : ["%n dan","%n dana","%n dana"],
"_%n hour_::_%n hours_" : ["%n sat","%n sati","%n sati"],
"_%n minute_::_%n minutes_" : ["%n minute/minuta","%n minuta","%n minuta"],
"%s (in %s)" : "%s (u %s)",
"%s (%s ago)" : "%s (prije %s)",
"Calendar: %s" : "Kalendar: %s",
"Date: %s" : "Datum: %s",
"Description: %s" : "Opis: %s",
"Where: %s" : "Gdje: %s",
"%1$s via %2$s" : "%1$s putem %2$s",
"In the past on %1$s for the entire day" : "U prošlosti, dana %1$s, tijekom cijelog dana",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Za %n minutu, dana %1$s, tijekom cijelog dana","Za %n minute, dana %1$s, tijekom cijelog dana","Za %n minuta, dana %1$s, tijekom cijelog dana"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Za %n sat, dana %1$s, tijekom cijelog dana","Za %n sata, dana %1$s, tijekom cijelog dana","Za %n sati, dana %1$s, tijekom cijelog dana"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Za %n dan, dana %1$s, tijekom cijelog dana","Za %n dana, dana %1$s, tijekom cijelog dana","Za %n dana, dana %1$s, tijekom cijelog dana"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Za %n tjedan, dana %1$s, tijekom cijelog dana","Za %n tjedna, dana %1$s, tijekom cijelog dana","Za %n tjedana, dana %1$s, tijekom cijelog dana"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Za %n mjesec, dana %1$s, tijekom cijelog dana","Za %n mjeseca, dana %1$s, tijekom cijelog dana","Za %n mjeseci, dana %1$s, tijekom cijelog dana"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Za %n godinu, dana %1$s, tijekom cijelog dana","Za %n godine, dana %1$s, tijekom cijelog dana","Za %n godina, dana %1$s, tijekom cijelog dana"],
"In the past on %1$s between %2$s - %3$s" : "U prošlosti, dana %1$s između %2$s %3$s",
"_In %n minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["Za %n minutu, dana %1$s između %2$s %3$s","Za %n minute, dana %1$s između %2$s %3$s","Za %n minuta, dana %1$s između %2$s %3$s"],
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["Za %n sat, dana %1$s između %2$s %3$s","Za %n sata, dana %1$s između %2$s %3$s","Za %n sati, dana %1$s između %2$s %3$s"],
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["Za %n dan, dana %1$s između %2$s %3$s","Za %n dana, dana %1$s između %2$s %3$s","Za %n dana, dana %1$s između %2$s %3$s"],
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Za %n tjedan, dana %1$s između %2$s %3$s","Za %n tjedna, dana %1$s između %2$s %3$s","Za %n tjedana, dana %1$s između %2$s %3$s"],
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Za %n mjesec, dana %1$s između %2$s %3$s","Za %n mjeseca, dana %1$s između %2$s %3$s","Za %n mjeseci, dana %1$s između %2$s %3$s"],
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Za %n godinu, dana %1$s između %2$s %3$s","Za %n godine, dana %1$s između %2$s %3$s","Za %n godina, dana %1$s između %2$s %3$s"],
"Could not generate when statement" : "Nije moguće generirati vremensku odrednicu",
"Every Day for the entire day" : "Svaki dan tijekom cijelog dana",
"Every Day for the entire day until %1$s" : "Svaki dan tijekom cijelog dana do %1$s",
"Every Day between %1$s - %2$s" : "Svaki dan između %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Svaki dan između %1$s - %2$s do %3$s",
"Every %1$d Days for the entire day" : "Svakih %1$d dana tijekom cijelog dana",
"Every %1$d Days for the entire day until %2$s" : "Svakih %1$d dana tijekom cijelog dana do %2$s",
"Every %1$d Days between %2$s - %3$s" : "Svakih%1$d dana između%2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Svakih %1$d dana između %2$s - %3$s do %4$s",
"Could not generate event recurrence statement" : "Nije moguće generirati izraz za ponavljanje događaja",
"Every Week on %1$s for the entire day" : "Svaki tjedan u %1$s tijekom cijelog dana",
"Every Week on %1$s for the entire day until %2$s" : "Svaki tjedan u %1$s tokom cijelog dana do %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Svaki tjedan u %1$s između %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Svaki tjedan u %1$s između %2$s - %3$s do %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Svakih %1$d tjedana od %2$s tijekom cijelog dana",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Svakih %1$d tjedana od %2$s tijekom cijelog dana do %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Svakih %1$d tjedana od %2$s između %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Svakih %1$d tjedana od %2$s između %3$s - %4$s do %5$s",
"Every Month on the %1$s for the entire day" : "%1$s svakog mjeseca tokom cijelog dana",
"Every Month on the %1$s for the entire day until %2$s" : "%1$s svakog mjeseca tokom cijelog dana do%2$s",
"Every Month on the %1$s between %2$s - %3$s" : "%1$s svakog mjeseca između %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "%1$s svakog mjeseca između %2$s - %3$s do %4$s",
"Every %1$d Months on the %2$s for the entire day" : "Svakih %1$d mjeseci, %2$s tokom cijelog dana",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Svakih %1$d mjeseci, %2$s tokom cijelog dana do %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Svakih %1$d mjeseci, %2$s između %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Svakih %1$d mjeseci, %2$s između %3$s - %4$s do %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Svake godine, %1$s, %2$s tokom cijelog dana",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Svake godine, %1$s, %2$s tokom cijelog dana do %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Svake godine, %1$s, %2$s između %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Svake godine, %1$s, %2$s, između %3$s - %4$s do %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Svakih %1$d godina, %2$s, na %3$s tokom cijelog dana",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Svakih %1$d godina, %2$s, na %3$s tokom cijelog dana do %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Svakih %1$d godina, %2$s, na %3$s između %4$s - %5$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Svakih %1$d godina, %2$s, na %3$s između %4$s - %5$s do %6$s",
"On specific dates for the entire day until %1$s" : "Na određene datume, tijekom cijelog dana do %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Na određene datume između %1$s - %2$s do %3$s",
"In the past on %1$s" : "U prošlosti, dana %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["U %n minutu, %1$s","U %n minute, %1$s","U %n minuta, %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["U %n sat, %1$s","U %n sata, %1$s","U %n sati, %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["U %n dan, %1$s","U %n dana, %1$s","U %n dana, %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["U %n tjedan, %1$s","U %n tjedna, %1$s","U %n tjedana, %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["U %n mjesec, %1$s","U %n mjeseca, %1$s","U %n mjeseci, %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["U %n godinu, %1$s","U %n godine, %1$s","U %n godina, %1$s"],
"In the past on %1$s then on %2$s" : "U prošlosti, dana %1$s, zatim dana %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["U %n minutu u %1$s, onda u %2$s","U %n minute u %1$s, onda u %2$s","U %n minuta u %1$s, onda u %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["U %n sat u %1$s, onda u %2$s","U %n sata u %1$s, onda u %2$s","U %n sati u %1$s, onda u %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["U %n dan u %1$s, onda u %2$s","U %n dana u %1$s, onda u %2$s","U %n dana u %1$s, onda u %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["U %n tjedan u %1$s, onda u %2$s","U %n tjedna u %1$s, onda u %2$s","U %n tjedana u %1$s, onda u %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["U %n mjesec u %1$s, onda u %2$s","U %n mjeseca u %1$s, onda u %2$s","U %n mjeseci u %1$s, onda u %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["U %n godinu u %1$s, onda u %2$s","U %n godine u %1$s, onda u %2$s","U %n godina u %1$s, onda u %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "U prošlosti, dana %1$s, zatim dana %2$s i %3$s",
"_In %n minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["u %n minutu dana %1$s onda dana %2$s i %3$s","u %n minute dana %1$s onda dana %2$s i %3$s","u %n minuta dana %1$s onda dana %2$s i %3$s"],
"_In %n hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["u %n sat dana %1$s onda dana %2$s i %3$s","u %n sata dana %1$s onda dana %2$s i %3$s","u %n sati dana %1$s onda dana %2$s i %3$s"],
"_In %n day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["u %n dan, dana %1$s onda dana %2$s i %3$s","u %n dana, dana %1$s onda dana %2$s i %3$s","u %n dana, dana %1$s onda dana %2$s i %3$s"],
"_In %n week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["u %n tjedan, dana %1$s onda dana %2$s i %3$s","u %n tjedna, dana %1$s onda dana %2$s i %3$s","u %n tjedana, dana %1$s onda dana %2$s i %3$s"],
"_In %n month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["u %n mjesec, dana %1$s onda dana %2$s i %3$s","u %n mjeseca, dana %1$s onda dana %2$s i %3$s","u %n mjeseci, dana %1$s onda dana %2$s i %3$s"],
"_In %n year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["u %n godinu, dana %1$s onda dana %2$s i %3$s","u %n godine, dana %1$s onda dana %2$s i %3$s","u %n godina, dana %1$s onda dana %2$s i %3$s"],
"Could not generate next recurrence statement" : "Nije moguće generirati sljedeći izraz ponavljanja",
"Cancelled: %1$s" : "Otkazano: %1$s",
"\"%1$s\" has been canceled" : "„%1$s” je otkazan",
"Re: %1$s" : "Odgovor: %1 $ s",
"%1$s has accepted your invitation" : "%1$s je prihvatio/la vašu pozivnicu",
"%1$s has tentatively accepted your invitation" : "%1$s je privremeno prihvatio/la vašu pozivnicu",
"%1$s has declined your invitation" : "%1$s je odbio/la vašu pozivnicu",
"%1$s has responded to your invitation" : "%1$s je odgovorio/la na vašu pozivnicu",
"Invitation updated: %1$s" : "Pozivnica ažurirana: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s je ažurirao/la događaj \"%2$s\"",
"Invitation: %1$s" : "Pozivnica: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s vas želi pozvati na „%2$s”",
"Organizer:" : "Organizator:",
"Attendees:" : "Polaznici:",
"Title:" : "Naslov:",
"When:" : "Kada:",
"Location:" : "Lokacija:",
"Link:" : "Poveznica:",
"Occurring:" : "Događa se:",
"Accept" : "Prihvati",
"Decline" : "Odbij",
"More options …" : "Više mogućnosti…",
"More options at %s" : "Više mogućnosti na %s",
"Monday" : "Ponedjeljak",
"Tuesday" : "Utorak",
"Wednesday" : "Srijeda",
"Thursday" : "Četvrtak",
"Friday" : "Petak",
"Saturday" : "Subota",
"Sunday" : "Nedjelja",
"January" : "Siječanj",
"February" : "Veljača",
"March" : "Ožujak",
"April" : "Travanj",
"May" : "Svibanj",
"June" : "Lipanj",
"July" : "Srpanj",
"August" : "Kolovoz",
"September" : "Rujan",
"October" : "Listopad",
"November" : "Studeni",
"December" : "Prosinac",
"First" : "Prvi",
"Second" : "Drugi",
"Third" : "Treći",
"Fourth" : "Četvrti",
"Fifth" : "Peti",
"Last" : "Zadnji",
"Second Last" : "Drugi od kraja",
"Third Last" : "Treći od kraja",
"Fourth Last" : "Četvrti od kraja",
"Fifth Last" : "Peti od kraja",
"Contacts" : "Kontakti",
"{actor} created address book {addressbook}" : "{actor} je stvorio adresar {addressbook}",
"You created address book {addressbook}" : "Stvorili ste adresar {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} je izbrisao adresar {addressbook}",
"You deleted address book {addressbook}" : "Izbrisali ste adresar {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} je ažurirao adresar {addressbook}",
"You updated address book {addressbook}" : "Ažurirali ste adresar {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} dijeli adresar {addressbook} s vama",
"You shared address book {addressbook} with {user}" : "Dijelite adresar {addressbook} s {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} dijeli adresar {addressbook} s {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} je prestao dijeliti adresar {addressbook} s vama",
"You unshared address book {addressbook} from {user}" : "Prestali ste dijeliti adresar {addressbook} s {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} je prestao dijeliti adresar {addressbook} s {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} je prestao dijeliti adresar {addressbook} sa sobom",
"You shared address book {addressbook} with group {group}" : "Dijelite adresar {addressbook} s grupom {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} dijeli adresar {addressbook} s grupom {group}",
"You unshared address book {addressbook} from group {group}" : "Prestali ste dijeliti adresar {addressbook} s grupom {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} je prestao dijeliti adresar {addressbook} s grupom {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} je stvorio kontakt {card} u adresaru {addressbook}",
"You created contact {card} in address book {addressbook}" : "Stvorili ste kontakt {card} u adresaru {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} je izbrisao kontakt {card} iz adresara {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Izbrisali ste kontakt {card} iz adresara {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} je ažurirao kontakt {card} u adresaru {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ažurirali ste kontakt {card} u adresaru {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Izmijenjen je <strong>kontakt</strong> ili <strong>adresar</strong>",
"System address book disabled" : "Adresar sustava je onemogućen",
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "Adresar sistemskih kontakata automatski je onemogućen tijekom nadogradnje. To znači da adresar više neće biti dostupan korisnicima u aplikaciji Kontakti niti u drugim klijentima. Adresar sistemskih kontakata onemogućen je jer je broj kontakata u adresaru premašio maksimalno preporučeni broj. Ovo ograničenje postavljeno je radi sprječavanja problema s performansama. Adresar sustava možete ponovno omogućiti sljedećom naredbom {command}.",
"Accounts" : "Korisnički računi",
"System address book which holds all accounts" : "Adresar sustava koji sadrži sve račune",
"File is not updatable: %1$s" : "Datoteku nije moguće ažurirati: %1$s",
"Failed to get storage for file" : "Neuspjelo dohvaćanje pohrane za datoteku",
"Could not write to final file, canceled by hook" : "Nije moguće zapisati u završnu datoteku, otkazano putem kuke",
"Could not write file contents" : "Nije moguće zapisati sadržaj datoteke",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajta","%n bajtova"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Pogreška pri kopiranju datoteke na odredišnu lokaciju (kopirano: %1$s, očekivana veličina datoteke: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Očekivana veličina datoteke je %1$s ali je pročitano (s Nextcloud klijenta) i zapisano (u Nextcloud pohranu) %2$s. To može biti problem s mrežom na strani slanja ili problem pri zapisivanju u pohranu na strani poslužitelja.",
"Could not rename part file to final file, canceled by hook" : "Nije moguće preimenovati djelomičnu datoteku u završnu datoteku, otkazano putem kuke",
"Could not rename part file to final file" : "Nije moguće preimenovati djelomičnu datoteku u završnu datoteku",
"Failed to check file size: %1$s" : "Neuspjela provjera veličine datoteke: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nije moguće otvoriti datoteku: %1$s (%2$d), čini se da datoteka postoji",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nije moguće otvoriti datoteku: %1$s (%2$d), čini se da datoteka ne postoji",
"Encryption not ready: %1$s" : "Šifriranje nije spremno: %1$s",
"Failed to open file: %1$s" : "Neuspjelo otvaranje datoteke: %1$s",
"Failed to unlink: %1$s" : "Neuspjelo uklanjanje veze: %1$s",
"Failed to write file contents: %1$s" : "Neuspjelo zapisivanje sadržaja datoteke: %1$s",
"File not found: %1$s" : "Datoteka nije pronađena: %1$s",
"Invalid target path" : "Nevažeća odredišna putanja",
"System is in maintenance mode." : "Sustav je u načinu održavanja.",
"Upgrade needed" : "Potrebno nadograditi",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Vaš %s treba konfigurirati za korištenje HTTPS-a kako bi se mogli upotrebljavati CalDAV i CardDAV s operacijskim sustavom iOS/macOS.",
"Configures a CalDAV account" : "Konfigurira CalDAV račun",
"Configures a CardDAV account" : "Konfigurira CardDAV račun",
"Events" : "Događaji",
"Untitled task" : "Zadatak bez naslova",
"Completed on %s" : "Završeno na %s",
"Due on %s by %s" : "%s treba završiti do %s",
"Due on %s" : "Treba završiti do %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Dobrodošli u Nextcloud Kalendar!\n\nOvo je primjer događaja istražite fleksibilnost planiranja s Nextcloud Kalendarom tako da napravite bilo kakve izmjene koje želite!\n\nUz Nextcloud Kalendar možete:\n- Jednostavno stvarati, uređivati i upravljati događajima..\n- Stvarati više kalendara i dijeliti ih s kolegama, prijateljima ili obitelji.\n- Provjeravati dostupnost i drugima prikazivati svoja zauzeta razdoblja.\n- Neprimjetno se integrirati s aplikacijama i uređajima putem CalDAV-a.\n- Prilagoditi svoje iskustvo: zakazivati ponavljajuće događaje, prilagođavati obavijesti i druge postavke.",
"Example event - open me!" : "Primjer događaja otvori me!",
"System Address Book" : "Adresar sustava",
"The system address book contains contact information for all users in your instance." : "Adresar sustava sadrži kontaktne podatke za sve korisnike u vašoj instanci.",
"Enable System Address Book" : "Omogući adresar sustava",
"DAV system address book" : "DAV adresar sustava",
"No outstanding DAV system address book sync." : "Nema neriješene sinkronizacije DAV adresara sustava.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Sinkronizacija DAV adresara sustava još nije pokrenuta jer vaša instanca ima više od 1000 korisnika ili je došlo do pogreške. Pokrenite je ručno pozivanjem naredbe „occ dav:sync-system-addressbook”.",
"DAV system address book size" : "Veličina DAV adresara sustava",
"The system address book is disabled" : "Adresar sustava je onemogućen",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Adresar sustava je omogućen, ali sadrži više od konfiguriranog ograničenja od %d kontakata",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Adresar sustava je omogućen i sadrži manje od konfiguriranog ograničenja od %d kontakata",
"WebDAV endpoint" : "WebDAV krajnja točka",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Nije moguće provjeriti je li vaš mrežni poslužitelj ispravno postavljen za omogućavanje sinkronizacije datoteka putem WebDAV-a. Molimo provjerite ručno.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Vaš mrežni poslužitelj nije pravilno podešen za sinkronizaciju podataka jer je sučelje protokola WebDAV neispravno.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Vaš mrežni poslužitelj je ispravno postavljen za omogućavanje sinkronizacije datoteka putem WebDAV-a.",
"Migrated calendar (%1$s)" : "Migriran kalendar (%1$s)",
"Calendars including events, details and attendees" : "Kalendari uključujući događaje, detalje i sudionike",
"Contacts and groups" : "Kontakti i grupe",
"WebDAV" : "WebDAV",
"Absence saved" : "Odsutnost je spremljena",
"Failed to save your absence settings" : "Neuspjelo spremanje postavki odsutnosti",
"Absence cleared" : "Odsutnost je uklonjena",
"Failed to clear your absence settings" : "Neuspjelo uklanjanje postavki odsutnosti",
"First day" : "Prvi dan",
"Last day (inclusive)" : "Zadnji dan (uključivo)",
"Out of office replacement (optional)" : "Zamjena za odsutnost iz ureda (neobavezno)",
"Name of the replacement" : "Ime zamjene",
"Short absence status" : "Kratki status odsutnosti",
"Long absence Message" : "Duga poruka o odsutnosti",
"Save" : "Spremi",
"Disable absence" : "Onemogući odsutnost",
"Failed to load availability" : "Neuspjelo učitavanje dostupnosti",
"Saved availability" : "Dostupnost je spremljena",
"Failed to save availability" : "Neuspjelo spremanje dostupnosti",
"to" : "do",
"Delete slot" : "Izbriši mjesto",
"No working hours set" : "Radno vrijeme nije postavljeno",
"Add slot" : "Dodaj mjesto",
"Weekdays" : "Dani u tjednu",
"Pick a start time for {dayName}" : "Odaberite početno vrijeme za {dayName}",
"Pick a end time for {dayName}" : "Odaberite završno vrijeme za {dayName}",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatski postavi korisnički status na „Ne ometaj” izvan vremena dostupnosti kako bi se utišale sve obavijesti.",
"Cancel" : "Odustani",
"Import" : "Uvezi",
"Error while saving settings" : "Greška pri spremanju postavki",
"Contact reset successfully" : "Kontakt je uspješno resetiran",
"Error while resetting contact" : "Greška pri resetiranju kontakta",
"Contact imported successfully" : "Kontakt je uspješno uvezen",
"Error while importing contact" : "Greška pri uvozu kontakta",
"Import contact" : "Uvezi kontakt",
"Reset to default" : "Vrati na zadanu postavku",
"Import contacts" : "Uvezi kontakte",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Uvoz nove .vcf datoteke izbrisat će postojeći zadani kontakt i zamijeniti ga novim. Želite li nastaviti?",
"Failed to save example event creation setting" : "Neuspjelo spremanje postavke stvaranja primjer-događaja",
"Failed to upload the example event" : "Neuspjelo učitavanje primjer-događaja",
"Custom example event was saved successfully" : "Prilagođeni primjer događaja uspješno je spremljen",
"Failed to delete the custom example event" : "Neuspjelo brisanje prilagođenog primjer-događaja",
"Custom example event was deleted successfully" : "Prilagođeni primjer događaja uspješno je izbrisan",
"Import calendar event" : "Uvezi događaj u kalendar",
"Uploading a new event will overwrite the existing one." : "Učitavanje novog događaja prebrisat će postojeći.",
"Upload event" : "Učitaj događaj",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Također instalirajte {calendarappstoreopen}aplikaciju Kalendar{linkclose} ili {calendardocopen}povežite računalo i mobilni uređaj radi sinkroniziranja ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Provjerite jeste li ispravno postavili {emailopen}poslužitelj e-pošte{linkclose}.",
"Calendar server" : "Poslužitelj kalendara",
"Send invitations to attendees" : "Pošaljite pozive sudionicima",
"Automatically generate a birthday calendar" : "Automatski generiraj kalendar rođendana",
"Birthday calendars will be generated by a background job." : "Kalendari rođendana generirat će se u pozadini.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Stoga neće biti dostupni odmah nakon omogućivanja, ali će se pojaviti nakon nekog vremena.",
"Send notifications for events" : "Šalji obavijesti o događajima",
"Notifications are sent via background jobs, so these must occur often enough." : "Obavijesti se šalju putem pozadinskih zadataka koji se moraju dovoljno često izvoditi.",
"Send reminder notifications to calendar sharees as well" : "Šalji podsjetnike i osobama s kojima je kalendar podijeljen",
"Reminders are always sent to organizers and attendees." : "Podsjetnici se uvijek šalju organizatorima i sudionicima.",
"Enable notifications for events via push" : "Omogući slanje obavijesti o događajima putem push obavijesti",
"Example content" : "Primjer sadržaja",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Primjer sadržaja služi za predstavljanje mogućnosti Nextclouda. Zadani sadržaj dolazi uz Nextcloud i može se zamijeniti prilagođenim sadržajem.",
"Availability" : "Raspoloživost",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Ako konfigurirate svoje radno vrijeme, drugi će vidjeti kada ste izvan ureda prilikom zakazivanja sastanka.",
"Absence" : "Odsutnost",
"Configure your next absence period." : "Konfigurirajte svoje sljedeće razdoblje odsutnosti.",
"There was an error updating your attendance status." : "Došlo je do pogreške prilikom ažuriranja statusa prisutnosti.",
"Please contact the organizer directly." : "Izravno se obratite organizatoru.",
"Are you accepting the invitation?" : "Prihvaćate li poziv?",
"Tentative" : "Uvjetno",
"Your attendance was updated successfully." : "Vaša je prisutnost uspješno ažurirana.",
"_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["U %n minutu, dana %1$s tokom cijelog dana","U %n minute, dana %1$s tokom cijelog dana","U %n minuta, dana %1$s tokom cijelog dana"],
"_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["U %n sat, dana %1$s tokom cijelog dana","U %n sata, dana %1$s tokom cijelog dana","U %n sati, dana %1$s tokom cijelog dana"],
"_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["U %n dan, dana %1$s tokom cijelog dana","U %n dana, dana %1$s tokom cijelog dana","U %n dana, dana %1$s tokom cijelog dana"],
"_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["U %n tjedana, dana %1$s tokom cijelog dana","U %n tjedna, dana %1$s tokom cijelog dana","U %n tjedana, dana %1$s tokom cijelog dana"],
"_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["U %n mjesec, dana %1$s tokom cijelog dana","U %n mjeseca, dana %1$s tokom cijelog dana","U %n mjeseci, dana %1$s tokom cijelog dana"],
"_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["U %n godini, dana %1$s tokom cijelog dana","U %n godine, dana %1$s tokom cijelog dana","U %n godina, dana %1$s tokom cijelog dana"],
"_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["U %n minutu, dana %1$s između %2$s - %3$s","U %n minute, dana %1$s između %2$s - %3$s","U %n minuta, dana %1$s između %2$s - %3$s"],
"_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["U %n sat, dana %1$s između %2$s - %3$s","U %n sata, dana %1$s između %2$s - %3$s","U %n sati, dana %1$s između %2$s - %3$s"],
"_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["U %n dan, dana %1$s između %2$s - %3$s","U %n dana, dana %1$s između %2$s - %3$s","U %n dana, dana %1$s između %2$s - %3$s"],
"_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["U %n tjedan, dana %1$s između %2$s - %3$s","U %n tjedna, dana %1$s između %2$s - %3$s","U %n tjedana, dana %1$s između %2$s - %3$s"],
"_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["U %n mjesec, dana %1$s između %2$s - %3$s","U %n mjeseca, dana %1$s između %2$s - %3$s","U %n mjeseci, dana %1$s između %2$s - %3$s"],
"_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["U %n godini, dana %1$s između %2$s - %3$s","U %n godine, dana %1$s između %2$s - %3$s","U %n godina, dana %1$s između %2$s - %3$s"],
"_In a minute on %1$s_::_In %n minutes on %1$s_" : ["U %n minuti, dana %1$s","U %n minute, dana %1$s","U %n minuta, dana %1$s"],
"_In a hour on %1$s_::_In %n hours on %1$s_" : ["U %n sat, dana %1$s","U %n sata, dana %1$s","U %n sati, dana %1$s"],
"_In a day on %1$s_::_In %n days on %1$s_" : ["U %n dan, dana %1$s","U %n dana, dana %1$s","U %n dana, dana %1$s"],
"_In a week on %1$s_::_In %n weeks on %1$s_" : ["U %n tjedan, dana %1$s","U %n tjedna, dana %1$s","U %n tjedana, dana %1$s"],
"_In a month on %1$s_::_In %n months on %1$s_" : ["U %n mjesec, dana %1$s","U %n mjeseca, dana %1$s","U %n mjeseci, dana %1$s"],
"_In a year on %1$s_::_In %n years on %1$s_" : ["U %n godini, dana %1$s","U %n godine, dana %1$s","U %n godina, dana %1$s"],
"_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["U %n minutu, dana %1$s onda dana %2$s","U %n minute, dana %1$s onda dana %2$s","U %n minuta, dana %1$s onda dana %2$s"],
"_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["U %n sat, dana %1$s onda dana %2$s","U %n sata, dana %1$s onda dana %2$s","U %n sati, dana %1$s onda dana %2$s"],
"_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["U %n dan, dana %1$s onda dana %2$s","U %n dana, dana %1$s onda dana %2$s","U %n dana, dana %1$s onda dana %2$s"],
"_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["U %n tjedan, dana %1$s onda dana %2$s","U %n tjedna, dana %1$s onda dana %2$s","U %n tjedana, dana %1$s onda dana %2$s"],
"_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["U %n mjesec, dana %1$s onda dana %2$s","U %n mjeseca, dana %1$s onda dana %2$s","U %n mjeseci, dana %1$s onda dana %2$s"],
"_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["U %n godini, dana %1$s onda dana %2$s","U %n godine, dana %1$s onda dana %2$s","U %n godina, dana %1$s onda dana %2$s"],
"_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["U %n minutu, dana %1$s onda dana %2$s i %3$s","U %n minute, dana %1$s onda dana %2$s i %3$s","U %n minuta, dana %1$s onda dana %2$s i %3$s"],
"_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["U %n sat, dana %1$s onda dana %2$s i %3$s","U %n sata, dana %1$s onda dana %2$s i %3$s","U %n sati, dana %1$s onda dana %2$s i %3$s"],
"_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["U %n dan, dana %1$s onda dana %2$s i %3$s","U %n dana, dana %1$s onda dana %2$s i %3$s","U %n dana, dana %1$s onda dana %2$s i %3$s"],
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["U %n tjedan, dana %1$s onda dana %2$s i %3$s","U %n tjedna, dana %1$s onda dana %2$s i %3$s","U %n tjedana, dana %1$s onda dana %2$s i %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["U %n mjesec, dana %1$s onda dana %2$s i %3$s","U %n mjeseca, dana %1$s onda dana %2$s i %3$s","U %n mjeseci, dana %1$s onda dana %2$s i %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["U %n godini, dana %1$s onda dana %2$s i %3$s","U %n godine, dana %1$s onda dana %2$s i %3$s","U %n godina, dana %1$s onda dana %2$s i %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nije moguće otvoriti datoteku: %1$s, čini se da datoteka postoji",
"Could not open file: %1$s, file doesn't seem to exist" : "Nije moguće otvoriti datoteku: %1$s, čini se da datoteka ne postoji",
"No results." : "Nema rezultata.",
"Start typing." : "Započnite s pisanjem.",
"Time zone:" : "Vremenska zona:"
},"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;"
}
-376
View File
@@ -1,376 +0,0 @@
OC.L10N.register(
"dav",
{
"Calendar" : "Kalender",
"Tasks" : "Tugas",
"Personal" : "Pribadi",
"{actor} created calendar {calendar}" : "{actor} membuat kalender {calendar}",
"You created calendar {calendar}" : "Anda membuat kalender {calendar}",
"{actor} deleted calendar {calendar}" : "{actor} menghapus kalender {calendar}",
"You deleted calendar {calendar}" : "Anda menghapus kalender {calendar}",
"{actor} updated calendar {calendar}" : "{actor} memperbarui kalender {calendar}",
"You updated calendar {calendar}" : "Anda memperbarui kalender {calendar}",
"{actor} restored calendar {calendar}" : "{actor} memulihkan kalender {calendar}",
"You restored calendar {calendar}" : "Anda memulihkan kalender {calendar}",
"You shared calendar {calendar} as public link" : "Anda membagikan kalender {calendar} sebagai tautan publik",
"You removed public link for calendar {calendar}" : "Anda menghapus tautan publik untuk kalender {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} membagikan kalender {calendar} kepada Anda",
"You shared calendar {calendar} with {user}" : "Anda membagikan kalender {calendar} dengan {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} membagikan kalender {calendar} dengan {user}",
"{actor} unshared calendar {calendar} from you" : "{actor} membatalkan berbagi kalender {calendar} dari Anda",
"You unshared calendar {calendar} from {user}" : "Anda membatalkan berbagi kalender {calendar} dari {user}",
"{actor} unshared calendar {calendar} from {user}" : "{actor} membatalkan berbagi kalender {calendar} dari {user}",
"{actor} unshared calendar {calendar} from themselves" : "{actor} membatalkan berbagi kalender {calendar} dari diri mereka sendiri",
"You shared calendar {calendar} with group {group}" : "Anda membagikan kalender {calendar} dengan grup {group}",
"{actor} shared calendar {calendar} with group {group}" : "{actor} membagikan kalender {calendar} dengan grup {group}",
"You unshared calendar {calendar} from group {group}" : "Anda membatalkan berbagi kalender {calendar} dari grup {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} membatalkan berbagi kalender {calendar} dari grup {group}",
"Untitled event" : "Acara tanpa judul",
"{actor} created event {event} in calendar {calendar}" : "{actor} membuat acara {event} di kalender {calendar}",
"You created event {event} in calendar {calendar}" : "Anda membuat acara {event} di kalender {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} menghapus acara {event} dari kalender {calendar}",
"You deleted event {event} from calendar {calendar}" : "Anda menghapus acara {event} dari kalender {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} memperbarui acara {event} di kalender {calendar}",
"You updated event {event} in calendar {calendar}" : "Anda memperbarui acara {event} di kalender {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} memindahkan acara {event} dari kalender {sourceCalendar} ke kalender {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Anda memindahkan acara {event} dari kalender {sourceCalendar} ke kalender {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} memulihkan acara {event} dari kalender {calendar}",
"You restored event {event} of calendar {calendar}" : "Anda memulihkan acara {event} dari kalender {calendar}",
"Busy" : "Sibuk",
"{actor} created to-do {todo} in list {calendar}" : "{actor} membuat tugas {todo} di daftar {calendar}",
"You created to-do {todo} in list {calendar}" : "Anda membuat tugas {todo} di daftar {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} menghapus tugas {todo} dari daftar {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Anda menghapus tugas {todo} dari daftar {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} memperbarui tugas {todo} di daftar {calendar}",
"You updated to-do {todo} in list {calendar}" : "Anda memperbarui tugas {todo} di daftar {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} menyelesaikan tugas {todo} di daftar {calendar}",
"You solved to-do {todo} in list {calendar}" : "Anda menyelesaikan tugas {todo} di daftar {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} membuka kembali tugas {todo} di daftar {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Anda membuka kembali tugas {todo} di daftar {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} memindahkan tugas {todo} dari daftar {sourceCalendar} ke daftar {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Anda memindahkan tugas {todo} dari daftar {sourceCalendar} ke daftar {targetCalendar}",
"Calendar, contacts and tasks" : "Kalender, kontak, dan tugas",
"A <strong>calendar</strong> was modified" : "<strong>Kalender</strong> telah diubah",
"A calendar <strong>event</strong> was modified" : "Sebuah <strong>acara</strong> kalender telah diubah",
"A calendar <strong>to-do</strong> was modified" : "Sebuah <strong>tugas</strong> kalender telah diubah",
"Contact birthdays" : "Ulang tahun kontak",
"Death of %s" : "Wafatnya %s",
"Untitled calendar" : "Kalender tanpa judul",
"Calendar:" : "Kalender:",
"Date:" : "Tanggal:",
"Where:" : "Tempat:",
"Description:" : "Deskripsi:",
"_%n year_::_%n years_" : ["%n tahun"],
"_%n month_::_%n months_" : ["%n bulan"],
"_%n day_::_%n days_" : ["%n hari"],
"_%n hour_::_%n hours_" : ["%n jam"],
"_%n minute_::_%n minutes_" : ["%n menit"],
"%s (in %s)" : "%s (dalam %s)",
"%s (%s ago)" : "%s (%s yang lalu)",
"Calendar: %s" : "Kalender: %s",
"Date: %s" : "Tanggal: %s",
"Description: %s" : "Deskripsi: %s",
"Where: %s" : "Di mana: %s",
"%1$s via %2$s" : "%1$s melalui %2$s",
"In the past on %1$s for the entire day" : "Di masa lalu pada %1$s sepanjang hari",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Dalam %n menit pada %1$s untuk sepanjang hari"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Dalam %n jam pada %1$s untuk sepanjang hari"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Dalam %n hari pada %1$s untuk sepanjang hari"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Dalam %n minggu pada %1$s untuk sepanjang hari"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Dalam %n bulan pada %1$s untuk sepanjang hari"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Dalam %n tahun pada %1$s untuk sepanjang hari"],
"In the past on %1$s between %2$s - %3$s" : "Di masa lalu pada %1$s antara %2$s - %3$s",
"_In %n minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["Dalam %n menit pada %1$s antara %2$s - %3$s"],
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["Dalam %n jam pada %1$s antara %2$s - %3$s"],
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["Dalam %n hari pada %1$s antara %2$s - %3$s"],
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Dalam %n minggu pada %1$s antara %2$s - %3$s"],
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Dalam %n bulan pada %1$s antara %2$s - %3$s"],
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Dalam %n tahun pada %1$s antara %2$s - %3$s"],
"Could not generate when statement" : "Tidak dapat membuat pernyataan waktu",
"Every Day for the entire day" : "Setiap hari sepanjang hari",
"Every Day for the entire day until %1$s" : "Setiap hari sepanjang hari hingga %1$s",
"Every Day between %1$s - %2$s" : "Setiap hari antara %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Setiap hari antara %1$s - %2$s hingga %3$s",
"Every %1$d Days for the entire day" : "Setiap %1$d hari sepanjang hari",
"Every %1$d Days for the entire day until %2$s" : "Setiap %1$d hari sepanjang hari hingga %2$s",
"Every %1$d Days between %2$s - %3$s" : "Setiap %1$d hari antara %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Setiap %1$d hari antara %2$s - %3$s hingga %4$s",
"Could not generate event recurrence statement" : "Tidak dapat membuat pernyataan pengulangan acara",
"Every Week on %1$s for the entire day" : "Setiap minggu pada %1$s sepanjang hari",
"Every Week on %1$s for the entire day until %2$s" : "Setiap minggu pada %1$s sepanjang hari hingga %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Setiap minggu pada %1$s antara %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Setiap minggu pada %1$s antara %2$s - %3$s hingga %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Setiap %1$d minggu pada %2$s sepanjang hari",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Setiap %1$d minggu pada %2$s sepanjang hari hingga %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Setiap %1$d minggu pada %2$s antara %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Setiap %1$d minggu pada %2$s antara %3$s - %4$s hingga %5$s",
"Every Month on the %1$s for the entire day" : "Setiap bulan pada tanggal %1$s sepanjang hari",
"Every Month on the %1$s for the entire day until %2$s" : "Setiap bulan pada tanggal %1$s sepanjang hari hingga %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Setiap bulan pada tanggal %1$s antara %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Setiap bulan pada tanggal %1$s antara %2$s - %3$s hingga %4$s",
"Every %1$d Months on the %2$s for the entire day" : "Setiap %1$d bulan pada tanggal %2$s sepanjang hari",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Setiap %1$d bulan pada tanggal %2$s sepanjang hari hingga %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Setiap %1$d bulan pada tanggal %2$s antara %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Setiap %1$d bulan pada tanggal %2$s antara %3$s - %4$s hingga %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Setiap tahun pada bulan %1$s tanggal %2$s sepanjang hari",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Setiap tahun pada bulan %1$s tanggal %2$s sepanjang hari hingga %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Setiap tahun pada bulan %1$s tanggal %2$s antara %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Setiap tahun pada bulan %1$s tanggal %2$s antara %3$s - %4$s hingga %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s sepanjang hari",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s sepanjang hari hingga %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s antara %4$s - %5$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Setiap %1$d tahun pada bulan %2$s tanggal %3$s antara %4$s - %5$s hingga %6$s",
"On specific dates for the entire day until %1$s" : "Pada tanggal tertentu sepanjang hari hingga %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Pada tanggal tertentu antara %1$s - %2$s hingga %3$s",
"In the past on %1$s" : "Di masa lalu pada %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["Dalam %n menit pada %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["Dalam %n jam pada %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["Dalam %n hari pada %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["Dalam %n minggu pada %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["Dalam %n bulan pada %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["Dalam %n tahun pada %1$s"],
"In the past on %1$s then on %2$s" : "Di masa lalu pada %1$s lalu pada %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Dalam %n menit pada %1$s kemudian pada %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Dalam %n jam pada %1$s kemudian pada %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Dalam %n hari pada %1$s kemudian pada %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Dalam %n minggu pada %1$s kemudian pada %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Dalam %n bulan pada %1$s kemudian pada %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Dalam %n tahun pada %1$s kemudian pada %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "Di masa lalu pada %1$s lalu pada %2$s dan %3$s",
"_In %n minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["Dalam %n menit pada %1$s kemudian pada %2$s dan %3$s"],
"_In %n hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Dalam %n jam pada %1$s kemudian pada %2$s dan %3$s"],
"_In %n day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Dalam %n hari pada %1$s kemudian pada %2$s dan %3$s"],
"_In %n week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Dalam %n minggu pada %1$s kemudian pada %2$s dan %3$s"],
"_In %n month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dalam %n bulan pada %1$s kemudian pada %2$s dan %3$s"],
"_In %n year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dalam %n tahun pada %1$s kemudian pada %2$s dan %3$s"],
"Could not generate next recurrence statement" : "Tidak dapat membuat pernyataan pengulangan berikutnya",
"Cancelled: %1$s" : "Dibatalkan: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" telah dibatalkan",
"Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "%1$s telah menerima undangan Anda",
"%1$s has tentatively accepted your invitation" : "%1$s telah menerima undangan Anda secara sementara",
"%1$s has declined your invitation" : "%1$s telah menolak undangan Anda",
"%1$s has responded to your invitation" : "%1$s telah merespons undangan Anda",
"Invitation updated: %1$s" : "Undangan diperbarui: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s memperbarui acara \"%2$s\"",
"Invitation: %1$s" : "Undangan: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s ingin mengundang Anda ke \"%2$s\"",
"Organizer:" : "Penyelenggara:",
"Attendees:" : "Peserta:",
"Title:" : "Judul:",
"When:" : "Kapan:",
"Location:" : "Lokasi:",
"Link:" : "Tautan:",
"Occurring:" : "Berlangsung:",
"Accept" : "Terima",
"Decline" : "Tolak",
"More options …" : "Opsi lainnya …",
"More options at %s" : "Opsi lainnya di %s",
"Monday" : "Senin",
"Tuesday" : "Selasa",
"Wednesday" : "Rabu",
"Thursday" : "Kamis",
"Friday" : "Jumat",
"Saturday" : "Sabtu",
"Sunday" : "Minggu",
"January" : "Januari",
"February" : "Februari",
"March" : "Maret",
"April" : "April",
"May" : "Mei",
"June" : "Juni",
"July" : "Juli",
"August" : "Agustus",
"September" : "September",
"October" : "Oktober",
"November" : "November",
"December" : "Desember",
"First" : "Pertama",
"Second" : "Kedua",
"Third" : "Ketiga",
"Fourth" : "Keempat",
"Fifth" : "Kelima",
"Last" : "Terakhir",
"Second Last" : "Kedua terakhir",
"Third Last" : "Ketiga terakhir",
"Fourth Last" : "Keempat terakhir",
"Fifth Last" : "Kelima terakhir",
"Contacts" : "Kontak",
"{actor} created address book {addressbook}" : "{actor} membuat buku alamat {addressbook}",
"You created address book {addressbook}" : "Anda membuat buku alamat {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} menghapus buku alamat {addressbook}",
"You deleted address book {addressbook}" : "Anda menghapus buku alamat {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} memperbarui buku alamat {addressbook}",
"You updated address book {addressbook}" : "Anda memperbarui buku alamat {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} membagikan buku alamat {addressbook} kepada Anda",
"You shared address book {addressbook} with {user}" : "Anda membagikan buku alamat {addressbook} dengan {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} membagikan buku alamat {addressbook} dengan {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} membatalkan berbagi buku alamat {addressbook} dari Anda",
"You unshared address book {addressbook} from {user}" : "Anda membatalkan berbagi buku alamat {addressbook} dari {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} membatalkan berbagi buku alamat {addressbook} dari {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} membatalkan berbagi buku alamat {addressbook} dari diri mereka sendiri",
"You shared address book {addressbook} with group {group}" : "Anda membagikan buku alamat {addressbook} dengan grup {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} membagikan buku alamat {addressbook} dengan grup {group}",
"You unshared address book {addressbook} from group {group}" : "Anda membatalkan berbagi buku alamat {addressbook} dari grup {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} membatalkan berbagi buku alamat {addressbook} dari grup {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} membuat kontak {card} di buku alamat {addressbook}",
"You created contact {card} in address book {addressbook}" : "Anda membuat kontak {card} di buku alamat {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} menghapus kontak {card} dari buku alamat {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Anda menghapus kontak {card} dari buku alamat {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} memperbarui kontak {card} di buku alamat {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Anda memperbarui kontak {card} di buku alamat {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Sebuah <strong>kontak</strong> atau <strong>buku alamat</strong> telah diubah",
"System address book disabled" : "Buku alamat sistem dinonaktifkan",
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "Buku alamat kontak sistem telah dinonaktifkan secara otomatis selama peningkatan. Ini berarti buku alamat tersebut tidak akan lagi tersedia bagi pengguna di aplikasi kontak atau klien lain. Buku alamat kontak sistem dinonaktifkan karena jumlah kontak dalam buku alamat melebihi jumlah maksimum kontak yang direkomendasikan. Batas ini ditetapkan untuk mencegah masalah performa. Anda dapat mengaktifkan kembali buku alamat sistem dengan perintah berikut {command}",
"Accounts" : "Accounts",
"System address book which holds all accounts" : "Buku alamat sistem yang menyimpan semua akun",
"File is not updatable: %1$s" : "File tidak dapat diperbarui: %1$s",
"Failed to get storage for file" : "Gagal mendapatkan penyimpanan untuk file",
"Could not write to final file, canceled by hook" : "Tidak dapat menulis ke file akhir, dibatalkan oleh hook",
"Could not write file contents" : "Tidak dapat menulis konten file",
"_%n byte_::_%n bytes_" : ["%n byte"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Kesalahan saat menyalin file ke lokasi tujuan (disalin: %1$s, ukuran file yang diharapkan: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Ukuran file %1$s yang diharapkan adalah %1$s tetapi membaca (dari klien Nextcloud) dan menulis (ke penyimpanan Nextcloud) %2$s. Ini bisa jadi masalah jaringan di sisi pengirim atau masalah saat menulis ke penyimpanan di sisi server.",
"Could not rename part file to final file, canceled by hook" : "Tidak dapat mengganti nama file bagian menjadi file akhir, dibatalkan oleh hook",
"Could not rename part file to final file" : "Tidak dapat mengganti nama file bagian menjadi file akhir",
"Failed to check file size: %1$s" : "Gagal memeriksa ukuran file: %1$s",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Tidak dapat membuka file: %1$s (%2$d), file tampaknya ada",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Tidak dapat membuka file: %1$s (%2$d), file tampaknya tidak ada",
"Encryption not ready: %1$s" : "Enkripsi belum siap: %1$s",
"Failed to open file: %1$s" : "Gagal membuka file: %1$s",
"Failed to unlink: %1$s" : "Gagal melepas tautan: %1$s",
"Failed to write file contents: %1$s" : "Gagal menulis konten file: %1$s",
"File not found: %1$s" : "File tidak ditemukan: %1$s",
"Invalid target path" : "Jalur tujuan tidak valid",
"System is in maintenance mode." : "Sistem sedang dalam mode pemeliharaan.",
"Upgrade needed" : "Perlu peningkatan",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "%s Anda perlu dikonfigurasi untuk menggunakan HTTPS agar dapat menggunakan CalDAV dan CardDAV dengan iOS/macOS.",
"Configures a CalDAV account" : "Mengonfigurasi akun CalDAV",
"Configures a CardDAV account" : "Mengonfigurasi akun CardDAV",
"Events" : "Acara",
"Untitled task" : "Tugas tanpa judul",
"Completed on %s" : "Selesai pada %s",
"Due on %s by %s" : "Jatuh tempo pada %s oleh %s",
"Due on %s" : "Jatuh tempo pada %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Selamat datang di Kalender Nextcloud!\n\nIni adalah acara contoh - jelajahi fleksibilitas perencanaan dengan Kalender Nextcloud dengan melakukan perubahan apa pun yang Anda inginkan!\n\nDengan Kalender Nextcloud, Anda dapat:\n- Membuat, mengedit, dan mengelola acara dengan mudah.\n- Membuat beberapa kalender dan membagikannya dengan rekan tim, teman, atau keluarga.\n- Memeriksa ketersediaan dan menampilkan waktu sibuk Anda kepada orang lain.\n- Terintegrasi dengan lancar dengan aplikasi dan perangkat melalui CalDAV.\n- Menyesuaikan pengalaman Anda: jadwalkan acara berulang, sesuaikan notifikasi, dan pengaturan lainnya.",
"Example event - open me!" : "Acara contoh - buka saya!",
"System Address Book" : "Buku Alamat Sistem",
"The system address book contains contact information for all users in your instance." : "Buku alamat sistem berisi informasi kontak untuk semua pengguna di instance Anda.",
"Enable System Address Book" : "Aktifkan Buku Alamat Sistem",
"DAV system address book" : "Buku alamat sistem DAV",
"No outstanding DAV system address book sync." : "Tidak ada sinkronisasi buku alamat sistem DAV yang tertunda.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Sinkronisasi buku alamat sistem DAV belum berjalan karena instance Anda memiliki lebih dari 1000 pengguna atau karena terjadi kesalahan. Silakan jalankan secara manual dengan memanggil \"occ dav:sync-system-addressbook\".",
"DAV system address book size" : "Ukuran buku alamat sistem DAV",
"The system address book is disabled" : "Buku alamat sistem dinonaktifkan",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Buku alamat sistem diaktifkan, tetapi berisi lebih dari batas yang dikonfigurasi yaitu %d kontak",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Buku alamat sistem diaktifkan dan berisi kurang dari batas yang dikonfigurasi yaitu %d kontak",
"WebDAV endpoint" : "Endpoint WebDAV",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Tidak dapat memeriksa apakah web server Anda telah disiapkan dengan benar untuk mengizinkan sinkronisasi file melalui WebDAV. Silakan periksa secara manual.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Peladen web Anda belum diatur sesuai untuk sinkronisasi berkas, karena antarmuka WebDAV tidak berfungsi.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Web server Anda telah disiapkan dengan benar untuk mengizinkan sinkronisasi file melalui WebDAV.",
"Migrated calendar (%1$s)" : "Kalender termigrasi (%1$s)",
"Calendars including events, details and attendees" : "Kalender termasuk acara, detail, dan peserta",
"Contacts and groups" : "Kontak dan grup",
"WebDAV" : "WebDAV",
"Absence saved" : "Ketidakhadiran disimpan",
"Failed to save your absence settings" : "Gagal menyimpan pengaturan ketidakhadiran Anda",
"Absence cleared" : "Ketidakhadiran dihapus",
"Failed to clear your absence settings" : "Gagal menghapus pengaturan ketidakhadiran Anda",
"First day" : "Hari pertama",
"Last day (inclusive)" : "Hari terakhir (termasuk)",
"Out of office replacement (optional)" : "Pengganti di luar kantor (opsional)",
"Name of the replacement" : "Nama pengganti",
"Short absence status" : "Status ketidakhadiran singkat",
"Long absence Message" : "Pesan ketidakhadiran panjang",
"Save" : "Simpan",
"Disable absence" : "Nonaktifkan ketidakhadiran",
"Failed to load availability" : "Gagal memuat ketersediaan",
"Saved availability" : "Ketersediaan disimpan",
"Failed to save availability" : "Gagal menyimpan ketersediaan",
"to" : "untuk",
"Delete slot" : "Hapus slot",
"No working hours set" : "Tidak ada jam kerja yang ditetapkan",
"Add slot" : "Tambahkan slot",
"Weekdays" : "Hari kerja",
"Pick a start time for {dayName}" : "Pilih waktu mulai untuk {dayName}",
"Pick a end time for {dayName}" : "Pilih waktu selesai untuk {dayName}",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Secara otomatis tetapkan status pengguna menjadi \"Jangan ganggu\" di luar ketersediaan untuk membisukan semua notifikasi.",
"Cancel" : "Batal",
"Import" : "Impor",
"Error while saving settings" : "Kesalahan saat menyimpan pengaturan",
"Contact reset successfully" : "Kontak berhasil direset",
"Error while resetting contact" : "Kesalahan saat mereset kontak",
"Contact imported successfully" : "Kontak berhasil diimpor",
"Error while importing contact" : "Kesalahan saat mengimpor kontak",
"Import contact" : "Impor kontak",
"Reset to default" : "Reset ke default",
"Import contacts" : "Impor kontak",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Mengunggah file .vcf baru akan menghapus kontak default yang ada dan menggantinya dengan yang baru. Apakah Anda ingin melanjutkan?",
"Failed to save example event creation setting" : "Gagal menyimpan pengaturan pembuatan acara contoh",
"Failed to upload the example event" : "Gagal mengunggah acara contoh",
"Custom example event was saved successfully" : "Acara contoh kustom berhasil disimpan",
"Failed to delete the custom example event" : "Gagal menghapus acara contoh kustom",
"Custom example event was deleted successfully" : "Acara contoh kustom berhasil dihapus",
"Import calendar event" : "Impor acara kalender",
"Uploading a new event will overwrite the existing one." : "Mengunggah acara baru akan menimpa acara yang sudah ada.",
"Upload event" : "Unggah acara",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal juga {calendarappstoreopen}aplikasi Kalender{linkclose}, atau {calendardocopen}hubungkan desktop & seluler Anda untuk sinkronisasi ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Pastikan Anda menyiapkan {emailopen}server email{linkclose} dengan benar.",
"Calendar server" : "Server kalender",
"Send invitations to attendees" : "Kirim undangan kepada peserta",
"Automatically generate a birthday calendar" : "Buat kalender ulang tahun secara otomatis",
"Birthday calendars will be generated by a background job." : "Kalender ulang tahun akan dibuat oleh tugas latar belakang.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Karena itu kalender tersebut tidak akan tersedia segera setelah diaktifkan, tetapi akan muncul setelah beberapa waktu.",
"Send notifications for events" : "Kirim notifikasi untuk acara",
"Notifications are sent via background jobs, so these must occur often enough." : "Notifikasi dikirim melalui tugas latar belakang, jadi tugas tersebut harus dijalankan cukup sering.",
"Send reminder notifications to calendar sharees as well" : "Kirim juga notifikasi pengingat kepada pengguna yang dibagikan kalendernya",
"Reminders are always sent to organizers and attendees." : "Pengingat selalu dikirim kepada penyelenggara dan peserta.",
"Enable notifications for events via push" : "Aktifkan notifikasi untuk acara melalui push",
"Example content" : "Konten contoh",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Konten contoh berfungsi untuk menampilkan fitur Nextcloud. Konten default disertakan dengan Nextcloud, dan dapat diganti dengan konten kustom.",
"Availability" : "Ketersediaan",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Jika Anda mengonfigurasi jam kerja, orang lain akan melihat kapan Anda di luar kantor saat mereka memesan rapat.",
"Absence" : "Ketidakhadiran",
"Configure your next absence period." : "Konfigurasikan periode ketidakhadiran Anda berikutnya.",
"There was an error updating your attendance status." : "Terjadi kesalahan saat memperbarui status kehadiran Anda.",
"Please contact the organizer directly." : "Silakan hubungi penyelenggara secara langsung.",
"Are you accepting the invitation?" : "Apakah Anda menerima undangan ini?",
"Tentative" : "Tentatif",
"Your attendance was updated successfully." : "Kehadiran Anda berhasil diperbarui.",
"_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Dalam %n menit pada %1$s untuk sepanjang hari"],
"_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Dalam %n jam pada %1$s untuk sepanjang hari"],
"_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Dalam %n hari pada %1$s untuk sepanjang hari"],
"_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Dalam %n minggu pada %1$s untuk sepanjang hari"],
"_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Dalam %n bulan pada %1$s untuk sepanjang hari"],
"_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Dalam %n tahun pada %1$s untuk sepanjang hari"],
"_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["Dalam %n menit pada %1$s antara %2$s - %3$s"],
"_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["Dalam %n jam pada %1$s antara %2$s - %3$s"],
"_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["Dalam %n hari pada %1$s antara %2$s - %3$s"],
"_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Dalam %n minggu pada %1$s antara %2$s - %3$s"],
"_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Dalam %n bulan pada %1$s antara %2$s - %3$s"],
"_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Dalam %n tahun pada %1$s antara %2$s - %3$s"],
"_In a minute on %1$s_::_In %n minutes on %1$s_" : ["Dalam %n menit pada %1$s"],
"_In a hour on %1$s_::_In %n hours on %1$s_" : ["Dalam %n jam pada %1$s"],
"_In a day on %1$s_::_In %n days on %1$s_" : ["Dalam %n hari pada %1$s"],
"_In a week on %1$s_::_In %n weeks on %1$s_" : ["Dalam %n minggu pada %1$s"],
"_In a month on %1$s_::_In %n months on %1$s_" : ["Dalam %n bulan pada %1$s"],
"_In a year on %1$s_::_In %n years on %1$s_" : ["Dalam %n tahun pada %1$s"],
"_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Dalam %n menit pada %1$s kemudian pada %2$s"],
"_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Dalam %n jam pada %1$s kemudian pada %2$s"],
"_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Dalam %n hari pada %1$s kemudian pada %2$s"],
"_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Dalam %n minggu pada %1$s kemudian pada %2$s"],
"_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Dalam %n bulan pada %1$s kemudian pada %2$s"],
"_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Dalam %n tahun pada %1$s kemudian pada %2$s"],
"_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["Dalam %n menit pada %1$s kemudian pada %2$s dan %3$s"],
"_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Dalam %n jam pada %1$s kemudian pada %2$s dan %3$s"],
"_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Dalam %n hari pada %1$s kemudian pada %2$s dan %3$s"],
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Dalam %n minggu pada %1$s kemudian pada %2$s dan %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dalam %n bulan pada %1$s kemudian pada %2$s dan %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dalam %n tahun pada %1$s kemudian pada %2$s dan %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Tidak dapat membuka file: %1$s, file tampaknya ada",
"Could not open file: %1$s, file doesn't seem to exist" : "Tidak dapat membuka file: %1$s, file tampaknya tidak ada",
"No results." : "Tidak ada hasil.",
"Start typing." : "Mulai mengetik.",
"Time zone:" : "Zona waktu:"
},
"nplurals=1; plural=0;");

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